home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
cpmug
/
cpmug043.ark
/
A_R040.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
9KB
|
289 lines
REMARK #############################################
REMARK # ACCOUNTS RECEIVABLE LEDGER PROGRAM #
REMARK # (A/R040) VERS OF 3 PM 6/19/79 #
REMARK #############################################
DIM A(7),B.(9),C(9),M$(5),Y(2),L4(2),G3(5),D(13),G2$(5)
DATA "A/R OPEN ITEMS","A/R AGING ANALYSIS","A/R CLOSED ITEMS"
DATA "A/R UNBILLED ITEMS",0,3,3,6,8,11,13,16,19,21,24,26
%INCLUDE CURSOR
GOTO 6000
%INCLUDE SUBS1
%INCLUDE BINSEARC
%INCLUDE A/R-INFO
%INCLUDE READCUST
%INCLUDE GENINFO
%INCLUDE A/R-INV
825 IF LINE.COUNT%<55 AND PAGE.COUNT%>0 THEN RETURN REMARK LINE PRINTER ROUTINE
PAGE.COUNT%=PAGE.COUNT%+1
PRINT CHR$(12);
PRINT 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 R3=2 AND S=2 THEN \
PRINT " CUST # CUSTOMER";TAB(35);"PHONE"; \
ELSE \
PRINT " INV # T CUST ORDER # JOB # DESC BILL DATE";
838 IF R3=2 THEN \
PRINT TAB(46);"TOTAL BAL";TAB(59);"CURRENT";TAB(71);: \
PRINT "30 DAY";TAB(82);"60 DAY";TAB(93);"90 DAY";TAB(102);: \
PRINT "PROG CURR PR 10-DAY PROG DUE" \
ELSE \
PRINT TAB(48);"INV AMT";TAB(62);"SHIP";TAB(72);"TAXES";: \
PRINT TAB(83);"TOTAL";TAB(92);"INV PAY";TAB(102);"PROG BILL";:\
PRINT " PROG PAY PROG DUE"
PRINT
LINE.COUNT%=6
RETURN
4000 YEAR=100*((I/100)-INT(I/100)) REMARK COMPUTE # 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 I%=1 TO MONTH + 4
READ A4
NEXT I%
A4=A4+YEAR*365+INT(YEAR/4)+1+(MONTH-1)*28+DAY
IF INT(YEAR/4)<>(YEAR/4) THEN RETURN
IF MONTH<=2 THEN A4=A4-1
RETURN
4080 I=I2:GOSUB 4000 REMARK COMPUTE THE NUMBER OF DAYS BETWEEN DATES I2 & J2
A.=A4
I=J2:GOSUB 4000
A.=A.-A4
RETURN
REMARK PRINT CUSTOMER TOTALS, AND ADD THEM TO GRAND TOTALS
4220 IF B.(8)=0 THEN RETURN REMARK BUT NOT IF CUSTOMER BALANCE IS ZERO
IF R3<>2 THEN \
PRINT " TOTAL";: \
PRINT USING MASKC$;B.(8),B.(9);
PRINT TAB(44);
PRINT USING MASKA$;B.(1),B.(2),B.(3),B.(4),B.(5);
PRINT " ";
PRINT USING MASKA$;B.(6),B.(7)
FOR I5%=1 TO 9
C(I5%)=C(I5%)+B.(I5%)
B.(I5%)=0
NEXT I5%
X0$="----"
FOR I%=1 TO 5:X0$=X0$+X0$:NEXT I%
PRINT X0$
LINE.COUNT%=LINE.COUNT%+2
RETURN
4500 Y2=2 REMARK LOCATE, RETRIEVE, AND PRINT CUSTOMER DATA
RECORD.COUNT = AR.CUSTFILE.EXTENT
XYZ$=W1$+" "
K$=LEFT$(XYZ$,6)
GOSUB 1060 REMARK LOCATE CUSTOMER DATA
IF H=-1 OR VAR1=0 THEN \
M$(2)="NO CUSTOMER INFO": \
Y(1)=0:Y(2)=0 \
ELSE \
Y9=2:X0=L:GOSUB 3225 REMARK RETRIEVE CUSTOMER DATA
PRINT "CUST ";W1$;" ";M$(2);
IF R3=2 THEN \
PRINT TAB(43);: \
X0=P9:GOSUB 760.5: \
PRINT TAB(58);: \
PRINT USING MASKB$;Y(2),Y(1): \
LINE.COUNT%=LINE.COUNT%+1:RETURN
IF R3<2 THEN PRINT USING MASKB$;Y(2),Y(1);
PRINT
LINE.COUNT%=LINE.COUNT%+1
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$=" SALES YTD #######.## LAST YEAR #######.##"
MASKC$=" BAL #######.## #### INVOICES"
MASKD$="######"
MASKE$="#####.#"
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, \
"CRT" RECL 1100 AS 19
Y9=1:GOSUB 700 REMARK RETRIEVE G/I FILE DATA
FILE.NO=4:GOSUB 3.14 REMARK RETRIEVE A/R FILE EXTENTS
IF END #3 THEN 6475 REMARK IF NO INVOICES ON FILE, END PROGRAM
6020 X0=16:GOSUB 260 REMARK DISPLAY CRT MASK
CONSOLE
R=0:S=0:PAGE.COUNT%=0
FOR I%=1 TO 9:C(I%)=0:NEXT I% REMARK ZERO TOTALS
X1=270:X2=1:X3=0:X4=4:GOSUB 345 REMARK ENTER REPORT FORMAT
IF X0=0 THEN 6480
R3=X0
S=1
IF R3>2 THEN 6080
X1=334:X2=1:X3=1:X4=3:GOSUB 345 REMARK ENTER REPORT TYPE
S=X0
IF S=3 THEN \ REMARK CUSTOMER RANGE REPORT TYPE
X1=538:X2=6:X3=0:X4=0:GOSUB 345:\ REMARK ENTER FIRST CUSTOMER
X0$=X0$+" ":\
W8$=LEFT$(X0$,6):\
X1=602:X2=6:X3=0:X4=0:GOSUB 345:\ REMARK ENTER LAST CUSTOMER
X0$=X0$+" ":\
W0$=LEFT$(X0$,6)
6080 IF R3=3 THEN \ REMARK CLOSED ITEM LISTING
X1=418:X2=1:X3=0:X4=1:GOSUB 345: \ REMARK ENTER WHETHER TO DELETE CLOSED ITEMS
R=X0
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...";
RESTORE
FOR I%=1 TO R3
READ X4$
NEXT I%
LPRINTER
LINE.COUNT%=60
IF S=3 THEN \ REMARK FOR REPORT TYPE CUSTOMER RANGE, LOCATE FIRST INVOICE
Y2=3: \
RECORD.COUNT=AR.INVFILE.EXTENT: \
XYZ$=W8$+" ":\
K$=LEFT$(XYZ$,6)+"000000":\
GOSUB 1060: \
START.RECORD.NO=L \
ELSE \
START.RECORD.NO=1
IF START.RECORD.NO > AR.INVFILE.EXTENT THEN \
X2$="FIRST CUSTOMER NUMBER TOO HIGH": \
GOSUB 615: \
GOTO 6020
FOR RECORD.INDEX=START.RECORD.NO TO AR.INVFILE.EXTENT REMARK START PRINT LOOP
FILE.NO=3:REC.NO%=RECORD.INDEX:GOSUB 3400 REMARK READ NEXT INVOICE OFF OF FILE
IF S=3 AND W1$>W0$ THEN 6430 REMARK FOR CUSTOMER RANGE, BRANCH IF PAST LAST CUSTOMER
GOSUB 4620 REMARK REVERSE SIGNS, IF CREDIT MEMO
IF R3=3 THEN 6380 REMARK BRANCH FOR CLOSED ITEMS LISTINGS
IF R3=4 THEN 6400 REMARK BRANCH FOR UNBILLED REPORT
REMARK OPEN ITEMS AND AGING ANALYSIS ROUTINES
IF D(7)+D(11)=0 THEN 6430 REMARK SKIP CLOSED ITEMS
IF PAGE.COUNT%=0 THEN W6$=W1$
IF W6$<>W1$ THEN GOSUB 4220:GOSUB 4500:W6$=W1$ REMARK WHEN CUSTOMERS CHANGE, PRINT LAST CUSTOMER TOTALS,\
AND NEW CUSTOMER DATA
IF L4(1)=0 THEN D(1)=0:D(2)=0:D(3)=0:D(4)=0 REMARK IF BILL DATE IS ZERO, FORCE INVOICE AMOUNT TO ZERO
IF L4(2)<>0 THEN 6300
D(8)=0 REMARK IF PROGRESS DUE DATE IS ZERO,\
FORCE PROGRESS BILLING AMT TO ZERO
IF L4(1)=0 THEN 6430 REMARK IF BOTH ARE ZERO, SKIP THIS INVOICE
GOTO 6300
6280 IF W6$=W1$ THEN 6300 REMARK CLOSED ITEM AND UNBILLED REPORT FORMATS
W6$=W1$
IF PAGE.COUNT%<>0 THEN GOSUB 4500 REMARK PRINT NEW CUSTOMER DATA WHEN CUSTOMERS CHANGE
6300 IF R3=2 THEN 6320 REMARK FOR ALL FORMATS EXCEPT AGING ANALYSIS...
A(1)=D(1) REMARK ASSIGN VALUES TO PRINT, AND ACCUMULATE THEM TO TOTALS
A(2)=D(2)
A(3)=D(3)
A(4)=D(4)
A(5)=D(6)
A(6)=D(8)
A(7)=D(10)
FOR I%=1 TO 7
B.(I%)=B.(I%)+A(I%)
NEXT I%
GOTO 6330
6320 A(2)=0:A(3)=0:A(4)=0:A(5)=0:A(6)=0:A(7)=0 REMARK ASSIGN VALUES TO PRINT FOR AGING ANALYSIS
A(1)=D(7)+D(11)
B.(1)=B.(1)+A(1)
IF D(7)=0 THEN 6326 REMARK UNLESS INVOICE BALANCE IS ZERO, AGE INVOICE
I2=G3(1):J2=L4(1):GOSUB 4080
IF A.<1 THEN A.=1
6322 I=INT(A./30)+2
IF I>5 THEN I=5
A(I)=D(7)
B.(I)=B.(I)+D(7)
6326 IF D(11)=0 THEN 6330 REMARK UNLESS PROGRESS BALANCE IS ZERO, AGE IT
I2=G3(1):J2=L4(2):GOSUB 4080
IF A.<10 THEN I=6 \
ELSE I=7
A(I)=D(11)
B.(I)=B.(I)+D(11)
6330 B.(8)=B.(8)+D(7)+D(11)
B.(9)=B.(9)+1
A1=115:GOSUB 825 REMARK START PRINT ROUTINE
IF LINE.COUNT% < 7 THEN GOSUB 4500 REMARK PRINT CURRENT CUSTOMER AT THE TOP OF A NEW PAGE
IF S=2 THEN 6430 REMARK EXCEPT FOR SUMMARY ONLY REPORT, PRINT INVOICE DETAILS
PRINT USING MASKD$;L1;
PRINT B;L1$;
PRINT TAB(22);
PRINT USING MASKD$;L2;
PRINT " ";L2$;
IF L4(1)<>0 THEN PRINT TAB(36);:X0=L4(1):GOSUB 680.5
PRINT TAB(44);
PRINT USING MASKA$;A(1),A(2),A(3),A(4),A(5);
IF B=2 OR D(12)<>0 THEN PRINT "C";
PRINT TAB(100);
PRINT USING MASKA$;A(6),A(7);
IF L4(2)<>0 THEN PRINT TAB(123);:X0=L4(2):GOSUB 680.5
PRINT
LINE.COUNT%=LINE.COUNT%+1
IF D(13)<>0 THEN \
PRINT TAB(10);"G/L #";: \
PRINT USING MASKE$;D(13): \
LINE.COUNT%=LINE.COUNT%+1
IF R=1 THEN GOTO 6420\ REMARK IF DELETE OPTION SELECTED, BRANCH
ELSE GOTO 6430
REMARK CLOSED ITEM LISTING CHOSEN
6380 IF C2=5 THEN 6280 REMARK UNLESS DELETE FLAGGED...
IF L4(1)=0 THEN 6430 REMARK SKIP UNBILLED ITEMS
IF D(7)+D(11)=0 THEN GOTO 6280 \ REMARK AND OPEN ITEMS
ELSE GOTO 6430
REMARK UNBILLED ITEM LISTING CHOSEN
6400 IF L4(1)=0 THEN 6280 REMARK SKIP INVOICES WITH NON-ZERO BILL DATES
IF L4(2)=0 THEN 6430
IF D(8)=0 THEN 6280 REMARK UNLESS THEY HAVE A POSTIVE PROGRESS BALANCE DUE
GOTO 6430
REMARK DELETE CLOSED ITEMS
6420 B=-1
FILE.NO=3:REC.NO%=RECORD.INDEX:GOSUB 3450
6430 NEXT RECORD.INDEX REMARK END OF MAIN PRINT LOOP
IF R3>2 THEN \ REMARK ZERO TOTALS ON CLOSED ITEM AND UNBILLED FORMATS
FOR I%=1 TO 9: \
B.(I%)=0: \
NEXT I%: \
GOTO 6020 REMARK AND DO NOT PRINT GRAND TOTALS
GOSUB 4220 REMARK PRINT LAST CUSTOMER TOTALS ON\
OPEN ITEM AND AGING ANALYSIS FORMATS
FOR I%=1TO 9
B.(I%)=C(I%)
NEXT I%
PRINT " GRAND"
IF R3=2 THEN PRINT " TOTAL";
GOSUB 4220 REMARK PRINT GRAND TOTALS
GOTO 6020
6475 X2$="ZERO INVOICES ON FILE":GOSUB 615
6480 PRINT CLEAR.SCREEN$;"A/R LEDGER LOADING MENU" REMARK END PROGRAM AND RELOAD MENU
CHAIN"A/P000"