Compucolor.org – Virtual Media

Listing of file='EXPREP.BAS;01' on disk='vmedia/home_budget_3-sector.ccvf'

0 REM  ************* EXPENDITURE REPORTS *******************
1 REM
20 CLEAR 2000
25 DD= PEEK (65535):DSK$= MID$ (STR$ (DD- 1),2)+ ":"
27 IF DD= 1THEN PLOT 12,14,3,10,15:INPUT "LOAD DATA DISK & HIT <RET>: ";A
30 DIM TEX$(64),TEX(64),TAX$(64),FCAST(64)
35 UL$= "---------------------------------------------------------------"
37 U1$= "==============================================================="
40 GOTO 420
56 REM
72 REM  ************** INKEY (SINGLE KEY INPUT) *************
74 POKE 33278,0
76 Y= PEEK (33278)
78 IF Y= 0GOTO 76
80 Y$= CHR$ (Y):RETURN
82 REM
110 REM  ************* FORMAT MONEY **************************
114 RH$= STR$ ((1000* (MO* SGN (MO)- INT (MO* SGN (MO)))+ 1005)/ 10)
116 IF VAL (RH$)> = 200THEN MO= (MO* SGN (MO)+ 1)* SGN (MO)
118 LH$= STR$ (INT (MO* SGN (MO))* SGN (MO)):IF VAL (LH$)= 0AND SGN (MO)= - 1THEN LH$= "-0"
120 LH$= "$"+ LH$
122 IF LEN (LH$)> = 7THEN 126
124 LH$= " "+ LH$:GOTO 122
126 RH$= MID$ (RH$,3,2):MO$= LH$+ "."+ RH$:RETURN
128 REM
130 REM  ************* FORMAT PERCENT ************************
132 REM  MO ->->-> MO$
134 RH$= STR$ ((1000* (MO* SGN (MO)- INT (MO* SGN (MO)))+ 1005)/ 10)
136 IF VAL (RH$)> = 200THEN MO= (MO* SGN (MO)+ 1)* SGN (MO)
138 LH$= STR$ (INT (MO* SGN (MO))* SGN (MO)):IF VAL (LH$)= 0AND SGN (MO)= - 1THEN LH$= "-0"
142 IF LEN (LH$)> = 3THEN 146
144 LH$= " "+ LH$:GOTO 142
146 RH$= MID$ (RH$,3,2):MO$= LH$+ "."+ RH$+ "%":RETURN
148 REM
390 REM
400 REM  ********
**** MAIN PROGRAM *************************
410 REM
420 PLOT 12,14,3,20,1:PRINT "EXPENDITURE REPORTS":PLOT 15
425 ISUM= 0:BAL= 0:ESUM= 0:TEX= 0:TFCAST= 0:SUM= 0
430 PLOT 3,3,5:PRINT "OPTIONS ARE:"
450 PLOT 3,13,9:PRINT "1. STATEMENT FOR A PARTICULAR ACCOUNT"
460 PLOT 3,13,11:PRINT "2. LIST ALL EXPENDITURES"
470 PLOT 3,13,13:PRINT "3. LIST ALL TAXABLE EXPENDITURE"
477 PLOT 3,13,17:PRINT "9. END"
480 PLOT 3,5,22:PRINT "PLEASE MAKE A SELECTION....";:GOSUB 74:ANS= VAL (Y$):PRINT
490 IF NOT ((ANS> = 1AND ANS< = 3)OR ANS= 9)THEN PLOT 7:GOTO 420
500 ON ANSGOSUB 2000,3000,4000,420,420,420,420,420,6000
510 GOTO 420
980 REM  ********* LIST EXPENDITURE FOR AN ACCOUNT  **********
990 REM
1010 FILE "R",1,DSK$+ "EXPTIT",1
1014 GET 1,1,5;NREC:NACCT= NREC- 1
1018 PLOT 12,3,1,1:PRINT "CURRENT ACCOUNTS ARE :"
1022 FOR REC= 2TO NREC- 1
1024 GET 1,REC;NAME$[12]
1026 IF REC< = 15THEN PLOT 3,0,REC+ 1:PRINT REC- 1;" "NAME$"":GOTO 1034
1028 IF REC< = 29THEN PLOT 3,16,REC- 13:PRINT REC- 1;" "NAME$"":GOTO 1034
1030 IF REC< = 43THEN PLOT 3,32,REC- 27:PRINT REC- 1;" "NAME$"":GOTO 1034
1032 PLOT 3,48,REC- 41:PRINT REC- 1;" "NAME$""
1034 NEXT REC
1060 PLOT 3,0,20,11:INPUT "ENTER ACCOUNT NUMBER: ";SEL:IF SEL< 1OR SEL> NACCT- 1THEN PLOT 7:GOTO 1060
1070 GET 1,SEL+ 1;NAME$[12]:FILE "C",1
1080 INPUT "ENTER START DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN SJUL= 0:GOTO 1100
1090 GOSUB 21045:IF ERR= 1THEN PLOT 7,28,11:GOTO 1080
1095 D7$= TD$:GOSUB 19000:SJUL= D7
1100 INPUT "ENTER END DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN EJUL= 999999:GOTO 1120
1110 GOSUB 21045:IF ERR= 1THEN PLOT 7,28,11:GOTO 1100
1115 D7$= TD$:GOSUB 19000:EJUL= D7
1120 IF PICK= 2THEN RETURN
1980 REM  ********* STATEMENT FOR AN ACCOUNT  *****************
1990 REM
2000 PICK= 2:GOSUB 1010
2160 GOSUB 9000:PRINT PRNTER$;PL$;GR$;SH$;EM$
2165 PRINT SPACE$;TAB( 18+ TB)NAME$;" STATEMENT";RH$:PRINT SP$;TAB( 18+ TB)"=--=--=--=--=--=--=--=":PRINT
2170 PRINT SPACE$;WHITE$;TAB( 2+ TB)"DATE    DETAILS        INVOICES   PAYMENTS CHNUM.     BALANCE":PRINT SPACE$;MAGENTA$;UL$:PRINT
2180 FILE "R",1,DSK$+ "EXPEND",1:GET 1,1;NREC:FOR REC= 2TO NREC- 1:GET 1,REC;NUM$[2],DATE$[9],DETAIL$[12],CHEQUE,IP$[1],AMT
2190 IF VAL (NUM$)< > SELTHEN 2230
2210 D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 2230
2220 IF IP$= "I"THEN ISUM= ISUM+ AMT:BAL= BAL+ AMT:GOSUB 2500:GOTO 2230
2225 ESUM= ESUM+ AMT:BAL= BAL- AMT:GOSUB 2700
2230 NEXT REC:FILE "C",1:IF SEL> 15THEN 2280
2240 PRINT :FILE "R",1,DSK$+ "PAYS",1:GET 1,1;NREC:FOR REC= 2TO NREC- 1:GET 1,REC;NUM,DATE$[9]:GET 1,REC,SEL* 4+ 38;AMT:IF AMT= 0THEN 2270
2250 D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 2270
2260 DETAIL$= "PAY":CHEQUE= 0:ISUM= ISUM+ AMT:BAL= BAL+ AMT:GOSUB 2500
2265 ESUM= ESUM+ AMT:BAL= BAL- AMT:GOSUB 2700
2270 NEXT REC:FILE "C",1
2280 PRINT SPACE$;MAGENTA$;UL$
2285 PRINT SPACE$;:MO= ISUM:GOSUB 114:PRINT TAB( 23+ TB)RED$;MO$;:MO= ESUM:GOSUB 114:PRINT TAB( 34+ TB)CYAN$;MO$;:MO= ISUM- ESUM:GOSUB 114:PRINT TAB( 53+ TB);WHITE$;MO$
2287 PRINT SPACE$;MAGENTA$;U1$;GREEN$
2290 GOSUB 9500
2300 PRINT :INPUT "HIT <RETURN> TO CONTINUE: ";A:RETURN
2500 PRINT SPACE$;WHITE$;DATE$;YELLOW$;TAB( 10+ TB)DETAIL$;:MO= AMT:GOSUB 114:PRINT RED$;TAB( 23+ TB)MO$;:MO= BAL:GOSUB 114:PRINT TAB( 53+ TB)WHITE$;MO$
2510 RETURN
2700 PRINT SPACE$;WHITE$;DATE$;YELLOW$;TAB( 10+ TB)DETAIL$;:MO= AMT:GOSUB 114:PRINT CYAN$;TAB( 34+ TB)MO$;TAB( 45+ TB)GR$;CH;:MO= BAL:GOSUB 114:PRINT TAB( 53+ TB)WHITE$;MO$
2710 RETURN
2980 REM  ************** LIST TOTAL EXPENDITURE ***************
2990 REM
3000 PICK= 3:TITLE$= "TOTAL    ":FOR I= 1TO 64:TEX(I)= 0:NEXT I
3002 PLOT 12,3,0,10:INPUT "ENTER START DATE (D.M.YY) OR <RET>: ";TD$
3003 IF TD$= ""THEN D1$= "YEAR START":D2$= " YEAR END":SJUL= 0:EJUL= 999999:DAYS= 365:GOTO 3010
3004 GOSUB 21045:IF ERR= 1THEN PLOT 7:GOTO 3002
3005 D7$= TD$:D1$= " "+ TD$:GOSUB 19000:SJUL= D7
3006 INPUT "ENTER END DATE (D.M.YY):            ";TD$:IF TD$= ""THEN PLOT 7,28,11:GOTO 3006
3008 GOSUB 21045:IF ERR= 1THEN PLOT 7,28,11:GOTO 3006
3009 D7$= TD$:D2$= TD$:GOSUB 19000:EJUL= D7:DAYS= EJUL- SJUL+ 1
3010 GOSUB 9000
3015 PRINT PRNTER$;PL$;SH$;GR$;EM$
3017 PRINT SPACE$;TAB( 3+ TB)TITLE$;"EXPENDITURE SUMMARY FROM ";D1$;" TO ";D2$;RH$
3018 PRINT SP$;TAB( 3+ TB)"=--=--=--=--=--=--=--=--=--=-=--=--=--=--=--=--=--=--=--=":PRINT
3020 PRINT SPACE$;WHITE$;TAB( 10+ TB)"DETAILS          FORECAST         ACTUAL   DIFFERENCE":PRINT SPACE$;MAGENTA$;UL$:PRINT
3022 FILE "R",1,DSK$+ "EXPTIT",1:GET 1,1,5;NTREC
3030 FOR TREC= 2TO NTREC- 1:SEL= TREC- 1
3040    GET 1,TREC;TEX$(SEL)[12],DUMMY$[1],TAX$(SEL)[1],FRQ$[2],FCAST,DU$[4],ZZ:FRQ= VAL (FRQ$)
3055      FCAST(SEL)= FCAST* FRQ* (DAYS/ 365)
3060    IF SEL= 16THEN CBAL= - ZZ
3065 NEXT TREC:FILE "C",1
3070 TEX$(16)= "CASH BALANCE"
3072
3080 FILE "R",1,DSK$+ "EXPEND",1:GET 1,1;NREC
3190 FOR REC= 2TO NREC- 1
3195   GET 1,REC;NUM$[2],DATE$[9],DETAIL$[12],CHEQUE,IP$[1],AMT:NUM= VAL (NUM$)
3200   IF NUM= 16THEN 3240
3210   IF IP$< > "P"THEN 3240
3220   D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 3240
3230       TEX(NUM)= TEX(NUM)+ AMT
3240 NEXT REC:FILE "C",1
3242 TEX(16)= CBAL
3244
3246 FILE "R",1,DSK$+ "PAYS",1:GET 1,1;NPREC
3250 FOR PREC= 2TO NPREC- 1:GET 1,PREC;NUM,DATE$[9]
3260   D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 3284
3262   FOR I= 1TO 15
3264     GET 1,PREC,I* 4+ 38;AMT
3270     TEX(I)= TEX(I)+ AMT
3280   NEXT I
3284 NEXT PREC:FILE "C",1
3300
3310 FOR I= 1TO NTREC- 2:IF TEX(I)= 0AND FCAST(I)= 0THEN 3330
3315   IF PICK= 4AND TAX$(I)< > "Y"THEN 3330
3320   GOSUB 3500
3325   TFCAST= TFCAST+ FCAST(I):ESUM= ESUM+ TEX(I)
3330 NEXT I
3395
3399
3400 PRINT SPACE$;MAGENTA$;UL$:PRINT SPACE$;WHITE$;TAB( 10+ TB)"TOTAL";:MO= TFCAST:GOSUB 114:PRINT TAB( 25+ TB)YELLOW$;MO$;:MO= ESUM:GOSUB 114:PRINT TAB( 40+ TB)CYAN$;MO$;
3410 MO= TFCAST- ESUM:GOSUB 114:PRINT TAB( 53+ TB)RED$;MO$:PRINT SPACE$;MAGENTA$;U1$;GREEN$
3420 GOSUB 9500
3430 PRINT :INPUT "HIT <RETURN> TO CONTINUE: ";A:RETURN
3500 PRINT SPACE$;WHITE$;TAB( 10+ TB)TEX$(I);YELLOW$;:MO= FCAST(I):GOSUB 114:PRINT TAB( 25+ TB)MO$;CYAN$;:MO= TEX(I):GOSUB 114:PRINT TAB( 40+ TB)MO$;
3510 MO= TEX(I)- FCAST(I):GOSUB 114:PRINT TAB( 53+ TB)RED$;MO$:RETURN
3970 REM
3980 REM  **************** LIST TAXABLE EXPENDITURE ***********
3990 REM
4000 TITLE$= "TAXATION ":PICK= 4:GOTO 3002
4470 REM
4970 REM
6000 PLOT 12,3,5,12:INPUT "LOAD APPROPRIATE PROGRAM DISK AND HIT <RETURN> ";A:LOAD "MENU":RUN
8990 REM
8992 REM  **************** PRINTER QUESTION *******************
8994 REM
9000 PLOT 3,0,31,11:PRINT "TO PRINTER OR SCREEN: ";:GOSUB 74:IF Y$= "P"THEN PRINT "RINTER":GOTO 9070
9002 IF Y$< > "S"THEN PLOT 7:GOTO 9000
9005 PRINT "CREEN"
9010 REM  IF OUTPUT TO SCREEN
9020   PFLAG= 0
9035     PLNGTH$= "":SH$= "":RH$= ""
9040     EMPH$= "":SPACE$= "":MAGENTA$= "":PRNTR$= "":CYAN$= "":GREEN$= "":WHITE$= "":RED$= "":YELLOW$= "":GOTO 9140
9060 REM  ELSE
9070   PLOT 3,0,31,11:INPUT "TURN ON PRINTER & SET PAPER: HIT <RETURN> WHEN READY ";A:PLOT 12
9080   POKE 33289,132:PFLAG= 1:TMP= PEEK (33265)
9100     FILE "R",6,DSK$+ "PRNTER",1:GET 6,1;PRNTER$[7],EMPH$[4],DUMMY$[20],PLNGTH$[4],DU$[20],SH$[4],RH$[4]:FILE "C",6
9110     SPACE$= "         ":MAGENTA$= "":CYAN$= "":GREEN$= "":WHITE$= "":RED$= "":YELLOW$= ""
9130 REM  ENDIF
9140 TB= LEN (SPACE$):RETURN
9150 REM
9160 REM
9480 REM  ************ POST PRINTING PROCEDURE ****************
9490 REM
9500 IF PFLAG= 1THEN POKE 33265,TMP:POKE 33289,64
9510 RETURN
9520 REM
18980 REM  ********************** CNVERT DATE TO JD ************
18990 REM
19000 Y1= VAL (RIGHT$ (D7$,2)):D= VAL (LEFT$ (D7$,2))
19010 FOR K= 1TO 12:IF MID$ (STRMTH$,K* 3,3)= MID$ (D7$,4,3)THEN M= K:GOTO 19030
19020 NEXT K
19030 Y1= Y1+ 1900
19040 C9= .001
19050 M9= (- 1)* INT (((14- M)/ 12)+ C9)
19060 J1= D- 2447095+ INT ((1461* (Y1+ 4800+ M9)/ 4)+ C9)
19070 J2= J1+ INT ((367* (M- 2- 12* M9)/ 12)+ C9)
19080 J1= J2- INT ((3* (Y1+ 4900+ M9)/ 400)+ C9)
19090 J2= J1
19100 D7= J2:RETURN
21000 REM  ******************** DATE ROUTINE *******************
21010 REM
21020 REM  INPUT DATE AS D.M.YY ,ASSIGN TO TD$, AND CALL THIS
21030 REM  OUTPUT IS TD$ IN THE FORM OF '12 JAN 81'
21040 REM
21045 ERR= 0:IF LEN (TD$)= 0THEN ERR= 1:GOTO 21120
21047 FOR JI= 1TO LEN (TD$):T6= ASC (MID$ (TD$,JI,1)):IF NOT (T6= 46OR (T6> 47AND T6< 58))THEN ERR= 1:GOTO 21120
21049 NEXT JI
21050 STRMTH$= "  JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
21060 IF  MID$ (TD$,2,1)= "."THEN TD$= "0"+ TD$
21070 IF  MID$ (TD$,5,1)= "."THEN TD$= LEFT$ (TD$,3)+ "0"+ RIGHT$ (TD$,4)
21080 MM= VAL (MID$ (TD$,4,2))
21090 MM$= " "+ MID$ (STRMTH$,MM* 3,3)+ " "
21100 TD$= LEFT$ (TD$,2)+ MM$+ RIGHT$ (TD$,2)
21110 IF  LEFT$ (TD$,1)= "0"THEN TD$= " "+ RIGHT$ (TD$,8)
21120 RETURN