home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
cpmug
/
cpmug043.ark
/
A_P070.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
10KB
|
352 lines
REMARK ####################################################
REMARK # ACCOUNTS PAYABLE LEDGER PROGRAM #
REMARK # (A/P070) VERS OF 10.00 AM 6/20/79 #
REMARK ####################################################
%INCLUDE CURSOR
A4$="----"
FOR I%=1 TO 4:A4$=A4$+A4$:NEXT I%
DEF FNA(Z)=100*((Z/100)-INT(Z/100)) REMARK ZERO OUT TENS AND ONES DIGITS
MASKA$=" ######"
MASKB$="#####.#"
MASKC$=" #######.##"
MASKD$=" #######.##"
MASKE$="###"
DIM W(4),W1.(4),A1(5),W2.(4),A2(6),M$(5),Y(2),C(27),D(27),G3(5),\
G2$(5),P(5)
GOTO 6000
DATA 0,3,3,6,8,1,13,16,19,21,24,26
%INCLUDE SUBS1
%INCLUDE BINSEARC
%INCLUDE GENINFO
%INCLUDE READVEND
%INCLUDE READINV
%INCLUDE WRITEINV
%INCLUDE A/P-INFO
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 TOTAL.FLAG%<>2 THEN \
PRINT " VENDOR INV # DESCR. BUY INV DATE PAY DATE";: \
PRINT" CK REG (G/L #)";
PRINT TAB(69);"AMOUNT DISCOUNT";TAB(92);"OTHER NET DUE ";
GOSUB 5660 REMARK PRINT AGING HEADINGS
PRINT
LINE.COUNT%=6
RETURN
5020 PRINT A6$;TAB(8);L5$;TAB(21); REMARK PRINT ONE TOTAL LINE
PRINT USING MASKA$;I3
RETURN
5040 YEAR = FNA(I) 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
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
5140 X4$=L4$:A1=115:GOSUB 825 REMARK PRINT ONE DETAIL LINE
IF W9>1 AND LINE.COUNT%<7 THEN \
PRINT M$(2);" - CONTINUED": \
LINE.COUNT%=LINE.COUNT%+1
PRINT TAB(3);W1$;TAB(9);
PRINT USING MASKA$;W0;
PRINT TAB(17);W2$;TAB(27);W3$;TAB(31);
X0=D(23):GOSUB 680.5
PRINT " ";
X0=D(24):GOSUB 680.5
D1=C(2)+C(3)+C(4)+C(5)+C(6)+C(7)+C(8)+C(9)+C(10)+C(11)
PRINT USING MASKA$;D(25);
IF D1=0 THEN PRINT " ";:PRINT USING MASKB$;D(1);
PRINT TAB(64);
PRINT USING MASKD$;C(23);C(24);C(25);C0;
LINE.COUNT%=LINE.COUNT%+1
IF C3<>0 THEN PRINT TAB(C3);"X"; REMARK AGING
PRINT TAB(126);
IF W1%=1 THEN X0$="INV"
IF W1%=4 THEN X0$="CR"
IF W1%=5 THEN X0$="DB"
PRINT X0$
RETURN
5400 X4$=L4$:A1=115:GOSUB 825 REMARK LOCATE, RETRIEVE AND PRINT VENDOR DATA
Y2=2
RECORD.COUNT = AP.VENDFILE.EXTENT
XYZ$=W1$+" "
K$=LEFT$(XYZ$,6)
GOSUB 1060
IF H=-1 OR VAR1=0 THEN \
M$(2)="NO VENDOR INFORMATION": \
Y(1)=0:Y(2)=0 \
ELSE \
Y9=2:X0=L:GOSUB 3200
PRINT M$(2);TAB(40);"(YEAR TO DATE";
PRINT USING MASKC$;Y(2);
PRINT ") (LAST YEAR";
PRINT USING MASKC$;Y(1);
PRINT ")"
LINE.COUNT%=LINE.COUNT%+1
RETURN
5460 IF W9=0 THEN RETURN REMARK PRINT AND ZERO OVERALL REPORT TOTALS
IF W9>1 OR S=1 THEN \
PRINT " TOTAL";TAB(25);: \
PRINT USING MASKE$;W9;: \
PRINT " INVOICES";: \
PRINT TAB(64);: \
PRINT USING MASKD$;W(1);W(2);W(3);W(4): \
PRINT: \
LINE.COUNT%=LINE.COUNT%+2
W9=0:W(1)=0:W(2)=0:W(3)=0:W(4)=0
RETURN
5540 IF D1=0 THEN RETURN REMARK PRINT MULTIPLE GENERAL LEDGER NUMBERS
PRINT TAB(7);"G/L";
FOR I1%=1 TO 11
IF C(I1%)<>0 THEN PRINT " ";:PRINT USING MASKB$;D(I1%);
NEXT I1%
PRINT
PRINT TAB(7);"AMT";
FOR I1%=1 TO 11
IF C(I1%)<>0 THEN PRINT USING MASKD$;C(I1%);
NEXT I1%
PRINT
LINE.COUNT%=LINE.COUNT%+2
RETURN
5620 IF A9=0 THEN RETURN REMARK PRINT AND ZERO ACCOUNT TOTALS
PRINT "--ACCOUNT TOTALS---";LEFT$(A4$,44);
PRINT USING MASKD$;W2.(1);W2.(2);W2.(3);W2.(4);
PRINT LEFT$(A4$,23)
PRINT
A9=0:W2.(1)=0:W2.(2)=0:W2.(3)=0:W2.(4)=0
LINE.COUNT%=LINE.COUNT%+2
RETURN
5660 PRINT USING MASKE$;P(1);P(2);P(3);P(4); REMARK PRINT COLUMN HEADINGS FOR AGING
PRINT" >"
RETURN
6000 OPEN "G/I0F010.DAT" AS 1, "A/P0F110.DAT" RECL 162 AS 2, \ REMARK MAIN PROGRAM STARTS HERE
"A/P0F120.DAT" RECL 580 AS 3, "A/P0F130.DAT" AS 4, \
"CRT" RECL 1100 AS 19
Y9=1:GOSUB 700 REMARK RETREIVE G/I FILE DATA
I=G3(1):GOSUB 5040 REMARK COMPUTE # OF DAYS BETWEEN TODAY & 00/00/00
D3=A4
X0=4:GOSUB 3310 REMARK RETREIVE A/P GENERAL INFORMATION
6040 FOR I%=1 TO 4 REMARK CLEAR TOTAL AND INVOICE FILE VARIABLES
A1(I%)=0:A2(I%)=0:W(I%)=0:W1.(I%)=0:W2.(I%)=0
NEXT I%
DELETE.COUNT%=0:INVOICE.RECORD.NO=0:TOTAL.FLAG%=0
A1(5)=0:A2(5)=0:A2(6)=0
L5$=" INVOICES"
L4$="A/P LEDGER OPEN ITEM LISTING"
CONSOLE
X0=7:GOSUB 260
W8=0:W9=0:R1=0:R=0:S=0:PAGE.COUNT%=0:OPEN.COUNT%=0:CLOSED.COUNT%=0
LINE.COUNT%=62
X1=270:X2=1:X3=0:X4=2:GOSUB 345 REMARK ENTER REPORT FORMAT
ON X0+1 GOTO 6060,6120,6080
6060 CONSOLE REMARK END PROGRAM ROUTINE
PRINT CLEAR.SCREEN$;"A/P LEDGER LOADING MENU"
CHAIN "A/P000"
6080 R=1 REMARK CLOSED ITEM LISTING CHOSEN
L4$="A/P LEDGER CLOSED ITEM LISTING"
X1=355:X2=1:X3=0:X4=1:GOSUB 345 REMARK ENTER WHETHER TO DELETE CLOSED ITEMS
R1=X0
6120 X1=398:X2=1:X3=1:X4=3:GOSUB 345 REMARK ENTER REPORT TYPE
ON X0 GOTO 6180,6160,6140
6140 S=3 REMARK ONE-VENDOR-ONLY TYPE CHOSEN
X1=410:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER VENDOR NUMBER
XYZ$=X0$+" "
W7$=LEFT$(XYZ$,6)
GOTO 6180
6160 S=1
6180 X1=534:GOSUB 673 REMARK ENTER START DATE
I=X0:GOSUB 5040 REMARK FIND # OF DAYS BETWEEN START DATE AND 00/00/00
B0=X0
B=A4
X1=598:GOSUB 673 REMARK ENTER END DATE
I=X0:GOSUB 5040 REMARK FIND # OF DAYS BETWEEN END DATE AND 00/00/00
E0=X0
E=A4
X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?":GOSUB 665
IF X0=0 THEN 6040
LPRINTER
IF S=3 THEN \ REMARK IF TYPE IS ONE-VENDOR-ONLY FIND THAT VENDOR
Y2=3: \
RECORD.COUNT=AP.INVOICE.EXTENT: \
K$=W7$+"000000":\
GOSUB 1060: \
INVOICE.RECORD.NO=L-1 \
ELSE\
INVOICE.RECORD.NO=0
IF INVOICE.RECORD.NO<0 OR INVOICE.RECORD.NO>AP.INVOICE.EXTENT-1 THEN\
X2$="VENDOR NUMBER OUT OF RANGE": \
GOSUB 615: \
GOTO 6040
6260 INVOICE.RECORD.NO = INVOICE.RECORD.NO + 1
IF INVOICE.RECORD.NO > AP.INVOICE.EXTENT THEN 6680
FILE.NO=3:X0%=INVOICE.RECORD.NO:GOSUB 3000 REMARK GET INVOICE RECORD
IF S=3 AND W1$<>W7$ THEN 6680 REMARK IF TYPE IS ONE-VENDOR, BRANCH WHEN PAST THAT VENDOR
IF W2%=2 THEN DELETE.COUNT% = DELETE.COUNT% + 1: GOTO 6300
IF D(25)<>0 THEN CLOSED.COUNT%=CLOSED.COUNT%+1:GOTO 6300
IF W1%<>4 THEN OPEN.COUNT%=OPEN.COUNT%+1:GOTO 6300
IF C(23)+C(24)=0 THEN CLOSED.COUNT%=CLOSED.COUNT%+1\
ELSE OPEN.COUNT%=OPEN.COUNT%+1
6300 I=D(24):GOSUB 5040
IF A4<B OR A4>E THEN 6260 REMARK CHECK INVOICE DATE AGAINST START & END DATES
IF W2%>9 THEN W2%=W2%-10 REMARK STRIP OFF TENS DIGIT, IF ANY, FROM OPERATION CODE
IF R=1 THEN 6400 REMARK IF CLOSED ITEM LISTING, BRANCH
REMARK OPEN ITEM LISTING ROUTINES
IF W2%=2 THEN \ REMARK SKIP DELETE-FLAGGED INVOICES ON OPEN ITEM LISTING
GOTO 6260
IF W6$=W1$ THEN 6480
IF PAGE.COUNT%=0 THEN 6380
GOSUB 5460
IF LEFT$(W1$,2)<>LEFT$(W6$,2) THEN GOSUB 5620
6380 W6$=W1$ REMARK SET CURRENT VENDOR
S3=1
GOTO 6480
REMARK CLOSED ITEM LISTING ROUTINES
6400 IF W2%=2 THEN \ REMARK ZERO INVOICE AMOUNTS ON DELETE-FLAGGED INVOICES
C(23)=0:C(24)=0:C(25)=0:C(26)=0:GOTO 6540
IF D(25)=0 THEN 6260 REMARK SKIP OPEN ITEMS
IF W1%<>4 THEN 6540 REMARK IF NOT A CREDIT MEMO, BRANCH
C1=C(25)
C2=D(25)
IF C(23)+C(24)<=0 THEN W2%=2:GOTO 6460
IF C(25)=0 THEN 6260
D(25)=0:C(25)=0:W2%=0
GOSUB 3050 REMARK RESAVE CREDIT MEMO
6460 C(23)=-C1
D(25)=C2
GOTO 6500
REMARK RESUME OPEN ITEM LISTING ROUTINES
6480 IF W1%<>4 THEN 6520 REMARK IF NOT A CREDIT MEMO, BRANCH
IF C(23)+C(24)=0 THEN 6260 REMARK SKIP TOTALLY USED CREDIT MEMOS
C(23)=-C(23)-C(24)
D(25)=0
6500 C(24)=0:C(25)=0:C(26)=0
GOTO 6540
6520 IF D(25)<>0 THEN 6260 REMARK SKIP CLOSED ITEMS
6540 C(25)=C(25)+C(26) REMARK ACCUMULATE TOTALS
FOR I%=1 TO 3
W(I%)=W(I%)+C(22+I%)
W1.(I%)=W1.(I%)+C(22+I%)
W2.(I%)=W2.(I%)+C(22+I%)
NEXT I%
W8=W8+1
IF S<>3 THEN A9=1
IF R=0 THEN W9=W9+1
C0=C(23)+C(24)+C(25)
W(4)=W(4)+C0
W1.(4)=W1.(4)+C0
W2.(4)=W2.(4)+C0
C3=0
IF R=1 THEN 6640 REMARK IF CLOSED ITEM LISTING, SKIP AGING
A=D3-A4 REMARK AGE OPEN ITEMS
I%=1
6580 IF A < P(I%) THEN 6600
I%=I%+1
IF I% < 5 THEN 6580
6600 A1(I%) = A1(I%)+C0
C3 = I%*3 + 108
IF W1%<>4 THEN A2(I%)=A2(I%)+C(24)
IF S3=1 THEN GOSUB 5400:S3=0
6640 IF S=1 THEN 6260 REMARK IF REPORT TYPE IS SUMMARY, GET NEXT INVOICE
GOSUB 5140
GOSUB 5540
IF R1=0 THEN 6260 REMARK IF NOT DELETING CLOSED ITEMS, GET NEXT INVOICE
IF W2%=2 OR W1%<>4 THEN\
W1%=-1:\
FILE.NO=3:X0%=INVOICE.RECORD.NO:GOSUB 3050
GOTO 6260
6680 IF R=0 THEN GOSUB 5460:GOSUB 5620 REMARK - * * * TOTALS SECTION * * * -
TOTAL.FLAG%=2
LINE.COUNT%=66
X4$=L4$:A1=115:GOSUB 825
PRINT:PRINT TAB(30);"TOTALS";
PRINT TAB(45);
PRINT USING MASKA$;W8;
PRINT " INVOICES";TAB(64);
FOR I%=1 TO 4
PRINT USING MASKD$;W1.(I%);
NEXT I%
PRINT:PRINT:PRINT:PRINT
IF R=1 THEN 6780 REMARK SKIP AGING SUMMARY FOR CLOSED ITEMS
PRINT TAB(44);"AGING";TAB(71);"AMOUNT DISCOUNT" REMARK AGING SUMMARY
PRINT
FOR I%=1 TO 5
PRINT TAB(40);
IF I<5 THEN \
PRINT "UNDER";: \
PRINT USING MASKE$;P(I%); \
ELSE \
PRINT "OVER ";: \
PRINT USING MASKE$;P(I%-1);
PRINT " DAYS";
PRINT TAB(65);
PRINT USING MASKC$;A1(I%);A2(I%)
PRINT
NEXT I%
PRINT:PRINT:PRINT TAB(53);"TOTAL";
PRINT TAB(65);
FOR I%=2 TO 5
A1(1)=A1(1)+A1(I%)
A2(1)=A2(1)+A2(I%)
NEXT I%
PRINT USING MASKC$;A1(1);A2(1)
6780 PRINT:PRINT
PRINT "THIS REPORT INCLUDES INVOICES";
IF S=3 THEN PRINT" FOR VENDOR # ";W7$;
PRINT" FROM ";
X0=B0:GOSUB 680.5
PRINT " TO ";
X0=E0:GOSUB 680.5
PRINT:PRINT
A6$="OPEN":I3=OPEN.COUNT%:GOSUB 5020
A6$="CLOSED":I3=CLOSED.COUNT%:GOSUB 5020
A6$="DELETED":I3=DELETE.COUNT%:GOSUB 5020
IF S=3 THEN I3=OPEN.COUNT%+CLOSED.COUNT%+DELETE.COUNT%\
ELSE I3=AP.INVOICE.EXTENT
A6$="TOTAL":GOSUB 5020
GOTO 6040