Compucolor.org – Virtual Media

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

0 REM  ****************** INCOME 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 INC(7,2),EX(15,2),BANK(5,2),INC$(7),EX$(15),BANK$(5),BPNTR$(5)
35 UL$= "---------------------------------------------------------------"
37 U1$= "==============================================================="
38 STRMTH$= "  JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
40 GOTO 420
70 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 **************************
112 REM  MO ->->-> MO$
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,28,1:PRINT "INCOME REPORTS":PLOT 15
430 PLOT 3,3,5:PRINT "OPTIONS ARE:"
440 PLOT 3,13,7:PRINT "1. LIST A PAY"
450 PLOT 3,13,9:PRINT "2. LIST ALL PAYS"
460 PLOT 3,13,11:PRINT "3. LIST A SUNDRY INCOME"
470 PLOT 3,13,13:PRINT "4. LIST ALL INCOMES"
475 PLOT 3,13,15:PRINT "5. LIST TAXABLE INCOMES"
477 PLOT 3,13,17:PRINT "6. END"
480 PLOT 3,5,22:PRINT "PLEASE MAKE A SELECTION....";:GOSUB 74:ANS= VAL (Y$):PRINT
490 IF NOT (ANS> = 1AND ANS< = 6)THEN PLOT 7:GOTO 420
500 ON ANSGOSUB 1000,2000,3000,4000,5000,6000
510 GOTO 420
970 REM
980 REM  **************** LIST A PAY *************************
990 REM
1000 FILE "R",1,DSK$+ "PAYS",1
1010 FILE "R",2,DSK$+ "PAYTIT",1
1020 FILE "R",4,DSK$+ "EXPTIT",1
1030 FILE "R",5,DSK$+ "BNKTIT",1
1040 GET 1,1;NPAY,NINC,NEX,NBANK
1050 PLOT 12,3,5,1:PRINT "THESE ARE THE PAYDAYS ON FILE: "
1060 FOR REC= 2TO NPAY- 1:GET 1,REC,5;PDAY$[9]:IF REC< = 16THEN PLOT 3,1,REC+ 1:GOTO 1100
1070 IF REC< = 31THEN PLOT 3,15,REC- 14:GOTO 1100
1080 IF REC< = 46THEN PLOT 3,30,REC- 29:GOTO 1100
1090 PLOT 3,45,REC- 44
1100 PRINT PDAY$:NEXT REC
1110 PLOT 3,0,31,11,3,0,31:INPUT "ENTER PAYDAY REQUIRED (D.M.YY): ";TD$:GOSUB 21045:SDATE$= TD$:FOR REC= 2TO NPAY- 1:GET 1,REC,5;PDAY$[9]
1120 IF PDAY$= SDATE$THEN G1REC= REC:GOTO 1140
1130 NEXT REC:PLOT 7:GOTO 1050
1140 GOSUB 9000:GET 1,G1REC;PVA,LDATE$[9]
1150 FOR I= 1TO 7
1160 GET 1,G1REC,I* 4+ 10;INC(I,2):INC(I,1)= I:NEXT I
1170 FOR I= 1TO 15
1180 GET 1,G1REC,I* 4+ 38;EX(I,2):EX(I,1)= I:NEXT I
1190 FOR I= 1TO 5
1200 GET 1,G1REC,I* 6+ 96;BPNTR$(I)[2],BANK(I,2):BANK(I,1)= I:NEXT I
1210 FOR I= 1TO 7
1220 GET 2,I+ 1;INC$(I)[12]:NEXT I
1230 FOR I= 1TO 15
1240 GET 4,I+ 1;EX$(I)[12]:NEXT I
1250 FOR I= 1TO 5
1260 GET 5,VAL (BPNTR$(I))+ 1;BANK$(I)[12]:NEXT I
1270 GOSUB 1500:REM                          DISPLAY THE LOT
1280 GOSUB 9500
1290 FILE "C",1,2,4,5:PLOT 3,27,2:INPUT "HIT <RETURN> TO CONTINUE";A:RETURN
1490 REM
1492 REM  ********************* PRINT PAY *********************
1494 REM
1500 PRINT PR$;PL$;SP$;SH$;EM$;TAB( 5+ TB)YE$;"PAY NUMBER: ";RH$;SI$;CYAN$;PVA;RI$;SH$;TAB( 45+ TB)YE$;"DATE: ";RH$;SI$;CY$;LD$;RI$:IF PF= 1THEN PRINT
1510 PRINT SPACE$;TAB( 16+ TB)YELLOW$;"   INCOME     EXPEND     ALLOTS         BALANCE";GREEN$:IF PFLIG= 1THEN PRINT
1520 ISUM= 0:ESUM= 0:ASUM= 0:PBAL= 0
1530 FOR I= 1TO 7:IF LEFT$ (INC$(I),5)= "SPARE"THEN 1570
1535 ISUM= ISUM+ INC(I,2):PBAL= PBAL+ INC(I,2)
1540 PRINT SPACE$;CYAN$;INC(I,1);TAB( 4+ TB)INC$(I);BLUE$;:MO= INC(I,2):GOSUB 114:PRINT TAB( 16+ TB)MO$;
1550 MO= PBAL:GOSUB 114:PRINT WHITE$;TAB( 53+ TB)MO$
1560 NEXT I
1570 FOR I= 1TO 15:IF LEFT$ (EX$(I),5)= "SPARE"THEN 1610
1575 ESUM= ESUM+ EX(I,2):PBAL= PBAL- EX(I,2)
1580 PRINT SPACE$;WHITE$;EX(I,1);TAB( 4+ TB)EX$(I);RED$;:MO= EX(I,2):GOSUB 114:PRINT TAB( 27+ TB)MO$;
1590 MO= PBAL:GOSUB 114:PRINT WHITE$;TAB( 53+ TB)MO$
1600 NEXT I
1610 FOR I= 1TO 5:IF LEFT$ (BANK$(I),5)= "SPARE"THEN 1645
1615 ASUM= ASUM+ BANK(I,2):PBAL= PBAL- BANK(I,2)
1620 PRINT SPACE$;YELLOW$;BANK(I,1);TAB( 4+ TB)BANK$(I);:MO= BANK(I,2):GOSUB 114:PRINT MAGENTA$;TAB( 38+ TB)MO$;
1630 MO= PBAL:GOSUB 114:PRINT WHITE$;TAB( 53+ TB)MO$
1640 NEXT I
1645 PRINT SPACE$;GREEN$;TAB( 16+ TB)"========== ========== ==========     =========="
1650 PRINT SPACE$;GREEN$;"    TOTAL";:MO= ISUM:GOSUB 114:PRINT CYAN$;TAB( 16+ TB)MO$;:MO= ESUM:GOSUB 114:PRINT RED$;TAB( 27+ TB)MO$;
1660 MO= ASUM:GOSUB 114:PRINT MAGENTA$;TAB( 38+ TB)MO$;:MO= ISUM- ESUM- ASUM:GOSUB 114:PRINT WHITE$;TAB( 53+ TB)MO$
1670 PRINT SPACE$;GREEN$;TAB( 16+ TB)"========== ========== ==========     =========="
1680 RETURN
1970 REM
1980 REM  **************** LIST ALL PAYS **********************
1990 REM
2000 FILE "R",1,DSK$+ "PAYS",1
2040 GET 1,1;NPAY:TINC= 0:TEX= 0
2110 PLOT 12,3,10,12:INPUT "ENTER START DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN SJUL= 0:D1$= "YEAR START":GOTO 2116
2114 GOSUB 21045:D7$= TD$:D1$= " "+ D7$:GOSUB 19000:SJUL= D7
2116 PLOT 3,10,14:INPUT "ENTER END DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN EJUL= 999999:D2$= " YEAR END":GOTO 2140
2118 GOSUB 21045:D7$= TD$:D2$= D7$:GOSUB 19000:EJUL= D7
2140 GOSUB 9000:PRINT PRNTER$;PL$;SH$;GR$;EM$
2141 PRINT SPACE$;TAB( 12+ TB)"PAY SUMMARY FROM ";D1$;" TO ";D2$;RH$:PRINT TAB( 12+ TB)"=--=--=--=--=--=--=--=--=--=--=--=--=--=":PRINT
2142 PRINT SPACE$;MAGENTA$;UL$
2143 PRINT SPACE$;WHITE$;" NUMBER     DATE           PAY   DEDUCTIONS  PERCENT  BALANCE":PRINT SPACE$;MAGENTA$;UL$:PRINT
2145 FOR REC= 2TO NPAY- 1:GET 1,REC;PVA,LDATE$[9]:D7$= LDATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 2275
2150 ISUM= 0:ESUM= 0:FOR I= 1TO 7
2160 GET 1,REC,I* 4+ 10;INC:ISUM= ISUM+ INC:NEXT I:TINC= TINC+ ISUM
2170 FOR I= 1TO 15
2180 GET 1,REC,I* 4+ 38;EX:ESUM= ESUM+ EX:NEXT I:TEX= TEX+ ESUM
2270 PCENT= ESUM/ ISUM* 100:GOSUB 2500:REM        DISPLAY THE LOT
2275 NEXT REC:PRINT :PRINT SP$;MAGENTA$;UL$:PRINT SP$;YELLOW$;"TOTALS";:MO= TINC:GOSUB 114:PRINT TAB( 21+ TB)MO$;:MO= TEX:GOSUB 114:PRINT TAB( 33+ TB)MO$;
2276 MO= TEX/ TINC* 100:GOSUB 134:PRINT TAB( 45+ TB)MO$;
2277 MO= TINC- TEX:GOSUB 114:PRINT TAB( 53+ TB)MO$:PRINT SPACE$;MAGENTA$;U1$:PRINT :PRINT
2280 FILE "C",1:GOSUB 9500
2290 PRINT :INPUT "HIT <RETURN> TO CONTINUE";A:RETURN
2470 REM
2480 REM  **************** PRINT OUTPUT ***********************
2490 REM
2500 PRINT SPACE$;GREEN$;PVA;YELLOW$;TAB( 10+ TB)LDATE$;CYAN$;:MO= ISUM:GOSUB 114:PRINT TAB( 21+ TB)MO$;
2510 PRINT RED$;:MO= ESUM:GOSUB 114:PRINT TAB( 33+ TB)MO$;:MO= PCENT:GOSUB 134:PRINT TAB( 45+ TB)MO$;:MO= ISUM- ESUM:GOSUB 114:PRINT WHITE$TAB( 53+ TB)MO$:RETURN
2970 REM
2980 REM  **************** LIST AN INCOME  ********************
2990 REM
3000 ISUM= 0:FILE "R",1,DSK$+ "INCTIT",1
3010 GET 1,1;NREC:NACCT= NREC- 1
3030 PLOT 12,3,1,1:PRINT "CURRENT SUNDRY ACCOUNTS ARE:"
3050 FOR REC= 3TO NREC- 1
3060 GET 1,REC;NAME$[12]:PLOT 3,5,REC+ 3:PRINT REC- 1,""NAME$""
3070 NEXT REC
3080 PRINT :INPUT "ENTER ACCOUNT NUMBER: ";SEL:IF SEL< 2OR SEL> NACCT- 1THEN PLOT 7,28,11,28:GOTO 3080
3085 GET 1,SEL+ 1;NAME$[12]:FILE "C",1
3090 INPUT "ENTER START DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN SJUL= 0:D1$= "YEAR START":GOTO 3110
3100 GOSUB 21045:D7$= TD$:D1$= " "+ D7$:GOSUB 19000:SJUL= D7
3110 INPUT "ENTER END DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN EJUL= 999999:D2$= " YEAR END":GOTO 3135
3120 GOSUB 21045:D7$= TD$:D2$= D7$:GOSUB 19000:EJUL= D7
3135 GOSUB 9000:PRINT PRNTER$;PL$;SH$;GR$;EM$
3137 PRINT SP$;TAB( 4+ TB)NAME$;" INCOME SUMMARY FROM ";D1$;" TO ";D2$;RH$
3138 PRINT SP$;TAB( 4+ TB)"=--=--=--=--=--=--=--=--=--=--=---=--=--=--=--=--=--=--=":PRINT
3140 PRINT SPACE$;MAGENTA$;UL$
3145 PRINT SPACE$;WHITE$;TAB( 13+ TB)"DATE       DETAILS          AMOUNT":PRINT SPACE$;MAGENTA$;UL$:PRINT
3150 FILE "R",1,DSK$+ "INCOME",1:GET 1,1;NREC:FOR REC= 2TO NREC- 1:GET 1,REC;NUM$[2],DATE$[9],DETAIL$[12],AMT
3160 IF VAL (NUM$)< > SELTHEN 3190
3170 D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 3190
3180 ISUM= ISUM+ AMT:GOSUB 3500:REM             PRINT OUTPUT
3190 NEXT REC:FILE "C",1
3200 PRINT SPACE$;MAGENTA$;UL$:PRINT SPACE$;YELLOW$;TAB( 10+ TB)"TOTAL";:MO= ISUM:GOSUB 114:PRINT TAB( 40+ TB)MO$:PRINT SPACE$;MAGENTA$;U1$;GREEN$
3205 GOSUB 9500
3210 PRINT :INPUT "HIT <RETURN> TO CONTINUE: ";A:RETURN
3470 REM
3480 REM  ***************** PRINT OUTPUT **********************
3490 REM
3500 PRINT SPACE$;WHITE$;TAB( 10+ TB)DATE$;YELLOW$;TAB( 21+ TB)DETAIL$;:MO= AMT:GOSUB 114:PRINT CYAN$;TAB( 40+ TB)MO$
3510 RETURN
3970 REM
3980 REM  **************** LIST ALL INCOMES  ******************
3990 REM
4000 T$= "TOTAL  "
4010 FILE "R",1,DSK$+ "INCTIT",1:FILE "R",2,DSK$+ "INCOME",1:GROSS= 0
4080 PRINT :INPUT "ENTER START DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN SJUL= 0:D1$= "YEAR START":GOTO 4100
4090 GOSUB 21045:D7$= TD$:D1$= " "+ D7$:GOSUB 19000:SJUL= D7
4100 INPUT "ENTER END DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN EJUL= 999999:D2$= " YEAR END":GOTO 4120
4110 GOSUB 21045:D7$= TD$:D2$= D7$:GOSUB 19000:EJUL= D7
4120 GOSUB 9000:PRINT PRNTER$;PL$;SH$;GR$;EM$
4125 PRINT SPACE$;TAB( 7+ TB);T$;" INCOME SUMMARY FROM ";D1$;" TO ";D2$;RH$
4127 PRINT SP$;TAB( 7+ TB)"=--=--=--=--=--=--=--=--=--=-=--=--=--=--=--=--=--=":PRINT
4130 PRINT SPACE$;WHITE$;TAB( 5+ TB)"INCOME NAME";TAB( 35+ TB)"AMOUNT":PRINT SPACE$;MAGENTA$;UL$:PRINT
4135 GET 1,1;NTREC:GET 2,1;NREC:FOR TREC= 2TO NTREC- 1:GET 1,TREC;NAME$[12],DU$[1],TAX$[1]:SEL= TREC- 1:ISUM= 0
4137 IF CHOICE= 5AND TAX$< > "Y"THEN 4184
4138 IF SEL= 1THEN GOSUB 4300:GOTO 4184:REM   PAYS FROM PAY FILE
4140 FOR REC= 2TO NREC- 1:GET 2,REC;NUM$[2],DATE$[9],DETAIL$[12],AMT
4150 IF VAL (NUM$)< > SELTHEN 4180
4160 D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 4180
4170 ISUM= ISUM+ AMT
4180 NEXT REC:GOSUB 4500:REM           PRINT
4182 GROSS= GROSS+ ISUM
4184 NEXT TREC
4190 PRINT SPACE$;MAGENTA$;UL$:PRINT SPACE$;YELLOW$;TAB( 5+ TB)"TOTAL";:MO= GROSS:GOSUB 114:PRINT TAB( 32+ TB)MO$:PRINT SPACE$;MAGENTA$;U1$;GREEN$
4200 GOSUB 9500
4210 FILE "C",1,2:PRINT :INPUT "HIT <RETURN> TO CONTINUE: ";A:RETURN
4290
4300 FILE "R",3,DSK$+ "PAYS",1:GET 3,1;NQREC,NSAL
4310 FOR REC= 2TO NQREC- 1:AMT= 0
4320   GET 3,REC,5;DATE$[9]
4330   D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 4390
4340   FOR IBYTE= 1TO NSAL- 1
4350     GET 3,REC,IBYTE* 4+ 10;ITEM
4360     AMT= AMT+ ITEM
4370   NEXT IBYTE
4380   ISUM= ISUM+ AMT
4390 NEXT REC:GOSUB 4500:REM    PRINT
4400 GROSS= GROSS+ ISUM
4410 FILE "C",3:RETURN
4420
4470 REM
4480 REM  ***************** PRINT OUTPUT **********************
4490 REM
4500 PRINT SPACE$;WHITE$;TAB( 5+ TB)NAME$;:MO= ISUM:GOSUB 114:PRINT CYAN$;TAB( 32+ TB)MO$
4510 RETURN
4970 REM
4980 REM  **************** LIST TAXABLE INCOMES ***************
4990 REM
5000 CHOICE= 5:T$= "TAXABLE":GOSUB 4010:RETURN
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$= "":SI$= "":RI$= "":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],DUMMY$[12],SI$[4],RI$[4],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 21130
21050 FOR JI= 1TO LEN (TD$):T6= ASC (MID$ (TD$,JI,1)):IF NOT (T6= 46OR (T6> 47AND T6< 58))THEN ERR= 1:GOTO 21130
21055 NEXT JI
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 GOTO 21140
21130 PLOT 7
21140 RETURN