home *** CD-ROM | disk | FTP | other *** search
-
- REMARK #################################################
- REMARK # A/P UPDATE PROGRAM (A/P030) #
- REMARK # VERS. OF 11.20 AM 6/25/79 #
- REMARK #################################################
-
-
- %INCLUDE CURSOR
- DIM C(27),D(27),B(6,5),C5(27),D5(27),G2$(5),G3(5),B1(2,6),Y(2),M$(5)
- DIM P(5)
- DEF FNF(X9)=X9-INT(X9/10)*10 REMARK STRIP OFF TENS DIGIT
- GOTO 6000
- DATA "INVOICE","DELETE","MODIFY","CREDIT MEMO","DEBIT MEMO"
- %INCLUDE SUBS1
- %INCLUDE GENINFO
- %INCLUDE A/P-INFO
- %INCLUDE BINSEARC
- %INCLUDE READINV
- %INCLUDE WRITEINV
- %INCLUDE READVEND
- %INCLUDE WRITEVND
- .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 " R# VENDOR INV # DESCRIPTION TRANSACTION ERROR"
- PRINT
- LINE.COUNT%=6
- RETURN
-
-
- REMARK CHECK EXISTENCE OF INVOICE RECORD FOR TRANSACTION
- 4100 IF J%=1 AND TRAN.KEY$=INV.KEY$ THEN \ REMARK RECORD SHOULD BE AND IS ON FILE
- INVOICE.POINTER%=INVOICE.POINTER%+1:\
- RETURN
- IF J%=2 AND TRAN.KEY$<>INV.KEY$ THEN RETURN REMARK RECORD SHOULD NOT BE AND IS NOT ON FILE
- 4140 X4$="A/P UPDATE REPORT":A1=60:GOSUB 825 REMARK PRINT TRANSACTION ON ERROR REPORT
- B1(2,A%)=B1(2,A%)+1
- PRINT USING MASKA$;R%;W1$;W0;
- PRINT TAB(23);W2$;TAB(37);
- RESTORE
- FOR I%=1 TO A%
- READ A$
- NEXT I%
- PRINT A$;
- IF J%=1 THEN PRINT TAB(50);"NOT ON FILE"
- IF J%=2 THEN PRINT TAB(50);"DUPLICATE"
- IF J%=3 THEN PRINT TAB(50);"DOUBLE TRANSACTION"
- J%=0
- LINE.COUNT%=LINE.COUNT%+1
- RETURN
-
-
- 4200 IF I2<12 THEN \ REMARK ACCUMULATE G/L DISTRIBUTION TOTAL
- B8=B8+C(I2):\
- RETURN:\ REMARK SKIP IF G/L NOT IMPLEMENTED
- P1=D(I2):\
- P4=W0:\
- P5=C(I2):\ REMARK ALSO, ADD TO G/L POSTING FILE
- EXTERNAL.POSTING.EXTENT%=EXTERNAL.POSTING.EXTENT%+1:\
- FILE.NO%=5:RECORD.NO%=EXTERNAL.POSTING.EXTENT%:GOSUB 3650\
- ELSE\
- B9=B9+C(I2) REMARK OR, ACCUMULATE JOB DISTRIBUTION TOTAL
- RETURN
-
-
- 4300 PRINT USING MASKB$;P1; REMARK PRINT G/L POSTING, AND ADD TO G/L POSTING FILE
- PRINT " ";D$;TAB(30);
- PRINT USING MASKC$;P5
- RETURN REMARK SKIP WITHOUT G/L PROGRAMS
- P4=0
- EXTERNAL.POSTING.EXTENT%=EXTERNAL.POSTING.EXTENT%+1
- FILE.NO%=5:RECORD.NO%=EXTERNAL.POSTING.EXTENT%:GOSUB 3650
- RETURN
-
-
- REMARK ACCUMULATE TRANSACTION AMOUNTS TO G/L POSTING TOTALS
- 5000 IF W1%=4 THEN B(A%,1)=B(A%,1)+F*(C(23)+C(24)):RETURN REMARK FOR CREDIT MEMOS
- FOR A1=1 TO 4 REMARK FOR INVOICES OR DEBIT MEMOS
- IF C(22+A1)<>0 THEN B(A%,A1)=B(A%,A1)+F*C(22+A1)
- NEXT A1
- IF D(25)<>0 THEN \
- D1=-(C(23)+C(24)+C(25)+C(26))*F:\
- B2=B2+D1:\
- B7=B7+D1
- RETURN
-
-
- REMARK RETRIEVE EXISTING INVOICE DATA
- 5300 READ #3,INVOICE.POINTER%-1; XX$,XX,YY$,ZZ$,W1%,F5,D5(1),D5(2),D5(3),\
- D5(4),D5(5),D5(6),D5(7),D5(8),D5(9),D5(10),D5(11),D5(12),D5(13),\
- D5(14),D5(15),D5(16),D5(17),D5(18),D5(19),D5(20),D5(21),D5(22),D5(23),\
- D5(24),D5(25),D5(26),D5(27),C5(1),C5(2),C5(3),C5(4),C5(5),C5(6),\
- C5(7),C5(8),C5(9),C5(10),C5(11),C5(12),C5(13),C5(14),C5(15),C5(16),\
- C5(17),C5(18),C5(19),C5(20),C5(21),C5(22),C5(23),C5(24),C5(25),\
- C5(26),C5(27)
- RETURN
-
-
- 5400 IF W1%=4 THEN F=-F REMARK CHANGE SIGN OF "F" ON CREDIT MEMOS
- RETURN
-
-
- REMARK START OF MAINLINE CODE
- 6000 MASKA$="### / / ######"
- MASKB$="#####.#"
- MASKC$=" ########.##"
- MASKD$="###"
- OPEN "G/I0F010.DAT" AS 1, "A/P0F110.DAT" RECL 162 AS 2,\
- "A/P0F120.DAT" RECL 580 AS 3, "A/P0F020.DAT" RECL 580 AS 4,\
- "A/P0F130.DAT" AS 6
- CREATE "WORKFILE.DAT" RECL 580 AS 7
- Y9=1:GOSUB 700 REMARK RETRIEVE G/I FILE DATA
- X0=6:GOSUB 3310 REMARK RETRIEVE A/P INFORMATION FILE DATA
- P2=1 REMARK SET G/L POSTING SOURCE CODE
- P3=(INT(G3(1)/100))/100 REMARK SET G/L POSTING DATE
- INVOICE.POINTER%=1
- 6010 MAX.POSTING.RECORDS = 3600
- 6020 MAX.INVOICE.RECORDS = 100
- E$=" "
- W0$=" "
- GOTO 6040 REMARK SKIP UNLESS G/L PROGRAMS IMPLEMENTED
- OPEN "G/L0F020.DAT" RECL 36 AS 5,"G/L0F130.DAT" AS 8
- GOSUB .314
- 6040 PRINT CLEAR.SCREEN$;"A/P UPDATE"
- IF SORT%=0 THEN \
- PRINT:PRINT:PRINT:\
- PRINT"THE TRANSACTION FILE IS NOT SORTED. TRANSACTION":\
- PRINT"PRINT MUST BE RUN BEFORE PROCEEDING WITH THE UPDATE"
- PRINT CURSOR.HOME$
- PRINT "KEY RETURN TO BEGIN; ENTER 'END' TO EXIT"
- INPUT LINE A$
- IF SORT%=0 AND A$="END" THEN CHAIN "A/P02A"
- IF SORT%=0 THEN GOTO 6040
- IF A$="END" THEN GOTO 6680
- PRINT "PROCESSING...DO NOT INTERRUPT"
- PRINT
- LINE.COUNT%=66
- LPRINTER
- 6080 IF EXTERNAL.POSTING.EXTENT%+DIRECT.POSTING.EXTENT% > \ REMARK CHECK FOR G/L POSTING FILE OVERFLOW
- MAX.POSTING.RECORDS THEN E$="G/L"
- IF R% THEN \ REMARK RESAVE THE TRANSACTION MARKED 'USED'
- W2%=W2%+10:\
- FILE.NO=4:X0%=R%:GOSUB 3050
- IF E$<>" " THEN GOSUB 6740:GOTO 6540
- R%=R%+1 REMARK INCREMENT TRANSACTION FILE COUNTER
- IF R%>TRANSACTION.RCD.COUNT% THEN 6540 REMARK BRANCH AT END OF TRANSACTION FILE
- FILE.NO=4:X0%=R%:GOSUB 3000 REMARK RETRIEVE TRANSACTION RECORD
- Y2=3
- RECORD.COUNT=AP.INVOICE.EXTENT
- XYZ$=W1$+" ":ZYX$="000000"+STR$(W0)
- NEW.KEY$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6)
- IF NEW.KEY$=TRAN.KEY$ THEN \ REMARK IF DUPLICATE TRANSACTION, PRINT ON ERROR REPORT
- J%=3:\
- GOSUB 4140:\
- GOTO 6080
- TRAN.KEY$=NEW.KEY$
- IF AP.INVOICE.EXTENT=0 THEN INV.KEY$="ZZZZZZZZZZZZ"
- IF INV.KEY$="ZZZZZZZZZZZZ" THEN 6100 REMARK IF THE LAST INVOICE RECORD HAS BEEN READ, BRANCH
- K$=TRAN.KEY$
- GOSUB 1060 REMARK LOCATE NEXT INVOICE RECORD
- IF INVOICE.POINTER% > AP.INVOICE.EXTENT THEN \
- INVOICE.POINTER% = INVOICE.POINTER% - 1
- IF INVOICE.POINTER%=L THEN 6090 REMARK IF NEXT INVOICE HAS NOT CHANGED, BRANCH
- FOR I%=INVOICE.POINTER% TO L-1
- FILE.NO=3:X0%=I%:GOSUB 3000 REMARK COPY UNCHANGED INVOICES TO WORKFILE
- INVOICE.POINTER%=INVOICE.POINTER%+1
- IF W1%=-1 THEN 6085
- GOSUB 6900
- 6085 NEXT I%
- IF E$<>" " THEN GOSUB 6740:GOTO 6540
- IF L>AP.INVOICE.EXTENT THEN INV.KEY$="ZZZZZZZZZZZZ":GOTO 6095
- 6090 FILE.NO=3:X0%=INVOICE.POINTER%:GOSUB 3000 REMARK READ NEXT INVOICE FROM INVOICE FILE
- XYZ$=W1$+" ":ZYX$="000000"+STR$(W0)
- INV.KEY$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6)
- IF W1%=-1 AND INV.KEY$=TRAN.KEY$ THEN 6080
- 6095 FILE.NO=4:X0%=R%:GOSUB 3000 REMARK RE-LOAD TRANSACTION DATA
- 6100 CONSOLE
- PRINT CURSOR.HOME$:PRINT:PRINT:PRINT"UPDATING: ";W1$;" ";W0
- LPRINTER
- IF W2%>9 THEN 6080 REMARK IF TRANSACTION IS VOID, SKIP IT
- IF W2%=1 THEN A%=W1%\ REMARK SET COMPOSITE TRANSACTION TYPE AND OPERATION
- ELSE A%=W2%
- ON A% GOTO 6160,6360,6400,6160,6160 REMARK BRANCH ON TRANSACTION TYPE AND OPERATION
-
-
-
- REMARK NEW INVOICE, CREDIT MEMO, OR DEBIT MEMO
- 6160 J%=2:GOSUB 4100 REMARK MAKE SURE INVOICE DOES NOT ALREADY EXIST
- F=1
- IF J%=0 THEN 6080 REMARK IF INVOICE ALREADY EXISTS, GET NEXT TRANSACTION
- 6180 GOSUB 6900 REMARK SAVE TRANSACTION ON WORKFILE
- B1(1,A%)=B1(1,A%)+1
- GOSUB 5400 REMARK CHANGE SIGNS, IF CREDIT MEMO
- FOR I%=1 TO 22
- IF C(I%)<>0 THEN C(I%)=C(I%)*F:I2=I%:GOSUB 4200 REMARK POST G/L EXPENSE ACCOUNT DISTRIBUTIONS
- NEXT I%
- 6260 GOSUB 5000 REMARK ACCUMULATE OTHER G/L ACCOUNT POSTINGS
- IF B7=0 THEN 6080 REMARK IF NO CHANGE IN VENDOR TOTALS, GET NEXT TRANSACTION
- IF W0$=" " THEN 6280
- IF W0$=W1$ THEN 6320 REMARK IF VENDOR HAS CHANGED...
- X0$=W1$
- W1$=W0$
- Y9=2:X0=VENDOR.POINTER:GOSUB 3250 REMARK SAVE LAST VENDOR'S DATA
- W1$=X0$
- 6280 XYZ$=W1$+" "
- Y2=2
- K$=LEFT$(XYZ$,6)
- RECORD.COUNT=AP.VENDFILE.EXTENT
- GOSUB 1060 REMARK LOCATE NEXT VENDOR'S DATA
- IF H=-1 OR VAR1=0 THEN:\
- W0$=" ":\
- PRINT W1$;"NOT ON VENDOR FILE":\
- GOTO 6340\
- ELSE\
- Y9=2:X0=L:GOSUB 3200:\ REMARK RETRIEVE NEXT VENDOR'S DATA
- VENDOR.POINTER=L:\
- W0$=W1$
- 6320 Y(2)=Y(2)-B7:D=D(23)
- 6340 B7=0
- GOTO 6080
-
-
- REMARK OPERATION IS DELETE
- 6360 J%=1:GOSUB 4100 REMARK MAKE SURE INVOICE ALREADY EXISTS
- F=-1
- IF J%=0 THEN 6080 REMARK IF INVOICE DOES NOT EXIST, GET NEXT TRANSACTION
- GOSUB 5300 REMARK RETRIEVE INVOICE DATA
- IF FNF(F5)=2 OR D5(25)<>0 THEN 6380 REMARK DO NOT DELETE AN ALREADY DELETED OR CLOSED INVOICE
- IF W1%<>4 OR C(24)=0 THEN 6180
- 6380 J%=2
- GOSUB 4140 REMARK PRINT TRANSACTION ON ERROR REPORT
- GOTO 6080
-
-
- REMARK OPERATION IS MODIFY
- 6400 J%=1:GOSUB 4100 REMARK MAKE SURE INVOICE ALREADY EXISTS
- IF J%=0 THEN 6080 REMARK IF IT DOES NOT, GET NEXT TRANSACTION
- F=1
- GOSUB 5300 REMARK RETRIEVE INVOICE DATA
- IF FNF(F5)=2 THEN 6180 REMARK IF THE INVOICE IS DELETE-FLAGGED,\
- THE TRANSACTION EFFECTIVELY BECOMES A NEW INVOICE
- GOSUB 5400 REMARK REVERSE SIGN, IF CREDIT MEMO
- GOSUB 5000 REMARK ACCUMULATE TRANSACTION TOTALS TO G/L POSTING AMOUNTS
- GOSUB 6900 REMARK SAVE TRANSACTION ON WORKFILE
- B1(1,A%)=B1(1,A%)+1
- IF W1%=4 THEN \
- FOR I%=1 TO 22:\
- C(I%)=-C(I%):\
- C5(I%)=-C5(I%):\
- NEXT I%
- FOR I%=1 TO 22 REMARK ADJUST G/L DISTRIBUTIONS IF THEY HAVE BEEN MODIFIED
- IF D(I%)=D5(I%) THEN 6480
- I2=I%:GOSUB 4200
- D(I%)=D5(I%)
- C(I%)=-C5(I%)
- GOTO 6520
- 6480 C(I%)=C(I%)-C5(I%)
- IF C(I%)<>0 THEN I2=I%:GOSUB 4200
- 6520 NEXT I%
- FOR I%=1 TO 4 REMARK BACK OUT OLD INVOICE AMOUNTS FROM TOTALS
- C(22+I%)=C5(22+I%)
- NEXT I%
- D(25)=D5(25)
- F=-1
- GOSUB 5400
- GOTO 6260
-
-
-
- REMARK END OF PROGRAM - PRINT TOTALS
- 6540 IF INVOICE.POINTER% >= AP.INVOICE.EXTENT THEN 6555
- FOR I%=INVOICE.POINTER% TO AP.INVOICE.EXTENT REMARK COPY THE REST OF THE INVOICE FILE TO THE WORKFILE
- FILE.NO=3:X0%=I%:GOSUB 3000
- INVOICE.POINTER%=INVOICE.POINTER%+1
- IF W1%<>-1 THEN GOSUB 6900
- NEXT I%
- 6555 IF E$<>" " THEN GOTO 6560
- DELETE 4 REMARK ERASE TRANSACTION FILE
- CREATE "A/P0F020.DAT" RECL 580 AS 4
- TRANSACTION.RCD.COUNT%=0
- 6560 CLOSE 7 REMARK CLOSE WORKFILE BEFORE RENAMING
- DELETE 3 REMARK ERASE INVOICE FILE
- A=RENAME ("A/P0F120.DAT","WORKFILE.DAT")
- CLOSE 6
- OPEN "A/P0F130.DAT" AS 6
- AP.INVOICE.EXTENT=OUTPUT.COUNT%
- X0=6:GOSUB 3350
- LPRINTER
- LINE.COUNT%=100
- B6=0:B4=0
- IF W0$<>" " THEN W1$=W0$:Y9=2:X0=VENDOR.POINTER:GOSUB 3250 REMARK SAVE FINAL VENDOR'S DATA
- X4$="A/P UPDATE REPORT":A1=115:GOSUB 825
- PRINT:PRINT:PRINT TAB(61);"AMOUNT DISCOUNT ";
- PRINT " FREIGHT TAXES TOTAL ERRORS"
- RESTORE
- FOR B0=1 TO 5
- READ X0$
- PRINT TAB(12);
- PRINT USING MASKD$;B1(1,B0);
- PRINT " ";
- PRINT X0$;" TRANSACTIONS";TAB(55);
- B6=B6+B1(1,B0)
- B5=0
- FOR I%=1 TO 4
- PRINT USING MASKC$;B(B0,I%);
- B(6,I%)=B(6,I%)+B(B0,I%)
- B5=B5+B(B0,I%)
- NEXT I%
- PRINT USING MASKC$;B5;
- PRINT " ";B1(2,B0)
- NEXT B0
- PRINT:PRINT:PRINT TAB(12);
- PRINT USING MASKD$;B6;
- PRINT " TRANSACTIONS";TAB(55);
- FOR I%=1 TO 4
- PRINT USING MASKC$;B(6,I%);
- B4=B4+B(6,I%)
- NEXT I%
- PRINT USING MASKC$;B4
- PRINT:PRINT:PRINT TAB(9);"G/L POSTINGS":PRINT REMARK PRINT G/L TOTALS, AND ADD TO G/L POSTING FILE
- W0=0
- P1=2:P5=B2:D$="CASH":GOSUB 4300
- P1=2020:P5=B4+B2:D$="ACCT PAYABLE":GOSUB 4300
- PRINT TAB(9);"ALL OTHERS";TAB(30);
- PRINT USING MASKC$;B8
- PRINT:PRINT:PRINT "TOTAL JOB POSTINGS";TAB(30);
- PRINT USING MASKC$;B9
- GOTO 6680 REMARK IF G/L NOT IMPLEMENTED, SKIP
- CLOSE 8 REMARK SAVE CHANGED G/L EXTENT INFORMATION
- OPEN "G/L0F130.DAT" AS 8
- FILE.NO%=8:GOSUB .315
- 6680 CONSOLE
- PRINT CLEAR.SCREEN$;"A/P UPDATE LOADING MENU"
- CHAIN "A/P000"
-
- 6740 CONSOLE
- PRINT "PROGRAM TERMINATED DUE TO ";E$;
- PRINT " FILE FILLED TO LIMIT."
- PRINT "ENTER 'RETURN' TO CONTINUE"
- 6741 IF CONSTAT% THEN PRINT:RETURN ELSE GOTO 6741
-
-
- 6900 OUTPUT.COUNT%=OUTPUT.COUNT%+1 REMARK SUBROUTINE TO ADD A RECORD TO THE WORKFILE
- IF OUTPUT.COUNT% + AP.INVOICE.EXTENT - INVOICE.POINTER% >= \
- MAX.INVOICE.RECORDS - 1 THEN E$="INVOICE"
- FILE.NO=7
- X0%=OUTPUT.COUNT%
- GOSUB 3050
- RETURN
-