REMARK ######################################################### REMARK # ACCOUNTS RECEIVABLE UPDATE (A/R03B) # REMARK # VERS. OF 1.15 PM 6/28/79 # REMARK ######################################################### %INCLUDE CURSOR DIM G(6),F(10,2),S(6,8),C.(7),D(13),G2$(5),G3(5),L4(2) DIM M$(5),Y(2),R1(10),R2(10),R$(10) GOTO 6000 DATA "NEW","INV BILLING","INV PAYMENT","PROG PAYMENT","DELETE","MODIFY" %INCLUDE SUBS1 %INCLUDE BINSEARC %INCLUDE GENINFO %INCLUDE A/RTAX %INCLUDE A/R-INFO %INCLUDE A/R-INV %INCLUDE READCUST %INCLUDE WRITCUST .314 RETURN REMARK THESE LINE NUMBERS FOR G/L SUBROUTINES .315 RETURN 3650 RETURN 825 IF LINE.COUNT%<55 THEN RETURN REMARK LINE PRINTER ROUTINE PAGE.COUNT%=PAGE.COUNT%+1 PRINT CHR$(12);TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; X0=G3(1):GOSUB 680.5 PRINT PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";PAGE.COUNT% PRINT IF LINE.COUNT%<>100 THEN \ PRINT "REC CUST INV #";TAB(24);"CASH ACCT RCVB SALES";:\ PRINT " INC DEFER INC SHIPPING";TAB(78);"TAXES INV";:\ PRINT " AMT TAX TYPE OP" \ ELSE \ PRINT TAB(34);"INV AMT";TAB(48);"SHIP";TAB(58);"TAXES INV";:\ PRINT " TOTAL";TAB(78);"INV PAY";TAB(89);"PR BILL PROG PAY" PRINT LINE.COUNT%=6 RETURN 4000 PRINT USING MASKB$;P1; REMARK PRINT POSTING TOTALS PRINT " ";X0$;TAB(27); IF I1<>0 THEN PRINT USING MASKA$;I1; PRINT TAB(38); PRINT USING MASKA$;P5 4040 IF P1*P5=0 THEN RETURN REMARK UPDATE TRANSACTION TO G/L POSTING FILE P4=L1 RETURN REMARK SKIP UNLESS G/L IMPLEMENTED EXTERNAL.POSTING.EXTENT%=EXTERNAL.POSTING.EXTENT%+1 IF EXTERNAL.POSTING.EXTENT% + DIRECT.POSTING.EXTENT% \ >= MAX.POSTING.RECORDS THEN GL.FILE.FULL = 1 FILE.NO%=8:RECORD.NO%=EXTERNAL.POSTING.EXTENT%:GOSUB 3650 RETURN 4140 FOR I%=1 TO 11 REMARK REVERSE SIGN OF INVOICE AMOUNTS IF D(I%)<>0 THEN D(I%)=-D(I%) NEXT I% RETURN REMARK SAVE TRANSACTION RECORD ON WORKFILE 4160 IF C=5 THEN \ REMARK ZERO ALL NUMERIC FIELDS ON DELETE-FLAGGED INVOICES FOR I%=1 TO 13:\ D(I%)=0:\ NEXT I% IF H2$<>" " THEN RETURN REMARK DO NOT SAVE TRANSACTION IF IT CAUSED AN ERROR IF B=2 THEN GOSUB 4140 REMARK RE-REVERSE THE SIGNS ON A CREDIT MEMO GOSUB 6900 REMARK SAVE THE TRANSACTION TO THE WORKFILE IF C>1 THEN INVOICE.POINTER%=INVOICE.POINTER%+1 RETURN 4260 IF CUSTOMER.POINTER%=0 OR Y(2)=Y1 THEN RETURN W$=W1$ W1$=I1$ Y9=2:X0=CUSTOMER.POINTER%:GOSUB 3275 REMARK RESAVE THE CUSTOMER RECORD W1$=W$ RETURN 6000 MASKA$=" #######.##" REMARK START OF MAINLINE CODE MASKB$=" #####.#" MASKC$=" ######" MASKD$="###" PRINT CLEAR.SCREEN$;"A/R UPDATE" PRINT "WORKING... DO NOT INTERRUPT" OPEN "G/I0F010.DAT" AS 1,"A/R0F110.DAT" RECL 162 AS 2,\ "A/R0F120.DAT" RECL 226 AS 3,"A/R0F020.DAT" RECL 226 AS 4,\ "A/R0F030.DAT" AS 5, "A/R0F130.DAT" AS 6 CREATE "WORKFILE.DAT" RECL 226 AS 7 6010 MAX.INVOICE.RECORDS = 200 MAX.POSTING.RECORDS = 1000 GOTO 6040 REMARK SKIP OPENING THE G/L FILES OPEN "G/L0F020.DAT" RECL 36 AS 8,"G/L0F130.DAT" AS 9 FILE.NO%=9:GOSUB .314 6040 Y9=1:GOSUB 700 REMARK RETRIEVE G/I FILE DATA FILE.NO=6:GOSUB 3.14 REMARK RETRIEVE A/R INFORMATION FILE DATA A1=5:GOSUB 3700 REMARK RETRIEVE A/R TAX CODE INFORMATION I1$=" " REMARK INITIALIZE VARIABLES H2$=" " INVOICE.POINTER%=1 P2=2 P3=(INT(G3(1)/100))/100 LINE.COUNT%=60 LPRINTER 6060 FOR I%=1 TO 7 REMARK ZERO TRANSACTION TOTALS C.(I%)=0 NEXT I% IF R% THEN \ C2=C2+10:\ FILE.NO=4:REC.NO%=R%:GOSUB 3450 IF INV.FILE.FULL THEN GOTO 6840 IF GL.FILE.FULL THEN GOTO 6850 R%=R%+1 REMARK INCREMENT TRANSACTION FILE COUNTER IF R%>AR.TRANFILE.EXTENT THEN 6580 REMARK BRANCH AT END OF TRANSACTION FILE FILE.NO=4:REC.NO%=R%:GOSUB 3400 REMARK RETRIEVE NEXT TRANSACTION DATA IF B=2 THEN GOSUB 4140 C=C2 IF C>9 THEN 6060 REMARK SKIP "USED" TRANSACTIONS Y2=3 RECORD.COUNT=AR.INVFILE.EXTENT XYZ$=W1$+" ":ZYX$="000000"+STR$(L1) NEW.KEY$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6) IF NEW.KEY$=TRAN.KEY$ THEN H2$="DOUBLE TRANSACTION":GOTO 6360 TRAN.KEY$=NEW.KEY$ IF INV.KEY$="ZZZZZZZZZZZZ" THEN 6100 REMARK IF LAST INVOICE RECORD HAS BEEN READ, BRANCH K$=TRAN.KEY$ GOSUB 1060 REMARK LOCATE NEXT INVOICE RECORD IF INVOICE.POINTER% > AR.INVFILE.EXTENT THEN \ INV.KEY$="ZZZZZZZZZZZZ":GOTO 6100 IF INVOICE.POINTER%=L THEN 6070 REMARK IF NEXT INVOICE HAS NOT CHANGED, BRANCH FOR I%=INVOICE.POINTER% TO L-1 FILE.NO=3:REC.NO%=I%:GOSUB 3400 REMARK COPY UNCHANGED INVOICE TO WORKFILE INVOICE.POINTER%=INVOICE.POINTER%+1 IF B<>-1 THEN GOSUB 6900 NEXT I% IF INV.FILE.FULL THEN GOTO 6840 IF L>AR.INVFILE.EXTENT THEN INV.KEY$="ZZZZZZZZZZZZ":GOTO 6080 6070 FILE.NO=3:REC.NO%=INVOICE.POINTER%:GOSUB 3400 REMARK READ NEXT INVOICE FROM INVOICE FILE IF B=2 THEN GOSUB 4140 XYZ$=W1$+" ":ZYX$="000000"+STR$(L1) INV.KEY$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6) IF B=-1 AND INV.KEY$=TRAN.KEY$ THEN 6060 6080 FILE.NO=4:REC.NO%=R%:GOSUB 3400 REMARK RE-LOAD TRANSACTION DATA IF B=2 THEN GOSUB 4140 6100 IF C=1 AND TRAN.KEY$=INV.KEY$ THEN H2$="DUPLICATE":GOTO 6360 REMARK CHECK FOR ERRORS IF C>1 AND TRAN.KEY$<>INV.KEY$ THEN H2$="NOT ON INV FILE":GOTO 6360 S(C,8)=S(C,8)+1 ON C GOTO 6140,6320,6200,6260,6120,6320 REMARK BRANCH ON OPERATION CODE 6120 D(5)=D(6) REMARK OPERATION IS DELETE D(9)=D(10) GOSUB 4140 REMARK REVERSE SIGNS TO SUBTRACT VALUES FROM TOTALS REMARK FOR TRANSACTIONS WITH NON-ZERO BILL DATES 6140 IF L4(1)=0 THEN 6240 REMARK ADD INVOICE AMOUNTS, ETC. TO TOTALS C.(5)=C.(5)+D(2) F(L6+1,1)=F(L6+1,1)+D(3) C.(6)=C.(6)+D(3) C.(3)=C.(3)+D(4) C.(2)=C.(2)+D(4) F(L6+1,2)=F(L6+1,2)+D(1) C.(7)=C.(7)+D(1) FOR I%=1 TO 4 S(C,I%)=S(C,I%)+D(I%) NEXT I% IF L4(2)<>0 THEN C.(2)=C.(2)-D(8):C.(4)=C.(4)-D(8) REMARK ADJUST A/R AND DEFERRED INCOME TOTALS IF D(13)<>0 THEN P1=ABS(D(13)):P5=SGN(D(13))*D(1):GOSUB 4040 REMARK POST AMOUNT D(1) TO ACCOUNT D(13) IF D(13)<0 THEN F(1,1)=F(1,1)-D(1) IF D(13)<=0 THEN F(1,2)=F(1,2)-D(1) 6200 IF D(5)<>0 THEN \ REMARK ADJUST CASH AND A/R TOTALS WITH NON-ZERO PAYMENTS C.(1)=C.(1)+D(5):\ C.(2)=C.(2)-D(5):\ S(C,5)=S(C,5)+D(5) IF C=3 THEN 6360 REMARK END OF INVOICE PAYMENT OPERATION 6240 IF L4(2)=0 THEN 6300 REMARK IF PROGRESS DUE DATE IS NON-ZERO... S(C,6)=S(C,6)+D(8) REMARK ADJUST TOTALS BY PROGRESS BILLING AMOUNT C.(2)=C.(2)+D(8) C.(4)=C.(4)+D(8) 6260 IF D(9)<>0 THEN \ REMARK IF PROGRESS PAYMENT AMOUNT IS NON-ZERO... C.(1)=C.(1)+D(9):\ REMARK ADJUST CASH AND A/R TOTALS C.(2)=C.(2)-D(9):\ S(C,7)=S(C,7)+D(9) IF C=4 THEN 6360 REMARK END OF PROGRESS PAYMENT OPERATION 6300 IF F7=1 THEN GOTO 6340 \ ELSE GOTO 6360 REMARK START MODIFY OPERATION 6320 FILE.NO=3:REC.NO%=INVOICE.POINTER%:GOSUB 3400 REMARK RETRIEVE OLD INVOICE IF B=2 THEN GOSUB 4140 IF C2=5 THEN 6340 GOSUB 4140 REMARK REVERSE SIGNS F7=1 GOTO 6140 REMARK BACK INVOICE AMOUNTS OUT OF TOTALS 6340 F7=0 REMARK MODIFY OPERATION, PART TWO FILE.NO=4:REC.NO%=R%:GOSUB 3400 REMARK RETRIEVE MODIFY TRANSACTION DATA IF B=2 THEN GOSUB 4140 GOTO 6140 REMARK ADD TRANSACTION AMOUNTS TO TOTALS 6360 GOSUB 4160 REMARK SAVE TRANSACTION ON WORKFILE FOR I%=1 TO 4 REMARK ACCUMULATE TRANSACTION TOTALS TO GRAND TOTALS G(I%)=G(I%)+C.(I%) NEXT I% IF L6=0 THEN G(6)=G(6)+C.(5):\ ELSE G(5)=G(5)+C.(5) X4$="A/R UPDATE":A1=115:GOSUB 825 REMARK PRINT TRANSACTION TOTALS PRINT USING MASKD$;R%; PRINT TAB(5);W1$; PRINT USING MASKC$;L1; FOR I%=1 TO 7 PRINT USING MASKA$;C.(I%); NEXT I% PRINT " ";L6;" ";B;" ";C; IF D(12)<>0 THEN PRINT " (CR) "; PRINT TAB(112);H2$ H2$=" " LINE.COUNT%=LINE.COUNT%+1 IF D(13)<>0 THEN \ REMARK PRINT G/L NUMBER, IF ANY, ON A SEPARATE LINE PRINT " G/L #";:\ PRINT USING MASKB$;D(13):\ LINE.COUNT%=LINE.COUNT%+1 IF C.(3)+C.(4)=0 THEN 6060 IF I1$=" " THEN 6460 IF I1$=W1$ THEN 6500 REMARK WHEN CUSTOMERS CHANGE... GOSUB 4260 REMARK UPDATE THE OLD CUSTOMER RECORD 6460 XYZ$=W1$+" " Y2=2 K$=LEFT$(XYZ$,6) RECORD.COUNT=AR.CUSTFILE.EXTENT GOSUB 1060 REMARK LOCATE THE NEW CUSTOMER RECORD IF H=-1 OR VAR1=0 THEN \ I1$=" ":\ PRINT W1$," NOT IN CUSTOMER FILE":\ CUSTOMER.POINTER%=0:\ LINE.COUNT%=LINE.COUNT%+1:\ GOTO 6060 Y9=2:X0=L:GOSUB 3225 REMARK AND RETRIEVE THE NEW CUSTOMER DATA CUSTOMER.POINTER%=L I1$=W1$ Y1=Y(2) 6500 Y(2)=Y(2)+C.(3)+C.(4) REMARK ADD NEW AMOUNTS TO CUSTOMER BILLING TOTAL IF L4(1)>D THEN D=L4(1) GOTO 6060 6580 LPRINTER REMARK END PROGRAM AND PRINT TOTALS GOSUB 4260 REMARK RESAVE LAST CUSTOMER RECORD IF INVOICE.POINTER% >= AR.INVFILE.EXTENT THEN 6620 REMARK COPY THE REST OF THE INVOICE FILE TO THE WORKFILE FOR I%=INVOICE.POINTER% TO AR.INVFILE.EXTENT FILE.NO=3:REC.NO%=I%:GOSUB 3400 INVOICE.POINTER%=INVOICE.POINTER%+1 IF B<>-1 THEN GOSUB 6900 NEXT I% 6620 LINE.COUNT%=100 X4$="A/R UPDATE":A1=115:GOSUB 825 REMARK PRINT TOTALS RESTORE FOR I%=1 TO 6 READ A$ PRINT USING MASKC$;S(I%,8); PRINT TAB(8);" "; PRINT A$;" TRANS";TAB(30); FOR J%=1 TO 7 PRINT USING MASKA$;S(I%,J%); NEXT J% PRINT NEXT I% PRINT:PRINT:PRINT TAB(9);"GENERAL LEDGER POSTING TOTALS":PRINT PRINT " ACCT # NAME";TAB(43);"AMOUNT" L1=0 P1=2:I1=0:P5=G(1):X0$="CASH":GOSUB 4000 P1=5:I1=0:P5=G(2):X0$="ACCT. RECEIVABLE":GOSUB 4000 P1=2029:I1=0:P5=F(2,1)+F(3,1)+F(4,1)+F(5,1)+F(6,1)+F(7,1)+F(8,1)+F(9,1) P5=P5+F(10,1):X0$="SALES TAX PAYABLE":GOSUB 4000 P1=2230:I1=0:P5=G(4):X0$="DEFERRED INCOME":GOSUB 4000 P1=2611:I1=0:P5=-G(5):X0$="SHIPPING":GOSUB 4000 P1=3325:I1=0:P5=-G(6):X0$="TRAVEL, ETC.":GOSUB 4000 PRINT:PRINT:PRINT " ACCT # SALES ACCOUNTS";TAB(35);"TAX AMOUNT" FOR I%=2 TO 10 P1=R2(I%):I1=F(I%,1):P5=F(I%,2):X0$=R$(I%):GOSUB 4000 NEXT I% PRINT:PRINT:PRINT TAB(30);"DECREASE INCREASE" P1=0:I1=F(1,1):P5=F(1,2):X0$=R$(1):GOSUB 4000 PRINT GOTO 6800 REMARK BYPASS SAVING NEW G/L EXTENT INFORMATION CLOSE 9 OPEN "G/L0F130.DAT" AS 9 FILE.NO%=9:GOSUB .315 6800 IF INV.FILE.FULL OR GL.FILE.FULL THEN GOTO 6810 REMARK IF UPDATE CONCLUDED SUCCESSFULLY... DELETE 4 REMARK DELETE THE OLD TRANSACTION FILE CREATE "A/R0F020.DAT" RECL 226 AS 4 REMARK CREATE AN EMPTY TRANSACTION FILE AR.TRANFILE.EXTENT=0 6810 CLOSE 6 OPEN "A/R0F130.DAT" AS 6 AR.INVFILE.EXTENT=OUTPUT.COUNT% FILE.NO=6:GOSUB 3.15 REMARK RESET THE A/R EXTENT INFORMATION CLOSE 7 DELETE 3 A=RENAME("A/R0F120.DAT","WORKFILE.DAT") 6820 CONSOLE PRINT CLEAR.SCREEN$;"A/R UPDATE LOADING MENU" CHAIN "A/P000" 6840 CONSOLE REMARK INVOICE FILE OVERFLOW DETECTED PRINT "INVOICE FILE FULL. PRESS 'RETURN' TO PRINT TOTALS" 6841 IF CONSTAT% THEN PRINT:GOTO 6580 ELSE GOTO 6841 6850 CONSOLE REMARK G/L FILE OVERFLOW DETECTED PRINT "G/L FILE FULL. PRESS 'RETURN' TO PRINT TOTALS" 6851 IF CONSTAT% THEN PRINT:GOTO 6580 ELSE GOTO 6851 6900 OUTPUT.COUNT%=OUTPUT.COUNT%+1 REMARK SUBROUTINE TO ADD A RECORD TO THE WORKFILE IF OUTPUT.COUNT% + AR.INVFILE.EXTENT - INVOICE.POINTER% >= \ MAX.INVOICE.RECORDS - 1 THEN INV.FILE.FULL = 1 FILE.NO=7 REC.NO%=OUTPUT.COUNT% GOSUB 3450 RETURN