10 '****************************************************************** 20 '* BILLING PROGRAM * 30 '* (BILLING.BAS) 8/25/82 * 40 '****************************************************************** 50 BELL$=CHR$(7):CLS$=CHR$(26) 60 PRINT CHR$(26) 70 CLEAR 5000 80 SURCHG=.0002:CTYTAX=.05 90 DIM NI$(201),NI#(201),KWR(18),RPK(18),FS(18),NA$(6),OP(12),DC(12),IN(12),II$(12),OK#(12),DP(12) 100 PRINT BELL$ 110 ESC$=CHR$(27):HALF$=ESC$+CHR$(41):FULL$=ESC$+CHR$(40) 120 REVERSE$=ESC$+CHR$(71)+CHR$(52) 130 ESC$=CHR$(27) 140 BLINK$=ESC$+CHR$(71)+CHR$(50) 150 SEQ$=ESC$+CHR$(71) 160 NORMAL$=SEQ$+CHR$(48):BLANK$=SEQ$+CHR$(49) 170 REVUNDER$=SEQ$+CHR$(60) 180 HALF$=ESC$+CHR$(41) 190 FULL$=ESC$+CHR$(40) 200 REVUNDER$=SEQ$+CHR$(60) 210 BLANK$=SEQ$+CHR$(49) 211 GOTO 3630 220 OPEN"O",5,"REC.DAT" 'OPEN ACCOUNTS RECEIVABLE FILE 230 OPEN"I",1,"DATE.DAT"' READ PARK NAME FILE 240 INPUT#1,Y9$,W$,X$,Y$:CLOSE 1:GOSUB 250:GOTO 260 250 PRINT CHR$(26):TB=80-LEN(W$+" BILLING PROGRAM"):TB=TB/2:PRINT REVERSE$;TAB(TB);W$+" BILLING PROGRAM":RETURN 260 INPUT"DO YOU WANT A PRINTER ALIGNMENT MAST RUN (Y/N) ";AN$ 270 IF LEFT$(AN$,1)="Y" THEN GOSUB 5220 280 IF LEFT$(AN$,1)="y" THEN PRINT"SHIFT TO ALL CAPS":GOSUB 5220 290 IF LEFT$(AN$,1)="n" THEN PRINT"************ SHIFT TO ALL CAPS **********" 300 INPUT"ENTER BILLING DATE (EXAMPLE: 030182)";DA$ 310 IF LEN(DA$)<>6 THEN GOTO 370 320 I1=VAL(LEFT$(DA$,2)):I2=VAL(MID$(DA$,3,2)):I3=VAL(RIGHT$(DA$,2)) 330 IF I1<1 OR I1>12 THEN GOTO 370 340 IF I2<1 OR I2>31 THEN GOTO 370 350 IF I3<0 OR I3>99 THEN GOTO 370 360 E1=I1*10000!+I2*100+I3:GOTO 380 370 PRINT "** BAD DATE **":GOTO 300 380 INPUT"ENTER THERM FACTOR ";TF 390 IF TF<=0 GOTO 380 400 PRINT CHR$(26) 410 GOSUB 250 420 PRINT"UTILITY TAX NOW SET FOR .05" 430 PRINT"SURCHARGE NOW SET AS .0002" 440 MIN=2 450 PRINT"MINIMUM ELECTRICAL CHARGE IS $2.00" 460 INPUT"DO YOU WANT TO CHANGE THESE (Y/N) ";AN$ 470 IF LEFT$(AN$,1)<>"Y" THEN GOTO 570 480 INPUT"ENTER UTILITY TAX ";CTYTAX 490 IF CTYTAX<0 GOTO 480 500 INPUT"ENTER SURCHARGE ";SURCHG 510 IF SURCHG<0 GOTO 500 520 INPUT"MINIMUM ELECTRICAL CHARGE ";MIN 530 IF MIN<0 GOTO 520 540 INPUT"ALL DATA CORRECT (Y/N) ";AN$ 550 IF LEFT$(AN$,1)<>"Y" GOTO 480 560 GOSUB 250 570 OPEN"I",1,"RATE.DAT" 580 FOR X%=1 TO 6 590 INPUT#1, NA$(X%) 600 FOR XY%=1 TO 3 610 XX%=XX%+1 620 INPUT#1,KWR(XX%),RPK(XX%),FS(XX%) 630 NEXT XY% 640 NEXT X% 650 REM MAINTENANCE 660 GOSUB 2860 670 GOSUB 1160 680 GOSUB 2880 690 JK=IC:JJ=0 700 PRINT CLR$ 710 PRINT CHR$(26):PRINT"ENTER TENANT NO. OR - 0 - TO EXIT ";:INPUT KN# 720 IF KN#>99998! THEN 730 ELSE 740 730 PRINT "** NUMBER TO LARGE **":GOTO 710 740 IF KN#=0 GOTO 1120 750 GOSUB 1400 760 IF KF=0 GOTO 790 770 GOSUB 2980 780 GOTO 810 790 GOSUB 1770 800 Q9=1 810 IF Q9<>1 GOTO 840 820 J$=" ":K$=" ":M$=" " 830 Q9=0 840 PRINT CHR$(26) 850 ' 1040 GOSUB 3630 1050 A2=CG:A3=CE 1060 GOTO 1090 1070 GOSUB 2570 1080 GOTO 1100 1090 GOSUB 3170 1100 J$=" ":K$=" ":M$=" ":M=0:N=0:A1=0:A2=0:A3=0:A4=0:A5=0:M2=0:CR=0 1110 GOTO 700 1120 CLOSE 1130 GOSUB 2400 1140 CLOSE 1150 GOTO 5190 1160 OC=0 1170 CLOSE 1 1180 OPEN "I",1,"NMI.DAT" 1190 IF EOF(1) GOTO 1240 1200 IF OK#(OC)=9999999999# GOTO 1240 1210 OC=OC+1 1220 INPUT #1,OK#(OC),OP(OC) 1230 GOTO 1190 1240 CLOSE 1 1250 DC=0 1260 OPEN "I",1,"NMD.DAT" 1270 IF EOF(1) GOTO 1330 1280 DC=DC+1 1290 INPUT#1,DP(DC) 1300 IF DP(DC)<>0 GOTO 1320 1310 DC=DC-1 1320 GOTO 1270 1330 CLOSE 1 1340 OPEN "R",1,"NMINDEX.DAT",256 1350 FIELD 1,8 AS NI$(1),8 AS NI$(2),8 AS NI$(3),8 AS NI$(4),8 AS NI$(5),8 AS NI$(6),8 AS NI$(7),8 AS NI$(8),8 AS NI$(9),8 AS NI$(10),8 AS NI$(11) 1360 FIELD 1,88 AS DUMMY$,8 AS NI$(12),8 AS NI$(13),8 AS NI$(14),8 AS NI$(15),8 AS NI$(16),8 AS NI$(17),8 AS NI$(18),8 AS NI$(19),8 AS NI$(20),8 AS NI$(21),8 AS NI$(21),8 AS NI$(22) 1370 FIELD 1,176 AS DUMMY$,8 AS NI$(23),8 AS NI$(24),8 AS NI$(25),8 AS NI$(26),8 AS NI$(27),8 AS NI$(28),8 AS NI$(29),8 AS NI$(30),8 AS NI$(31),8 AS NI$(32) 1380 IC=32 1390 RETURN 1400 KF=0 1410 IL%=INT(OC/2):IR%=IL% 1420 FOR TN%=1 TO INT(LOG(OC)) 1430 IR%=IR%/2+.5 1440 IF KN#>OK#(IL%) GOTO 1590 1450 IL%=IL%-IR% 1460 NEXT TN% 1470 TN%=INT(LOG(OC)) 1480 IS%=(IL%-IR%+1) 1490 IF IS%>0 GOTO 1510 1500 IS%=1 1510 TS%=IL%+IR%+1 1520 IF TS%<(OC+1) GOTO 1540 1530 TS%=OC 1540 FOR TL%=IS% TO TS% 1550 IF KN# MAX SIZE GO TO NEW DISK DRIVE 1910 IF TL%=1 GOTO 2300 1920 NI$(IC+1)=" ":IN=IX 1930 IF IN=IC+1 GOTO 2060 1940 FOR JX=IX TO IC 1950 NI#(JX)=INT(CVD(NI$(JX))) 1960 IF NI#(JX)<=0 GOTO 2000 1970 NEXT JX 1980 JX=IC 1990 NI$(IC+1)=NI$(IC) 2000 FOR JX=JX TO IN+1 STEP -1 2010 LSET NI$(JX)=NI$(JX-1) 2020 NEXT JX 2030 LSET NI$(IN)=MKD$(KN#*100000!+IN(3)) 2040 IF NI$(IC+1)<>" " GOTO 2060 2050 PUT 1,OP(TL%-1):GOTO 1840 2060 JX=0 2070 FOR IX=INT(IC/2+1) TO IC+1 2080 JX=JX+1 2090 II$(JX)=NI$(IX) 2100 LSET NI$(IX)=MKD$(0) 2110 NEXT IX 2120 PUT 1,OP(TL%-1) 2130 FOR IX=1 TO INT(IC/2+1) 2140 LSET NI$(IX)=II$(IX) 2150 NEXT IX 2160 IF IN=IC+1 GOTO 2190 2170 LSET NI$(JK)=NI$(IC+1) 2180 GOTO 2200 2190 LSET NI$(JX)=MKD$(KN#*100000!+IN(3)) 2200 OC=OC+1: PUT 1,OC-1 2210 IN#=INT(CVD(NI$(1))/100000!) 2220 FOR IX=OC-1 TO 1 STEP -1 2230 IF OK#(IX)0 GOTO 2500 2480 PRINT #1,99999! 2490 GOTO 2550 2500 FOR IX=1 TO DC 2510 IF DP(IX)=99999! GOTO 2530 2520 PRINT #1,DP(IX):TX=1 2530 NEXT IX 2540 IF TX=0 THEN GOTO 2480 2550 GOSUB 1330 2560 RETURN 2570 IF DC=100 GOTO 2660 2580 GOSUB 1400 2590 IF KF=0 GOTO 2690 2600 DC=DC+1 2610 'REMDP(DC)=99999! 2620 DP(DC)=PF*10000+PR 2630 GOTO 2710 2640 Q9=1 2650 RETURN 2660 PRINT"DELETE NO MORE RECORDS UNTIL YOU HAVE ADDED SOME" 2670 KF=0 2680 GOTO 2640 2690 PRINT KN;"RECORD NOT FOUND" 2700 GOTO 2640 2710 FOR JX=IX TO IC-1 2720 RSET NI$(JX)=NI$(JX+1) 2730 IF CVD(NI$(JX+1))<=0 GOTO 2760 2740 NEXT JX 2750 JX=IC-1 2760 IF JX =1 GOTO 2800 2770 IF IX=1 THEN OK#(TL%-1)=INT(CVD(NI$(1))/100000!) 2780 PUT 1,OP(TL%-1) 2790 GOTO 2640 2800 'FOR JX=TL% TO OC 2810 'OK#(JX-1)=OK#(JX) 2820 'OP(JX-1)=OP(JX) 2830 'NEXT JX 2840 'OC=OC-1 2850 GOTO 2780 2860 OPEN "R",2,"NAME.DAT",142 2870 RETURN 2880 REM 2890 FIELD 2,8 AS MA$,30 AS MB$,20 AS MC$,20 AS MD$,8 AS ME$,8 AS M9$,8 AS MF$,8 AS MG$,8 AS MH$,8 AS MI$,8 AS MJ$,8 AS MK$ 2900 RETURN 2910 REM CONVERT FROM DATA TO DISK FORMAT PRIOR TO PUT 2920 RSET MA$=MKD$(KN#):RSET MB$=J$:RSET MC$=K$:RSET MD$=L$:RSET ME$=MKD$(M):RSET MF$=MKD$(N):RSET M9$=MKD$(M2) 2930 RSET MG$=MKD$(A1):RSET MH$=MKD$(A2):RSET MI$=MKD$(A3):RSET MJ$=MKD$(A4):RSET MK$=MKD$(A5) 2940 RETURN 2950 REM TO CONVERT FROM DISK INTO WORK FIELDS AFTER GET 2960 WA#=CVD(MA$):J$=MB$:K$=MC$:L$=MD$:M=CVD(ME$):N=CVD(MF$):A1=CVD(MG$):A2=CVD(MH$):A3=CVD(MI$):A4=CVD(MJ$):A5=CVD(MK$):M2=CVD(M9$) 2970 RETURN 2980 SR=PF:NF=2:GOSUB 2880 2990 IF PR=0 GOTO 3020 3000 GET 2,PR 3010 GOSUB 2950 3020 RETURN 3030 JJ=JJ+1:IF JJ=OC THEN PRINT"PROGRAM ERROR ":STOP 3040 GET 1,(OP(JJ)):JK=0 3050 FOR I=1 TO IC 3060 NI#(I)=CVD(NI$(I)) 3070 NEXT I 3080 JK=JK+1:IF JK=IC+1 GOTO 3030 3090 IF NI#(JK)<=0 GOTO 3030 3100 IN=NI#(JK)-INT(NI#(JK)/100000!)*100000! 3110 PF=INT(IN/10000) 3120 PR=IN-PF*10000 3130 IF PR=0 GOTO 3160 3140 GET 2,PR 3150 GOSUB 2950 3160 RETURN 3170 SR=PF:NF=2:GOSUB 2880 3180 GOSUB 2910 3190 PUT 2,PR 3200 RETURN 3210 AT$=CHR$(27)+"="+CHR$(R)+CHR$(CC):RETURN 3220 END 3230 ' 3270 '******** START BILLING COMP HERE ******** 3300 TG=(CG-A2)*TF:TG%=INT(TG*100+.5)/100:TG=TG% '****NO ROLLOVER**** 3320 TE=CE-A3 '*** NO ROLLOVER *** 3330 '*****************ELECTRICAL SCHEDULE D1B CODE 1 ************** 3340 IF A5=1 AND TEKWR(3) THEN EC=(TE*RPK(3))+FS(3):GOTO 3490 3360 IF A5=1 THEN EC=(TE*RPK(2))+FS(2): GOTO 3490 3370 '****************ELECTRICAL SCHEDULE D1W CODE 2 **************** 3380 IF A5=2 AND TEKWR(6) THEN EC=(TE*RPK(6))+FS(6):GOTO 3490 3400 IF A5=2 THEN EC=(TE*RPK(5))+FS(5):GOTO 3490 3410 '***************ELECTRICAL SCHEDULE DC1XB CODE 3 ************* 3420 IF A5=3 AND TEKWR(9) THEN EC=(TE*RPK(9))+FS(9):GOTO 3490 3440 IF A5=3 THEN EC=(TE*RPK(8))+FS(8) 3450 '*****************ELECTRICAL SCHEDULE DC1XB WINTER CODE 4 ************* 3460 IF A5=4 AND TEKWR(12) THEN EC=(TE*RPK(12))+FS(12):GOTO 3490 3480 IF A5=4 THEN EC=(TE*RPK(11))+FS(11) 3490 '*******************GAS SCHEDULE G1XH CODE 1 ********************* 3500 IF A4=1 AND TGKWR(15) THEN GC=(TG*RPK(15))+FS(15):GOTO 3580 3520 IF A4=1 THEN GC=(TG*RPK(14))+FS(14) 3530 '******************GAS SCHEDULE G1XH WINTER CODE 2 ****************** 3540 IF A4=2 AND TGKWR(18) THEN GC=(TG*RPK(18))+FS(18):GOTO 3580 3560 IF A4=2 THEN GC=(TG*RPK(17))+FS(17) 3570 ' ********.0002 = state energy surcharge .05= City utility tax ****** 3580 ' 3590 TEM=CE-A3:TEMP=TEM*SC:EC=EC+TEMP:EC=INT(EC*100+.5)/100:GC=INT(GC*100+.5)/100 3600 SC=SURCHG:TTAX=((A1/100)+EC+GC)*CTYTAX 3610 IF EC0 GOTO 4081 4090 PRINT AT$;USING"####.##";CR 4100 ' MISC 4101 R=13:C=13:GOSUB 4600 4102 PRINT AT$;:LINE INPUT DES$ 4110 R=13:C=26:GOSUB 4600 4111 PRINT AT$;:LINE INPUT AMOUNT$:N=VAL(AMOUNT$) 4120 PRINT AT$; USING"####.##";N 4121 M3=N/100 4130 ' TV 4140 R=10:C=66:GOSUB 4600 4150 PRINT AT$;USING"###.##";A1/100 4160 ' TAX 4170 R=11:C=66:GOSUB 4600 4180 PRINT AT$;USING"###.##";TTAX 4190 ' LAST GAS 4200 R=8:C=42:GOSUB 4600 4210 PRINT AT$;USING "#####";A2 4220 ' CURRENT GAS 4230 R=8:C=49:GOSUB 4600 4231 PRINT AT$;:LINE INPUT AMOUNT$:CG=VAL(AMOUNT$) 4240 PRINT AT$;USING"#####";CG 4250 ' GAS USAGE 4251 R=19:C=2:IF CG ";:LPRINT USING"$$###.##";GT/100;:LPRINT" <=== DUE BY THE 5TH OF THIS MONTH" 5060 LPRINT" " 5070 LPRINT TAB(12)"Check #....... Amount Paid $...... Therm Factor";TF;TAB(72);"Date: ";LEFT$(DA$,2);"/";MID$(DA$,3,2);"/";RIGHT$(DA$,2) 5080 LPRINT" ":LPRINT" " 5090 LPRINT TAB(12)"Balance Forward $..............";TAB(52);J$ 5100 LPRINT TAB(12)"New Meter";TAB(52);K$ 5110 LPRINT TAB(19)"GAS.......... ELEC............";TAB(52);L$ 5120 '**** SPACE BETWEEN FORMS ******** 5130 FOR XX=1 TO 9:LPRINT" ":NEXT XX 5140 T1=UTTL-(A1/100) 5150 T2=M:T3=((M2+N+A1)/100)+((LC+CR)*100):T3=T3*100 5160 PRINT#5,"1";",";KN#;",";"0";E1;",";CG;",";DA$;",";"1";",";T1;"2";",";T2;",";"3";",";T3;",";"4";",";BF 5170 RETURN 5180 STOP 5190 CLOSE:PRINT CLS$:PRINT "BILLING COMPLETE -" 5200 RESET:RUN"MENU" 5210 END 5220 '*********************** START PRINTING ALIGNMENT MAST HERE ************************ 5230 LPRINT TAB(12)"Pay To: XXXXXXXXXXXXXXXXXXXX";TAB(75);"Space #: XXX" 5240 LPRINT TAB(20);"XXXXXXXXXXXXXXXXXXXX" 5250 LPRINT TAB(20);"XXXXXXXXXXXXXXXXXXXX" 5260 FOR X=1 TO 4:LPRINT" ":NEXT X 5270 LPRINT TAB(12)"Rent XXXXXX";TAB(39)"XXX.XX";TAB(56)"Prior Present Units Amount" 5280 LPRINT TAB(12)"Storage";TAB(39)"XXX.XX";TAB(50)"Gas";TAB(56);"XXXXX";TAB(65);"XXXXX"; 5290 LPRINT TAB(73)"XXXXX";TAB(80)"XXX.XX" 5300 LPRINT TAB(12)"Balance Fwd.";TAB(39)"XXX.XX";TAB(50)"Elec";TAB(56);"XXXXX";TAB(65);"XXXXX"; 5310 LPRINT TAB(73)"XXXXX";TAB(80)"XXX.XX" 5320 LPRINT TAB(12)"Late Charge";TAB(39)"XXX.XX";TAB(50);"TV";TAB(80)"XXX.XX" 5330 LPRINT TAB(12)"Credit XXXXXXXXXXXXXXX";TAB(38)"-XXX.XX";TAB(50)"Tax,Fees,Etc.";TAB(80)"XXX.XX" 5340 LPRINT TAB(12)"Misc XXXXXXXXXXXXXXXX";TAB(39)"XXX.XX" 5350 LPRINT TAB(12)"Utilities";TAB(39)"XXX.XX";TAB(68)"Sub-Total";TAB(80)"XXX.XX" 5360 LPRINT" ":LPRINT" " 5370 LPRINT TAB(12);"PLEASE PAY THIS AMOUNT ==> ";:LPRINT "$XXXX.XX <=== DUE 5TH OF MONTH" 5380 LPRINT" " 5390 LPRINT TAB(12)"Check #....... Amount Paid $...... Therm Factor XXXXX";TAB(72);"Date: XXXXXX" 5400 LPRINT" ":LPRINT" " 5410 LPRINT TAB(12)"Balance Forward $..............";TAB(52);"XXXXXXXXXXXXXXXXXXXX 5420 LPRINT TAB(12)"New Meter";TAB(52);"XXXXXXXXXXXXXXXXXXXX" 5430 LPRINT TAB(19)"GAS.......... ELEC............";TAB(52);"XXXXXXXXXXXXXXXXXXXX" 5440 '**** SPACE BETWEEN FORMS ******** 5450 FOR XX=1 TO 9:LPRINT" ":NEXT XX 5460 INPUT"DO YOU WANT TO RUN FORM MAST AGAIN (Y/N) ";AN$ 5470 IF LEFT$(AN$,1)="Y" THEN GOTO 5220 5480 RETURN