home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug043.ark / A_P120.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  9KB  |  320 lines

  1.  
  2.     REMARK    **********************************************
  3.     REMARK    *  ACCOUNTS PAYABLE TRANSACTION F/M PROGRAM  *
  4.     REMARK    *   (A/P120.BAS)      VERS OF 3 PM  6/27/78  *
  5.     REMARK    **********************************************
  6.  
  7.     DIM C(27),D(27),W$(5),M$(5),A3$(10),P(6),Y(2)
  8. %INCLUDE CURSOR
  9.     DATA "INVOICE"," "," ","CR MEMO","DB MEMO","NEW","DELETE","MODIFY"
  10.     MASKA$=" ######.##"
  11.     MASKB$="######"
  12.     MASKC$="######.#     #######.##  "
  13.     MASKD$="##)     ######       #######.##"
  14.     DEF FNR(Z9)=(INT(ABS(Z9)*100+.5)/100)*SGN(Z9)            REMARK    ROUND TO NEAREST CENT
  15.     DEF FND(Z9)=FNR(Z9)*SGN(D2)                    REMARK    USED IN G/L AND JOB POSTING VERIFICATIONS
  16.     GOTO 6000
  17. %INCLUDE SUBS1
  18. %INCLUDE BINSEARC
  19. %INCLUDE READINV
  20. %INCLUDE WRITEINV
  21. %INCLUDE READVEND
  22. %INCLUDE A/P-INFO
  23. .314    RETURN                                REMARK    THESE LINE NUMBERS FOR G/L SUBROUTINES
  24. 10.60    RETURN
  25.  
  26.  
  27. 5010    IF F=0 OR F>9 THEN GOTO 5040                    REMARK    BRANCH TO ENTER VALUE OF FIELD "F"
  28.     ON F GOTO 5040,5050,5060,5070,5080,5090,5100,5110,5120
  29.  
  30. 5040    X1=462:X2=8:X3=0:X4=0:GOSUB 345                    REMARK    ENTER PURCHASE ORDER NO.
  31.     W2$=X0$
  32.     RETURN 
  33.  
  34. 5050    X1=526:X2=2:X3=0:X4=0:GOSUB 345                    REMARK    ENTER BUYER
  35.     W3$=X0$
  36.     RETURN 
  37.  
  38. 5060    X1=590:X2=6:X3=0:X4=999999:GOSUB 345                REMARK    ENTER CHECK REGISTER NO.
  39.     D(25)=X0
  40.     RETURN 
  41.  
  42. 5070    X1=654:GOSUB 673                        REMARK    ENTER INVOICE DATE
  43.     PRINT
  44.     D(23)=X0
  45.     RETURN 
  46.  
  47. 5080    X1=718:GOSUB 673                        REMARK    ENTER AGE DATE
  48.     PRINT
  49.     D(24)=X0
  50.     RETURN 
  51.  
  52. 5090    IF W1%=4 THEN 5150                        REMARK    ENTER INVOICE OR DEBIT MEMO AMOUNT
  53.     X1=430:X2=9:X3=0:X4=999999.99:GOSUB 345
  54.     C(23)=X0
  55.     X1=429:GOSUB 210
  56.     PRINT USING MASKA$;C(23)
  57.     GOSUB 5140
  58.     RETURN 
  59.  
  60. 5100    X1=498:X2=5:X3=0:X4=100:GOSUB 345                REMARK    ENTER DISCOUNT RATE
  61.     X1=493:GOSUB 210
  62.     C(27)=X0
  63.     PRINT USING MASKA$;C(27)
  64.     GOSUB 5140
  65.     RETURN 
  66.  
  67. 5110    X1=622:X2=9:X3=0:X4=999999.99:GOSUB 345                REMARK    ENTER FREIGHT AMOUNT
  68.     C(25)=FNR(X0)
  69.     X1=621:GOSUB 210
  70.     PRINT USING MASKA$;C(25)
  71.     GOSUB 5140
  72.     RETURN 
  73.  
  74. 5120    X1=686:X2=9:X3=0:X4=999999.99:GOSUB 345                REMARK    ENTER TAX AMOUNT
  75.     C(26)=FNR(X0)
  76.     X1=685:GOSUB 210
  77.     PRINT USING MASKA$;C(26)
  78.     GOSUB 5140
  79.     RETURN 
  80.  
  81. 5140    C(24)=-1*FNR((C(23)*C(27))/100)                    REMARK    RECALCULATE AND DISPLAY DISCOUNT AMOUNT
  82.     X1=557:GOSUB 210
  83.     PRINT USING MASKA$;C(24)
  84.     GOTO 5215
  85.  
  86. 5150    X1=494:X2=9:X3=-1*C(24):X4=999999.99:GOSUB 345            REMARK    ENTER CREDIT MEMO AMOUNT
  87.     C(23)=FNR(X0)
  88.     X1=494:GOSUB 210
  89.     PRINT USING MASKA$;C(23)
  90.     GOTO 5230
  91.  
  92.                                     REMARK    DISPLAY TRANSACTION MASK AND VALUES
  93. 5200    IF W1%=4 THEN 5220                        REMARK    CREDIT MEMO TRANSACTIONS AT LINE 5220
  94.     X0=2:GOSUB 260
  95.     GOSUB 5375
  96.     GOSUB 5250
  97.     X1=493:GOSUB 210
  98.     PRINT USING MASKA$;C(27)
  99.     FOR A1%=24 TO 26
  100.     PRINT LEFT$(X9$,45);                        REMARK    PRINT NON-DESTRUCTIVE SPACES
  101.     PRINT USING MASKA$;C(A1%)
  102.     NEXT A1%
  103. 5215    X1=749:GOSUB 210
  104.     PRINT USING MASKA$;C(23)+C(24)+C(25)+C(26)
  105.     N1=1
  106.     RETURN 
  107.  
  108.                                     REMARK    DISPLAY CREDIT MEMO TRANSACTIONS
  109. 5220    X0=13:GOSUB 260                            REMARK    GET CRT MASK #13
  110.     GOSUB 5375
  111.     GOSUB 5250
  112.     X1=558:GOSUB 210
  113.     PRINT USING MASKA$;C(24)
  114.     X1=622:GOSUB 210
  115.     PRINT USING MASKA$;C(25)
  116. 5230    X1=686:GOSUB 210
  117.     PRINT USING MASKA$;C(23)+C(24)
  118.     N1=1
  119.     RETURN 
  120.  
  121.  
  122. 5250    X1=266:GOSUB 210                        REMARK    DISPLAY TRANSACTION DATA
  123.     PRINT W1$
  124.     X1=7:GOSUB 215
  125.     PRINT M$(2)
  126.     X1=15:GOSUB 215
  127.     PRINT USING MASKB$;W0
  128.     X1=15:GOSUB 215
  129.     PRINT W2$
  130.     IF W1%=4 THEN X1=494 \
  131.     ELSE X1=429
  132.     GOSUB 210
  133.     PRINT USING MASKA$;C(23)
  134.     X1=526:GOSUB 210
  135.     PRINT W3$
  136.     X1=15:GOSUB 215
  137.     PRINT USING MASKB$;D(25)
  138.     X1=15:GOSUB 215
  139.     X0=D(23):GOSUB 680.5:PRINT
  140.     X1=15:GOSUB 215
  141.     X0=D(24):GOSUB 680.5:PRINT
  142.     RETURN 
  143.  
  144.  
  145. 5375    PRINT CURSOR.HOME$;"A/P TRANSACTION F/M     "            REMARK    DISPLAY PROGRAM TITLE
  146.     RETURN
  147.  
  148. 5410    IF I%>11 THEN 5450
  149.     X1=(I%-1)*64+326:X2=7:X3=0:X4=99999.9:GOSUB 345            REMARK    ENTER G/L DISTRIBUTION
  150.     D(I%)=X0
  151.     IF X0=0 THEN 5445
  152.     GOTO 5440                            REMARK    BYPASS THIS SECTION UNLESS G/L PROGRAMS INSTALLED
  153.  
  154. 5420    Y2=5
  155.     K1=X0
  156.     GOSUB 10.60
  157.     IF H=-1 THEN X2$="INVALID G/L NUMBER":GOSUB 615:GOTO 5410
  158. 5440    X1=(I%-1)*64+338:X2=10:X3=-999999.99:X4=999999.99:GOSUB 345    REMARK    ENTER DISTRIBUTION AMOUNT
  159.     X0=FNR(X0)
  160. 5445    D1=D1+X0-C(I%)                            REMARK    ACCUMULATE G/L AMOUNT TO TOTAL \
  161.                                         AND DISPLAY ACCOUNT AND AMOUNT
  162.     C(I%)=X0
  163.     X1=(I%-1)*64+325:GOSUB 210
  164.     PRINT USING MASKC$;D(I%),C(I%)
  165.     RETURN 
  166.  
  167. 5450    X1=(I%-12)*64+358:X2=6:X3=0:X4=999999:GOSUB 345            REMARK    ENTER JOB NUMBER
  168.     D(I%)=X0
  169.     IF X0<>0 THEN \                            REMARK    ENTER DISTRIBUTION AMOUNT
  170.         X1=(I%-12)*64+371:X2=10:X3=-999999.99:X4=999999.99:GOSUB 345:\
  171.         X0=FNR(X0)
  172.     D2=D2+X0-C(I%)                            REMARK    ACCUMULATE JOB AMOUNT TO TOTAL
  173.     C(I%)=X0
  174.     X1=(I%-12)*64+350:GOSUB 210
  175.     PRINT USING MASKD$;I%,D(I%),C(I%)                REMARK    DISPLAY ACCOUNT AND AMOUNT
  176.     RETURN 
  177.  
  178. 5460    IF W1%=4 THEN D0=C(23)\                        REMARK    CALCULATE TOTALS
  179.     ELSE D0=C(23)+C(24)+C(25)+C(26)
  180.     IF FND(D1)<>D2 THEN 5465
  181.     IF D1+D2<>FNR(D0)+FND(D0) THEN 5465
  182.     PRINT CURSOR.HOME$;
  183.     PRINT:PRINT:PRINT
  184.     PRINT TAB(64);
  185.     IF N1<=1 THEN RETURN
  186.     N1=0
  187.     GOTO 5460
  188.  
  189. 5465    IF N1=1 THEN \                            REMARK    ROUTINE TO CORRECT OUT-OF-BALANCE DISTRIBUTION
  190.         N1=2:\
  191.         GOSUB 5520:\
  192.         F=0
  193. 5470    IF D1<>D0 THEN 5480
  194.     X0=39:X0$="JOB":X2=D0-D2:GOSUB 5490                REMARK    USE SUBROUTINES TO CORRECT JOB TOTALS
  195.     IF D2 <> FND(D0) THEN 5470
  196.     PRINT CURSOR.HOME$;
  197.     PRINT:PRINT:PRINT
  198.     PRINT TAB(64)
  199.     GOTO 5460
  200.  
  201. 5480    X0=6:X0$="G/L":X2=D0-D1:GOSUB 5490                REMARK    USE SUBROUTINES TO CORRECT G/L TOTALS
  202.     IF D1<>D0  THEN 5480
  203.     GOTO 5460
  204.  
  205. 5490    IF X2=0 THEN RETURN                        REMARK    THIS SUBROUTINE DISPLAYS G/L OR \
  206.                                         JOB POSTING DISCREPANCY AMOUNTS
  207.     X1=192:GOSUB 210
  208.     PRINT TAB(X0);X0$;" DIST OFF";
  209.     PRINT USING MASKA$;X2;TAB(64)
  210.     N1=2
  211.     GOSUB 5950
  212.     RETURN 
  213.  
  214.  
  215. 5520    IF N1+F=5  THEN RETURN                        REMARK    REDISPLAY G/L AND JOB DISTRIBUTION MASK AND TOTALS
  216.     X0=3:GOSUB 260
  217.     GOSUB 5375
  218.     X1=320:GOSUB 210
  219.     FOR I%=1 TO 11
  220.     X1=6:GOSUB 215
  221.     IF D(I%)=0 THEN X1=26:GOSUB 215\
  222.     ELSE\
  223.     PRINT USING MASKC$;D(I%),C(I%);
  224.     IF D(I%+11)>0 THEN PRINT USING MASKD$; I%+11,D(I%+11),C(I%+11)\
  225.     ELSE PRINT
  226.     NEXT I%
  227.     IF F=3  THEN 5950
  228.     RETURN 
  229.  
  230. 5550    X0%=RECORD.NUMBER.ENTERED%
  231.     FILE.NO=2:GOSUB 3000                        REMARK    GET TRANSACTION RECORD FROM A/P0F020
  232.     D1=C(1)+C(2)+C(3)+C(4)+C(5)+C(6)+C(7)+C(8)+C(9)+C(10)+C(11)
  233.     D2=C(12)+C(13)+C(14)+C(15)+C(16)+C(17)+C(18)+C(19)+C(20)+C(21)+C(22)
  234.     IF W1%=4 THEN F1=6 \
  235.     ELSE F1=9
  236.     RECORD.COUNT=AP.VENDFILE.EXTENT
  237.     Y2=1
  238.     XYZ$=W1$+"      "
  239.     K$=LEFT$(W1$,6)
  240.     GOSUB 1060
  241.     IF H=-1 OR VAR1=0 THEN M$(2)="NOT ON FILE" \
  242.     ELSE Y9=1:X0=L:GOSUB 3200                    REMARK    LOAD VENDOR INFORMATION
  243.     RETURN
  244.     
  245. 5590    FILE.NO=2
  246.     X0%=RECORD.NUMBER.ENTERED%
  247.     GOSUB 3050                            REMARK    WRITE TRANSACTION RCD TO A/P0F020
  248.     X2$="RECORDED":GOSUB 615
  249.     RETURN
  250.  
  251. 5700    X2$="LAST CHANGES IGNORED"                    REMARK    IGNORE LAST ENTERED CHANGES
  252.     GOSUB 615
  253.     RETURN 
  254.  
  255. 5800    X2$="LAST TRANSACTION VOIDED"                    REMARK    VOID LAST TRANSACTION
  256.     GOSUB 615
  257.     W2%=W2%+10
  258.     FILE.NO=2
  259.     X0%=RECORD.NUMBER.ENTERED%                    REMARK    SET W2% TO LOGICALLY DELETE THIS RECORD \
  260.                                         BY ADDING 10 TO CURRENT VALUE...
  261.     GOSUB 3050                            REMARK    SAVE RECORD ON A/P0F020
  262.     RETURN 
  263.  
  264. 5900    X2=1:X3=0:X4=F1:X2$="ENTER FIELD TO CHANGE(0=NONE)":GOSUB 665    REMARK    ALLOW CHANGES TO FIELDS ON THE INVOICE SCREEN
  265.     F=X0
  266.     IF F=0 THEN RETURN
  267.     GOSUB 5010
  268.     GOTO 5900
  269.  
  270. 5950    X2=2:X3=0:X4=22:X2$="ENTER FIELD TO CHANGE(0=NONE)":GOSUB 665    REMARK    ALLOW CHANGES TO G/L AND JOB DISTRIBUTION FIELDS
  271.     IF X0=0 THEN RETURN
  272.     I%=X0
  273.     GOSUB 5410
  274.     IF N1=2 THEN RETURN
  275.     GOTO 5950
  276.  
  277.  
  278.                                     REMARK    START OF MAIN PROGRAM
  279. 6000    OPEN "A/P0F110.DAT" RECL 162 AS 1                REMARK    OPEN VENDOR FILE
  280.     OPEN "A/P0F020.DAT" RECL 580 AS 2                REMARK    OPEN TRANSACTION FILE
  281.     OPEN "A/P0F130.DAT" AS 4                    REMARK    OPEN A/P INFORMATION FILE
  282.     OPEN "CRT" RECL 1100 AS 19
  283.     X0=4
  284.     GOSUB 3310                            REMARK    GET A/P GENERAL INFORMATION
  285.     GOTO 6160                            REMARK    SKIP OPENING G/L FILE FOR NOW
  286.     OPEN "G/L0F110.DAT" RECL 157 AS 5
  287.     OPEN "G/L0F130.DAT" AS 6
  288.     FILE.NO%=6:GOSUB .314
  289. 6160    PRINT CLEAR.SCREEN$;
  290.     GOSUB 5375                            REMARK    DISPLAY PROGRAM IDENTIFICATION
  291.     X0=0
  292.     X2=3:X3=0:X4=TRANSACTION.RCD.COUNT%:\
  293.     X2$="ENTER RECORD NO. TO CHANGE (0 TO END)":GOSUB 665        REMARK    ENTER NUMBER OF TRANSACTION TO CHANGE
  294.     IF X0=0 THEN GOTO 6400                        REMARK    END PROGRAM ON 0 ENTRY
  295.     RECORD.NUMBER.ENTERED%=X0
  296.     F=0
  297.     GOSUB 5550                            REMARK    RETRIEVE TRANSACTION
  298.     IF W2%>9 THEN X2$="TRANSACTION IS VOID":GOSUB 615: GOTO 6160
  299.     GOSUB 5200                            REMARK    DISPLAY TRANSACTION
  300.     GOSUB 5900                            REMARK    ALLOW CHANGES TO INVOICE SCREEN FIELDS
  301. 6380    GOSUB 5460                            REMARK    CALCULATE TOTAL
  302.     X0=11:GOSUB 260                            REMARK    GET THE ACTION CODE MASK FROM CRT FILE
  303.     GOSUB 5375                            REMARK    DISPLAY PROGRAM IDENTIFICATION
  304.     X1=140:X2=1:X3=1:X4=5:GOSUB 345                    REMARK    ENTER ACTION CODE
  305.     F=X0
  306.  
  307.     IF F=1 THEN GOSUB 5590:GOTO 6160                REMARK    WRITE THE TRANSACTION RCD
  308.  
  309.     IF F=2 THEN GOSUB 5200:GOSUB 5900:GOTO 6380            REMARK    DISPLAY TRANSACTION DATA AND ALLOW CHANGES
  310.  
  311.     IF F=3 THEN GOSUB 5520:N1=1:GOTO 6380                REMARK    DISPLAY G/L & JOB DATA AND RETURN TO ACTION CODE MASK
  312.  
  313.     IF F=4 THEN GOSUB 5800:GOTO 6160                REMARK    VOID TRANSACTION AND GO BACK TO VENDOR NUMBER ENTRY
  314.  
  315.     IF F=5 THEN GOSUB 5700:GOTO 6160                REMARK    IGNORE LAST CHANGES
  316.  
  317.  
  318. 6400    PRINT CLEAR.SCREEN$;"A/P TRANSACTION F/M LOADING MENU"        REMARK    END PROGRAM AND RE-LOAD MENU
  319.     CHAIN "A/P000"
  320.