home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug043.ark / AR010.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  11.6 KB  |  368 lines

  1.  
  2.     REMARK    #########################################################
  3.     REMARK    #    ACCOUNTS RECEIVABLE TRANSACTION ENTRY  (A/R010)    #
  4.     REMARK    #        VERS. OF 3.30 PM    5/23/79        #
  5.     REMARK    #########################################################
  6.     DIM L4(2),D(13),Y(2),M$(5),R$(10),R1(10),R2(10)
  7. %INCLUDE CURSOR
  8.     GOTO 6000
  9. %INCLUDE SUBS1
  10. %INCLUDE BINSEARC
  11. %INCLUDE A/R-INV
  12. %INCLUDE READCUST
  13. %INCLUDE A/R-INFO
  14. %INCLUDE A/RTAX
  15.     DATA "INVOICE","CR MEMO","DB MEMO","NEW","INV BILLING"
  16.     DATA "INV PAYMENT","PROG PAYMENT","DELETE","MODIFY"
  17.  
  18.  
  19. .673    Z0=X1                                REMARK    ENTER & DISPLAY DATE:  ALLOW ZERO DATE
  20.     GOSUB 210
  21.     PRINT "          ";
  22.     X2=6
  23.     X3=0
  24.     X4=123199
  25.     GOSUB 345                            REMARK    ENTER THAT DATE
  26.     IF X0=0 THEN X0$="000000"
  27.     IF LEN(X0$)<5 THEN X1=Z0:GOTO .673
  28. .6735    IF LEN(X0$) < 6 THEN X0$="0"+X0$:GOTO .6735
  29.     IF MID$(X0$,1,2)>="00" AND MID$(X0$,1,2)<="12"\
  30.     AND MID$(X0$,3,2)>="00" AND MID$(X0$,3,2) <="31" THEN .675
  31.     X2$="OUT OF RANGE":GOSUB 615:X1=Z0:GOTO .673
  32. .675    X0=VAL(X0$)
  33. .680    GOSUB 210
  34. .6805    X0$=STR$(X0)
  35. .6806    IF LEN(X0$)<6 THEN X0$="0"+X0$:GOTO .6806
  36. .681    PRINT LEFT$(X0$,2);"/";MID$(X0$,3,2);"/";RIGHT$(X0$,2);
  37.     RETURN
  38.  
  39.  
  40. 4000    D(3)=INT((D(1)*R1(L6+1))+.5)/100                REMARK    COMPUTE SALES TAX AND INVOICE TOTAL
  41.     D(4)=D(3)+D(2)+D(1)
  42.     X1=704:GOSUB 210
  43.     GOSUB 5440                            REMARK    REDISPLAY INVOICE AMOUNTS AND TOTAL
  44. 4020    D(7)=D(4)-D(6)                            REMARK    COMPUTE INVOICE BALANCE
  45.     IF L4(2)<>0 THEN D(7)=D(7)-D(8)
  46.     IF L4(1)=0 THEN D(7)=0                        REMARK    IF BILL DATE IS ZERO, INVOICE BALANCE IS ZERO
  47. 4060    X1=320:GOSUB 210
  48.     I1%=5:I2%=7:GOSUB 4320                        REMARK    DISPLAY INVOICE PAYMENT AND BALANCE
  49.     RETURN 
  50.  
  51. 4080    D(11)=D(8)-D(10)                        REMARK    COMPUTE PROGRESS BALANCE
  52.     IF L4(2)=0 THEN D(11)=0                        REMARK    ZERO PROGRESS BALANCE IF PROGRESS DUE DATE IS ZERO
  53.     X1=640:GOSUB 210
  54.     I1%=8:I2%=11:GOSUB 4320                        REMARK    DISPLAY PROGRESS BILLING FIELDS
  55.     RETURN 
  56.  
  57.                                     REMARK    CHECK FOR INCONSISTENCIES BETWEEN FIELDS
  58. 4120    IF D(7)<0 THEN 4220                        REMARK    NEGATIVE INVOICE BALANCE ILLEGAL
  59.     IF D(11)<0 THEN 4220                        REMARK    NEGATIVE PROGRESS BALANCE ILLEGAL
  60.     IF L4(1)<>0 THEN 4140                        REMARK    IF BILL DATE IS ZERO...
  61.     IF D(4)<>0 THEN 4220                        REMARK    INVOICE PAYMENT MUST BE ZERO
  62.     IF D(5)<>0 THEN 4220                        REMARK    AND INVOICE BALANCE MUST BE ZERO
  63.     GOTO 4160
  64. 4140    IF D(4)=0 THEN 4220                        REMARK    IF BILL DATE IS NON-ZERO,\
  65.                                         INVOICE AMOUNT MUST BE NON-ZERO
  66. 4160    IF L4(2)<>0 THEN 4180                        REMARK    IF PROGRESS DUE DATE IS ZERO...
  67.     IF D(8)<>0 THEN 4220                        REMARK    PROGRESS BILLING AMOUNT MUST BE ZERO
  68.     IF D(9)<>0 THEN 4220                        REMARK    AND PROGRESS BALANCE MUST BE ZERO
  69.     GOTO 4200
  70. 4180    IF D(8)=0 THEN 4220                        REMARK    IF PROGRESS DUE DATE IS NON-ZERO,\
  71.                                         PROGRESS BILLING AMOUNT MUST BE NON-ZERO
  72.  
  73.                                     REMARK    DETERMINE TRANSACTION'S FATE
  74. 4200    X2=1:X3=1:X4=3:X2$="ENTER ACTION (1=RECORD,2=MORE CHANGES, 3=CANCEL)"
  75.     GOSUB 665
  76.     RETURN 
  77.  
  78. 4220    FOR I%=1 TO 2                            REMARK    FLASH NASTY MESSAGE ON SCREEN
  79.     X2$="DATE OR AMOUNT FIELD MISSING OR NEGATIVE BALANCE":GOSUB 615
  80.     NEXT I%
  81.     X0=2
  82.     RETURN 
  83.  
  84.  
  85.  
  86. 4320    FOR I%=I1% TO I2%                        REMARK    DISPLAY TRANSACTION FIELDS I1% THROUGH I2%
  87.     X1=50:GOSUB 215
  88.     PRINT USING MASKB$;D(I%)
  89.     NEXT I%
  90.     RETURN 
  91.  
  92. 5000    GOSUB 5260                            REMARK    DISPLAY CUSTOMER DATA
  93.     X1=265:GOSUB 210
  94.     PRINT W1$;TAB(12);M$(2);TAB(40);
  95.     X1=12:GOSUB 215
  96.     PRINT USING MASKA$;L1
  97.     RETURN 
  98.  
  99.                                     REMARK    BRANCH TO ENTER VALUE FOR FIELD "F%"
  100. 5020    ON F% GOTO 5040,5060,5080,5100,5120,5140,5160,5180,5200,5220,5240,5250
  101.  
  102. 5040    IF C1<>1 THEN RETURN                        REMARK    ENTER TRANSACTION TYPE (NEW INVOICES ONLY)
  103.     X1=328:X2=1:X3=1:X4=3:GOSUB 345
  104.     B=X0
  105.     RESTORE
  106.     FOR I%=1 TO B
  107.     READ X0$
  108.     NEXT I%
  109.     X1=330:GOSUB 210
  110.     PRINT X0$;
  111.     RETURN 
  112.  
  113. 5060    X1=403:X2=12:X3=0:X4=0:GOSUB 345                REMARK    ENTER CUSTOMER ORDER NUMBER
  114.     L1$=X0$
  115.     RETURN 
  116.  
  117. 5080    X1=462:X2=6:X3=0:X4=999999:GOSUB 345                REMARK    ENTER  JOB NUMBER
  118.     L2=X0
  119.     RETURN 
  120.  
  121. 5100    X1=526:X2=6:X3=0:X4=0:GOSUB 345                    REMARK    ENTER JOB DESCRIPTION
  122.     L2$=X0$
  123.     RETURN 
  124.  
  125. 5120    X1=590:GOSUB .673                        REMARK    ENTER BILL DATE
  126.     L4(1)=X0
  127.     RETURN 
  128.  
  129. 5140    X1=652:X2=1:X3=0:X4=9:GOSUB 345                    REMARK    ENTER TAX CODE
  130.     L6=X0
  131.     GOSUB 5400                            REMARK    DISPLAY TAX CODE DESCRIPTION AND RATE
  132.     D(13)=0
  133.     IF L6>0 THEN 5420
  134.     X1=718:X2=8:X3=-99999.9:X4=99999.9:GOSUB 345            REMARK    FOR TAX CODE ZERO, ENTER G/L ACCOUNT NUMBER
  135.     D(13)=X0
  136.     RETURN 
  137.  
  138. 5160    X1=787:X2=10:X3=0:X4=9999999.99:GOSUB 345            REMARK    ENTER INVOICE AMOUNT
  139.     D(1)=X0
  140.     RETURN 
  141.  
  142. 5180    X1=851:X2=10:X3=0:X4=9999999.99:GOSUB 345            REMARK    ENTER SHIPPING/TRAVEL AMOUNT
  143.     D(2)=X0
  144.     RETURN 
  145.  
  146. 5200    X1=369:X2=11:X3=-9999999.99:X4=9999999.99:GOSUB 345        REMARK    ENTER INVOICE PAYMENT AMOUNT
  147.     X1=363:GOSUB 210
  148.     D(6)=D(6)-D(5)*F2+ABS(X0)
  149.     D(5)=ABS(X0)
  150.     F2=1
  151.     IF X0>=0 OR B=2 THEN PRINT "     ";:D(12)=0 \
  152.     ELSE PRINT "BY CM";:D(12)=1
  153.     RETURN 
  154.  
  155. 5220    X1=628:GOSUB .673                        REMARK    ENTER PROGRESS DUE DATE
  156.     L4(2)=X0
  157.     RETURN 
  158.  
  159. 5240    X1=690:X2=10:X3=0:X4=9999999.99:GOSUB 345            REMARK    ENTER PROGRESS BILLING AMOUNT
  160.     D(8)=X0
  161.     RETURN 
  162.  
  163. 5250    X1=754:X2=10:X3=0:X4=9999999.99:GOSUB 345            REMARK    ENTER PROGRESS PAYMENT
  164.     D(10)=D(10)-D(9)*F3+X0                        REMARK    ADJUST PAYMENT TOTAL
  165.     D(9)=X0
  166.     F3=1
  167.     RETURN 
  168.  
  169.  
  170. 5260    X1=30:GOSUB 210                            REMARK    DISPLAY TRANSACTION OPERATION DESCIPTION
  171.     RESTORE
  172.     FOR I%=1 TO 3+C1
  173.     READ X0$
  174.     NEXT I%
  175.     PRINT X0$;"         ";
  176.     RETURN 
  177.  
  178. 5280    X1=9:GOSUB 215                            REMARK    DISPLAY CURRENT TRANSACTION VALUES
  179.     PRINT B;
  180.     RESTORE
  181.     FOR I%=1 TO B
  182.     READ X0$
  183.     NEXT I%
  184.     PRINT X0$
  185.     X1=20:GOSUB 215
  186.     PRINT L1$
  187.     X1=15:GOSUB 215
  188.     PRINT USING MASKA$;L2
  189.     X1=15:GOSUB 215
  190.     PRINT L2$
  191.     X1=15:GOSUB 215
  192.     X0=L4(1):GOSUB 680.5
  193.     PRINT 
  194.     X1=12:GOSUB 215
  195.     PRINT L6;
  196.     GOSUB 5400
  197.     IF L6=0 THEN X1=15:GOSUB 215:PRINT USING MASKC$;D(13); \
  198.     ELSE GOSUB 5420
  199.     GOSUB 5440
  200.     GOSUB 4060
  201.     PRINT 
  202.     X1=53:GOSUB 215
  203.     X0=L4(2):GOSUB 680.5
  204.     PRINT 
  205.     I1%=8:I2%=11:GOSUB 4320
  206.     RETURN 
  207.  
  208.  
  209. 5400    X1=654:GOSUB 210                        REMARK    DISPLAY TAX CODE DESCRIPTION AND RATE
  210.     PRINT USING MASKD$;R$(L6+1),R1(L6+1)
  211.     RETURN 
  212.  
  213. 5420    X1=718:GOSUB 210                        REMARK    DISPLAY TAX CODE'S G/L ACCOUNT NUMBER
  214.     PRINT USING MASKC$;R2(L6+1);
  215.     RETURN 
  216.  
  217. 5440    FOR I%=1 TO 4                            REMARK    DISPLAY INVOICE AMOUNT, SHIPPING, TAX, AND TOTAL
  218.     PRINT 
  219.     X1=19:GOSUB 215
  220.     PRINT USING MASKB$;D(I%);
  221.     NEXT I%
  222.     RETURN 
  223.  
  224.  
  225.  
  226.  
  227.                                     REMARK    START OF MAIN PROGRAM
  228. 6000    MASKA$="######"
  229.     MASKB$=" #######.##"
  230.     MASKC$=" #####.#"
  231.     MASKD$="/      / ##.##%"
  232.     OPEN "A/R0F020.DAT" RECL 226 AS 1,"A/R0F110.DAT" RECL 162 AS 2, \
  233.     "A/R0F120.DAT" RECL 226 AS 3,"A/R0F130.DAT" AS 4, \
  234.     "CRT" RECL 1100 AS 19,"A/R0F030.DAT" AS 5
  235.     FILE.NO=4:GOSUB 3.14                        REMARK    RETRIEVE A/R EXTENT INFORMATION
  236.     X0=14:GOSUB 260                            REMARK    DISPLAY TRANSACTION ENTRY OPERATION SELECTION MASK
  237.     MAX.TRANSACTION.RCDS=200
  238.     A1=5:GOSUB 3700                            REMARK    RETRIEVE A/R TAX CODE INFORMATION
  239. 6025    X2=1:X3=0:X4=6:X2$="ENTER OPERATION CODE (SEE BELOW)":GOSUB 665    REMARK    ENTER OPERATION
  240.     IF X0=0 THEN 6520                        REMARK    EXIT PROGRAM ON ZERO OPERATION CODE
  241.     C2=X0:C1=X0
  242.     GOSUB 5260                            REMARK    DISPLAY TRANSACTION OPERATION DESCRIPTION
  243. 6040    X1=265:X2=6:X3=0:X4=0:GOSUB 345                    REMARK    ENTER CUSTOMER NUMBER
  244.     IF X0$<=" "THEN 6025
  245.     W1$=X0$
  246.     IF W1$=W6$ THEN 6100                        REMARK    RETRIEVE NEW CUSTOMER DATA IF NECESSARY
  247.     RECORD.COUNT=AR.CUSTFILE.EXTENT
  248.     Y2=2
  249.     XYZ$=W1$+"      "
  250.     K$=LEFT$(XYZ$,6):GOSUB 1060
  251.     IF H=-1 OR VAR1=0 THEN X2$="NOT ON FILE":GOSUB 615:GOTO 6040
  252. 6060    Y9=2:X0=L:GOSUB 3225
  253.     W6$=W1$
  254. 6080    X1=265:GOSUB 210
  255.     PRINT W1$;
  256. 6100    X1=256:GOSUB 210                        REMARK    DISPLAY CUSTOMER DATA
  257.     FOR I%=2 TO 5
  258.     X1=18:GOSUB 215
  259.     PRINT USING "/                      /";M$(I%)
  260.     NEXT I%
  261. 6200    FOR I%=1 TO 13                            REMARK    CLEAR TRANSACTION VARIABLES
  262.     D(I%)=0
  263.     NEXT I%
  264.     F2=0:F3=0
  265.     X1=308:X2=6:X3=0:X4=999999:GOSUB 345                REMARK    ENTER INVOICE NUMBER
  266.     IF X0=0 THEN 6040
  267.     L1=X0
  268. 6210    RECORD.COUNT=AR.INVFILE.EXTENT
  269.     XYZ$=W1$+"      ":ZYX$="000000"+X0$
  270.     K$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6)
  271.     Y2=3:GOSUB 1060
  272.     IF C1>1 THEN 6400                        REMARK    IF OPERATION IS NOT NEW INVOICE, BRANCH
  273.     IF H<>-1 THEN X2$="ALREADY ON FILE":GOSUB 615:GOTO 6200
  274.     X0=15:GOSUB 260                            REMARK    DISPLAY MASK
  275.     GOSUB 5000                            REMARK    DISPLAY CUSTOMER DATA
  276.     FOR F%=1 TO 6                            REMARK    ENTER TRANSACTION FIELD VALUES
  277.     GOSUB 5020
  278.     NEXT F%
  279.     IF L4(1)<>0 THEN GOSUB 5160: \                    REMARK    IF BILL DATE IS ZERO, DON'T ENTER INVOICE FIELDS
  280.     GOSUB 5180: \
  281.     GOSUB 4000: \
  282.     GOSUB 5200: \
  283.     GOSUB 4020
  284. 6220    IF B=2 THEN L4(2)=0:GOTO 6240                        REMARK    PROGRESS BILLING NOT ALLOWED ON CREDIT MEMOS
  285.     GOSUB 5220
  286.     IF L4(2)<>0 THEN GOSUB 5240: \                    REMARK    IF PROGRESS DUE DATE IS ZERO,
  287.         GOSUB 5250: \                        REMARK    DON'T ENTER PROGRESS BILLING FIELDS
  288.         GOSUB 4080: \
  289.         GOSUB 4020
  290. 6240    X2=2:X3=0:X4=12:X2$="ENTER FIELD TO CHANGE (0=NONE)":GOSUB 665    REMARK    ALLOW CHANGES TO ENTRIES    
  291.     IF X0=0 THEN 6260
  292.     F%=X0
  293.     GOSUB 5020
  294.     IF F%<5 THEN 6240
  295.     GOSUB 4000
  296.     IF F%>9 THEN GOSUB 4080
  297.     GOTO 6240
  298.  
  299. 6260    GOSUB 4120                            REMARK    CHECK FOR CONSISTENCY, AND ENTER ACTION CODE
  300.     IF X0=2 THEN 6240                        REMARK    MORE CHANGES REQUESTED
  301. 6280    IF X0=3 THEN X2$="TRANSACTION CANCELLED":GOSUB 615:\        REMARK    CANCEL TRANSACTION
  302.     X0=14:GOSUB 260:GOSUB 5260:GOTO 6080
  303. 6300    IF D(5)=0 OR B<>1 THEN D(12)=0
  304.     C2=C1
  305. 6360    AR.TRANFILE.EXTENT=AR.TRANFILE.EXTENT+1
  306.     FILE.NO=1:REC.NO%=AR.TRANFILE.EXTENT:GOSUB 3450            REMARK    SAVE TRANSACTION ON FILE
  307.     CLOSE 1,4                            REMARK    CLOSE AND RE-OPEN FILES IN CASE OF DISASTER
  308.     OPEN "A/R0F020.DAT" RECL 226 AS 1, "A/R0F130.DAT" AS 4
  309.     FILE.NO=4:GOSUB 3.15                        REMARK    SAVE NEW EXTENT INFORMATION TO FILE
  310.     X2$="RECORDED":GOSUB 615
  311.     IF AR.TRANFILE.EXTENT < MAX.TRANSACTION.RCDS THEN  \        REMARK    IF THE TRANSACTION FILE IS NOT YET FULL...
  312.     X0=14:GOSUB 260: \                        REMARK    DISPLAY TRANSACTION ENTRY OPERATION SELECTION MASK
  313.     GOSUB 5260: GOTO 6080 \                        REMARK    AND CONTINUE WITH TRANSACTION ENTRY
  314.     ELSE \
  315.     PRINT CLEAR.SCREEN$;"TRANSACTION FILE FULL - RUN A/R UPDATE"
  316.     PRINT "KEY <RETURN> TO EXIT":INPUT "";LINE X0$: \
  317.     GOTO 6520
  318.  
  319.  
  320.  
  321. 6400    IF H=-1 THEN X2$="NOT ON FILE":GOSUB 615:GOTO 6200        REMARK    OPERATION IS OTHER THAN NEW INVOICE
  322.     FILE.NO=3:REC.NO%=L:GOSUB 3400                    REMARK    RETRIEVE EXISTING INVOICE DATA
  323.     X0=15:GOSUB 260                            REMARK    DISPLAY TRANSACTION MASK
  324.     GOSUB 5000                            REMARK    DISPLAY TRANSACTION TYPE AND OPERATION
  325.     GOSUB 5280                            REMARK    DISPLAY TRANSACTION VALUES
  326.     ON C1-1 GOTO 6440,6460,6480,6500,6240                REMARK    BRANCH ON OPERATION CODE
  327.  
  328.  
  329.                                     REMARK    OPERATION IS INVOICE BILLING
  330. 6440    IF L4(1)=0 THEN GOSUB 5120: \                    REMARK    ENTER BILL DATE
  331.         GOSUB 5160: \                        REMARK    ENTER INVOICE AMOUNT
  332.         GOSUB 5180: \                        REMARK    ENTER SHIPPING/TRAVEL AMOUNT
  333.         GOSUB 4000: \                        REMARK    CALCULATE AND DISPLAY INVOICE BALANCE
  334.         GOTO 6240 \                        REMARK    BRANCH TO ALLOW CHANGES TO ENTRIES
  335.     ELSE \                                REMARK    IF ALREADY BILLED, TRY AGAIN
  336.         FOR I%=1 TO 2: \
  337.         X2$="ALREADY BILLED":GOSUB 615: \
  338.         NEXT I%: \
  339.         X0=14:GOSUB 260:GOSUB 5260:GOTO 6080
  340.  
  341.                                     REMARK    OPERATION IS INVOICE PAYMENT
  342. 6460    GOSUB 5200                            REMARK    ENTER PAYMENT AMOUNT
  343.     GOSUB 4020                            REMARK    DISPLAY INVOICE BALANCE
  344.     GOSUB 4120                            REMARK    CHECK FOR INCONSISTENCIES, AND ENTER ACTION CODE
  345.     IF X0=2 THEN GOTO 6460 \                    REMARK    IF ACTION CODE IS 2, ALLOW CHANGES
  346.     ELSE GOTO 6280
  347.  
  348.  
  349.                                     REMARK    OPERATION IS PROGRESS PAYMENT
  350. 6480    GOSUB 5250                            REMARK    ENTER PROGRESS PAYMENT AMOUNT
  351.     GOSUB 4080                            REMARK    DISPLAY PROGRESS BALANCE
  352.     GOSUB 4020                            REMARK    DISPLAY INVOICE BALANCE
  353.     GOSUB 4120                            REMARK    CHECK FOR INCONSISTENCIES, AND ENTER ACTION CODE
  354.     IF X0=2 THEN GOTO 6480 \                    REMARK    IF ACTION CODE IS 2, ALLOW CHANGES
  355.     ELSE GOTO 6280
  356.  
  357.  
  358.                                     REMARK    OPERATION IS DELETE
  359. 6500    X2=3:X3=0:X4=0:X2$="ENTER DELETE CODE":GOSUB 665        REMARK    OPERATOR MUST VERIFY DELETE OPERATION
  360.     IF X0$="DEL" THEN 6300
  361.     X0=14:GOSUB 260
  362.     GOSUB 5260
  363.     GOTO 6080
  364.  
  365.  
  366. 6520    PRINT CLEAR.SCREEN$;"A/R TRANSACTION ENTRY LOADING MENU"    REMARK    END PROGRAM AND RE-LOAD MENU
  367.     CHAIN "A/P000"
  368.