REMARK ######################################################### REMARK # A/R STATEMENTS PROGRAM (A/R080) # REMARK # VERS. OF 4.00 PM 3/6/79 # REMARK ######################################################### DIM L4(2),D$(2),D(20),M$(5),Y(2),G2$(5),G3(5),P(6) %INCLUDE CURSOR GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO %INCLUDE BINSEARC %INCLUDE A/R-INFO %INCLUDE READCUST %INCLUDE A/R-INV DATA 0,3,3,6,8,11,13,16,19,21,24,26 4000 YEAR=100*(I/100-INT(I/100)) REMARK COMPUTE THE NUMBER OF DAYS BETWEEN DATE "I" AND 00/00/00 DAY=100*((I-YEAR)/10000-INT((I-YEAR)/10000)) MONTH=(I-100*DAY-YEAR)/10000 IF MONTH=0 OR MONTH>12 THEN A4=0:RETURN RESTORE FOR IX%=1 TO MONTH READ A4 NEXT IX% A4=A4+YEAR*365+INT(YEAR/4)+1+(MONTH-1)*28+DAY IF INT(YEAR/4)=(YEAR/4) AND MONTH<3 THEN A4=A4-1 RETURN 4080 I=I2:GOSUB 4000 REMARK COMPUTE THE NUMBER OF DAYS BETWEEN "I2" AND "J2" A=A4 I=J2:GOSUB 4000 A=A-A4 RETURN 4220 PRINT "** TOTAL DUE -->";TAB(62); REMARK PRINT CUSTOMER BALANCE PRINT USING MASKA$;B9 PRINT CHR$(12) B9=0:LINE.COUNT%=60:PAGE.COUNT%=0 REMARK ZERO BALANCE AND RESET LINE AND PAGE COUNTERS RETURN 4500 XYZ$=W1$+" " REMARK LOCATE AND RETRIEVE CUSTOMER DATA K$=LEFT$(XYZ$,6):GOSUB 1060 REMARK LOCATE CUSTOMER DATA IF H=-1 OR VAR1=0 THEN \ M$(2)="NO CUSTOMER INFO":\ FOR I%=2 TO 5:\ M$(I%)=" ":\ NEXT I%:\ Y(2)=0:Y(1)=0 \ ELSE Y9=2:X0=L:GOSUB 3225 REMARK RETRIEVE CUSTOMER DATA RETURN 4620 IF B<>2 THEN RETURN REMARK REVERSE SIGNS ON CREDIT MEMOS FOR I%=1 TO 11 IF D(I%)<>0 THEN D(I%)=-D(I%) NEXT I% RETURN REMARK START OF MAIN PROGRAM 6000 MASKA$=" #######.##" MASKB$="######" MASKC$="#####.#" OPEN "G/I0F010.DAT" AS 1, "A/R0F110.DAT" RECL 162 AS 2, \ "A/R0F120.DAT" RECL 226 AS 3,"A/R0F130.DAT" AS 4 FILE.NO=4:GOSUB 3.14 REMARK RETRIEVE A/R EXTENT INFORMATION Y9=1:GOSUB 700 REMARK RETRIEVE G/I FILE DATA RECORD.COUNT=AR.CUSTFILE.EXTENT Y2=2 6020 CONSOLE PRINT:PRINT CLEAR.SCREEN$;"A/R STATEMENTS" PRINT:PRINT:PRINT PRINT "FIRST CUSTOMER" PRINT "LAST CUSTOMER" 6040 X1=271:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER FIRST CUSTOMER IF X0$<=" " THEN 6480 X0$=X0$+" " W8$=LEFT$(X0$,6) X1=335:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER LAST CUSTOMER X0$=X0$+" " W0$=LEFT$(X0$,6) X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?":GOSUB 665 REMARK VERIFY ENTRY IF X0=0 THEN 6020 X1=192:GOSUB 210 PRINT "PROCESSING..."; LPRINTER LINE.COUNT%=60 6140 INVOICE.POINTER% = INVOICE.POINTER% + 1 IF AR.INVFILE.EXTENT=0 THEN 6480 IF INVOICE.POINTER%>AR.INVFILE.EXTENT THEN GOSUB 4220:GOTO 6480 REMARK CHECK FOR END OF FILE FILE.NO=3:REC.NO%=INVOICE.POINTER%: GOSUB 3400 REMARK RETRIEVE NEXT INVOICE IF W1$>W0$ THEN GOSUB 4220:GOTO 6480 REMARK END CUSTOMER HAS BEEN PASSED GOSUB 4620 REMARK REVERSE SIGNS, IF A CREDIT MEMO IF D(7)+D(11)=0 THEN 6140 REMARK SKIP UNBILLED ITEMS IF W6$=W1$ THEN 6240 REMARK PRINT CUSTOMER TOTALS WHEN CUSTOMERS CHANGE IF PAGE.COUNT%<>0 THEN GOSUB 4220 W6$=W1$ GOSUB 4500 REMARK RETRIEVE NEXT CUSTOMER DATA 6240 IF L4(1)=0 AND L4(2)=0 THEN 6140 REMARK IF BILL DATE AND PROGRESS DUE DATE ARE ZERO, SKIP THIS INVOICE IF L4(1)=0 THEN D(1)=0:D(2)=0:D(3)=0:D(4)=0 REMARK IF BILL DATE IS ZERO, PRINT INVOICE AMOUNTS AS ZERO IF L4(2)=0 THEN D(8)=0 REMARK IF PROGRESS DUE DATE IS ZERO, PRINT PROGRESS BALANCE AS ZERO IF LINE.COUNT%>17 THEN \ REMARK WHEN STATEMENT FORM FILLS UP... PAGE.COUNT%=PAGE.COUNT%+1:\ REMARK ADVANCE TO NEXT FORM PRINT W1$;:\ REMARK AND REPRINT CUSTOMER DATA FOR I%=2 TO 5:\ PRINT TAB(11);M$(I%):\ NEXT I%:\ PRINT TAB(62);:\ X0=G3(1):GOSUB 680.5:\ PRINT " PAGE";PAGE.COUNT%:\ PRINT:PRINT:PRINT:PRINT:PRINT:\ LINE.COUNT%=1 PRINT " ";L1$;TAB(14); REMARK PRINT THIS INVOICE PRINT USING MASKB$;L1; PRINT TAB(21); IF L4(1)>0 THEN AGE.DATE=L4(1)\ REMARK FOR AGING, USE THE BILL DATE IF IT'S NON-ZERO ELSE AGE.DATE=L4(2) REMARK OTHERWISE, USE THE PROGRESS DUE DATE X0=AGE.DATE:GOSUB 680.5 PRINT USING MASKA$;D(4);D(7);D(11);D(7)+D(11); I2=G3(1):J2=AGE.DATE:GOSUB 4080 REMARK COMPARE AGING DATE WITH TODAY'S DATE 6360 IF A<30 THEN I=79:X$="C" \ REMARK LESS THAN 30 DAYS SINCE INVOICE DATE IS CURRENT ELSE I=81:X$="P" REMARK MORE THAN 30 DAYS IS PAST DUE PRINT TAB(I);X$ LINE.COUNT%=LINE.COUNT%+1 B9=B9+D(7)+D(11) REMARK ACCUMULATE INVOICE TOTAL TO CUSTOMER BALANCE GOTO 6140 6480 CONSOLE REMARK END PROGRAM AND RELOAD MENU PRINT CLEAR.SCREEN$;"A/R STATEMENTS LOADING MENU" CHAIN "A/P000"