home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug044.ark / G_L080.BAS < prev    next >
BASIC Source File  |  1985-02-10  |  8KB  |  225 lines

  1.  
  2.     REMARK    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3.     REMARK    +    GENERAL LEDGER CASH JOURNAL TRANSACTIONS    +
  4.     REMARK    +        VERS. OF 10.45 AM    8/14/79        +
  5.     REMARK    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  6.     DIM G2$(5),G3(5),D(7)
  7. %INCLUDE CURSOR
  8.     GOTO 6000
  9. %INCLUDE SUBS1
  10. %INCLUDE GENINFO
  11. %INCLUDE ACCTFILE
  12. %INCLUDE POSTFILE
  13. %INCLUDE BINSERCH
  14. %INCLUDE G/L-INFO
  15.  
  16.  
  17. 825    IF LINE.COUNT%<55 THEN RETURN                    REMARK    LINE PRINTER ROUTINE
  18.     PAGE.COUNT%=PAGE.COUNT%+1
  19.     PRINT CHR$(12);TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE ";
  20.     X0=G3(1):GOSUB 680.5
  21.     PRINT
  22.     PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";PAGE.COUNT%
  23.     PRINT
  24.     PRINT"CASH ACCT  ACCOUNT  DATE  REFERENCE   DESCRIPTION";
  25.     PRINT TAB(69);"AMOUNT"
  26.     PRINT:PRINT
  27.     LINE.COUNT%=6
  28.     RETURN
  29.  
  30.  
  31. 3625    READ #FILE.NO%,RECORD.NO%; P1,P2,P3,P4,P5,P6$,CL1,REC.TYPE%    REMARK    READ CASH JOURNAL RECORD
  32.     RETURN
  33. 3675    PRINT #FILE.NO%,RECORD.NO%;P1,P2,P3,P4,P5,P6$,CL1,REC.TYPE%    REMARK    WRITE CASH JOURNAL RECORD
  34.     RETURN
  35.  
  36.  
  37. 4020    IF EXTERNAL.POSTING.EXTENT% + DIRECT.POSTING.EXTENT% + \    REMARK    STOP PROGRAM IF POSTING FILES ARE FULL
  38.     CASH.EXTENT% < MAXIMUM.POSTING.RECORDS% THEN RETURN
  39.     PRINT CURSOR.HOME$:PRINT:PRINT"FILE FULL - RUN G/L UPDATE"
  40.     PRINT "KEY <RETURN> TO EXIT"
  41.     X1=148:X2=1:X3=0:X4=0:GOSUB 345
  42.     GOTO 6340
  43.  
  44.  
  45. 5000    A1=0                                REMARK    ENTER MONTH AND DAY FOR POSTING DATE FIELD
  46.     X1=404:X2=4:X3=0:X4=9999:GOSUB 345    
  47.     IF X0=0 THEN 5040
  48.     P3=X0/100
  49.     A1=INT(X0/100)                            REMARK    CHECK FOR VALID MONTH
  50.     IF A1<1 OR A1>12 THEN X2$="BAD DATE":GOSUB 615:GOTO 5000
  51.     A1=X0-A1*100                            REMARK    CHECK FOR VALID DAY
  52.     IF A1<1 OR A1>31 THEN X2$="BAD DATE":GOSUB 615:GOTO 5000
  53. 5040    X1=405:GOSUB 210                        REMARK    DISPLAY MONTH/DAY
  54.     PRINT USING "##/##";INT(P3),(P3-INT(P3))*100
  55.     RETURN 
  56.  
  57.  
  58. 5060    X1=468:X2=6:X3=0:X4=999999:GOSUB 345                REMARK    ENTER REFERENCE NUMBER FIELD
  59.     P4=X0
  60.     RETURN 
  61.  
  62.  
  63. 5080    X1=527:X2=11:X3=-9999999.99:X4=9999999.99:GOSUB 345        REMARK    ENTER POSTING FIELD AMOUNT
  64.     P5=X0
  65.     RETURN 
  66.  
  67. 5100    X1=593:X2=23:X3=0:X4=0:GOSUB 345                REMARK    ENTER DESCRIPTION FIELD
  68.     P6$=X0$
  69.     RETURN
  70.  
  71.  
  72.  
  73.  
  74. 6000    MASKA$="######"                            REMARK    START OF MAIN PROGRAM
  75.     MASKB$=" #######.##"
  76.     MASKC$="#####.#"
  77. 6010    MAXIMUM.POSTING.RECORDS%=3600
  78.     OPEN "G/I0F010.DAT" AS 1,"G/L0F110.DAT" RECL 157 AS 2,\        REMARK    OPEN FILES
  79.     "G/L0F020.DAT" RECL 36 AS 4,\
  80.     "G/L0F130.DAT" AS 5, "CRT" RECL 1100 AS 19
  81.     CREATE "WORKFILE.DAT" RECL 74 AS 3
  82.     FILE.NO%=1:GOSUB 700                        REMARK    GET GENERAL INFORMATION FILE
  83.     FILE.NO%=5:GOSUB .314                        REMARK    GET G/L INFORMATION FILE
  84.     GOSUB 4020                            REMARK    CHECK POSTING FILES' RECORD LENGTHS
  85. 6040    P2=3                                REMARK    SET ACCOUNT TYPE FIELD FOR DIRECT POSTINGS
  86.     X0=6:GOSUB 260                            REMARK    LOAD CRT MASK
  87.     X2$="ENTER OPERATION (0=EXIT, 1=RECEIPTS, 2=DISBURSE, 3=PRINT)"    REMARK    REQUEST OPERATION CODE
  88.     X2=1:X3=0:X4=3:GOSUB 665
  89.     OPERATION%=X0
  90.     ON OPERATION%+1 GOTO 6340,6060,6060,6200            REMARK    BRANCH TO APPROPRIATE PROGRAM AREA
  91.  
  92.  
  93.                                     REMARK    ENTER RECEIPTS / DISBURSEMENTS
  94. 6060    X1=269:X2=7:X3=0:X4=99999.9:GOSUB 345                REMARK    ENTER CASH ACCOUNT NUMBER
  95.     P3=(INT(G3.0/100))/100
  96.     CASH.TOTAL=0
  97.     CASH.ACCOUNT=X0
  98.     IF CASH.ACCOUNT=0 THEN GOTO 6040
  99.     RECORD.COUNT%=ACCOUNT.FILE.EXTENT%
  100.     Y2=2
  101.     K1=CASH.ACCOUNT
  102.     GOSUB 10.60                            REMARK    CHECK ACCOUNT FILE FOR RECORD
  103.     IF H=-1 THEN X2$="NOT ON FILE":GOSUB 615:GOTO 6060
  104.     FILE.NO%=2:RECORD.NO%=L:GOSUB 3500                REMARK    RETREIVE CASH ACCOUNT DATA
  105.     CL1$=L1$:CL1=L1
  106. 6070    X1=269:GOSUB 210
  107.     PRINT USING MASKC$;CL1
  108.     X1=278:GOSUB 210                        REMARK    DISPLAY CASH ACCOUNT DATA
  109.     PRINT CL1$
  110.     X1=305:GOSUB 210
  111.     PRINT USING MASKB$;CASH.TOTAL
  112.     X1=333:X2=7:X3=0:X4=99999.9:GOSUB 345                REMARK    ENTER ACCOUNT NUMBER
  113.     P1=X0
  114.     IF P1=0 THEN GOTO 6180
  115.     K1=P1
  116.     GOSUB 10.60                            REMARK    CHECK ACCOUNT FILE FOR RECORD
  117.     IF H=-1 THEN X2$="NOT ON FILE":GOSUB 615:GOTO 6070
  118.     FILE.NO%=2:RECORD.NO%=L:GOSUB 3500                REMARK    RETREIVE ACCOUNT DATA
  119.     X1=342:GOSUB 210                        REMARK    DISPLAY ACCOUNT DATA
  120.     PRINT L1$;TAB(64)
  121.     GOSUB 5040
  122.     IF L4%=2 THEN X0$="BALANCE SHEET"\
  123.     ELSE X0$="INCOME   STMT"
  124.     X1=416:GOSUB 210
  125.     PRINT X0$;", ";
  126.     IF L5%=2 THEN X0$="CREDIT"\
  127.     ELSE X0$="DEBIT "
  128.     PRINT X0$;" ACCT"
  129.     GOSUB 5060                            REMARK    ENTER REFERENCE
  130.     GOSUB 5080                            REMARK    ENTER AMOUNT
  131.     GOSUB 5100                                REMARK    ENTER DESCRIPTION
  132. 6140    X2=1:X3=0:X4=5:X2$="ENTER FIELD TO CHANGE (0=NONE; 5=CANCEL)"    REMARK    ALLOW CHANGES TO ENTRIES
  133.     GOSUB 665
  134.     IF X0=0 THEN GOTO 6160
  135.     IF X0=5 THEN X0=6:GOSUB 260:GOTO 6070                REMARK    CANCEL THE TRANSACTION
  136.     ON X0 GOSUB 5000,5060,5080,5100                    REMARK    BRANCH TO CHANGE APPROPRIATE FIELD
  137.     GOTO 6140
  138.  
  139. 6160    FILE.NO%=3
  140.     REC.TYPE%=OPERATION%
  141.     CASH.EXTENT%=CASH.EXTENT%+1
  142.     RECORD.NO%=CASH.EXTENT%
  143.     GOSUB 3675                            REMARK    SAVE THE TRANSACTION
  144.     X2$="RECORDED":GOSUB 615
  145.     IF L5%=1 THEN P5=-P5
  146.     CASH.TOTAL=CASH.TOTAL + P5
  147.     GOSUB 4020                            REMARK    CHECK POSTING FILES' RECORD LENGTHS
  148.     X0=6:GOSUB 260                            REMARK    REFRESH CRT MASK
  149.     GOTO 6070
  150.  
  151. 6180    EXTERNAL.POSTING.EXTENT%=EXTERNAL.POSTING.EXTENT%+1
  152.     IF OPERATION%=1 THEN P5=CASH.TOTAL ELSE P5=-CASH.TOTAL
  153.     P1=CL1:P4=0
  154.     FILE.NO%=4:RECORD.NO%=EXTERNAL.POSTING.EXTENT%:GOSUB 3650    REMARK    SAVE THE CASH ACCOUNT TOTAL ON THE POSTING FILE
  155.     CLOSE 5
  156.     OPEN "G/L0F130.DAT" AS 5
  157.     FILE.NO%=5:GOSUB .315                        REMARK    UPDATE THE EXTENT INFORMATION
  158.     GOSUB 4020
  159.     X0=2:GOSUB 260                            REMARK    REFRESH THE CRT MASK
  160.     GOTO 6060
  161.  
  162.                                     REMARK    OPERATION IS PRINT
  163. 6200    X2$="ENTER REPORT OPTION (0=NONE, 1=RECEIPTS, 2=DISBURSEMENTS)"    REMARK    REQUEST REPORT OPTION
  164.     X2=1:X3=0:X4=2:GOSUB 665
  165.     REPORT.TYPE%=X0
  166.     IF REPORT.TYPE%=0 THEN GOTO 6040                REMARK    IF REPORT OPTION IS 'NONE', LEAVE PRINT MODULE
  167.     IF REPORT.TYPE%=1 THEN X4$="CASH RECEIPTS TRANSACTIONS"\
  168.     ELSE X4$="CASH DISBURSEMENTS TRANSACTIONS"
  169.     LPRINTER
  170.     LINE.COUNT%=60                            REMARK    SET REPORT PARAMETERS
  171.     REPORT.TOTAL=0
  172.     TRANS.COUNT%=0
  173.     N=0:N1=0:LAST.CASH.ACCOUNT=0
  174.     FILE.NO%=3
  175.     IF CASH.EXTENT%=0 THEN GOTO 6200
  176.  
  177.     FOR RECORD.NO%=1 TO CASH.EXTENT%                REMARK    START PRINT LOOP
  178.     GOSUB 3625                            REMARK    READ THE JOURNAL RECORD FROM WORKFILE.DAT
  179.     IF REPORT.TYPE%<>REC.TYPE% THEN GOTO 6250
  180.     A1=110:GOSUB 825
  181.     IF CL1<>LAST.CASH.ACCOUNT THEN\                    REMARK    WHEN THE CASH ACCOUNT CHANGES, PRINT THE NEW ONE
  182.         PRINT USING MASKC$;CL1;:\
  183.         LAST.CASH.ACCOUNT=CL1
  184.     PRINT TAB(12);
  185.     PRINT USING MASKC$;P1;
  186.     PRINT TAB(20);
  187.     PRINT USING "##/##";INT(P3),100*(P3-INT(P3));
  188.     PRINT TAB(28);
  189.     PRINT USING MASKA$;P4;
  190.     PRINT TAB(37);P6$;TAB(65);
  191.     PRINT USING MASKB$;P5
  192.     REPORT.TOTAL=REPORT.TOTAL+P5
  193.     TRANS.COUNT%=TRANS.COUNT%+1
  194. 6250    NEXT RECORD.NO%
  195.     PRINT TAB(28);                            REMARK    PRINT TOTALS
  196.     PRINT USING MASKA$;TRANS.COUNT%;
  197.     PRINT "  TOTAL ";
  198.     IF REPORT.TYPE%=1 THEN PRINT "RECEIPTS";\
  199.         ELSE PRINT "DISBURSEMENTS";
  200.     PRINT TAB(65);:PRINT USING MASKB$;REPORT.TOTAL
  201.     GOTO 6200
  202.  
  203.  
  204.                                     REMARK    END PROGRAM
  205. 6340    X2=1:X3=0:X4=1:X2$="DO YOU WANT A CASH JOURNAL LISTING?"    REMARK    ENCOURAGE PRINTING ANY POSTINGS JUST ENTERED
  206.     GOSUB 665
  207.     IF X0=1 THEN 6200
  208.     IF CASH.EXTENT%=0 THEN GOTO 6400
  209.     PRINT "WORKING...  DO NOT INTERRUPT"
  210.     FOR I%=1 TO CASH.EXTENT%                    REMARK    SAVE THE JOURNAL TRANSACTIONS ON THE POSTING FILE
  211.     FILE.NO%=3:RECORD.NO%=I%:GOSUB 3625
  212.     EXTERNAL.POSTING.EXTENT%=EXTERNAL.POSTING.EXTENT%+1
  213.     FILE.NO%=4:RECORD.NO%=EXTERNAL.POSTING.EXTENT%:GOSUB 3650
  214.     NEXT I%
  215.     CLOSE 5
  216.     OPEN "G/L0F130.DAT" AS 5
  217.     FILE.NO%=5:GOSUB .315                        REMARK    SAVE THE NEW FILE EXTENT INFORMATION
  218. 6400    DELETE 3
  219.     PRINT CLEAR.SCREEN$;"G/L DIRECT POSTING LOADING MENU"
  220.     CHAIN "G/L000"                            REMARK    RELOAD MENU
  221. O%
  222.     PRINT TAB(28);                            REMARK    PRINT TOTALS
  223.     PRINT USING MASKA$;TRANS.COUNT%;
  224.     PRINT "  TOTAL ";
  225.     IF REPORT.TYPE%=1 THEN PR