REMARK ######################################################### REMARK # ACCOUNTS RECEIVABLE TRANSACTION ENTRY (A/R010) # REMARK # VERS. OF 3.30 PM 5/23/79 # REMARK ######################################################### DIM L4(2),D(13),Y(2),M$(5),R$(10),R1(10),R2(10) %INCLUDE CURSOR GOTO 6000 %INCLUDE SUBS1 %INCLUDE BINSEARC %INCLUDE A/R-INV %INCLUDE READCUST %INCLUDE A/R-INFO %INCLUDE A/RTAX DATA "INVOICE","CR MEMO","DB MEMO","NEW","INV BILLING" DATA "INV PAYMENT","PROG PAYMENT","DELETE","MODIFY" .673 Z0=X1 REMARK ENTER & DISPLAY DATE: ALLOW ZERO DATE GOSUB 210 PRINT " "; X2=6 X3=0 X4=123199 GOSUB 345 REMARK ENTER THAT DATE IF X0=0 THEN X0$="000000" IF LEN(X0$)<5 THEN X1=Z0:GOTO .673 .6735 IF LEN(X0$) < 6 THEN X0$="0"+X0$:GOTO .6735 IF MID$(X0$,1,2)>="00" AND MID$(X0$,1,2)<="12"\ AND MID$(X0$,3,2)>="00" AND MID$(X0$,3,2) <="31" THEN .675 X2$="OUT OF RANGE":GOSUB 615:X1=Z0:GOTO .673 .675 X0=VAL(X0$) .680 GOSUB 210 .6805 X0$=STR$(X0) .6806 IF LEN(X0$)<6 THEN X0$="0"+X0$:GOTO .6806 .681 PRINT LEFT$(X0$,2);"/";MID$(X0$,3,2);"/";RIGHT$(X0$,2); RETURN 4000 D(3)=INT((D(1)*R1(L6+1))+.5)/100 REMARK COMPUTE SALES TAX AND INVOICE TOTAL D(4)=D(3)+D(2)+D(1) X1=704:GOSUB 210 GOSUB 5440 REMARK REDISPLAY INVOICE AMOUNTS AND TOTAL 4020 D(7)=D(4)-D(6) REMARK COMPUTE INVOICE BALANCE IF L4(2)<>0 THEN D(7)=D(7)-D(8) IF L4(1)=0 THEN D(7)=0 REMARK IF BILL DATE IS ZERO, INVOICE BALANCE IS ZERO 4060 X1=320:GOSUB 210 I1%=5:I2%=7:GOSUB 4320 REMARK DISPLAY INVOICE PAYMENT AND BALANCE RETURN 4080 D(11)=D(8)-D(10) REMARK COMPUTE PROGRESS BALANCE IF L4(2)=0 THEN D(11)=0 REMARK ZERO PROGRESS BALANCE IF PROGRESS DUE DATE IS ZERO X1=640:GOSUB 210 I1%=8:I2%=11:GOSUB 4320 REMARK DISPLAY PROGRESS BILLING FIELDS RETURN REMARK CHECK FOR INCONSISTENCIES BETWEEN FIELDS 4120 IF D(7)<0 THEN 4220 REMARK NEGATIVE INVOICE BALANCE ILLEGAL IF D(11)<0 THEN 4220 REMARK NEGATIVE PROGRESS BALANCE ILLEGAL IF L4(1)<>0 THEN 4140 REMARK IF BILL DATE IS ZERO... IF D(4)<>0 THEN 4220 REMARK INVOICE PAYMENT MUST BE ZERO IF D(5)<>0 THEN 4220 REMARK AND INVOICE BALANCE MUST BE ZERO GOTO 4160 4140 IF D(4)=0 THEN 4220 REMARK IF BILL DATE IS NON-ZERO,\ INVOICE AMOUNT MUST BE NON-ZERO 4160 IF L4(2)<>0 THEN 4180 REMARK IF PROGRESS DUE DATE IS ZERO... IF D(8)<>0 THEN 4220 REMARK PROGRESS BILLING AMOUNT MUST BE ZERO IF D(9)<>0 THEN 4220 REMARK AND PROGRESS BALANCE MUST BE ZERO GOTO 4200 4180 IF D(8)=0 THEN 4220 REMARK IF PROGRESS DUE DATE IS NON-ZERO,\ PROGRESS BILLING AMOUNT MUST BE NON-ZERO REMARK DETERMINE TRANSACTION'S FATE 4200 X2=1:X3=1:X4=3:X2$="ENTER ACTION (1=RECORD,2=MORE CHANGES, 3=CANCEL)" GOSUB 665 RETURN 4220 FOR I%=1 TO 2 REMARK FLASH NASTY MESSAGE ON SCREEN X2$="DATE OR AMOUNT FIELD MISSING OR NEGATIVE BALANCE":GOSUB 615 NEXT I% X0=2 RETURN 4320 FOR I%=I1% TO I2% REMARK DISPLAY TRANSACTION FIELDS I1% THROUGH I2% X1=50:GOSUB 215 PRINT USING MASKB$;D(I%) NEXT I% RETURN 5000 GOSUB 5260 REMARK DISPLAY CUSTOMER DATA X1=265:GOSUB 210 PRINT W1$;TAB(12);M$(2);TAB(40); X1=12:GOSUB 215 PRINT USING MASKA$;L1 RETURN REMARK BRANCH TO ENTER VALUE FOR FIELD "F%" 5020 ON F% GOTO 5040,5060,5080,5100,5120,5140,5160,5180,5200,5220,5240,5250 5040 IF C1<>1 THEN RETURN REMARK ENTER TRANSACTION TYPE (NEW INVOICES ONLY) X1=328:X2=1:X3=1:X4=3:GOSUB 345 B=X0 RESTORE FOR I%=1 TO B READ X0$ NEXT I% X1=330:GOSUB 210 PRINT X0$; RETURN 5060 X1=403:X2=12:X3=0:X4=0:GOSUB 345 REMARK ENTER CUSTOMER ORDER NUMBER L1$=X0$ RETURN 5080 X1=462:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER JOB NUMBER L2=X0 RETURN 5100 X1=526:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER JOB DESCRIPTION L2$=X0$ RETURN 5120 X1=590:GOSUB .673 REMARK ENTER BILL DATE L4(1)=X0 RETURN 5140 X1=652:X2=1:X3=0:X4=9:GOSUB 345 REMARK ENTER TAX CODE L6=X0 GOSUB 5400 REMARK DISPLAY TAX CODE DESCRIPTION AND RATE D(13)=0 IF L6>0 THEN 5420 X1=718:X2=8:X3=-99999.9:X4=99999.9:GOSUB 345 REMARK FOR TAX CODE ZERO, ENTER G/L ACCOUNT NUMBER D(13)=X0 RETURN 5160 X1=787:X2=10:X3=0:X4=9999999.99:GOSUB 345 REMARK ENTER INVOICE AMOUNT D(1)=X0 RETURN 5180 X1=851:X2=10:X3=0:X4=9999999.99:GOSUB 345 REMARK ENTER SHIPPING/TRAVEL AMOUNT D(2)=X0 RETURN 5200 X1=369:X2=11:X3=-9999999.99:X4=9999999.99:GOSUB 345 REMARK ENTER INVOICE PAYMENT AMOUNT X1=363:GOSUB 210 D(6)=D(6)-D(5)*F2+ABS(X0) D(5)=ABS(X0) F2=1 IF X0>=0 OR B=2 THEN PRINT " ";:D(12)=0 \ ELSE PRINT "BY CM";:D(12)=1 RETURN 5220 X1=628:GOSUB .673 REMARK ENTER PROGRESS DUE DATE L4(2)=X0 RETURN 5240 X1=690:X2=10:X3=0:X4=9999999.99:GOSUB 345 REMARK ENTER PROGRESS BILLING AMOUNT D(8)=X0 RETURN 5250 X1=754:X2=10:X3=0:X4=9999999.99:GOSUB 345 REMARK ENTER PROGRESS PAYMENT D(10)=D(10)-D(9)*F3+X0 REMARK ADJUST PAYMENT TOTAL D(9)=X0 F3=1 RETURN 5260 X1=30:GOSUB 210 REMARK DISPLAY TRANSACTION OPERATION DESCIPTION RESTORE FOR I%=1 TO 3+C1 READ X0$ NEXT I% PRINT X0$;" "; RETURN 5280 X1=9:GOSUB 215 REMARK DISPLAY CURRENT TRANSACTION VALUES PRINT B; RESTORE FOR I%=1 TO B READ X0$ NEXT I% PRINT X0$ X1=20:GOSUB 215 PRINT L1$ X1=15:GOSUB 215 PRINT USING MASKA$;L2 X1=15:GOSUB 215 PRINT L2$ X1=15:GOSUB 215 X0=L4(1):GOSUB 680.5 PRINT X1=12:GOSUB 215 PRINT L6; GOSUB 5400 IF L6=0 THEN X1=15:GOSUB 215:PRINT USING MASKC$;D(13); \ ELSE GOSUB 5420 GOSUB 5440 GOSUB 4060 PRINT X1=53:GOSUB 215 X0=L4(2):GOSUB 680.5 PRINT I1%=8:I2%=11:GOSUB 4320 RETURN 5400 X1=654:GOSUB 210 REMARK DISPLAY TAX CODE DESCRIPTION AND RATE PRINT USING MASKD$;R$(L6+1),R1(L6+1) RETURN 5420 X1=718:GOSUB 210 REMARK DISPLAY TAX CODE'S G/L ACCOUNT NUMBER PRINT USING MASKC$;R2(L6+1); RETURN 5440 FOR I%=1 TO 4 REMARK DISPLAY INVOICE AMOUNT, SHIPPING, TAX, AND TOTAL PRINT X1=19:GOSUB 215 PRINT USING MASKB$;D(I%); NEXT I% RETURN REMARK START OF MAIN PROGRAM 6000 MASKA$="######" MASKB$=" #######.##" MASKC$=" #####.#" MASKD$="/ / ##.##%" OPEN "A/R0F020.DAT" RECL 226 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,"A/R0F030.DAT" AS 5 FILE.NO=4:GOSUB 3.14 REMARK RETRIEVE A/R EXTENT INFORMATION X0=14:GOSUB 260 REMARK DISPLAY TRANSACTION ENTRY OPERATION SELECTION MASK MAX.TRANSACTION.RCDS=200 A1=5:GOSUB 3700 REMARK RETRIEVE A/R TAX CODE INFORMATION 6025 X2=1:X3=0:X4=6:X2$="ENTER OPERATION CODE (SEE BELOW)":GOSUB 665 REMARK ENTER OPERATION IF X0=0 THEN 6520 REMARK EXIT PROGRAM ON ZERO OPERATION CODE C2=X0:C1=X0 GOSUB 5260 REMARK DISPLAY TRANSACTION OPERATION DESCRIPTION 6040 X1=265:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER CUSTOMER NUMBER IF X0$<=" "THEN 6025 W1$=X0$ IF W1$=W6$ THEN 6100 REMARK RETRIEVE NEW CUSTOMER DATA IF NECESSARY RECORD.COUNT=AR.CUSTFILE.EXTENT Y2=2 XYZ$=W1$+" " K$=LEFT$(XYZ$,6):GOSUB 1060 IF H=-1 OR VAR1=0 THEN X2$="NOT ON FILE":GOSUB 615:GOTO 6040 6060 Y9=2:X0=L:GOSUB 3225 W6$=W1$ 6080 X1=265:GOSUB 210 PRINT W1$; 6100 X1=256:GOSUB 210 REMARK DISPLAY CUSTOMER DATA FOR I%=2 TO 5 X1=18:GOSUB 215 PRINT USING "/ /";M$(I%) NEXT I% 6200 FOR I%=1 TO 13 REMARK CLEAR TRANSACTION VARIABLES D(I%)=0 NEXT I% F2=0:F3=0 X1=308:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER INVOICE NUMBER IF X0=0 THEN 6040 L1=X0 6210 RECORD.COUNT=AR.INVFILE.EXTENT XYZ$=W1$+" ":ZYX$="000000"+X0$ K$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6) Y2=3:GOSUB 1060 IF C1>1 THEN 6400 REMARK IF OPERATION IS NOT NEW INVOICE, BRANCH IF H<>-1 THEN X2$="ALREADY ON FILE":GOSUB 615:GOTO 6200 X0=15:GOSUB 260 REMARK DISPLAY MASK GOSUB 5000 REMARK DISPLAY CUSTOMER DATA FOR F%=1 TO 6 REMARK ENTER TRANSACTION FIELD VALUES GOSUB 5020 NEXT F% IF L4(1)<>0 THEN GOSUB 5160: \ REMARK IF BILL DATE IS ZERO, DON'T ENTER INVOICE FIELDS GOSUB 5180: \ GOSUB 4000: \ GOSUB 5200: \ GOSUB 4020 6220 IF B=2 THEN L4(2)=0:GOTO 6240 REMARK PROGRESS BILLING NOT ALLOWED ON CREDIT MEMOS GOSUB 5220 IF L4(2)<>0 THEN GOSUB 5240: \ REMARK IF PROGRESS DUE DATE IS ZERO, GOSUB 5250: \ REMARK DON'T ENTER PROGRESS BILLING FIELDS GOSUB 4080: \ GOSUB 4020 6240 X2=2:X3=0:X4=12:X2$="ENTER FIELD TO CHANGE (0=NONE)":GOSUB 665 REMARK ALLOW CHANGES TO ENTRIES IF X0=0 THEN 6260 F%=X0 GOSUB 5020 IF F%<5 THEN 6240 GOSUB 4000 IF F%>9 THEN GOSUB 4080 GOTO 6240 6260 GOSUB 4120 REMARK CHECK FOR CONSISTENCY, AND ENTER ACTION CODE IF X0=2 THEN 6240 REMARK MORE CHANGES REQUESTED 6280 IF X0=3 THEN X2$="TRANSACTION CANCELLED":GOSUB 615:\ REMARK CANCEL TRANSACTION X0=14:GOSUB 260:GOSUB 5260:GOTO 6080 6300 IF D(5)=0 OR B<>1 THEN D(12)=0 C2=C1 6360 AR.TRANFILE.EXTENT=AR.TRANFILE.EXTENT+1 FILE.NO=1:REC.NO%=AR.TRANFILE.EXTENT:GOSUB 3450 REMARK SAVE TRANSACTION ON FILE CLOSE 1,4 REMARK CLOSE AND RE-OPEN FILES IN CASE OF DISASTER OPEN "A/R0F020.DAT" RECL 226 AS 1, "A/R0F130.DAT" AS 4 FILE.NO=4:GOSUB 3.15 REMARK SAVE NEW EXTENT INFORMATION TO FILE X2$="RECORDED":GOSUB 615 IF AR.TRANFILE.EXTENT < MAX.TRANSACTION.RCDS THEN \ REMARK IF THE TRANSACTION FILE IS NOT YET FULL... X0=14:GOSUB 260: \ REMARK DISPLAY TRANSACTION ENTRY OPERATION SELECTION MASK GOSUB 5260: GOTO 6080 \ REMARK AND CONTINUE WITH TRANSACTION ENTRY ELSE \ PRINT CLEAR.SCREEN$;"TRANSACTION FILE FULL - RUN A/R UPDATE" PRINT "KEY TO EXIT":INPUT "";LINE X0$: \ GOTO 6520 6400 IF H=-1 THEN X2$="NOT ON FILE":GOSUB 615:GOTO 6200 REMARK OPERATION IS OTHER THAN NEW INVOICE FILE.NO=3:REC.NO%=L:GOSUB 3400 REMARK RETRIEVE EXISTING INVOICE DATA X0=15:GOSUB 260 REMARK DISPLAY TRANSACTION MASK GOSUB 5000 REMARK DISPLAY TRANSACTION TYPE AND OPERATION GOSUB 5280 REMARK DISPLAY TRANSACTION VALUES ON C1-1 GOTO 6440,6460,6480,6500,6240 REMARK BRANCH ON OPERATION CODE REMARK OPERATION IS INVOICE BILLING 6440 IF L4(1)=0 THEN GOSUB 5120: \ REMARK ENTER BILL DATE GOSUB 5160: \ REMARK ENTER INVOICE AMOUNT GOSUB 5180: \ REMARK ENTER SHIPPING/TRAVEL AMOUNT GOSUB 4000: \ REMARK CALCULATE AND DISPLAY INVOICE BALANCE GOTO 6240 \ REMARK BRANCH TO ALLOW CHANGES TO ENTRIES ELSE \ REMARK IF ALREADY BILLED, TRY AGAIN FOR I%=1 TO 2: \ X2$="ALREADY BILLED":GOSUB 615: \ NEXT I%: \ X0=14:GOSUB 260:GOSUB 5260:GOTO 6080 REMARK OPERATION IS INVOICE PAYMENT 6460 GOSUB 5200 REMARK ENTER PAYMENT AMOUNT GOSUB 4020 REMARK DISPLAY INVOICE BALANCE GOSUB 4120 REMARK CHECK FOR INCONSISTENCIES, AND ENTER ACTION CODE IF X0=2 THEN GOTO 6460 \ REMARK IF ACTION CODE IS 2, ALLOW CHANGES ELSE GOTO 6280 REMARK OPERATION IS PROGRESS PAYMENT 6480 GOSUB 5250 REMARK ENTER PROGRESS PAYMENT AMOUNT GOSUB 4080 REMARK DISPLAY PROGRESS BALANCE GOSUB 4020 REMARK DISPLAY INVOICE BALANCE GOSUB 4120 REMARK CHECK FOR INCONSISTENCIES, AND ENTER ACTION CODE IF X0=2 THEN GOTO 6480 \ REMARK IF ACTION CODE IS 2, ALLOW CHANGES ELSE GOTO 6280 REMARK OPERATION IS DELETE 6500 X2=3:X3=0:X4=0:X2$="ENTER DELETE CODE":GOSUB 665 REMARK OPERATOR MUST VERIFY DELETE OPERATION IF X0$="DEL" THEN 6300 X0=14:GOSUB 260 GOSUB 5260 GOTO 6080 6520 PRINT CLEAR.SCREEN$;"A/R TRANSACTION ENTRY LOADING MENU" REMARK END PROGRAM AND RE-LOAD MENU CHAIN "A/P000"