home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / basic / billing.lbr / BILL.BZS / BILL.BAS
Encoding:
BASIC Source File  |  1987-03-16  |  18.5 KB  |  526 lines

  1. 10 '******************************************************************
  2. 20 '*            BILLING PROGRAM                    *
  3. 30 '*    (BILLING.BAS)                8/25/82              *
  4. 40 '******************************************************************
  5. 50 BELL$=CHR$(7):CLS$=CHR$(26)
  6. 60 PRINT CHR$(26)
  7. 70 CLEAR 5000
  8. 80 SURCHG=.0002:CTYTAX=.05
  9. 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)
  10. 100 PRINT BELL$
  11. 110 ESC$=CHR$(27):HALF$=ESC$+CHR$(41):FULL$=ESC$+CHR$(40)
  12. 120 REVERSE$=ESC$+CHR$(71)+CHR$(52)
  13. 130 ESC$=CHR$(27)
  14. 140 BLINK$=ESC$+CHR$(71)+CHR$(50)
  15. 150 SEQ$=ESC$+CHR$(71)
  16. 160 NORMAL$=SEQ$+CHR$(48):BLANK$=SEQ$+CHR$(49)
  17. 170 REVUNDER$=SEQ$+CHR$(60)
  18. 180 HALF$=ESC$+CHR$(41)
  19. 190 FULL$=ESC$+CHR$(40)
  20. 200 REVUNDER$=SEQ$+CHR$(60)
  21. 210 BLANK$=SEQ$+CHR$(49)
  22. 211 GOTO 3630
  23. 220 OPEN"O",5,"REC.DAT" 'OPEN ACCOUNTS RECEIVABLE FILE
  24. 230 OPEN"I",1,"DATE.DAT"' READ PARK NAME FILE 
  25. 240 INPUT#1,Y9$,W$,X$,Y$:CLOSE 1:GOSUB 250:GOTO 260
  26. 250 PRINT CHR$(26):TB=80-LEN(W$+" BILLING PROGRAM"):TB=TB/2:PRINT REVERSE$;TAB(TB);W$+"  BILLING PROGRAM":RETURN
  27. 260 INPUT"DO YOU WANT A PRINTER ALIGNMENT MAST RUN (Y/N) ";AN$
  28. 270 IF LEFT$(AN$,1)="Y" THEN GOSUB 5220
  29. 280 IF LEFT$(AN$,1)="y" THEN PRINT"SHIFT TO ALL CAPS":GOSUB 5220
  30. 290 IF LEFT$(AN$,1)="n" THEN PRINT"************ SHIFT TO ALL CAPS **********"
  31. 300 INPUT"ENTER BILLING DATE (EXAMPLE: 030182)";DA$
  32. 310 IF LEN(DA$)<>6 THEN GOTO 370
  33. 320 I1=VAL(LEFT$(DA$,2)):I2=VAL(MID$(DA$,3,2)):I3=VAL(RIGHT$(DA$,2))
  34. 330 IF I1<1 OR I1>12 THEN GOTO 370
  35. 340 IF I2<1 OR I2>31 THEN GOTO 370
  36. 350 IF I3<0 OR I3>99 THEN GOTO 370
  37. 360 E1=I1*10000!+I2*100+I3:GOTO 380
  38. 370 PRINT "** BAD DATE **":GOTO 300
  39. 380 INPUT"ENTER THERM FACTOR ";TF
  40. 390 IF TF<=0 GOTO 380
  41. 400 PRINT CHR$(26)
  42. 410 GOSUB 250
  43. 420 PRINT"UTILITY TAX NOW SET FOR .05"
  44. 430 PRINT"SURCHARGE NOW SET AS .0002"
  45. 440 MIN=2
  46. 450 PRINT"MINIMUM ELECTRICAL CHARGE IS $2.00"
  47. 460 INPUT"DO YOU WANT TO CHANGE THESE (Y/N) ";AN$
  48. 470 IF LEFT$(AN$,1)<>"Y" THEN GOTO 570
  49. 480 INPUT"ENTER UTILITY TAX ";CTYTAX
  50. 490 IF CTYTAX<0 GOTO 480
  51. 500 INPUT"ENTER SURCHARGE ";SURCHG
  52. 510 IF SURCHG<0 GOTO 500
  53. 520 INPUT"MINIMUM ELECTRICAL CHARGE ";MIN
  54. 530 IF MIN<0 GOTO 520
  55. 540 INPUT"ALL DATA CORRECT (Y/N) ";AN$
  56. 550 IF LEFT$(AN$,1)<>"Y" GOTO 480
  57. 560 GOSUB 250
  58. 570 OPEN"I",1,"RATE.DAT"
  59. 580 FOR X%=1 TO 6
  60. 590 INPUT#1, NA$(X%)
  61. 600 FOR XY%=1 TO 3
  62. 610 XX%=XX%+1
  63. 620 INPUT#1,KWR(XX%),RPK(XX%),FS(XX%)
  64. 630 NEXT XY%
  65. 640 NEXT X%
  66. 650 REM MAINTENANCE
  67. 660 GOSUB 2860
  68. 670 GOSUB 1160
  69. 680 GOSUB 2880
  70. 690 JK=IC:JJ=0
  71. 700 PRINT CLR$
  72. 710 PRINT CHR$(26):PRINT"ENTER TENANT NO. OR - 0 - TO EXIT ";:INPUT KN#
  73. 720 IF KN#>99998! THEN 730 ELSE 740
  74. 730 PRINT "** NUMBER TO LARGE **":GOTO 710
  75. 740 IF KN#=0 GOTO 1120
  76. 750 GOSUB 1400
  77. 760 IF KF=0 GOTO 790
  78. 770 GOSUB 2980
  79. 780 GOTO 810
  80. 790 GOSUB 1770
  81. 800 Q9=1
  82. 810 IF Q9<>1 GOTO 840
  83. 820 J$=" ":K$=" ":M$=" "
  84. 830 Q9=0
  85. 840 PRINT CHR$(26)
  86. 850 '
  87. 1040 GOSUB 3630
  88. 1050 A2=CG:A3=CE
  89. 1060 GOTO 1090
  90. 1070 GOSUB 2570
  91. 1080 GOTO 1100
  92. 1090 GOSUB 3170
  93. 1100 J$=" ":K$=" ":M$=" ":M=0:N=0:A1=0:A2=0:A3=0:A4=0:A5=0:M2=0:CR=0
  94. 1110 GOTO 700
  95. 1120 CLOSE
  96. 1130 GOSUB 2400
  97. 1140 CLOSE
  98. 1150 GOTO 5190
  99. 1160 OC=0
  100. 1170 CLOSE 1
  101. 1180 OPEN "I",1,"NMI.DAT"
  102. 1190 IF EOF(1) GOTO 1240
  103. 1200 IF OK#(OC)=9999999999# GOTO 1240
  104. 1210 OC=OC+1
  105. 1220 INPUT #1,OK#(OC),OP(OC)
  106. 1230 GOTO 1190
  107. 1240 CLOSE 1
  108. 1250 DC=0
  109. 1260 OPEN "I",1,"NMD.DAT"
  110. 1270 IF EOF(1) GOTO 1330
  111. 1280 DC=DC+1
  112. 1290 INPUT#1,DP(DC)
  113. 1300 IF DP(DC)<>0 GOTO 1320
  114. 1310 DC=DC-1
  115. 1320 GOTO 1270
  116. 1330 CLOSE 1 
  117. 1340 OPEN "R",1,"NMINDEX.DAT",256
  118. 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)
  119. 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)
  120. 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)
  121. 1380 IC=32
  122. 1390 RETURN
  123. 1400 KF=0
  124. 1410 IL%=INT(OC/2):IR%=IL%
  125. 1420 FOR TN%=1 TO INT(LOG(OC))
  126. 1430 IR%=IR%/2+.5
  127. 1440 IF KN#>OK#(IL%) GOTO 1590
  128. 1450 IL%=IL%-IR%
  129. 1460 NEXT TN%
  130. 1470 TN%=INT(LOG(OC))
  131. 1480 IS%=(IL%-IR%+1)
  132. 1490 IF IS%>0 GOTO 1510
  133. 1500 IS%=1
  134. 1510 TS%=IL%+IR%+1
  135. 1520 IF TS%<(OC+1) GOTO 1540
  136. 1530 TS%=OC 
  137. 1540 FOR TL%=IS% TO TS%
  138. 1550 IF KN#<OK#(TL%) GOTO 1610
  139. 1560 NEXT TL%
  140. 1570 TL%=TS%
  141. 1580 GOTO 1750
  142. 1590 IL%=IL%+IR%
  143. 1600 GOTO 1460
  144. 1610 IF TL%=1 GOTO 1750
  145. 1620 GET 1,OP(TL%-1)
  146. 1630 FOR IX=1 TO IC
  147. 1640 NI#(IX)=INT(CVD(NI$(IX)))
  148. 1650 IF NI#(IX)<=0 GOTO 1750
  149. 1660 IF KN#=INT(NI#(IX)/100000!) GOTO 1710
  150. 1670 IF KN#<INT(NI#(IX)/100000!) GOTO 1750
  151. 1680 NEXT IX
  152. 1690 IX=IC+1
  153. 1700 GOTO 1750
  154. 1710 IN=NI#(IX)-KN#*100000!
  155. 1720 PF=INT(IN/10000)
  156. 1730 PR=IN-PF*10000
  157. 1740 KF=1
  158. 1750 RETURN
  159. 1760 RETURN
  160. 1770 IF DC=0 GOTO 1880
  161. 1780 IF DP(DC)=99999! GOTO 1870
  162. 1790 IF DP(DC)=0 GOTO 1870
  163. 1800 IN(3)=DP(DC)
  164. 1810 DP(DC)=99999!
  165. 1820 DC=DC-1
  166. 1830 GOTO 1910
  167. 1840 PF=INT(IN(3)/10000)
  168. 1850 PR=IN(3)-PF*10000
  169. 1860 RETURN
  170. 1870 DC=DC-1:GOTO 1770
  171. 1880 IN(3)=OP(OC)
  172. 1890 OP(OC)=OP(OC)+1
  173. 1900 ' IF OP(OC)> MAX SIZE GO TO NEW DISK DRIVE
  174. 1910 IF TL%=1 GOTO 2300
  175. 1920 NI$(IC+1)=" ":IN=IX
  176. 1930 IF IN=IC+1 GOTO 2060
  177. 1940 FOR JX=IX TO IC
  178. 1950 NI#(JX)=INT(CVD(NI$(JX)))
  179. 1960 IF NI#(JX)<=0 GOTO 2000
  180. 1970 NEXT JX
  181. 1980 JX=IC
  182. 1990 NI$(IC+1)=NI$(IC)
  183. 2000 FOR JX=JX TO IN+1 STEP -1
  184. 2010 LSET NI$(JX)=NI$(JX-1)
  185. 2020 NEXT JX
  186. 2030 LSET NI$(IN)=MKD$(KN#*100000!+IN(3))
  187. 2040 IF NI$(IC+1)<>" " GOTO 2060
  188. 2050 PUT 1,OP(TL%-1):GOTO 1840
  189. 2060 JX=0
  190. 2070 FOR IX=INT(IC/2+1) TO IC+1
  191. 2080 JX=JX+1
  192. 2090 II$(JX)=NI$(IX)
  193. 2100 LSET NI$(IX)=MKD$(0)
  194. 2110 NEXT IX
  195. 2120 PUT 1,OP(TL%-1)
  196. 2130 FOR IX=1 TO INT(IC/2+1)
  197. 2140 LSET NI$(IX)=II$(IX)
  198. 2150 NEXT IX
  199. 2160 IF IN=IC+1 GOTO 2190
  200. 2170 LSET NI$(JK)=NI$(IC+1)
  201. 2180 GOTO 2200
  202. 2190 LSET NI$(JX)=MKD$(KN#*100000!+IN(3))
  203. 2200 OC=OC+1: PUT 1,OC-1
  204. 2210 IN#=INT(CVD(NI$(1))/100000!)
  205. 2220  FOR IX=OC-1 TO 1 STEP -1
  206. 2230 IF OK#(IX)<IN# GOTO 2280
  207. 2240 OK#(IX+1)=OK#(IX)
  208. 2250 OP(IX+1)=OP(IX)
  209. 2260 NEXT IX
  210. 2270 IX=0
  211. 2280 OK#(IX+1)=IN#:OP(IX+1)=OC-1
  212. 2290 GOTO 1840
  213. 2300 FOR JX=OC TO 1 STEP -1
  214. 2310 OK#(JX+1)=OK#(JX):OP(JX+1)=OP(JX)
  215. 2320 NEXT JX
  216. 2330 OK#(1)=KN#:OP(1)=OC:OC=OC+1
  217. 2340 FOR JX=1 TO IC
  218. 2350 LSET NI$(JX)=MKD$(0)
  219. 2360 NEXT JX
  220. 2370 LSET NI$(1)=MKD$(KN#*100000!+IN(3))
  221. 2380 PUT 1,OC-1
  222. 2390 GOTO 1840
  223. 2400 CLOSE 1
  224. 2410 OPEN "O",1,"NMI.DAT"
  225. 2420 FOR IX=1 TO OC
  226. 2430 PRINT #1,OK#(IX),OP(IX)
  227. 2440 NEXT IX
  228. 2450 CLOSE 1
  229. 2460 OPEN "O",1,"NMD.DAT":TX=0
  230. 2470 IF DC<>0 GOTO 2500
  231. 2480 PRINT #1,99999!
  232. 2490 GOTO 2550
  233. 2500 FOR IX=1 TO DC
  234. 2510 IF DP(IX)=99999! GOTO 2530
  235. 2520 PRINT #1,DP(IX):TX=1
  236. 2530 NEXT IX
  237. 2540 IF TX=0 THEN GOTO 2480
  238. 2550 GOSUB 1330
  239. 2560 RETURN
  240. 2570 IF DC=100 GOTO 2660
  241. 2580 GOSUB 1400
  242. 2590 IF KF=0 GOTO 2690
  243. 2600 DC=DC+1
  244. 2610 'REMDP(DC)=99999!
  245. 2620 DP(DC)=PF*10000+PR
  246. 2630 GOTO 2710
  247. 2640 Q9=1
  248. 2650 RETURN
  249. 2660 PRINT"DELETE NO MORE RECORDS UNTIL YOU HAVE ADDED SOME"
  250. 2670 KF=0
  251. 2680 GOTO 2640
  252. 2690 PRINT KN;"RECORD NOT FOUND"
  253. 2700 GOTO 2640
  254. 2710 FOR JX=IX TO IC-1
  255. 2720 RSET NI$(JX)=NI$(JX+1)
  256. 2730 IF CVD(NI$(JX+1))<=0 GOTO 2760
  257. 2740 NEXT JX
  258. 2750 JX=IC-1
  259. 2760 IF JX =1 GOTO 2800
  260. 2770 IF IX=1 THEN OK#(TL%-1)=INT(CVD(NI$(1))/100000!)
  261. 2780 PUT 1,OP(TL%-1)
  262. 2790 GOTO 2640
  263. 2800 'FOR JX=TL% TO OC  
  264. 2810 'OK#(JX-1)=OK#(JX) 
  265. 2820 'OP(JX-1)=OP(JX)   
  266. 2830 'NEXT JX
  267. 2840 'OC=OC-1
  268. 2850 GOTO 2780
  269. 2860 OPEN "R",2,"NAME.DAT",142
  270. 2870 RETURN
  271. 2880 REM
  272. 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$
  273. 2900 RETURN
  274. 2910 REM CONVERT FROM DATA TO DISK FORMAT PRIOR TO PUT
  275. 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)
  276. 2930  RSET MG$=MKD$(A1):RSET MH$=MKD$(A2):RSET MI$=MKD$(A3):RSET MJ$=MKD$(A4):RSET MK$=MKD$(A5)
  277. 2940 RETURN
  278. 2950 REM   TO CONVERT FROM DISK INTO WORK FIELDS AFTER GET
  279. 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$)
  280. 2970 RETURN
  281. 2980 SR=PF:NF=2:GOSUB 2880
  282. 2990 IF PR=0 GOTO 3020
  283. 3000 GET 2,PR
  284. 3010 GOSUB 2950
  285. 3020 RETURN
  286. 3030 JJ=JJ+1:IF JJ=OC THEN PRINT"PROGRAM ERROR ":STOP
  287. 3040 GET 1,(OP(JJ)):JK=0
  288. 3050 FOR I=1 TO IC
  289. 3060 NI#(I)=CVD(NI$(I))
  290. 3070 NEXT I
  291. 3080 JK=JK+1:IF JK=IC+1 GOTO 3030
  292. 3090 IF NI#(JK)<=0 GOTO 3030
  293. 3100 IN=NI#(JK)-INT(NI#(JK)/100000!)*100000!
  294. 3110 PF=INT(IN/10000)
  295. 3120 PR=IN-PF*10000
  296. 3130 IF PR=0 GOTO 3160
  297. 3140 GET 2,PR
  298. 3150 GOSUB 2950
  299. 3160 RETURN
  300. 3170 SR=PF:NF=2:GOSUB 2880
  301. 3180 GOSUB 2910
  302. 3190 PUT 2,PR
  303. 3200 RETURN
  304. 3210 AT$=CHR$(27)+"="+CHR$(R)+CHR$(CC):RETURN
  305. 3220 END
  306. 3230 '
  307. 3270 '******** START BILLING COMP HERE ********
  308. 3300 TG=(CG-A2)*TF:TG%=INT(TG*100+.5)/100:TG=TG% '****NO ROLLOVER****
  309. 3320 TE=CE-A3 '*** NO ROLLOVER ***
  310. 3330 '*****************ELECTRICAL SCHEDULE D1B  CODE 1 **************
  311. 3340 IF A5=1 AND TE<KWR(1) THEN EC=(TE*RPK(1)):GOTO 3490
  312. 3350 IF A5=1 AND TE>KWR(3) THEN EC=(TE*RPK(3))+FS(3):GOTO 3490
  313. 3360 IF A5=1 THEN EC=(TE*RPK(2))+FS(2): GOTO 3490
  314. 3370 '****************ELECTRICAL SCHEDULE D1W   CODE 2 ****************
  315. 3380 IF A5=2 AND TE<KWR(4) THEN EC=(TE*RPK(4)):GOTO 3490
  316. 3390 IF A5=2 AND TE>KWR(6) THEN EC=(TE*RPK(6))+FS(6):GOTO 3490
  317. 3400 IF A5=2 THEN EC=(TE*RPK(5))+FS(5):GOTO 3490
  318. 3410 '***************ELECTRICAL SCHEDULE  DC1XB    CODE 3  *************
  319. 3420 IF A5=3 AND TE<KWR(7) THEN EC=(TE*RPK(7)):GOTO 3490
  320. 3430 IF A5=3 AND TE>KWR(9) THEN EC=(TE*RPK(9))+FS(9):GOTO 3490
  321. 3440 IF A5=3 THEN EC=(TE*RPK(8))+FS(8)
  322. 3450 '*****************ELECTRICAL SCHEDULE DC1XB WINTER CODE 4 *************
  323. 3460 IF A5=4 AND TE<KWR(10) THEN EC=(TE*RPK(10)):GOTO 3490
  324. 3470 IF A5=4 AND TE>KWR(12) THEN EC=(TE*RPK(12))+FS(12):GOTO 3490
  325. 3480 IF A5=4 THEN EC=(TE*RPK(11))+FS(11)
  326. 3490 '*******************GAS SCHEDULE G1XH   CODE 1 *********************
  327. 3500 IF A4=1 AND TG<KWR(13) THEN GC=(TG*RPK(13)):GOTO 3580
  328. 3510 IF A4=1 AND TG>KWR(15) THEN GC=(TG*RPK(15))+FS(15):GOTO 3580
  329. 3520 IF A4=1 THEN GC=(TG*RPK(14))+FS(14)
  330. 3530 '******************GAS SCHEDULE G1XH  WINTER  CODE 2 ******************
  331. 3540 IF A4=2 AND TG<KWR(16) THEN GC=(TG*RPK(16)):GOTO 3580
  332. 3550 IF A4=2 AND TG>KWR(18) THEN GC=(TG*RPK(18))+FS(18):GOTO 3580
  333. 3560 IF A4=2 THEN GC=(TG*RPK(17))+FS(17)
  334. 3570 ' ********.0002 = state energy surcharge  .05= City utility tax ******
  335. 3580 '
  336. 3590 TEM=CE-A3:TEMP=TEM*SC:EC=EC+TEMP:EC=INT(EC*100+.5)/100:GC=INT(GC*100+.5)/100
  337. 3600 SC=SURCHG:TTAX=((A1/100)+EC+GC)*CTYTAX
  338. 3610 IF EC<MIN THEN EC=MIN 'SETS CHARGE TO MINIMUM
  339. 3615 RETURN
  340. 3620 '**************** CHECK FOR MINIMUM ELECTRICAL CHARGE ***************
  341. 3630 PRINT CHR$(26)
  342. 3640 PRINT TAB(11);REVUNDER$;"BILL TO ";NORMAL$
  343. 3650 PRINT REVERSE$;SPACE$(30);BLANK$;TAB(40)REVERSE$;"BILLING FORM ";NORMAL$;TAB(60);REVERSE$;"SPACE NO:";KN#;NORMAL$
  344. 3660 PRINT REVERSE$;SPACE$(30);BLANK$
  345. 3670 PRINT REVERSE$;SPACE$(30);NORMAL$;TAB(40);REVERSE$;"DATE ";SPACE$(2);
  346. 3680 PRINT STRING$(79,"-")
  347. 3690 PRINT "ITEM";TAB(10)"DESCRIPTION";TAB(28);"CHG$";TAB(41);"PRIOR  TODAY  UNITS     CHARGES$"
  348. 3700 FOR A=1 TO 2
  349. 3710 READ A$,B$
  350. 3720 GOSUB 3730:GOTO 3740
  351. 3730 PRINT REVERSE$;A;"";NORMAL$;REVERSE$;A$;SPACE$(17-LEN(A$));NORMAL$;REVERSE$;SPACE$(7);NORMAL$;REVERSE$;B$+SPACE$(5-LEN(B$));NORMAL$;:RETURN
  352. 3740 GOSUB 3750:GOTO 3760
  353. 3750 PRINT  REVERSE$;SPACE$(5);NORMAL$;REVERSE$; SPACE$(5);NORMAL$;REVUNDER$;SPACE$(5);NORMAL$;"";REVUNDER$;"   ";:RETURN
  354. 3760 NEXT A
  355. 3770 FOR A=3 TO 4
  356. 3780 READ A$,B$
  357. 3790 GOSUB 3730
  358. 3800 PRINT TAB(70);REVUNDER$:NEXT A
  359. 3810 PRINT REVERSE$;" 5 ";NORMAL$;REVERSE$;"CREDIT";SPACE$(11);NORMAL$;REVERSE$;SPACE$(7);NORMAL$;TAB(50);"TOTAL UTILITIES   ";REVUNDER$
  360. 3820 PRINT REVERSE$;" 6 ";NORMAL$;REVERSE$;"MISC";SPACE$(13);NORMAL$;REVUNDER$;SPACE$(7);NORMAL$
  361. 3830 PRINT TAB(14)"SUB TOTAL  ";REVUNDER$;SPACE$(7);NORMAL$
  362. 3840 PRINT TAB(14)"UTILITIES  ";REVUNDER$;SPACE$(7);NORMAL$
  363. 3850 PRINT TAB(14)"TOTAL DUE  ";REVUNDER$;SPACE$(7);NORMAL$
  364. 3860 PRINT STRING$(79,"-")
  365. 3870 R=3:C=2:GOSUB 4600
  366. 3880 PRINT AT$;J$
  367. 3890 R=4:C=2:GOSUB 4600
  368. 3900 PRINT AT$;K$
  369. 3910 R=5:C=2:GOSUB 4600
  370. 3920 PRINT AT$;L$
  371. 3930 R=5:C=45:GOSUB 4600
  372. 3940 PRINT AT$;DA$;NORMAL$' DATE
  373. 3950 R=8:C=26:GOSUB 4600
  374. 3960 ' RENT
  375. 3970 PRINT AT$;USING"####.##";M/100
  376. 3980 ' STORAGE
  377. 3990 R=9:C=26:GOSUB 4600
  378. 4000 PRINT AT$;USING"####.##";M2/100
  379. 4010 ' BALANCE FORWARD
  380. 4020 R=10:C=26:GOSUB 4600
  381. 4021 PRINT AT$;:LINE INPUT AMOUNT$:BF=VAL(AMOUNT$)
  382. 4030 PRINT AT$;USING"####.##";BF
  383. 4040 ' LATE CHARGE
  384. 4050 R=11:C=26:GOSUB 4600
  385. 4051 PRINT AT$;:LINE INPUT AMOUNT$:LC=VAL(AMOUNT$)
  386. 4060 PRINT AT$;USING"####.##";LC
  387. 4070 ' CREDIT
  388. 4080 R=12:C=26:GOSUB 4600
  389. 4081 PRINT AT$;:LINE INPUT AMOUNT$:CR=VAL(AMOUNT$)
  390. 4082 IF CR/100>0 GOTO 4081 
  391. 4090 PRINT AT$;USING"####.##";CR
  392. 4100 ' MISC
  393. 4101 R=13:C=13:GOSUB 4600
  394. 4102 PRINT AT$;:LINE INPUT DES$
  395. 4110 R=13:C=26:GOSUB 4600
  396. 4111 PRINT AT$;:LINE INPUT AMOUNT$:N=VAL(AMOUNT$)
  397. 4120 PRINT AT$; USING"####.##";N
  398. 4121 M3=N/100
  399. 4130 ' TV
  400. 4140 R=10:C=66:GOSUB 4600
  401. 4150 PRINT AT$;USING"###.##";A1/100
  402. 4160 ' TAX
  403. 4170 R=11:C=66:GOSUB 4600
  404. 4180 PRINT AT$;USING"###.##";TTAX
  405. 4190 ' LAST GAS
  406. 4200 R=8:C=42:GOSUB 4600
  407. 4210 PRINT AT$;USING "#####";A2
  408. 4220 ' CURRENT GAS
  409. 4230 R=8:C=49:GOSUB 4600
  410. 4231 PRINT AT$;:LINE INPUT AMOUNT$:CG=VAL(AMOUNT$)
  411. 4240 PRINT AT$;USING"#####";CG
  412. 4250 ' GAS USAGE
  413. 4251 R=19:C=2:IF CG<A2 THEN GOSUB 4600:PRINT AT$;BLINK$;"CURRENT READING LESS THAN LAST MONTH":FOR X=1 TO 500:NEXT X:PRINT AT$;BLANK$:GOTO 4220
  414. 4260 R=8:C=56:GOSUB 4600
  415. 4270 PRINT AT$;USING"#####";CG-A2
  416. 4280 'GAS CHARGE
  417. 4290 R=8:C=66:GOSUB 4600
  418. 4295 GOSUB 3270
  419. 4300 PRINT AT$;USING"###.##";GC
  420. 4310 'PRIOR ELECT
  421. 4320 R=9:C=42:GOSUB 4600
  422. 4330 PRINT AT$;USING"#####";A3
  423. 4340 'CURRENT ELECT
  424. 4350 R=9:C=49:GOSUB 4600
  425. 4351 PRINT AT$;:LINE INPUT AMOUNT$:CE=VAL(AMOUNT$)
  426. 4360 PRINT AT$;USING"#####";CE 
  427. 4370 'ELECT USAGE
  428. 4371 R=19:C=2:IF CE<A3 THEN GOSUB 4600:PRINT AT$;BLINK$;"CURRENT READING LESS THAN LAST MONTH":FOR X=1 TO 500:NEXT X:PRINT AT$;BLANK$:GOTO 4340
  429. 4380 R=9:C=56:GOSUB 4600
  430. 4390 PRINT AT$;USING"#####";CE-A3
  431. 4400 ' ELECT.CHARGES
  432. 4410 R=9:C=66:GOSUB 4600
  433. 4415 GOSUB 3270
  434. 4420 PRINT AT$;USING"###.##";EC
  435. 4430 'TOTAL UTILITIES
  436. 4431 STOTAL=(GC+EC+TTAX)+A1/100
  437. 4440 R=12:C=66:GOSUB 4600
  438. 4450 PRINT AT$;USING"###.##";STOTAL
  439. 4460 ' PRINT SUB TOTAL
  440. 4470 R=14:C=26:GOSUB 4600
  441. 4471 GT=(M+M2+N)+((BF+LC+CR)*100)
  442. 4480 PRINT AT$ USING"####.##";GT/100
  443. 4490 ' PRINT UTILITY TOTAL
  444. 4500 R=15:C=26:GOSUB 4600
  445. 4510 PRINT AT$ USING"####.##";STOTAL
  446. 4520 ' PRINT GRAND TOTAL
  447. 4530 R=16:C=27:GOSUB 4600
  448. 4531 GT=GT+(STOTAL*100)
  449. 4540 PRINT BLINK$;:PRINT AT$; USING"###.##";GT/100
  450. 4550 'BOTTOM OF SCREEN
  451. 4560 R=19:C=2:GOSUB 4600
  452. 4570 PRINT AT$;:INPUT"ARE YOU READY TO BILL (Y/N) ";AN$
  453. 4580 GOTO 4870
  454. 4590 DATA "RENT","GAS","STORAGE","ELEC","BALANCE FORWARD","TV","LATE CHARGE","TAX"
  455. 4600 C=C+31:R=R+31:AT$=ESC$+"="+CHR$(R)+CHR$(C):RETURN
  456. 4610 '
  457. 4620 '
  458. 4630 '
  459. 4650 '
  460. 4870 IF LEFT$(ANSWER$,1)="Y" THEN GOTO 4890
  461. 4875 GOTO 710
  462. 4880 '******************** ROUND OFF HERE ***********************************
  463. 4890 UTTL=STOTAL
  464. 4900 '**************************** START PRINTING BILL HERE ************************
  465. 4910 LPRINT TAB(12)"Pay To: ";W$;TAB(75);"Space #: ";KN#
  466. 4920 LPRINT TAB(20);X$
  467. 4930 LPRINT TAB(20);Y$
  468. 4940 FOR X=1 TO 4:LPRINT" ":NEXT X
  469. 4950 LPRINT TAB(12)"Rent ";TAB(39)USING"###.##";M/100;:LPRINT TAB(56)"Prior  Present  Units   Amount"
  470. 4960 LPRINT TAB(12)"Storage";TAB(39)USING"###.##";M2/100;:LPRINT TAB(50)"Gas";:LPRINT TAB(56);A2;TAB(65);CG;
  471. 4970 LPRINT TAB(73)USING"###";(CG-A2)*TF;:LPRINT TAB(80)USING"###.##";GC
  472. 4980 LPRINT TAB(12)"Balance Fwd.";:LPRINT TAB(39)USING"###.##";BF;:LPRINT TAB(50)"Elec";TAB(56);A3;TAB(65);CE;
  473. 4990 LPRINT TAB(72)USING"####";CE-A3;:LPRINT TAB(80)USING"###.##";EC
  474. 5000 LPRINT TAB(12)"Late Charge";TAB(39)USING"###.##";LC;:LPRINT TAB(50);"TV";:LPRINT TAB(80)USING"###.##";A1/100
  475. 5010 LPRINT TAB(12)"Credit";DESC$;:LPRINT TAB(38)USING"####.##";CR;:LPRINT TAB(50)"Tax,Fees,Etc.";:LPRINT TAB(80)USING"###.##";TTAX
  476. 5020 LPRINT TAB(12)"Misc ";DES$;:LPRINT TAB(38)USING"####.##";N/100
  477. 5030 LPRINT TAB(12)"Utilities";:LPRINT TAB(39)USING"###.##";UTTL;:LPRINT TAB(68)"Sub-Total";:LPRINT TAB(80)USING"###.##";STOTAL
  478. 5040 LPRINT" ":LPRINT" "
  479. 5050 LPRINT TAB(12);"PLEASE PAY THIS AMOUNT ==> ";:LPRINT USING"$$###.##";GT/100;:LPRINT" <=== DUE BY THE 5TH OF THIS MONTH"
  480. 5060 LPRINT" "
  481. 5070 LPRINT TAB(12)"Check #....... Amount Paid $......    Therm Factor";TF;TAB(72);"Date: ";LEFT$(DA$,2);"/";MID$(DA$,3,2);"/";RIGHT$(DA$,2)
  482. 5080 LPRINT" ":LPRINT" "
  483. 5090 LPRINT TAB(12)"Balance Forward $..............";TAB(52);J$
  484. 5100 LPRINT TAB(12)"New Meter";TAB(52);K$
  485. 5110 LPRINT TAB(19)"GAS.......... ELEC............";TAB(52);L$
  486. 5120 '**** SPACE BETWEEN FORMS ********
  487. 5130 FOR XX=1 TO 9:LPRINT" ":NEXT XX
  488. 5140 T1=UTTL-(A1/100)
  489. 5150 T2=M:T3=((M2+N+A1)/100)+((LC+CR)*100):T3=T3*100
  490. 5160 PRINT#5,"1";",";KN#;",";"0";E1;",";CG;",";DA$;",";"1";",";T1;"2";",";T2;",";"3";",";T3;",";"4";",";BF
  491. 5170 RETURN
  492. 5180 STOP
  493. 5190 CLOSE:PRINT CLS$:PRINT "BILLING COMPLETE -"
  494. 5200 RESET:RUN"MENU"
  495. 5210 END
  496. 5220 '*********************** START PRINTING ALIGNMENT MAST HERE ************************
  497. 5230 LPRINT TAB(12)"Pay To: XXXXXXXXXXXXXXXXXXXX";TAB(75);"Space #: XXX"
  498. 5240 LPRINT TAB(20);"XXXXXXXXXXXXXXXXXXXX"
  499. 5250 LPRINT TAB(20);"XXXXXXXXXXXXXXXXXXXX"
  500. 5260 FOR X=1 TO 4:LPRINT" ":NEXT X
  501. 5270 LPRINT TAB(12)"Rent  XXXXXX";TAB(39)"XXX.XX";TAB(56)"Prior  Present  Units   Amount"
  502. 5280 LPRINT TAB(12)"Storage";TAB(39)"XXX.XX";TAB(50)"Gas";TAB(56);"XXXXX";TAB(65);"XXXXX";
  503. 5290 LPRINT TAB(73)"XXXXX";TAB(80)"XXX.XX"
  504. 5300 LPRINT TAB(12)"Balance Fwd.";TAB(39)"XXX.XX";TAB(50)"Elec";TAB(56);"XXXXX";TAB(65);"XXXXX";
  505. 5310 LPRINT TAB(73)"XXXXX";TAB(80)"XXX.XX"
  506. 5320 LPRINT TAB(12)"Late Charge";TAB(39)"XXX.XX";TAB(50);"TV";TAB(80)"XXX.XX"
  507. 5330 LPRINT TAB(12)"Credit XXXXXXXXXXXXXXX";TAB(38)"-XXX.XX";TAB(50)"Tax,Fees,Etc.";TAB(80)"XXX.XX"
  508. 5340 LPRINT TAB(12)"Misc  XXXXXXXXXXXXXXXX";TAB(39)"XXX.XX"
  509. 5350 LPRINT TAB(12)"Utilities";TAB(39)"XXX.XX";TAB(68)"Sub-Total";TAB(80)"XXX.XX"
  510. 5360 LPRINT" ":LPRINT" "
  511. 5370 LPRINT TAB(12);"PLEASE PAY THIS AMOUNT ==> ";:LPRINT "$XXXX.XX  <=== DUE 5TH OF MONTH"
  512. 5380 LPRINT" "
  513. 5390 LPRINT TAB(12)"Check #....... Amount Paid $......    Therm Factor XXXXX";TAB(72);"Date: XXXXXX"
  514. 5400 LPRINT" ":LPRINT" "
  515. 5410 LPRINT TAB(12)"Balance Forward $..............";TAB(52);"XXXXXXXXXXXXXXXXXXXX
  516. 5420 LPRINT TAB(12)"New Meter";TAB(52);"XXXXXXXXXXXXXXXXXXXX"
  517. 5430 LPRINT TAB(19)"GAS.......... ELEC............";TAB(52);"XXXXXXXXXXXXXXXXXXXX"
  518. 5440 '**** SPACE BETWEEN FORMS ********
  519. 5450 FOR XX=1 TO 9:LPRINT" ":NEXT XX
  520. 5460 INPUT"DO YOU WANT TO RUN FORM MAST AGAIN (Y/N) ";AN$
  521. 5470 IF LEFT$(AN$,1)="Y" THEN GOTO 5220
  522. 5480 RETURN
  523. T" ":NEXT XX
  524. 5460 INPUT"DO YOU WANT TO RUN FORM MAST AGAIN (Y/N) ";AN$
  525. 5470 IF LEFT$(AN$,1)="Y" THEN GOTO 5220
  526. 54