* ACCT.CMD - General Ledger Accounting Program * STORE TRIM(TITLE) TO MTITLE STORE " " TO STYPE SELECT PRIMARY USE DAPROM GO BOTTOM STORE # TO LAST GO TOP STORE "PROM:DESC+' '+JOURNAL+' '+LEDGER+' '+LEDG:TYPE" TO FLIST STORE "T" TO MATCH STORE "You may choose one of the following entry types: JR LEDGER" TO MDESC STORE "DSDISP" TO COMMAND DO &SYS&COMMAND IF !(RECORD)="Q" RETURN ENDIF RELEASE STYPE,FLIST,MATCH,MDESC STORE PROM:DESC TO PDESC STORE JOURNAL TO JOUR STORE LEDGER TO LDGR STORE CTRL:REF TO CREF STORE TYPE:DOC TO TDOC STORE CTRL:ACCT TO CACCT STORE CTRL:DESC TO CDESC STORE CTRL:TYPE TO CTYPE STORE LEDG:TYPE TO LTYPE STORE 00000.00 TO CTOTAL COPY NEXT 1 TO DATYPE SELECT SECONDARY USE DABATCH DELETE ALL PACK STORE T TO MORE STORE " " TO LAST STORE " / / " TO LDATE STORE 0 TO TCOUNT DO WHILE MORE SELECT SECONDARY ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF @ 3,10 SAY PDESC SET INTE ON @ 4,10 SAY "Bal account " GET CACCT @ 4,37 SAY "Desc " GET CDESC @ 5,10 SAY "Batch total " GET CTOTAL @ 5,37 SAY "Last entry " GET LAST CLEAR GETS IF LDGR = "AP" .OR. LDGR = "AR" STORE " " TO ID @ 7,10 SAY "Enter ID number or RETURN to quit. " GET ID READ IF ID = " " STORE F TO MORE LOOP ELSE SELECT PRIMARY IF LDGR = "AP" STORE "DAVEND" TO FILE ELSE STORE "DACUST" TO FILE ENDIF USE &FILE INDEX &FILE&ONE SET EXACT ON FIND &ID SET EXACT OFF IF # = 0 @ 9,10 SAY "That ID number was not in your master file. " STORE " " TO ANSWER @ 10,10 SAY "You may add this ID number to your master file. If you do, be " @ 11,10 SAY "prepared to enter a name, an address and beginning balances. " @ 12,10 SAY "To add enter 'ADD' or just RETURN to try a new ID number." ; GET ANSWER PICTURE "!!!" READ IF !(ANSWER) = "ADD" SELECT PRIMARY USE &FILE INDEX &FILE&ONE,&FILE&TWO SET FORMAT TO &FILE APPEND BLANK REPLACE ID:NUMB WITH ID READ SET FORMAT TO SCREEN STORE ID:NUMB TO ID STORE NAME TO DESC SELECT SECONDARY ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF @ 3,10 SAY PDESC SET INTE ON @ 5,10 SAY "Batch total " GET CTOTAL @ 5,37 SAY "Last entry " GET LAST @ 7,10 SAY "ID number just added " GET ID @ 8,10 SAY "Name just added " GET DESC CLEAR GETS ELSE @ 9,10 @ 10,10 @ 11,10 @ 12,10 LOOP ENDIF ELSE STORE NAME TO DESC SELECT SECONDARY STORE " " TO ANSWER @ 8,10 SAY "The name on file is " GET DESC CLEAR GETS @ 9,10 SAY "If this is the name you wish to use enter just a RETURN. " @ 10,10 SAY "If you wish to try another ID number enter any character. " ; GET ANSWER PICTURE "!" READ @ 9,10 @ 10,10 IF ANSWER <> " " LOOP ENDIF ENDIF ENDIF ELSE STORE " " TO ID STORE " " TO DESC @ 8,10 SAY "Enter description or RETURN to quit " GET DESC READ IF DESC = " " STORE F TO MORE LOOP ENDIF ENDIF APPEND FROM DATYPE REPLACE ID:NUMB WITH ID REPLACE ID:NAME WITH DESC @ 10,10 SAY "Enter date as MM/DD/YY " GET LDATE PICTURE "99/99/99" @ 10,50 SAY TDOC GET REF:NO READ REPLACE PDATE WITH LDATE @ 12,10 SAY " Account Description Amount" STORE 1 TO COUNT DO WHILE COUNT < 8 SELECT SECONDARY IF COUNT = 7 STORE " " TO STATUS @ 21,10 @ 21,10 SAY "Enter (A)ccept,(D)elete or (R)eenter " GET STATUS READ IF !(STATUS)="R" STORE 1 TO COUNT REPLACE TTOTAL WITH 0.00 LOOP ENDIF IF !(STATUS) = "D" DELETE ELSE STORE CTOTAL+TTOTAL TO CTOTAL STORE DESC TO LAST STORE TCOUNT + 1 TO TCOUNT ENDIF STORE 8 TO COUNT LOOP ENDIF STORE COUNT + 12 TO ROW STORE STR(COUNT,1) TO CNT @ ROW,7 SAY CNT+"." IF ACCOUNT&CNT = " " STORE " " TO FACCT @ ROW,10 @ ROW,10 GET FACCT @ ROW+1,10 SAY "Enter RETURN to end entry of this transaction." READ IF FACCT = " " STORE 7 TO COUNT LOOP ELSE SELECT PRIMARY USE DAACCT INDEX DAACCT1 SET EXACT ON FIND &FACCT SET EXACT OFF IF # = 0 @ 21,10 SAY FACCT+" is not a valid account! Please try again. " LOOP ELSE STORE ACCT:NAME TO ADESC SELECT SECONDARY REPLACE DESC&CNT WITH ADESC @ ROW,23 GET ADESC CLEAR GETS REPLACE ACCOUNT&CNT WITH FACCT @ 21,10 ENDIF ENDIF ELSE @ ROW,10 GET ACCOUNT&CNT @ ROW,23 GET DESC&CNT CLEAR GETS ENDIF @ ROW,58 GET AMOUNT&CNT READ REPLACE TTOTAL WITH TTOTAL + AMOUNT&CNT @ 20,42 SAY "Total so far is " GET TTOTAL CLEAR GETS STORE COUNT + 1 TO COUNT ENDDO ENDDO SELECT SECONDARY IF TCOUNT = 0 RETURN ENDIF ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF @ 3,10 SAY PDESC SET INTE ON @ 5,10 SAY "Batch total " GET CTOTAL @ 5,37 SAY "Last entry " GET LAST @ 7,10 SAY "This batch will be entered with a source code of " GET JOUR @ 8,10 SAY "The source code determines which register is updated as follows:" @ 9,10 SAY " CD - Cash disbursements CR - Cash receipts" @ 10,10 SAY " CP - Credit purchases IN - Invoice register" @ 11,10 SAY " GJ - General journal" IF CTYPE = "CR" .OR. CTYPE = "DB" @ 13,10 SAY "A " GET CTYPE @ 13,17 SAY " entry of " GET CTOTAL @ 13,42 SAY " will be made to account " GET CACCT @ 14,10 SAY "This account is " GET CDESC ELSE IF CTOTAL <> 0.00 @ 13,10 SAY "The batch total is not zero and no control account is provided." @ 14,10 SAY "If we proceed with this update your accounts will be out of balance." @ 15,10 SAY "Please reenter this batch in such a way that the total is zero." @ 16,10 SAY "THIS BATCH HAS BEEN DELETED! Enter RETURN to continue." WAIT RETURN ELSE ENDIF @ 13,10 SAY "This batch does not require a balancing transaction." ENDIF @ 15,10 SAY "If all of the above information is not correct the entire batch" @ 16,10 SAY "should be deleted and reentered. If the controlling account" @ 17,10 SAY "information is wrong, you must change the prompt record for this" @ 18,10 SAY "entry type first. Consult the documentation if in doubt!" CLEAR GETS STORE "ACCEPT" TO ANSWER @ 20,10 SAY "If you wish to delete this batch, enter DELETE followed by a RETURN." @ 21,10 SAY "If you wish to accept it, just a RETURN will do " GET ANSWER PICTURE "!!!!!!" READ IF ANSWER = "DELETE" @ 22,10 SAY "THIS BATCH HAS BEEN DELETED! Enter RETURN to continue." WAIT RETURN ENDIF ERASE @ 1,10 SAY TMARK + " " + CNAME SET INTE OFF @ 3,10 SAY PDESC SET INTE ON @ 5,10 SAY "Batch total " GET CTOTAL @ 5,37 SAY "Last entry " GET LAST CLEAR GETS SELECT PRIMARY USE DATRAN INDEX DATRAN1,DATRAN2 STORE TCOUNT TO JCOUNT STORE 0 TO TCOUNT IF CTYPE = "CR" .OR. CTYPE = "DB" @ 7,10 SAY "The reference for the controlling transaction is assigned a default" @ 8,10 SAY "which you may change or add to if you wish. Enter a new reference" @ 9,10 SAY "or RETURN to accept the default. " GET CREF READ APPEND BLANK REPLACE PDATE WITH LDATE REPLACE ACCT:NUMB WITH CACCT REPLACE REFERENCE WITH CREF REPLACE SOURCE WITH JOUR REPLACE REF:NO WITH "BalEntry" IF CTYPE = "CR" REPLACE AMOUNT WITH CTOTAL * -1 ELSE REPLACE AMOUNT WITH CTOTAL ENDIF STORE 1 TO TCOUNT ELSE ENDIF @ 10,10 SAY "Now updating accounting transaction file." @ 11,10 SAY STR(TCOUNT,4) + " control transaction added." STORE 0 TO TCOUNT SELECT SECONDARY GO TOP DO WHILE .NOT. EOF STORE PDATE TO LDATE STORE ID:NAME TO REF STORE REF:NO TO REFNO STORE 1 TO COUNT DO WHILE COUNT < 7 STORE STR(COUNT,1) TO CNT IF ACCOUNT&CNT = " " STORE 7 TO COUNT LOOP ENDIF IF AMOUNT&CNT = 0.00 STORE COUNT + 1 TO COUNT LOOP ENDIF STORE ACCOUNT&CNT TO ACCT STORE AMOUNT&CNT TO AMT SELECT PRIMARY APPEND BLANK STORE TCOUNT + 1 TO TCOUNT REPLACE PDATE WITH LDATE REPLACE ACCT:NUMB WITH ACCT REPLACE REFERENCE WITH REF REPLACE SOURCE WITH JOUR REPLACE REF:NO WITH REFNO IF CTYPE = "CR" .OR. CTYPE = " " REPLACE AMOUNT WITH AMT ELSE REPLACE AMOUNT WITH AMT * -1 ENDIF STORE COUNT + 1 TO COUNT SELECT SECONDARY ENDDO SKIP ENDDO @ 12,10 SAY STR(TCOUNT,4) + " regular transactions added." @ 14,10 SAY "Now updating the journal transaction file." GO TOP IF LTYPE = "DN" REPLACE ALL TTOTAL WITH -1 * TTOTAL ENDIF USE SELECT PRIMARY USE DAJOUR INDEX DAJOUR1,DAJOUR2 APPEND FROM DABATCH @ 15,10 SAY STR(JCOUNT,4) + " journal records added." RETURN