home *** CD-ROM | disk | FTP | other *** search
- REMARK ****************************************\
- * A/P040.BAS A/P CHECK CALCULATE *\
- * 6/18/79 5:10 PM *\
- ****************************************
-
-
- DIM G2$(5),G3(5),C(27),D(27),M$(5),A$(25),A1$(25,25),P(6),Y(2)
- DATA 0,3,3,6,8,11,13,16,19,21,24,26
- %INCLUDE CURSOR
- DEF FNA(Z)=100 *(Z/100 - INT(Z - 100))
- GOTO 6000
- %INCLUDE SUBS1
- %INCLUDE GENINFO
- %INCLUDE BINSEARC
- %INCLUDE READVEND
- %INCLUDE WRITEVND
- %INCLUDE READINV
- %INCLUDE WRITEINV
- %INCLUDE A/P-INFO
- 3650 RETURN REMARK THESE LINES FOR G/L SUBROUTINES
- .314 RETURN
- .315 RETURN
-
-
- 4000 REMARK ********* DATE SUBTRACTION ROUTINE *********\
- (THIS ROUTINE SUBTRACTS THE DATE IN I FROM THE\
- IMAGINARY DATE "00/00/00")
- YEAR=100*((I/100)-INT(I/100))
- 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% REMARK READ DATA TABLE
- 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
- REMARK *******************************************************
-
-
- 4150 REMARK ********** DAYS BETWEEN TWO DATES SUBROUTINE **********\
- THIS ROUTINE CALCULATES DAYS BETWEEN DATES IN I3 AND\
- J2. ANSWER (IN DAYS) IS PASSED BACK IN A.
-
- I=I3:GOSUB 4000
- A=A4
- I=J2:GOSUB 4000
- A=A-A4
- RETURN
- REMARK *****************************************************
-
-
- 4200 REMARK ********** INVOICE NUMBER ENTRY **********\
- ENTER INVOICE NUMBERS FOR THE K1'ST CHECK.
-
- XYZ$=X0$+" "
- X0$=LEFT$(XYZ$,6)
- A$(K1)=X0$ REMARK SAVE VENDOR NUMBER
- FOR J%=1 TO 25
- A1$(K1,J%)="" REMARK SET INVOICE NUMBERS TO NULL STRINGS
- NEXT J%
- IF LEN(X0$)=0 THEN GOTO 4280 REMARK IF BLANK VENDOR #, BRANCH
- GOSUB 5450
- X1=456:GOSUB 210
- PRINT "ENTERING INVOICES TO PAY FOR VENDOR ";A$(K1);TAB(64)
- 4220 REMARK ********** ENTER UP TO 25 INVOICE NUMBERS & ALLOW CHANGES **********
-
- FOR K2=1 TO 25
- GOSUB 5480
- IF X0=0 THEN K2=25
- NEXT K2
- 4240 GOSUB 5500
- IF X0=0 THEN 4280
- K2=X0+I*5
- GOSUB 5480
- GOTO 4240
-
-
- 4280 REMARK ********** RE-DISPLAY GRID WITH ALL VENDOR #'S ENTERED SO FAR FOR CHECK CALCULATION **********
- GOSUB 5450
- PRINT CURSOR.HOME$:PRINT:PRINT TAB(64):PRINT TAB(64)
- X1=465:GOSUB 210
- PRINT "ENTERING VENDOR NUMBERS TO PAY"
- PRINT
- K2=0
- FOR I1%=1 TO 5
- PRINT LEFT$(X9$,3);
- FOR I%=1 TO 5
- K2=K2+1
- IF LEN(A$(K2)) <> 0 THEN \
- PRINT LEFT$(X9$,4);:\
- PRINT USING "/2345/";A$(K2);
- NEXT I%
- PRINT
- NEXT I1%
- RETURN
-
-
- 5000 IF F=0 AND W5 <= 0 AND W1% = 4 THEN RETURN REMARK IF DETAIL RECORD IS A LONE CREDIT MEMO,
- REMARK RETURN WITHOUT WRITING A RECORD.
- IF F=0 THEN GOTO 5160 REMARK IF DETAIL PROCESSING FLAG IS SET, WRITE DETAIL CHECK RECORD.
- IF W9=0\ REMARK IF NO DETAIL RECORDS WERE WRITTEN FOR THIS CHECK,
- OR W5 <= 0 THEN \ REMARK OR CHECK AMOUNT IS NOT POSTIIVE,
- CHECKS%=HDR%:HDR%=0:\ REMARK SKIP WRITING HEADER AND RESET LOGICAL EOF
- RETURN
- PRINT #4, HDR%; K1$, W7, W5, A8, W9
- HDR%=0
- XYZ$=W1$+" "
- K$=LEFT$(XYZ$,6)
- RECORD.COUNT=AP.VENDFILE.EXTENT
- Y2=2
- GOSUB 1060 REMARK SEARCH FOR VENDOR RECORD
- IF H=-1 OR VAR1=0 THEN 5130
- X0=L:Y9=2:GOSUB 3200 REMARK READ THE VENDOR RECORD
- 5110 Y(2)=Y(2)+W5 REMARK ADD CHECK AMOUNT TO VENDOR ACTIVITY TOTAL
- L2=L2-W5 REMARK SUBTRACT CHECK AMOUNT FROM G/L CASH ACCOUNT
- D=A8
- GOSUB 3250 REMARK RE-WRITE THE VENDOR RECORD
- 5130 F=0:W5=0:W9=0
- W7=W7+1
- RETURN
-
-
- 5160 REMARK WRITE CHECK DETAIL RECORD
-
- IF HDR%=0 THEN HDR%=CHECKS%:CHECKS%=CHECKS%+1
- W9=W9+1 REMARK INCREMENT DETAIL COUNTER
- PRINT #4,CHECKS%; W2$,W1%,D(23),W0,C(23),C(24),C(25),C(26)
- CHECKS%=CHECKS%+1 REMARK INCREMENT TOTAL CHECK FILE RECORD COUNT.
- CLOSE 4
- OPEN "A/P0F030.DAT" RECL 86 AS 4
- RETURN
-
-
- 5210 W2%=0 REMARK RESAVE INVOICE RECORD
- D(24)=A8
- D(25)=W7
- X0=INVOICES%:GOSUB 3050
- RETURN
-
-
- 5230 RETURN REMARK SKIP UNLESS G/L PROGRAMS IMPLEMENTED
- X0=4
- P1=2020
- P2=1
- P3=INT(D1/100)/100
- P4=0
- P5=L2
- FILE.NO%=5:RECORD.NO%=EXTERNAL.POSTING.EXTENT%+1:GOSUB 3650
- P1=2
- RECORD.NO%=RECORD.NO%+1:GOSUB 3650
- EXTERNAL.POSTING.EXTENT%=EXTERNAL.POSTING.EXTENT%+2
- CLOSE 6
- OPEN "G/L0F130.DAT" AS 6
- FILE.NO%=6:GOSUB .315
- RETURN
-
-
- 5450 REMARK RE-DISPLAY GRID CONTENTS ON CRT
- X1=448:GOSUB 210
- PRINT TAB(64)
- PRINT
- FOR I%=1 TO 5
- PRINT USING "#";I%;:PRINT")";TAB(64)
- NEXT I%
- RETURN
-
-
- 5480 X1=572+14*INT((K2-1)/5)+10*K2:X2=6:X3=0:X4=999999 REMARK ENTER INVOICE NUMBER IN GRID
- GOSUB 345
- IF X%=3 THEN GOTO 6700 REMARK IF CTRL-C WAS DEPRESSED, EXIT PROGRAM
- IF X0=0 THEN RETURN
- X0$="000000"+X0$ REMARK RIGHT-ADJUST INVOICE NUMBER
- A1$(K1,K2)=RIGHT$(X0$,6)
- RETURN
-
- 5500 X2=1:X3=0:X4=5
- X2$="ENTER ROW TO CHANGE (0 IF NONE)"
- GOSUB 665
- IF X0=0 THEN RETURN
- I=X0-1
- X2=1:X3=0:X4=5
- X2$="ENTER COLUMN TO CHANGE"
- GOSUB 665
- IF X0=0 THEN 5500
- RETURN
-
-
- 5600 X1=572+14*INT((K-1)/5)+10*K:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER VENDOR NUMBER
- IF X%=3 THEN GOTO 6700 REMARK EXIT PROGRAM IF CTRL-C DEPRESSED
- RETURN
-
-
- REMARK START OF MAIN PROGRAM
- 6000 MAX.CHECKS%=100 REMARK SET PROCESSING LIMIT FOR CHECKS
- CTRL.C%=1
- Y9=1
- OPEN "G/I0F010.DAT" AS 1, "A/P0F110.DAT" RECL 162 AS 2,\
- "A/P0F120.DAT" RECL 580 AS 3, "A/P0F130.DAT" AS 4,\
- "CRT" RECL 1100 AS 19
- GOSUB 700 REMARK GET SYSTEM GENERAL INFORMATION
- X0=4:GOSUB 3310 REMARK READ A/P INFO FILE
- CLOSE 1,4
- FILE.NO=3 REMARK SET FILE NUMBER FOR A/P0F120.DAT
- X0=6:GOSUB 260 REMARK GET CRT MASK #6
- GOTO 6040
- OPEN "G/L0F020.DAT" RECL 36 AS 5
- OPEN "G/L0F130.DAT" AS 6 REMARK OPEN G/L INFO FILE
- FILE.NO%=6:GOSUB .314
- MAX.POSTINGS%=1000
- IF EXTERNAL.POSTING.EXTENT% > MAX.POSTINGS%\
- THEN\
- X2$="G/L POSTING FILE FULL":\
- GOSUB 615:\
- GOTO 6700
- 6040 X2=5:X3=0:X4=0:X2$="'CLEAR' OR 'SAVE' LAST CHECK RUN ('END' TO EXIT)?"
- GOSUB 665
- IF X0$="END" THEN 6700
- IF X0$="CLEAR" THEN GOTO 6059
- IF X0$ <> "SAVE" THEN GOTO 6040
- IF END #4 THEN 6059 REMARK SET DESTINATION FOR EOF
- OPEN "A/P0F030.DAT" RECL 86 AS 4
- IF END #4 THEN 6060
- 6045 READ #4; LINE X0$
- CHECKS%=CHECKS% + 1
- GOTO 6045
- 6059 IF CHECKS%=0 THEN CREATE "A/P0F030.DAT" RECL 86 AS 4
- 6060 IF CHECKS%=0 THEN CHECKS%=1
- IF CHECKS% > 1 THEN CHECKS% = CHECKS% -1
- 6070 PRINT CURSOR.HOME$:PRINT TAB(64):PRINT TAB(64)
- K=0
- X1=269:GOSUB 673 REMARK ENTER CHECK DATE
- A8=X0
- I3=G3(1):J2=A8:GOSUB 4150
- IF ABS(A) >= 7 THEN \ REMARK IF TOO FAR AHEAD OR BEHIND TODAY'S DATE
- X2$="TOO FAR AHEAD/BEHIND":\ REMARK THEN REJECT CHECK DATE ENTERED.
- GOSUB 615:\
- GOTO 6070
- 6080 X1=339:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER NUMBER OF HANDWRITTEN CHECKS
- W7=P(5)+X0 REMARK ADD THIS NUMBER TO NEXT CHECK REG #
- X1=369:GOSUB 210:PRINT W7 REMARK DISPLAY NEXT CHECK REG #
- K=0
- 6100 REMARK ********** ENTER VENDOR/INVOICE GRID **********
-
- IF K >= 25 THEN GOTO 6140
- K=K+1
- GOSUB 5600 REMARK ENTER VENDOR NUMBER IN GRID
- IF LEN(X0$) = 0 AND K=1 THEN \ REMARK IF FIRST GRID ENTRY IS A BLANK VENDOR,
- X1=411:X2=6:X3=0:X4=0:GOSUB 345:\ REMARK PROMPT FOR VENDOR NUMBER RANGE.
- A2$=X0$:\
- X1=432:X2=6:X3=0:X4=0:GOSUB 345:\
- X0$=X0$+" ":\
- A3$=LEFT$(X0$,6):\
- A$(1)="":\ REMARK RESET FIRST GRID VENDOR TO NULL VALUE
- GOTO 6180
- IF LEN(X0$) > 0 THEN \ REMARK IF VENDOR # WAS ENTERED, PROCESS INVOICE GRID.
- K1=K:GOSUB 4200:\
- GOTO 6100
-
-
- 6140 GOSUB 5500
- IF X0 > 0 THEN \ REMARK IF VALID FIELD NUMBER ENTERED, ALLOW CHANGES TO GRID
- K=X0+5*I:\
- GOSUB 5600:\
- K1=K:\
- GOSUB 4200:\
- GOTO 6140
- 6180 X2=1:X3=0:X4=1
- X2$="ENTRY CORRECT?"
- GOSUB 665
- IF X0 <> 1 THEN 6060
-
- 6200 PRINT CURSOR.HOME$
- PRINT
- PRINT "PROCESSING . . . DO NOT INTERRUPT"
- F9=1 REMARK SET FLAG FOR PROGRAM START
- 6220 IF LEN(A$(1)) > 0 THEN K=0:GOTO 6240 REMARK IF GRID WAS USED, BRANCH TO GET FIRST VENDOR
- RECORD.COUNT=AP.INVOICE.EXTENT
- Y2=3
- XYZ$=A2$+" "
- A2$=LEFT$(XYZ$,6)
- K$=A2$+"000000"
- GOSUB 1060 REMARK SEARCH INVOICE FILE FOR FIRST RECORD IN RANGE.
- INVOICES%=L-1
- GOTO 6320 REMARK BRANCH TO "VENDOR RANGE" ROUTINE
- 6240 K=K+1
- IF K=26 THEN GOTO 6680
- IF LEN(A$(K)) = 0 THEN GOTO 6680 REMARK IF NO MORE VENDORS IN GRID, EXIT PROGRAM
- K1$=A$(K) REMARK SET CURRENT VENDOR NUMBER IN K1$
- K1=0
- 6260 K1=K1+1
- IF K1=26 THEN 6440
- IF LEN(A1$(K,K1)) = 0 THEN 6440 REMARK IF NO MORE INVOICES FOR THIS VENDOR,\
- REMARK THEN WRITE CHECK HEADER RECORD
- 6280 XYZ$=K1$+" ":ZYX$="000000"+A1$(K,K1)
- K$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6)
- RECORD.COUNT=AP.INVOICE.EXTENT
- Y2=3
- GOSUB 1060 REMARK SEARCH INVOICE FILE
- IF H=-1 THEN GOTO 6260 REMARK IF INVOICE NOT FOUND, GET NEXT GRID ENTRY
- X0%=L
- GOTO 6340
- 6300 IF LEN(A$(1)) > 0 THEN 6260
- IF K1$ > A3$ THEN GOTO 6680 REMARK IF CURRENT VENDOR IS PAST VENDOR RANGE,\
- THEN BRANCH TO END OF PROGRAM.
- 6320 INVOICES%=INVOICES% + 1
- IF INVOICES% > AP.INVOICE.EXTENT THEN GOTO 6680 REMARK IF END OF FILE, END PROCESSING.
- X0%=INVOICES%
- 6340 GOSUB 3000 REMARK READ INVOICE RECORD
- IF W2%-INT(W2%/10)*10 = 2 THEN 6300 REMARK IF INVOICE RECORD WAS DELETE-FLAGGED,
- IF W1% <> 4 THEN 6420 REMARK OR INVOICE IS A CREDIT MEMO AND CHECK AMOUNT IS $0.00,
- IF C(23)+C(24)=0 THEN 6300 REMARK THEN GET THE NEXT INVOICE RECORD.
- IF W5=0 THEN 6300
- 6420 IF D(25) <> 0 THEN GOTO 6300
- IF LEN(K1$)=0 THEN 6500
- IF K1$=W1$ THEN 6520
- 6440 F=1
- GOSUB 5000
- IF CHECKS% > MAX.CHECKS% THEN\
- PRINT "CHECK FILE FULL":\
- PRINT "PRINT ALL CHECKS":\
- PRINT "RERUN CALCULATE":\
- PRINT "PRESS <RETURN> TO EXIT":\
- INPUT "";LINE X0$:\
- GOTO 6660
- IF LEN(A$(1)) > 0 THEN 6240 REMARK IF PROCESSING BY GRID, GET NEXT VENDOR ENTRY
- IF W1$ > A3$ THEN 6680 REMARK IF CALCULATING CHECKS BY RANGE, GET NEXT INVOICE
- 6500 K1$=W1$
- 6520 X1=448:GOSUB 210
- PRINT "PROCESSING ";W1$,W0;TAB(63)
- IF W1%<>4 THEN 6580 REMARK APPLY CREDIT MEMO TO POSITIVE CHECK AMOUNT.
- C1=C(23)+C(24)
- IF C1>W5 THEN C1=W5
- W5=W5-C1
- C(24)=C(24)-C1 REMARK TOTAL USED STORED AS NEGATIVE BALANCE
- C(25)=C(25)+C1
- GOSUB 5210
- C(23)=-C1 REMARK ADJUST FIELDS SO CREDIT AMOUNTS WILL
- C(24)=0:C(25)=0 REMARK APPEAR IN PROPER CHECK DETAIL FIELDS
- GOTO 6600
- 6580 W5=W5+C(23)+C(24)+C(25)+C(26)
- GOSUB 5210
- 6600 F=0
- GOSUB 5000
- GOTO 6300
- 6660 IF F9=0 THEN 6700
- 6680 F=1
- GOSUB 5000
- GOSUB 5230
- P(5)=W7
- OPEN "A/P0F130.DAT" AS 7
- X0=7
- GOSUB 3350 REMARK SAVE A/P INFORMATION RECORD
- F9=0
- CREATE "A/P0F030.PST" AS 1
- PRINT #1;L2
- 6700 CONSOLE
- PRINT CLEAR.SCREEN$;"A/P CHECK CALCULATE LOADING MENU"
- CHAIN "A/P000" REMARK CLOSE FILES AND LOAD MENU
-