home *** CD-ROM | disk | FTP | other *** search
- REMARK ***********************************************\
- * A/P060.BAS ACCOUNTS PAYABLE CHECK WRITER *\
- * 6/18/79 5:15 PM *\
- ***********************************************
-
-
- DIM W3$(7),W2(4),M$(5),P(6),W(5),G3(5),G2$(5),C(27),D(27),Y(2)
- %INCLUDE CURSOR
- DATA "ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN" REMARK DATA TABLE USED IN CHECK AND DATE CALCULATIONS
- DATA "EIGHT","NINE","TEN","ELEVEN","TWELVE"
- DATA "THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN"
- DATA "SEVENTEEN","EIGHTEEN","NINETEEN","TWENTY"
- DATA "THIRTY","FORTY","FIFTY","SIXTY","SEVENTY"
- DATA "EIGHTY","NINETY"
- DATA "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY"
- DATA "AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"
- GOTO 6000
- %INCLUDE SUBS1
- %INCLUDE GENINFO
- %INCLUDE BINSEARC
- %INCLUDE READVEND
- %INCLUDE A/P-INFO
-
-
-
- 4000 A2=A1 REMARK ROUTINE TO GENERATE ENGLISH VERSION OF CHECK AMOUNT.\
- AMOUNTS OVER $1000.00 PRINT ON FIRST LINE; BELOW THAT, ON THE SECOND.
- IF A1<1000 THEN PRINT:GOTO 4070
- 4040 N1=INT(A1/100000) REMARK HUNDRED-THOUSANDS
- PRINT TAB(5);"**";
- IF N1>99 THEN RETURN
- IF N1<>0 THEN GOSUB 4160:PRINT "HUNDRED ";:A1=A1-N1*100000
- 4050 N1=INT(A1/1000) REMARK THOUSANDS OF DOLLARS
- IF N1<>0 THEN GOSUB 4160:A1=A1-N1*1000
- PRINT "THOUSAND**"
- 4070 PRINT TAB(5);"**"; REMARK HUNDREDS " " "
- N1=INT(A1/100)
- IF N1<>0 THEN GOSUB 4160:PRINT "HUNDRED ";:A1=A1-N1*100
- 4080 N1=INT(A1) REMARK DOLLARS
- IF N1<>0 THEN GOSUB 4160:PRINT "DOLLARS ";:GOTO 4110
- IF INT(A2)>0 THEN PRINT "DOLLARS ";
- 4110 A1=A1-N1 REMARK CALCULATE CENTS
- IF A2>=1 THEN PRINT "AND";
- IF A1=0 THEN PRINT " NO "; \
- ELSE PRINT A1*100;
- PRINT "CENTS**";
- RETURN
-
- 4160 IF N1 >= 21 THEN 4161 REMARK ROUTINE TO CONVERT AMOUNT IN N1 TO ENGLISH LANGUAGE
- RESTORE
- FOR I%=1 TO N1:READ X0$:NEXT I%:GOTO 4180
- 4161 RESTORE
- FOR I%=1 TO INT(((N1-20)/10)+20)
- READ X0$
- NEXT I%
- PRINT X0$;
- A3=N1-INT(N1/10)*10
- IF A3=0 THEN PRINT" ";: RETURN
- PRINT "-";
- RESTORE
- FOR I%=1 TO A3
- READ X0$
- NEXT I%
- 4180 PRINT X0$;
- PRINT " ";
- RETURN
-
-
- 4200 A1=A8:GOSUB 4400 REMARK PRINT BODY OF CHECK
- A1=W5:GOSUB 4000 REMARK GENERATE ENGLISH CHECK AMOUNT
- 4240 PRINT TAB(65);
- PRINT USING "**#######.##";W5 REMARK PRINT CHECK WITH ASTERISK FILL
- PRINT:PRINT:PRINT:PRINT
- 4250 FOR I%=2 TO 5
- PRINT TAB(12);M$(I%) REMARK PRINT NAME/ADDRESS LINE OF PAYEE
- NEXT I%
- FOR I%=1 TO 9 REMARK PRINT LINE FEEDS TO CHECK STUB PORTION
- PRINT
- NEXT I%
- RETURN
- 4320 C6%=C6%+1 REMARK SKIP TO BOTTOM OF THE CURRENT CHECK STUB.\
- IF LAST STUB PAGE, PRINT TOTALS.
- FOR I%=1 TO 14-C8%
- PRINT
- NEXT I%
- C8%=0
- IF C5%=0 THEN PRINT TAB(15);"TOTAL";TAB(33);: \
- PRINT USING MASKD$;W(1)+W(3)+W(4);W(2);: \
- PRINT TAB(65);: \
- PRINT USING MASKC$;W(5)
- PRINT:PRINT
- PRINT " REG. NO.";W7;TAB(25);M$(2);TAB(53);"PAGE";C6%;"OF";C9%
- PRINT CHR$(12)
- RETURN
- 4370 A1=A8:GOSUB 4400 REMARK ROUTINE TO PRINT A DUMMY CHECK FOR MULTI-PAGE CHECKS.
- PRINT
- PRINT TAB(5);L1$;TAB(65);L1$;L1$
- PRINT:PRINT:PRINT:PRINT
- GOTO 4250
- 4400 X1=INT(A1/10000) REMARK PRINT DATE (STORED IN A1) IN ENGLISH, AND PRINT REGISTER #
- X2=INT((A1-X1*10000)/100)
- X3=INT(A1-(X1*100+X2)*100)
- RESTORE
- FOR I%=1 TO 27+X1
- READ X0$
- NEXT I%
- PRINT TAB(70-LEN(X0$));X0$;X2;" ";X3
- PRINT TAB(62);"REG. NO.";W7
- RETURN
- 6000 MASKA$="######"
- MASKB$=" #######.##"
- MASKC$="$$######.##"
- MASKD$="$$######.## LESS $$####.## DISC"
- IF END #3 THEN 6180 REMARK EXIT IF THE CHECK FILE IS EMPTY
- OPEN "G/I0F010.DAT" AS 1,"A/P0F110.DAT" RECL 162 AS 2,\
- "A/P0F030.DAT" RECL 86 AS 3, "A/P0F130.DAT" AS 4
- Y9=1:GOSUB 700 REMARK READ GENERAL INFORMATION FILE
- X0=4:GOSUB 3310 REMARK READ A/P INFORMATION FILE
- RECORD.COUNT=AP.VENDFILE.EXTENT
- Y9=2:Y2=Y9
- 6010 L1$="*VOID*"
- CHECKS%=0
- CONSOLE
- 6020 PRINT CLEAR.SCREEN$;"A/P CHECK WRITER"
- PRINT:PRINT:PRINT:PRINT
- PRINT "FIRST CHECK REG. #"
- PRINT "LAST CHECK REG. #"
- 6025 X1=339:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER FIRST REGISTER # TO PRINT
- F=X0
- IF F=0 THEN 6180
- X1=403:X2=6:X3=F:X4=999999:GOSUB 345 REMARK ENTER LAST REGISTER # TO PRINT
- E=X0
- X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?":GOSUB 665 REMARK ENTER '1' IF ENTRY OK; OTHERWISE, RE-PROMPT
- IF X0=0 THEN 6025
- IF END #3 THEN 6010
- 6050 CHECKS%=CHECKS%+1
- READ #3,CHECKS%;W1$,W7,W5,A8,W9 REMARK READ CHECK HEADER RECORD
- IF W7 > E THEN 6010 REMARK IF REGISTER # IS BEYOND RANGE, END PRINTING; RE-START
- 6060 IF W7 < F THEN CHECKS%=CHECKS%+W9:GOTO 6050 REMARK IF REGISTER # IS BELOW RANGE, ADD DETAIL RECORD COUNT\
- TO FILE POINTER AND GET NEXT CHECK HEADER.
- 6065 XYZ$=W1$+" "
- K$=LEFT$(XYZ$,6):GOSUB 1060 REMARK SEARCH VENDOR FILE
- IF H=-1 OR VAR1=0 THEN \
- M$(2)="*** VOID ***":M$(3)="":M$(4)="":M$(5)="":W5=0 \ REMARK IF RECORD NOT FOUND, VOID THE CURRENT PAYEE & CHECK
- ELSE X0=L:GOSUB 3200 REMARK IF FOUND, READ FROM A/P0F110.DAT
- 6080 CONSOLE
- X1=768:GOSUB 210
- PRINT "REG. NUMBER";W7 REMARK PRINT CURRENT REGISTER #, PAYEE AND CHECK AMOUNT
- PRINT M$(2);TAB(64)
- PRINT "AMOUNT";
- PRINT USING MASKB$;W5
- LPRINTER
- 6100 GOSUB 4200 REMARK EXECUTE SUBROUTINE TO PRINT BODY OF CHECK
- FOR I%=1 TO 5
- W(I%)=0 REMARK ZERO OUT CHECK TOTALS
- NEXT I%
- C5%=W9
- C8%=0:C6%=0
- C9%=INT((W9-1)/6)+1 REMARK CALCULATE NUMBER OF PAGES AND DETAIL ITEMS TO PRINT\
- ON NEXT PAGE OF CHECK STUB
- 6130 IF C5%<7 THEN C4%=C5%:C5%=0 \
- ELSE C5%=C5%-6:C4%=6
- 6150 FOR B%=1 TO C4%
- CHECKS%=CHECKS%+1
- READ #3,CHECKS%; W2$,W1%,D8,W0,W2(1),W2(2),W2(3),W2(4) REMARK READ CHECK DETAIL RECORD
- C8%=C8%+1
- PRINT TAB(3);
- X0=D8:GOSUB 680.5 REMARK PRINT INVOICE DATE ON DETAIL RECORD
- PRINT TAB(15);
- PRINT USING MASKA$;W0; REMARK PRINT INVOICE NUMBER
- PRINT TAB(25);W2$;TAB(35); REMARK PRINT PURCHASE ORDER REFERENCE
- IF W2(2) <> 0 THEN PRINT USING MASKD$;W2(1)+W2(3)+W2(4),W2(2); REMARK PRINT AMT, DISCOUNT (IF DISCOUNT <> 0)
- PRINT TAB(65);
- PRINT USING MASKC$;W2(1)+W2(2)+W2(3)+W2(4); REMARK PRINT TOTAL AMOUNT
- FOR I%=1TO 4
- W(I%)=W(I%)+W2(I%) REMARK ADD DETAIL AMOUNTS TO CHECK TOTAL
- W(5)=W(5)+W2(I%)
- NEXT I%
- IF W1%=5 THEN PRINT " DB"; REMARK IF DEBIT MEMO, PRINT "DB"
- IF W1%=4 THEN PRINT " CR"; REMARK IF CREDIT MEMO, PRINT "CR"
- PRINT
- NEXT B%
- GOSUB 4320
- IF C5%=0 THEN 6050
- GOSUB 4370 REMARK IF MORE PAGES TO PRINT, PRINT A DUMMY CHECK AND SKIP TO STUB
- GOTO 6130
- 6180 PRINT CLEAR.SCREEN$;"A/P CHECK WRITER LOADING MENU"
- CHAIN "A/P000"
-