home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib40a.dsk / JANUARY.1991 / INVOICE.MASTER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  38KB  |  654 lines

  1. 10  REM   ****************************
  2. 20  REM   * INVOICE.MASTER           *
  3. 30  REM   * BY MOVICH & STREIT       *
  4. 40  REM   * COPYRIGHT (C)  1991      *  
  5. 50  REM   * BY MINDCRAFT PUBL. CORP. *
  6. 60  REM   * CONCORD, MA 01742        *
  7. 70  REM   ****************************
  8. 80 IN$ = "":D$ =  CHR$(4):DD = 1
  9. 90  PRINT D$;"PR#3"
  10. 100  ONERR  GOTO 6160
  11. 110  GOTO 1090
  12. 120 C = 0:B$ = "":C$ = C$ +":":HT =  LEN(C$)
  13. 130  PRINT : VTAB V1: CALL  -868: PRINT C$;
  14. 140  POKE H, LEN(B$) +HT: INVERSE : PRINT " ";: NORMAL : POKE H,HT +SP: PRINT ":";
  15. 150  IF C = SP  THEN  POKE H, LEN(B$) +HT: INVERSE : PRINT ":";: NORMAL 
  16. 160  GOSUB 280
  17. 170  IF P = ES  THEN  RETURN 
  18. 180  IF P = H6  THEN  RETURN 
  19. 190  IF P < = 26  THEN 220
  20. 200  IF C = SP  THEN 140
  21. 210 B$ = B$ + CHR$(P):C = C +1: POKE H,HT: PRINT B$;: GOTO 140
  22. 220  IF P = R  AND C >1  THEN B$ =  LEFT$(B$, LEN(B$) -1): POKE H,HT: PRINT B$; SPC( 2):C = C -1: GOTO 140
  23. 230  IF P = R  AND C = 1  THEN B$ = "": POKE H,HT: PRINT  SPC( 2):C = 0
  24. 240  GOTO 140
  25. 250  VTAB 20: POKE H,4: CALL  -1052: PRINT "ESCape Key Pressed - Do You Wish To Return To The Main Menu?  (Y/N)";: GOSUB 280: IF P = 89  OR P = 121  THEN 1250
  26. 260  IF P = 78  OR P = 110  THEN  POKE H,0: CALL  -868: VTAB V1: GOTO 140
  27. 270  GOTO 250
  28. 280 P =  PEEK(KB): IF P <128  THEN 280
  29. 290  POKE KS,0:P = P -128: IF P = 127  THEN P = 8: RETURN 
  30. 300  IF  LEFT$(N$,1) = "$"  THEN N$ =  RIGHT$(N$, LEN(N$) -1)
  31. 310  IF  MID$ (N$,2,1) = "$"  THEN N$ =  LEFT$(N$,1) + RIGHT$(N$, LEN(N$) -H4)
  32. 320  RETURN 
  33. 330  FOR I = 1 TO  LEN(N$)
  34. 340  IF  MID$ (N$,I,1) = ","  THEN N$ =  LEFT$(N$,I -1) + RIGHT$(N$, LEN(N$) -I)
  35. 350  NEXT : RETURN 
  36. 360 N$ =  STR$( VAL(QU$(I)) * VAL(TC$(I))): GOSUB 650:MT = MT + VAL(N$): GOSUB 750: IF C = 0  THEN  GOSUB 800
  37. 370 A$ = N$
  38. 380 N$ = TC$(I): GOSUB 650: GOSUB 750: IF C = 0  THEN  GOSUB 800
  39. 390  PRINT  SPC( 4 - LEN(QU$(I)));QU$(I); SPC( 2);H$; SPC( H5 - LEN(H$));TD$(I); SPC( 58 - LEN(N$) - LEN(TD$(I)));N$; SPC( 11 - LEN(A$));A$
  40. 400 C = C +1
  41. 410  IF C = R  THEN C = 0: POKE H,ES: PRINT "Press Any Key To Continue": GOSUB 280: HOME : PRINT : PRINT 
  42. 420  RETURN 
  43. 430 N$ =  STR$( VAL(QU$(I)) * VAL(TC$(I))): GOSUB 650:MT = MT + VAL(N$): GOSUB 750: IF I = 1  THEN  GOSUB 800
  44. 440 A$ = N$
  45. 450 N$ = TC$(I): GOSUB 650: GOSUB 750: IF I = 1  THEN  GOSUB 800
  46. 460  IF H$ = "1"  THEN T$ = TD$(I) +": " +N$: PRINT  SPC( 80 - LEN(T$));T$: RETURN 
  47. 470  PRINT  SPC( 4 - LEN(QU$(I)));QU$(I); SPC( 2);H$; SPC( H5 - LEN(H$));TD$(I); SPC( 58 - LEN(N$) - LEN(TD$(I)));N$; SPC( 11 - LEN(A$));A$
  48. 480  RETURN 
  49. 490  IF N$ = ""  THEN N$ = "0": RETURN 
  50. 500  FOR I = 1 TO  LEN(N$)
  51. 510  IF  ASC( MID$ (N$,I,1)) <V4  THEN 530
  52. 520  GOTO 540
  53. 530  IF  ASC( MID$ (N$,I,1)) <45  OR  ASC( MID$ (N$,I,1)) >46  THEN 560
  54. 540  IF  ASC( MID$ (N$,I,1)) >57  THEN 560
  55. 550  NEXT I: RETURN 
  56. 560  CALL  -1052: VTAB H1: POKE H,V1: PRINT "Your Entry Contained A Non-Digit Character- Please Retype": GOSUB 1000: VTAB H1: CALL  -868:E = 1: RETURN 
  57. 570  VTAB V2: POKE H,21: PRINT "Press 'ESCape' To Return To ";M$;: RETURN 
  58. 580  VTAB V2: POKE H,21: PRINT "Press 'ESCape' To Back Up ";: FOR X = 1 TO 32: PRINT " ";: NEXT : RETURN 
  59. 590  GOSUB 570: VTAB V1: POKE H,0: CALL  -868: PRINT "Is This Entry Acceptable?  (Y/N)"
  60. 600  GOSUB 280
  61. 610  IF P = 78  OR P = 110  THEN E = 1: RETURN 
  62. 620  IF P = 89  OR P = 121  THEN  RETURN 
  63. 630  IF P = ES  THEN 1250
  64. 640  GOTO 600
  65. 650  IF  LEFT$(N$,1) = "-"  THEN N$ =  RIGHT$(N$, LEN(N$) -1):E = 1
  66. 660 N =  VAL(N$):N =  INT(N *100 +.5)/100:N$ =  STR$(N): IF N <0  THEN N$ =  RIGHT$(N$, LEN(N$) -1)
  67. 670  IF N = 0  THEN 720
  68. 680  IF  LEFT$(N$,1) = "."  THEN N$ = "0" +N$
  69. 690  IF  LEN(N$) <H4  THEN 720
  70. 700  IF  MID$ (N$, LEN(N$) -2,1) = "."  THEN 730
  71. 710  IF  MID$ (N$, LEN(N$) -1,1) = "."  THEN N$ = N$ +"0": GOTO 730
  72. 720 N$ = N$ +".00"
  73. 730  IF E = 1  THEN E = 0:N$ = "-" +N$
  74. 740  RETURN 
  75. 750  IF  LEFT$(N$,1) = "-"  THEN N$ =  RIGHT$(N$, LEN(N$) -1):E = 1
  76. 760  IF  LEN(N$) >6  THEN N$ =  LEFT$(N$, LEN(N$) -6) +"," + RIGHT$(N$,6)
  77. 770  IF  LEN(N$) >10  THEN N$ =  LEFT$(N$, LEN(N$) -10) +"," + RIGHT$(N$,10)
  78. 780  IF E = 1  THEN E = 0:N$ = "-" +N$
  79. 790  RETURN 
  80. 800 Y$ = "$" +N$: RETURN 
  81. 810  VTAB 1: POKE H,H5: POKE 34,1: PRINT NI;" Billing Items Are In Memory. There Is Room For ";L -NI;" More.": RETURN 
  82. 820  FOR I = 1 TO 80: PRINT "=";: NEXT : PRINT : RETURN 
  83. 830  POKE 34,0: HOME : PRINT : VTAB V3: POKE H,H3: INVERSE : PRINT  SPC(  LEN(TI$));: NORMAL 
  84. 840  VTAB V3 +1: POKE H,H3: INVERSE : PRINT TI$;: NORMAL 
  85. 850  VTAB V3 +2: POKE H,H3: INVERSE : PRINT  SPC(  LEN(TI$));: NORMAL : RETURN 
  86. 860  HOME :M$ = "Main Menu": GOSUB 570: VTAB 18:: POKE H,21: PRINT "Pressing 'RETURN' Defaults To Drive 1": VTAB V1: POKE H,18: PRINT "What Drive Is Your Storage Disk In?  (1-2)": RETURN 
  87. 870 SP = 2:C$ = "Code Number Of Billing Item": GOSUB 120:N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 870
  88. 880  IF B$ < >""  THEN N =  VAL(N$)
  89. 890  RETURN 
  90. 900  IF N <1  OR N >NI  THEN  HOME : VTAB 10: POKE H,24: INVERSE : CALL  -1052: PRINT "Your Code Number Does Not Exist!";: NORMAL : VTAB V1: POKE H,33: INVERSE : PRINT "Please Retype";: NORMAL : GOSUB 1000:E = 1
  91. 910  RETURN 
  92. 920  VTAB 18: CALL  -868: POKE H,H1: PRINT "Press 'RETURN' When You Are Finished Entering Items": RETURN 
  93. 930  IF  RIGHT$(N$,1) = "%"  THEN N$ =  LEFT$(N$, LEN(N$) -1):N$ =  STR$( VAL(N$)/100)
  94. 940  RETURN 
  95. 950  IF  SGN( VAL(N$)) =  -1  AND  INT( ABS( VAL(N$))) >9999  THEN 980
  96. 960  IF  INT( VAL(N$)) >99999  THEN 980
  97. 970  GOTO 990
  98. 980  CALL  -1052: VTAB 18: POKE H,18: INVERSE : PRINT "Your Number Is Too Large...Please Re-Enter";: NORMAL : GOSUB 1000: VTAB 18: POKE H,0: CALL  -868:E = 1
  99. 990  RETURN 
  100. 1000  VTAB 18: POKE H,22: INPUT "Please Press RETURN To Continue.";YN$: RETURN 
  101. 1010  VTAB 18: POKE H,22: PRINT "Pressing Return Defaults To 1 ";TY$(A): RETURN 
  102. 1020  PRINT  SPC( 61);: FOR I = 1 TO H2: PRINT "_";: NEXT : PRINT : RETURN 
  103. 1030  FOR X = M TO M +F -1: IF  PEEK(X) = N  THEN FL = 1
  104. 1040  NEXT : RETURN 
  105. 1050  POKE M +F,A:F = F +1:TD$(F) = DE$(A):QU$(F) = N$:TC$(F) = CU$(A):TT$(F) = TY$(A):TA%(F) = T%(A): RETURN 
  106. 1060 P = P -V4
  107. 1070  HOME : PRINT D$;"CATALOG,D";P: PRINT : RETURN 
  108. 1080  VTAB V2: POKE H,V2: PRINT "Type '0' If No Labor Is Involved";: RETURN 
  109. 1090 H = 1403:KB = 49152:KS = 49168:L = 99:ES = 27:R = 8:M = 804
  110. 1100 H1 = 15:H2 = 19:H4 = 3:H5 = 5:H6 = 13:H7 = 14:V1 = 12:V2 = 23:V4 = 48:V5 = 49:V6 = 50
  111. 1110  FOR I = 768 TO 803: READ A: POKE I,A: NEXT 
  112. 1120  DATA   162,0,32,111,253,160,2,138,145,105,200,169,0,145,105,200,169,2,145,105,138,168,185,0,2,41,127,153,0,2,136,192,255,208,243,96
  113. 1130 F = 0
  114. 1140  DIM T%(L): DIM TA%(L)
  115. 1150  DIM DE$(L): DIM CU$(L): DIM TY$(L)
  116. 1160  DIM QU$(L): DIM TD$(L): DIM TC$(L): DIM TT$(L)
  117. 1170  GOSUB 6370
  118. 1180  HOME : VTAB V1: POKE H,21: PRINT "Loading DATA File - One Moment Please"
  119. 1190  PRINT D$;"CLOSE"
  120. 1200  PRINT D$;"OPEN DATA"
  121. 1210  PRINT D$;"READ DATA"
  122. 1220  INPUT TA: INPUT HR: INPUT NI: FOR I = 1 TO NI: CALL 768:T%(I) =  VAL( MID$ (IN$,1)): CALL 768:DE$(I) =  MID$ (IN$,1): CALL 768:CU$(I) =  MID$ (IN$,1): CALL 768:TY$(I) =  MID$ (IN$,1): NEXT 
  123. 1230  CALL 768:NA$ =  MID$ (IN$,1): CALL 768:NC$ =  MID$ (IN$,1): CALL 768:AD$ =  MID$ (IN$,1): CALL 768:CI$ =  MID$ (IN$,1): CALL 768:ST$ =  MID$ (IN$,1): CALL 768:ZI$ =  MID$ (IN$,1)
  124. 1240  PRINT D$;"CLOSE DATA"
  125. 1250 V3 = 1:H3 = 29:TI$ = "  M A I N  M E N U  ": GOSUB 830
  126. 1260  VTAB R: POKE H,H2: PRINT "1.)  Generate A Statement": PRINT 
  127. 1270  POKE H,H2: PRINT "2.)  Review The Statement On The Screen": PRINT 
  128. 1280  POKE H,H2: PRINT "3.)  Edit The Statement": PRINT 
  129. 1290  POKE H,H2: PRINT "4.)  Print Out The Statement And Envelope": PRINT 
  130. 1300  POKE H,H2: PRINT "5.)  DATA File Menu": PRINT 
  131. 1310  POKE H,H2: PRINT "6.)  Disk Menu": PRINT 
  132. 1320  POKE H,H2: PRINT "7.)  Exit The Program": PRINT 
  133. 1330  VTAB 24: POKE H,28: PRINT "Choose A Number   (1-7)";
  134. 1340  GOSUB 280:P = P -V4: IF P <1  OR P >7  THEN 1340
  135. 1350  ON P GOTO 1360,1760,2170,3110,3690,5320,6140
  136. 1360  HOME :M$ = "Main Menu": GOSUB 570:C$ = "Customer's Name":SP = V6: GOSUB 120: POKE H,0: VTAB 1: PRINT B$: IF P = ES  THEN 1250
  137. 1370  IF B$ < >""  THEN CR$ = B$
  138. 1380 C$ = "Customer's Street Address": GOSUB 580: GOSUB 120: VTAB 2: POKE H,0: PRINT B$: IF P = ES  THEN 1360
  139. 1390  IF B$ < >""  THEN CA$ = B$
  140. 1400 C$ = "Customer's City": GOSUB 120: VTAB H4: POKE H,0: PRINT B$;:X =  PEEK(H): IF P = ES  THEN  VTAB 2: POKE H,0: GOSUB 6520: GOTO 1380
  141. 1410  IF B$ < >""  THEN CC$ = B$
  142. 1420 C$ = "Customer's State":SP = H7: GOSUB 120: VTAB H4:T = X: POKE H,X: PRINT ", ";B$;:X1 =  PEEK(H): IF P = ES  THEN  VTAB H4: POKE H,0: GOSUB 6520: GOTO 1400
  143. 1430  IF B$ < >""  THEN CS$ = B$
  144. 1440 C$ = "Customer's Zip Code":SP = 10: GOSUB 120:N$ = B$: IF P = ES  THEN  VTAB H4: POKE H,T: GOSUB 6520: GOTO 1420
  145. 1450  VTAB H4: POKE H,X1: PRINT " ";N$
  146. 1460  IF B$ < >""  THEN CZ$ = N$
  147. 1470 C$ = "Today's Date- (MM/DD/YY)":SP = R: GOSUB 120: IF P = ES  THEN  VTAB H4: POKE H,X1: GOSUB 6520: GOTO 1440
  148. 1480  GOSUB 6450: IF DF  THEN 1470
  149. 1490 DB$ = B$: VTAB H5: POKE H,0: PRINT "Date: ";DB$
  150. 1500 C$ = "Date Of Charges- (MM/DD/YY)": GOSUB 120: IF P = ES  THEN  VTAB H5: POKE H,0: GOSUB 6520: GOTO 1470
  151. 1510  GOSUB 6450: IF DF  THEN 1500
  152. 1520 DJ$ = B$: IF F >0  THEN  FOR I = 1 TO F:QU$(I) = "":TD$(I) = "":TC$(I) = "":TT$(I) = "": NEXT :F = 0:HL = 0:GT = 0:MT = 0
  153. 1530  HOME : GOSUB 920: GOSUB 870: IF B$ = ""  THEN 1720
  154. 1540 N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 1530
  155. 1550  GOSUB 900: IF E = 1  THEN E = 0: GOTO 1530
  156. 1560  IF F = 0  THEN 1590
  157. 1570  GOSUB 1030
  158. 1580  IF FL = 1  THEN FL = 0: CALL  -1052: VTAB H1: POKE H,16: PRINT "Code Number ";N;" Is Already Used In This Statement!": GOSUB 1000: VTAB H7: CALL  -868: GOTO 1530
  159. 1590 N$ = CU$(N):A = N: GOSUB 650: GOSUB 750: GOSUB 800
  160. 1600  HOME : PRINT "Code Number: ";A: PRINT "Item Chosen: ";DE$(A): IF T%(A) = 0  THEN  PRINT "Non-Taxable": GOTO 1620
  161. 1610  PRINT "Taxable"
  162. 1620  PRINT "Cost: "Y$
  163. 1630  IF TY$(A) < >"0"  THEN 1660
  164. 1640  PRINT "Special Item":N$ = "1": GOSUB 590: IF E = 1  THEN E = 0: GOTO 1530
  165. 1650  GOTO 1710
  166. 1660  PRINT "Unit Of Measurement: "TY$(A): GOSUB 1010:C$ = "Quantity To Bill":SP = H4: GOSUB 120: IF B$ = ""  THEN N$ = "1": GOTO 1690
  167. 1670 N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 1660
  168. 1680  GOSUB 330
  169. 1690  VTAB 6: POKE H,0: PRINT "Quantity To Be Billed: ";N$: VTAB 18: CALL  -868
  170. 1700  GOSUB 590: IF E = 1  THEN E = 0: GOTO 1530
  171. 1710  GOSUB 1050: GOTO 1530
  172. 1720 C$ = "Hours Of Labor":SP = H5: HOME : GOSUB 1080: GOSUB 120:N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 1720
  173. 1730  GOSUB 330
  174. 1740  IF B$ < >""  THEN HL =  VAL(N$)
  175. 1750 SG = 1: GOTO 1250
  176. 1760  IF   NOT SG  THEN 1250
  177. 1770  HOME : VTAB H5
  178. 1780  PRINT "From:"
  179. 1790  PRINT NA$: PRINT NC$: PRINT AD$: PRINT CI$;", ";ST$;" ";ZI$
  180. 1800  VTAB V1
  181. 1810  PRINT "To:"
  182. 1820  PRINT CR$: PRINT CA$: PRINT CC$;", ";CS$;" ";CZ$
  183. 1830  VTAB 18
  184. 1840  IF DJ$ < >""  THEN  PRINT "Date Of Charges:  ";DJ$
  185. 1850  IF DB$ < >""  THEN  PRINT "Date Of Billing:  ";DB$
  186. 1860  VTAB V2: POKE H,ES: PRINT "Press Any Key To Continue": GOSUB 280
  187. 1870  HOME : GOSUB 820: PRINT  SPC( 1);"QTY" SPC( 2);"TYP"; SPC( 22);"DESCRIPTION"; SPC( V2);"UNIT"; SPC( 6)"TOTAL": GOSUB 820: POKE 34,H5
  188. 1880 MT = 0:C = 0
  189. 1890  FOR I = 1 TO F
  190. 1900  IF TA%(I) = 1  THEN H$ = TT$(I): GOSUB 360
  191. 1910  NEXT I
  192. 1920 TT = MT:MT = 0
  193. 1930  FOR I = 1 TO F
  194. 1940  IF TA%(I) = 0  AND TT$(I) < >"0"  THEN H$ = TT$(I): GOSUB 360
  195. 1950  NEXT I
  196. 1960 TN = MT:MT = 0
  197. 1970  FOR I = 1 TO F
  198. 1980  IF TA%(I) = 0  AND TT$(I) = "0"  THEN H$ = "N/A": GOSUB 360
  199. 1990  NEXT I
  200. 2000  PRINT : PRINT : POKE H,ES: PRINT "Press Any Key To Continue": GOSUB 280
  201. 2010  POKE 34,0: HOME : VTAB 1: GOSUB 820: POKE H,29: PRINT "Statement Of Account": PRINT : GOSUB 820
  202. 2020  IF TT = 0  THEN ST = 0: GOTO 2060
  203. 2030 N$ =  STR$(TT): GOSUB 650:TT =  VAL(N$): GOSUB 750: GOSUB 800: POKE H,V2: PRINT "Total: ";Y$
  204. 2040 N$ =  STR$(TA *TT): GOSUB 650:ST = TT + VAL(N$): GOSUB 750: GOSUB 800: PRINT : POKE H,V2: PRINT "Sales Tax At ";TA *100;"%: "Y$
  205. 2050 N$ =  STR$(ST): GOSUB 750: GOSUB 800: PRINT : POKE H,V2: PRINT "Subtotal: ";Y$
  206. 2060  IF TN = 0  THEN 2080
  207. 2070 N$ =  STR$(TN): GOSUB 650: GOSUB 750: GOSUB 800: PRINT : POKE H,V2: PRINT "Non-Taxable: ";Y$
  208. 2080  IF HL = 0  THEN TL = 0: GOTO 2100
  209. 2090 N$ =  STR$(HR *HL): GOSUB 650:TL =  VAL(N$): GOSUB 750: GOSUB 800:N$ =  STR$(HR): GOSUB 650: PRINT : POKE H,V2: PRINT HL;" Hours Of Labor At $";N$;"/Hour: ";Y$
  210. 2100  IF MT = 0  THEN 2120
  211. 2110 N$ =  STR$(MT): GOSUB 650:MT =  VAL(N$): GOSUB 750: GOSUB 800: PRINT : POKE H,V2: PRINT "Special Items: ";Y$
  212. 2120 N$ =  STR$(ST +TN +MT +TL): GOSUB 650: GOSUB 750: GOSUB 800
  213. 2130  PRINT : POKE H,V2: PRINT "Total Amount Due: ";Y$: PRINT : GOSUB 820
  214. 2140  POKE H,H2: PRINT "Press Any Key To Return To The Main Menu"
  215. 2150 C = 0
  216. 2160  GOSUB 280: GOTO 1250
  217. 2170 V3 = 1:H3 = 17:TI$ = "  S T A T E M E N T  E D I T I N G  M E N U  ": GOSUB 830
  218. 2180  VTAB 7: POKE H,H2: PRINT "1.)  Delete/Edit/Add A Billing Item": PRINT 
  219. 2190  POKE H,H2: PRINT "2.)  Change The Hours Of Labor": PRINT 
  220. 2200  POKE H,H2: PRINT "3.)  Change The Billing Date": PRINT 
  221. 2210  POKE H,H2: PRINT "4.)  Change The Date Of Charges": PRINT 
  222. 2220  POKE H,H2: PRINT "5.)  Change The Customer's Name": PRINT 
  223. 2230  POKE H,H2: PRINT "6.)  Change The Customer's Address": PRINT : PRINT 
  224. 2240  POKE H,28: PRINT "Choose A Number   (1-6)":M$ = "Main Menu": GOSUB 570
  225. 2250  GOSUB 280: IF P = ES  THEN 1250
  226. 2260 P = P -V4: IF P <1  OR P >6  THEN 2250
  227. 2270  ON P GOTO 2280,2800,2850,2880,2910,2940
  228. 2280 V3 = H4:H3 = H7:TI$ = "  B I L L I N G  I T E M  E D I T I N G  M E N U  ": GOSUB 830
  229. 2290  VTAB R: POKE H,H2: PRINT "1.)  Delete An Entire Billing Item"
  230. 2300  VTAB 10: POKE H,H2: PRINT "2.)  Change The Quantity Billed"
  231. 2310  VTAB V1: POKE H,H2: PRINT "3.)  Add Another Billing Item"
  232. 2320  VTAB H1: POKE H,29: PRINT "Choose A Number   (1-3)":M$ = "Statement Editing Menu": GOSUB 570
  233. 2330  GOSUB 280: IF P = ES  THEN 2170
  234. 2340  IF P <V5  OR P >51  THEN 2330
  235. 2350  IF P = V5  THEN  GOSUB 2380: GOTO 2450
  236. 2360  IF P = V6  THEN  GOSUB 2380: GOTO 2530
  237. 2370  IF P = 51  THEN 2610
  238. 2380 C$ = "Code Number Of Item On The Statement":SP = 2: HOME :M$ = "Billing Item Editing Menu": GOSUB 570: GOSUB 120: ON B$ = "" GOTO 2280: IF P = ES  THEN 2280
  239. 2390 N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 2380
  240. 2400 N =  VAL(N$): GOSUB 900: IF E = 1  THEN E = 0: GOTO 2380
  241. 2410  GOSUB 1030
  242. 2420  IF FL = 0  THEN  CALL  -1052: VTAB H1: POKE H,17: PRINT "Code Number ";N;" Is Not Used In This Statement!": GOSUB 1000: VTAB H7: CALL  -868: GOTO 2380
  243. 2430 FL = 0
  244. 2440  RETURN 
  245. 2450  HOME : PRINT DE$(N): VTAB V1: POKE H,20: PRINT "Do You Wish To Delete This Item?  (Y/N)":M$ = "Main Menu": GOSUB 570: GOSUB 600
  246. 2460  IF E = 1  THEN E = 0: GOSUB 2380: GOTO 2450
  247. 2470  FOR I = 1 TO F
  248. 2480  IF TD$(I) = DE$(N)  THEN PT = I
  249. 2490  NEXT 
  250. 2500  FOR I = PT TO F:TD$(I) = TD$(I +1):TC$(I) = TC$(I +1):TT$(I) = TT$(I +1):QU$(I) = QU$(I +1): NEXT :F = F -1
  251. 2510  FOR X = M +PT -1 TO M +F -1: POKE X, PEEK(X +1): NEXT 
  252. 2520  GOTO 2170
  253. 2530  FOR I = 1 TO F
  254. 2540  IF TD$(I) = DE$(N)  THEN PT = I
  255. 2550  NEXT 
  256. 2560  HOME : PRINT TD$(PT): VTAB 10: PRINT "The Quantity Billed Was ";QU$(PT)
  257. 2570 C$ = "The Correct Quantity Billed Is":SP = 4: GOSUB 120:N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 2570
  258. 2580  GOSUB 330
  259. 2590  IF B$ < >""  THEN QU$(PT) = N$
  260. 2600  GOTO 2170
  261. 2610  HOME : GOSUB 920: GOSUB 870: IF B$ = ""  THEN 1250
  262. 2620 N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 2610
  263. 2630  GOSUB 900: IF E = 1  THEN E = 0: GOTO 2610
  264. 2640  IF F = 0  THEN 2670
  265. 2650  GOSUB 1030
  266. 2660  IF FL = 1  THEN FL = 0: CALL  -1052: VTAB H1: POKE H,16: PRINT "Code Number ";N;" Is Already Used In This Statement!": GOSUB 1000: VTAB H7: CALL  -868: GOTO 2610
  267. 2670 N$ = CU$(N):A = N: GOSUB 650: GOSUB 750: GOSUB 800
  268. 2680  HOME : PRINT "Code Number: ";A: PRINT "Item Chosen: ";DE$(A): IF T%(A) = 0  THEN  PRINT "Non-Taxable": GOTO 2700
  269. 2690  PRINT "Taxable"
  270. 2700  PRINT "Cost: "Y$
  271. 2710  IF TY$(A) < >"0"  THEN 2740
  272. 2720  PRINT "Special Item":N$ = "1": GOSUB 590: IF E = 1  THEN E = 0: GOTO 2610
  273. 2730  GOTO 2790
  274. 2740  PRINT "Unit Of Measurement: "TY$(A): GOSUB 1010:C$ = "Quantity To Bill":SP = H4: GOSUB 120: IF B$ = ""  THEN N$ = "1": GOTO 2770
  275. 2750 N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 2740
  276. 2760  GOSUB 330
  277. 2770  VTAB 6: POKE H,0: PRINT "Quantity To Be Billed ";N$: VTAB 18: CALL  -868
  278. 2780  GOSUB 590: IF E = 1  THEN E = 0: GOTO 2610
  279. 2790  GOSUB 1050: GOTO 2610
  280. 2800  HOME : VTAB 10: PRINT "The Number Of Hours Of Labor Is Presently ";HL
  281. 2810 C$ = "Correct Number Of Hours Of Labor":SP = H5: GOSUB 120:N$ = B$: GOSUB 490: IF E = 1  THEN E = 0: GOTO 2810
  282. 2820  GOSUB 330
  283. 2830  IF B$ < >""  THEN HL =  VAL(N$)
  284. 2840  GOTO 2170
  285. 2850  HOME : VTAB 10: PRINT "The Date Of Billing Is ";DB$
  286. 2860 C$ = "Correct Billing Date- (MM/DD/YY)":SP = R: GOSUB 120: GOSUB 6450: IF DF  THEN 2860
  287. 2870 DB$ = B$: GOTO 2170
  288. 2880  HOME : VTAB 10: PRINT "The Date Of Charges Is ";DJ$
  289. 2890 C$ = "Correct Date Of Charges- (MM/DD/YY)":SP = R: GOSUB 120: GOSUB 6450: IF DF  THEN 2890
  290. 2900 DJ$ = B$: GOTO 2170
  291. 2910  HOME : VTAB 10: PRINT "The Customer's Name Is ";CR$
  292. 2920 C$ = "Customer's Correct Name":SP = V6: GOSUB 120: IF B$ < >""  THEN CR$ = B$
  293. 2930  GOTO 2170
  294. 2940 M$ = "Statement Editing Menu": GOSUB 4720
  295. 2950  GOSUB 280: IF P = ES  THEN 2170
  296. 2960 P = P -V4: IF P <1  OR P >4  THEN 2950
  297. 2970  ON P GOTO 2980,3010,3040,3070
  298. 2980  HOME : VTAB 10: PRINT "The Customer's Street Address Is ";CA$
  299. 2990 C$ = "Correct Address":SP = V6: GOSUB 120: IF B$ < >""  THEN CA$ = B$
  300. 3000  GOTO 2940
  301. 3010  HOME : VTAB 10: PRINT "The Customer's City Is ";CC$
  302. 3020 C$ = "Customer's Correct City":SP = V6: GOSUB 120: IF B$ < >""  THEN CC$ = B$
  303. 3030  GOTO 2940
  304. 3040  HOME : VTAB 10: PRINT "The Customer's State Is ";CS$
  305. 3050 C$ = "Customer's Correct State":SP = H7: GOSUB 120: IF B$ < >""  THEN CS$ = B$
  306. 3060  GOTO 2940
  307. 3070  HOME : VTAB 10: PRINT "The Customer's Zip Code Is ";CZ$
  308. 3080 C$ = "Customer's Correct Zip Code":SP = 10: GOSUB 120:N$ = B$
  309. 3090  IF B$ < >""  THEN CZ$ = N$
  310. 3100  GOTO 1250
  311. 3110  GOSUB 3120: GOTO 3190
  312. 3120  HOME : VTAB 10: POKE H,20
  313. 3130  PRINT "1)  Put Paper Into Your Printer": PRINT 
  314. 3140  POKE H,20: PRINT "2)  Ready Your Printer": PRINT 
  315. 3150  POKE H,20: PRINT "3)  Press Any Key Except 'ESCape' To Start Printing":M$ = "Main Menu": GOSUB 570
  316. 3160  GOSUB 280: IF P = ES  THEN 1250
  317. 3170  PRINT  CHR$(V1); CHR$(21): PRINT D$;"PR#1": PRINT 
  318. 3180  RETURN 
  319. 3190  PRINT NA$: PRINT NC$: PRINT AD$: PRINT CI$;", ";ST$;" ";ZI$
  320. 3200  PRINT : PRINT "TO: ";CR$: PRINT CA$: PRINT CC$;",";CS$;" ";CZ$: PRINT 
  321. 3210  IF DB$ < >""  THEN  PRINT "Billing Date: ";DB$
  322. 3220  IF DJ$ < >""  THEN  PRINT "Date Of Charges: ";DJ$
  323. 3230  PRINT : GOSUB 820: PRINT 
  324. 3240  PRINT  SPC( 30);"Statement Of Account"
  325. 3250  PRINT : GOSUB 820
  326. 3260  PRINT "Quan"; SPC( 2);"Type"; SPC( ES);"Items"; SPC( V2);"Unit"; SPC( 6);"Total"
  327. 3270  GOSUB 820
  328. 3280  PRINT :MT = 0: FOR I = 1 TO F
  329. 3290  IF TA%(I) = 1  THEN H$ = TT$(I): GOSUB 430
  330. 3300  NEXT I
  331. 3310  IF MT = 0  THEN ST = 0: GOTO 3380
  332. 3320 N$ =  STR$(MT): GOSUB 650:TT =  VAL(N$): GOSUB 750: GOSUB 800
  333. 3330  GOSUB 1020
  334. 3340 T$ = "Total Of Taxable Items: " +Y$: PRINT : PRINT  SPC( 80 - LEN(T$));T$
  335. 3350 N$ =  STR$(TA *TT): GOSUB 650:ST = TT + VAL(N$): GOSUB 750: GOSUB 800: PRINT 
  336. 3360 T$ = "Sales Tax At " + STR$(TA *100) +"%: " +Y$: PRINT  SPC( 80 - LEN(T$));T$: PRINT 
  337. 3370 N$ =  STR$(ST): GOSUB 750: GOSUB 800:T$ = "Subtotal: " +Y$: PRINT  SPC( 80 - LEN(T$));T$: PRINT 
  338. 3380 MT = 0:C = 0: FOR I = 1 TO F
  339. 3390  IF TA%(I) = 0  AND TT$(I) < >"0"  THEN H$ = TT$(I): GOSUB 430
  340. 3400  NEXT I
  341. 3410  IF MT = 0  THEN TN = 0: GOTO 3450
  342. 3420 N$ =  STR$(MT): GOSUB 650:TN =  VAL(N$): GOSUB 750: GOSUB 800
  343. 3430  GOSUB 1020
  344. 3440 T$ = "Total Of Non-Taxable Items: " +Y$: PRINT : PRINT  SPC( 80 - LEN(T$));T$: PRINT 
  345. 3450  IF HL = 0  THEN TL = 0: GOTO 3480
  346. 3460 N$ =  STR$(HR *HL): GOSUB 650:TL =  VAL(N$): GOSUB 750: GOSUB 800:N$ =  STR$(HR): GOSUB 650
  347. 3470 T$ =  STR$(HL) +" Hours Of Labor At $" +N$ +"/Hour: " +Y$: PRINT  SPC( 80 - LEN(T$));T$
  348. 3480 MT = 0:C = 0: FOR I = 1 TO F
  349. 3490  IF TA%(I) = 0  AND TT$(I) = "0"  THEN  PRINT :H$ = "1": GOSUB 430
  350. 3500  NEXT I
  351. 3510  IF MT = 0  THEN 3530
  352. 3520 N$ =  STR$(MT): GOSUB 650:MT =  VAL(N$)
  353. 3530  GOSUB 1020
  354. 3540 N$ =  STR$(ST +TN +MT +TL): GOSUB 650: GOSUB 750: GOSUB 800
  355. 3550 T$ = "Total Amount Due: " +Y$: PRINT : PRINT  SPC( 80 - LEN(T$));T$
  356. 3560  PRINT : PRINT  SPC( 61);: FOR I = 1 TO H2: PRINT "=";: NEXT : PRINT 
  357. 3570  PRINT D$;"PR#3"
  358. 3580  PRINT : HOME : VTAB V1: POKE H,29: CALL  -1052: PRINT "Print Envelope? (Y/N)": GOSUB 280: IF P = ES  OR P = 78  OR P = 110  THEN 1250
  359. 3590  IF P = 89  OR P = 121  THEN 3610
  360. 3600  GOTO 3580
  361. 3610  HOME : PRINT : VTAB 9: POKE H,20: PRINT "1) Put Envelope Into Printer"
  362. 3620  VTAB V1: POKE H,20: PRINT "2) Press Any Key To Print Envelope":M$ = "Main Menu": GOSUB 570
  363. 3630  GOSUB 280: IF P = ES  THEN 1250
  364. 3640  PRINT  CHR$(V1); CHR$(21): PRINT D$;"PR#1"
  365. 3650  PRINT NA$: PRINT NC$: PRINT AD$: PRINT CI$;", ";ST$;" ";ZI$
  366. 3660  PRINT : PRINT : PRINT : PRINT 
  367. 3670  PRINT  SPC( 32);CR$: PRINT  SPC( 32);CA$: PRINT  SPC( 32);CC$;", ";CS$;" ";CZ$
  368. 3680  PRINT D$;"PR#3": GOTO 1250
  369. 3690 V3 = H4:H3 = 25:TI$ = "  D A T A  F I L E  M E N U  ": GOSUB 830
  370. 3700  VTAB R: POKE H,H2: PRINT "1.)  Setup The DATA File": VTAB 10: POKE H,H2: PRINT "2.)  Add A Billing Item": VTAB V1: POKE H,H2: PRINT "3.)  Delete A Billing Item"
  371. 3710  VTAB H7: POKE H,H2: PRINT "4.)  Edit A DATA File Item": PRINT : POKE H,H2: PRINT "5.)  Make A Printout Of The DATA File": PRINT : POKE H,H2: PRINT "6.)  Review DATA File On Screen"
  372. 3720  VTAB 21: POKE H,29: PRINT "Choose A Number   (1-6)":M$ = "Main Menu": GOSUB 570
  373. 3730  GOSUB 280: IF P = ES  THEN 1250
  374. 3740 P = P -V4: IF P <1  OR P >6  THEN 3730
  375. 3750  ON P GOTO 3760,3870,4050,4190,4940,5170
  376. 3760  HOME :C$ = "Your Name":SP = V6: GOSUB 120: IF B$ < >""  THEN NA$ = B$
  377. 3770 C$ = "Your Company's Name": GOSUB 120: IF B$ < >""  THEN NC$ = B$
  378. 3780 C$ = "Your Street Address": GOSUB 120: IF B$ < >""  THEN AD$ = B$
  379. 3790 C$ = "Your City": GOSUB 120: IF B$ < >""  THEN CI$ = B$
  380. 3800 C$ = "Your State":SP = H7: GOSUB 120: IF B$ < >""  THEN ST$ = B$
  381. 3810 C$ = "Your Zip Code":SP = 10: GOSUB 120:N$ = B$
  382. 3820  IF B$ < >""  THEN ZI$ = N$
  383. 3830 C$ = "Sales Tax Rate- Example: Enter 6.5% As .065": GOSUB 120:N$ = B$: GOSUB 930: GOSUB 490: IF E = 1  THEN E = 0: GOTO 3830
  384. 3840  IF B$ < >""  THEN TA =  VAL(N$)
  385. 3850 C$ = "Your Hourly Labor Rate": CALL  -958: GOSUB 1080: GOSUB 120:N$ = B$: GOSUB 300: GOSUB 330: GOSUB 490: IF E = 1  THEN E = 0: GOTO 3850
  386. 3860  IF B$ < >""  THEN  GOSUB 650:HR =  VAL(N$)
  387. 3870 C$ = "Description Of Item":SP = V4: HOME : GOSUB 810: GOSUB 920: GOSUB 120: IF B$ = ""  THEN  POKE 34,0: GOTO 3690
  388. 3880 G$ = B$: VTAB H4: POKE H,0: PRINT "Item: ";G$
  389. 3890 C$ = "Unit Of Measurement":SP = H4: VTAB 18: CALL  -868: POKE H,22: PRINT "Pressing 'RETURN' Defaults To 'Ea'": VTAB 20: POKE H,21: PRINT "Press '0' To Designate Special Items": GOSUB 120: IF B$ = ""  THEN B$ = "Ea"
  390. 3900  VTAB 18: POKE H,0: CALL  -958
  391. 3910 H$ = B$: IF H$ = "0"  THEN  VTAB 4: POKE H,0: PRINT "Special Item":C$ = "Cost Of The Special Item": GOTO 3940
  392. 3920  VTAB 4: POKE H,0: PRINT "Unit Of Measurement: ";H$
  393. 3930 C$ = "Cost Per Unit"
  394. 3940 SP = R: GOSUB 120:N$ = B$: GOSUB 300: GOSUB 330: GOSUB 490: IF E = 1  THEN E = 0: GOTO 3940
  395. 3950  GOSUB 950: IF E = 1  THEN E = 0: GOTO 3940
  396. 3960  GOSUB 650:B$ = N$: GOSUB 750: GOSUB 800: VTAB H5: POKE H,0: PRINT Y$
  397. 3970  IF H$ = "0"  THEN TF = 0: VTAB 6: POKE H,0: PRINT "Non-Taxable": GOTO 4020
  398. 3980  VTAB V1: CALL  -868: PRINT "Is This Item Taxable?  (Y/N)"
  399. 3990  GOSUB 280: IF P = 78  OR P = 110  THEN TF = 0: VTAB 6: POKE H,0: PRINT "Non-Taxable": GOTO 4020
  400. 4000  IF P = 89  OR P = 121  THEN TF = 1: VTAB 6: POKE H,0: PRINT "Taxable": GOTO 4020
  401. 4010  GOTO 3990
  402. 4020  VTAB 7: PRINT "Intended Code Number: ";NI +1: GOSUB 590: IF E = 1  THEN E = 0: GOTO 3870
  403. 4030  IF B$ < >""  THEN NI = NI +1:CU$(NI) = B$:DE$(NI) = G$:TY$(NI) = H$:T%(NI) = TF
  404. 4040 DG = 1: GOTO 3870
  405. 4050  HOME :C$ = "Code Number Of Item To Be Deleted":SP = 2:M$ = "Main Menu": GOSUB 570: GOSUB 120: IF B$ = ""  THEN 3690
  406. 4060 N =  VAL(B$): GOSUB 900: IF E = 1  THEN E = 0: GOTO 4050
  407. 4070  VTAB 1: POKE H,0: PRINT "Item: ";DE$(N)
  408. 4080  VTAB 2: POKE H,0: IF TY$(I) = "0"  THEN  PRINT "Special Item": GOTO 4100
  409. 4090  PRINT "Unit Of Measurement: ";TY$(N)
  410. 4100 N$ = CU$(N): GOSUB 750: GOSUB 800
  411. 4110  VTAB H4: POKE H,0: PRINT "Cost: "Y$
  412. 4120  VTAB 4: POKE H,0: IF T%(N) = 1  THEN  PRINT "Taxable": GOTO 4140
  413. 4130  PRINT "Non-Taxable"
  414. 4140  VTAB H5: POKE H,0: PRINT "Code Number: ";N
  415. 4150  GOSUB 570: VTAB V1: POKE H,0: CALL  -868: PRINT "Delete This Item?  (Y/N)": GOSUB 600
  416. 4160  IF E = 1  THEN E = 0: GOTO 4050
  417. 4170  FOR I = N TO NI:DE$(I) = DE$(I +1):CU$(I) = CU$(I +1):TY$(I) = TY$(I +1):T%(I) = T%(I +1): NEXT :NI = NI -1
  418. 4180  GOTO 3690
  419. 4190 V3 = 1:H3 = 17:TI$ = "  D A T A  F I L E  E D I T I N G  M E N U  ": GOSUB 830
  420. 4200  VTAB R: POKE H,H2: PRINT "1.)  Change A Description": POKE H,H2: PRINT "2.)  Change The Unit Of Measurement": POKE H,H2: PRINT "3.)  Change The Cost/Unit": POKE H,H2: PRINT "4.)  Change The Tax Status Of An Item"
  421. 4210  POKE H,H2: PRINT "5.)  Change The Sales Tax Rate": POKE H,H2: PRINT "6.)  Change Your Hourly Labor Rate": POKE H,H2: PRINT "7.)  Change Your Name"
  422. 4220  POKE H,H2: PRINT "8.)  Change Your Company Name": POKE H,H2: PRINT "9.)  Change Your Address": PRINT 
  423. 4230  VTAB 21: POKE H,29: PRINT "Choose A Number   (1-9)":M$ = "Data File Menu": GOSUB 570
  424. 4240  GOSUB 280: IF P = ES  THEN 3690
  425. 4250  IF P <V5  OR P >57  THEN 4240
  426. 4260 P = P -V4
  427. 4270  ON P GOTO 4280,4330,4390,4470,4560,4610,4650,4680,4710
  428. 4280  HOME : GOSUB 870: IF B$ = ""  THEN 4190
  429. 4290  GOSUB 900: IF E = 1  THEN E = 0: GOTO 4280
  430. 4300  HOME : VTAB R: PRINT "The Present Description Is ";DE$(N)
  431. 4310 C$ = "New Description":SP = V4: GOSUB 120: IF B$ < >""  THEN DE$(N) = B$
  432. 4320  GOTO 4190
  433. 4330  HOME : GOSUB 870: IF B$ = ""  THEN 4190
  434. 4340  GOSUB 900: IF E = 1  THEN E = 0: GOTO 4330
  435. 4350  HOME : VTAB R: PRINT "The Billing Item Is ";DE$(N): VTAB 10: PRINT "The Existing Unit Of Measurement Is ";TY$(N)
  436. 4360 C$ = "New Unit Of Measurement":SP = H4: VTAB 18: POKE H,22: PRINT "Pressing 'RETURN' Defaults To 'Ea'": GOSUB 120: IF B$ = ""  THEN B$ = "Ea"
  437. 4370 TY$(N) = B$
  438. 4380  GOTO 4190
  439. 4390  HOME : GOSUB 870: IF B$ = ""  THEN 4190
  440. 4400  GOSUB 900: IF E = 1  THEN E = 0: GOTO 4390
  441. 4410 A = N
  442. 4420 N$ = CU$(N): GOSUB 750: GOSUB 800: HOME : VTAB R: PRINT "The Billing Item Is ";DE$(N): VTAB 10: PRINT "The Existing Cost/Unit Is ";Y$
  443. 4430 C$ = "New Cost/Unit":SP = R: GOSUB 120:N$ = B$: GOSUB 300: GOSUB 330: GOSUB 490: IF E = 1  THEN E = 0: GOTO 4430
  444. 4440  GOSUB 950: IF E = 1  THEN E = 0: GOTO 4430
  445. 4450  IF B$ < >""  THEN  GOSUB 650:CU$(A) = N$
  446. 4460  GOTO 4190
  447. 4470  HOME : GOSUB 870: IF B$ = ""  THEN 4190
  448. 4480  GOSUB 900: IF E = 1  THEN E = 0: GOTO 4470
  449. 4490  IF T%(N) = 0  THEN G$ = "Non-Taxable": GOTO 4510
  450. 4500 G$ = "Taxable"
  451. 4510  HOME : VTAB R: PRINT "The Billing Item Is ";DE$(N): VTAB 10: PRINT "This Item Is Currently ";G$: VTAB V1: PRINT "Do You Wish To Change It?  (Y/N)"
  452. 4520  GOSUB 600
  453. 4530  IF E = 1  THEN E = 0: GOTO 4190
  454. 4540  IF T%(N) = 0  THEN T%(N) = 1: GOTO 4190
  455. 4550 T%(N) = 0: GOTO 4190
  456. 4560  HOME : VTAB 10: PRINT "Your Sales Tax Rate Is Presently ";TA: GOSUB 570
  457. 4570 C$ = "New Sales Tax Rate- Example: Enter 6.5% As .065":SP = 6: GOSUB 120:N$ = B$: GOSUB 930: GOSUB 490: IF E = 1  THEN E = 0: GOTO 4570
  458. 4580  IF B$ < >""  THEN TA =  VAL(N$)
  459. 4590 N$ =  STR$(HR): GOSUB 750: GOSUB 800
  460. 4600  GOTO 4190
  461. 4610 N$ =  STR$(HR): GOSUB 650: HOME : VTAB 10: PRINT "Present Hourly Rate Is $";N$: GOSUB 570
  462. 4620 C$ = "New Hourly Labor Rate":SP = 6: GOSUB 120:N$ = B$: GOSUB 300: GOSUB 330: GOSUB 490: IF E = 1  THEN E = 0: GOTO 4620
  463. 4630  IF B$ < >""  THEN  GOSUB 650:HR =  VAL(N$)
  464. 4640  GOTO 4190
  465. 4650  HOME : VTAB 10: PRINT "Your Name Is ";NA$
  466. 4660 C$ = "Your Correct Name Is":SP = V6: GOSUB 120: IF B$ < >""  THEN NA$ = B$
  467. 4670  GOTO 4190
  468. 4680  HOME : VTAB 10: PRINT "Your Company Name Is ";NC$
  469. 4690 C$ = "The Correct Name Is":SP = V6: GOSUB 120: IF B$ < >""  THEN NC$ = B$
  470. 4700  GOTO 4190
  471. 4710 M$ = "Data File Editing Menu": GOSUB 4720: GOTO 4790
  472. 4720 V3 = H4:H3 = H2:TI$ = "  A D D R E S S  E D I T I N G  M E N U  ": GOSUB 830
  473. 4730  VTAB R: POKE H,H2: PRINT "1.)  Change The Street Address": PRINT 
  474. 4740  VTAB 10: POKE H,H2: PRINT "2.)  Change The City": PRINT 
  475. 4750  VTAB V1: POKE H,H2: PRINT "3.)  Change The State": PRINT 
  476. 4760  VTAB H7: POKE H,H2: PRINT "4.)  Change The Zip Code": PRINT 
  477. 4770  VTAB 18: POKE H,29: PRINT "Choose A Number   (1-4)": GOSUB 570: RETURN 
  478. 4780  GOSUB 280: IF P = ES  THEN 4190
  479. 4790 P = P -V4: IF P <1  OR P >4  THEN 4780
  480. 4800  ON P GOTO 4810,4840,4870,4900
  481. 4810  HOME : VTAB 10: PRINT "Your Address Is ";AD$
  482. 4820 C$ = "Correct Address":SP = V6: GOSUB 120: IF B$ < >""  THEN AD$ = B$
  483. 4830  GOSUB 4720: GOTO 4790
  484. 4840  HOME : VTAB 10: PRINT "Your City Is ";CI$
  485. 4850 C$ = "The Correct City Is":SP = V6: GOSUB 120: IF B$ < >""  THEN CI$ = B$
  486. 4860  GOSUB 4720: GOTO 4790
  487. 4870  HOME : VTAB 10: PRINT "Your State Is ";ST$
  488. 4880 C$ = "The Correct State Is":SP = H7: GOSUB 120: IF B$ < >""  THEN ST$ = B$
  489. 4890  GOTO 3690
  490. 4900  HOME : VTAB 10: PRINT "Your Zip Code Is ";ZI$
  491. 4910 C$ = "Your Correct Zip Code Is":SP = 10: GOSUB 120:N$ = B$
  492. 4920  IF B$ < >""  THEN ZI$ = N$
  493. 4930  GOTO 3690
  494. 4940  GOSUB 3120
  495. 4950  GOSUB 820
  496. 4960  PRINT NA$: PRINT NC$: PRINT AD$: PRINT CI$;", ";ST$;" ";ZI$: GOSUB 820: PRINT 
  497. 4970  PRINT  SPC( 21);"Listing Of DATA File And Code Numbers": PRINT 
  498. 4980  GOSUB 820
  499. 4990  PRINT : PRINT "Code #  T"; SPC( 25);"Description"; SPC( 26);"Cost/Unit": PRINT 
  500. 5000  FOR I = 1 TO NI
  501. 5010  IF T%(I) = 0  THEN G$ = " ": GOTO 5030
  502. 5020 G$ = "*"
  503. 5030  IF TY$(I) = "0"  THEN H$ = "": GOTO 5050
  504. 5040 H$ = TY$(I)
  505. 5050 N$ = CU$(I): GOSUB 650: GOSUB 750: IF I = 1  THEN  GOSUB 800
  506. 5060 I$ =  STR$(I)
  507. 5070  PRINT  SPC( 4 - LEN(I$));I; SPC( 4);G$; SPC( 2);
  508. 5080  PRINT DE$(I); SPC( 64 - LEN(DE$(I)) - LEN(N$));N$;"/";H$
  509. 5090  NEXT I
  510. 5100  IF TA = 0  THEN 5120
  511. 5110  PRINT : PRINT  SPC( 22);"Tax Rate= ";TA *100;"%"
  512. 5120  IF HR = 0  THEN 5150
  513. 5130 N$ =  STR$(HR): GOSUB 650: GOSUB 750: GOSUB 800
  514. 5140  PRINT : PRINT  SPC( 22);"Hourly Rate= ";N$;" Per Hour"
  515. 5150  PRINT : GOSUB 820
  516. 5160  PRINT D$;"PR#3": GOTO 1250
  517. 5170  HOME : VTAB 4: GOSUB 820: POKE H,22: PRINT NA$: IF NC$ < >""  THEN  POKE H,22: PRINT NC$
  518. 5180  POKE H,22: PRINT AD$: POKE H,22: PRINT CI$;", ";ST$;" ";ZI$: PRINT : GOSUB 820
  519. 5190  POKE H,22: PRINT "Tax Rate= ";TA *100;"%":N$ =  STR$(HR): GOSUB 650: GOSUB 750: GOSUB 800: PRINT : POKE H,22: PRINT "Hourly Rate= ";N$;" Per Hour": PRINT : GOSUB 820
  520. 5200  PRINT : PRINT : POKE H,ES: PRINT "Press Any Key To Continue": GOSUB 280
  521. 5210  HOME : VTAB 1: POKE H,0: GOSUB 820: VTAB  PEEK(37): INVERSE : PRINT "Code #  T"; SPC( 25);"Description"; SPC( 26);"Cost/Unit";: NORMAL : GOSUB 820: POKE 34,4
  522. 5220 C = 0: VTAB C +5: FOR I = 1 TO NI
  523. 5230  IF T%(I) = 0  THEN G$ = " ": GOTO 5250
  524. 5240 G$ = "*"
  525. 5250  IF TY$(I) = "0"  THEN H$ = "": GOTO 5270
  526. 5260 H$ = TY$(I)
  527. 5270 N$ = CU$(I): GOSUB 650: GOSUB 750: IF C = 0  THEN  GOSUB 800
  528. 5280 I$ =  STR$(I): PRINT  SPC( 4 - LEN(I$));I; SPC( 4);G$; SPC( 2);DE$(I); SPC( 64 - LEN(DE$(I)) - LEN(N$));N$;"/";H$
  529. 5290 C = C +1: IF C = 15  AND I <NI  THEN C = 0: PRINT : PRINT : POKE H,7: PRINT "Press Any Key To Continue Or 'ESCape' To Return To The Main Menu": PRINT : GOSUB 280: HOME : IF P = ES  THEN 1250
  530. 5300  NEXT I
  531. 5310  PRINT : PRINT : POKE H,H2: PRINT "Press Any Key To Return To The Main Menu": GOSUB 280: POKE 34,0: GOTO 1250
  532. 5320 V3 = H4:H3 = 29:TI$ = "  D I S K  M E N U  ": GOSUB 830
  533. 5330  VTAB R: POKE H,H2: PRINT "1.)  Save An Existing Statement"
  534. 5340  VTAB 10: POKE H,H2: PRINT "2.)  Load A Statement From The Disk"
  535. 5350  VTAB V1: POKE H,H2: PRINT "3.)  Delete A Statement From The Disk"
  536. 5360  VTAB H7: POKE H,H2: PRINT "4.)  Create A Disk For Data Storage (DOS 3.3 Only)"
  537. 5370  VTAB 16: POKE H,H2: PRINT "5.)  Update DATA File"
  538. 5380  VTAB 20: POKE H,29: PRINT "Choose A Number   (1-5)":M$ = "Main Menu": GOSUB 570
  539. 5390  GOSUB 280: IF P = ES  THEN 1250
  540. 5400 P = P -V4: IF P <1  OR P >H5  THEN 5390
  541. 5410  ON P GOTO 5420,5600,5740,5850,6010
  542. 5420  GOSUB 860:M$ = "Disk Menu": GOSUB 570
  543. 5430  GOSUB 280: IF P = ES  THEN 5320
  544. 5440  IF P = H6  THEN P = 1: GOSUB 1070: GOTO 5470
  545. 5450  IF P <V5  OR P >V6  THEN 5430
  546. 5460  GOSUB 1060
  547. 5470  INPUT "What Name Do You Want To Call This File?  ";F$
  548. 5480  GOSUB 6530: IF IV  THEN 5320
  549. 5490  PRINT : POKE H,H2: PRINT "Press Any Key To Save, OR 'ESCape' TO Exit"
  550. 5500  GOSUB 280: IF P = ES  THEN 1250
  551. 5510  PRINT D$;"OPEN";F$
  552. 5520  PRINT D$;"CLOSE"
  553. 5530  PRINT D$;"DELETE";F$
  554. 5540  PRINT D$;"OPEN";F$
  555. 5550  PRINT D$;"WRITE";F$
  556. 5560  PRINT CR$: PRINT CA$: PRINT CC$: PRINT CS$: PRINT CZ$: PRINT DB$: PRINT DJ$: PRINT HL: PRINT F: FOR I = 1 TO F: PRINT TA%(I): PRINT TD$(I): PRINT TC$(I): PRINT TT$(I): PRINT QU$(I): NEXT 
  557. 5570  FOR X = M TO M +F -1: PRINT  PEEK(X): NEXT 
  558. 5580  PRINT D$;"CLOSE"
  559. 5590  GOTO 5320
  560. 5600  GOSUB 860:M$ = "Disk Menu": GOSUB 570
  561. 5610  GOSUB 280: IF P = ES  THEN 5320
  562. 5620  IF P = H6  THEN P = 1: GOSUB 1070: GOTO 5650
  563. 5630  IF P <V5  OR P >V6  THEN 5610
  564. 5640  GOSUB 1060
  565. 5650  INPUT "What File Do You Wish To Load?  ";F$
  566. 5660  GOSUB 6530: IF IV  THEN 5320
  567. 5670  PRINT D$;"OPEN";F$
  568. 5680  PRINT D$;"READ";F$
  569. 5690  CALL 768:CR$ =  MID$ (IN$,1): CALL 768:CA$ =  MID$ (IN$,1): CALL 768:CC$ =  MID$ (IN$,1): CALL 768:CS$ =  MID$ (IN$,1): CALL 768:CZ$ =  MID$ (IN$,1): CALL 768:DB$ =  MID$ (IN$,1): CALL 768:DJ$ =  MID$ (IN$,1): CALL 768:HL =  VAL( MID$ (IN$,1))
  570. 5700  INPUT F: FOR I = 1 TO F: INPUT TA%(I): CALL 768:TD$(I) =  MID$ (IN$,1): CALL 768:TC$(I) =  MID$ (IN$,1): CALL 768:TT$(I) =  MID$ (IN$,1): CALL 768:QU$(I) =  MID$ (IN$,1): NEXT 
  571. 5710  FOR X = M TO M +F -1: INPUT N: POKE X,N: NEXT 
  572. 5720  PRINT D$;"CLOSE"
  573. 5730  GOTO 5320
  574. 5740  GOSUB 860:M$ = "Disk Menu": GOSUB 570
  575. 5750  GOSUB 280: IF P = ES  THEN 5320
  576. 5760  IF P = H6  THEN P = 1: GOSUB 1070: GOTO 5790
  577. 5770  IF P <V5  OR P >V6  THEN 5750
  578. 5780  GOSUB 1060
  579. 5790  INPUT "What File Do You Wish To Delete?  ";F$
  580. 5800  GOSUB 6530: IF IV  THEN 5320
  581. 5810  PRINT : POKE H,18: PRINT "Press Any Key To Delete, Or 'ESCape' To Exit"
  582. 5820  GOSUB 280: IF P = ES  THEN 5320
  583. 5830  PRINT D$;"DELETE";F$
  584. 5840  GOTO 5320
  585. 5850  IF  PEEK(48896) = 76  THEN  HOME : CALL  -1052: VTAB V1: POKE H,18: PRINT "Sorry- This Option Does Not Work With ProDOS": GOSUB 1000: GOTO 5320
  586. 5860  HOME : VTAB 7: POKE H,35: INVERSE : CALL  -1052: PRINT " WARNING ";: NORMAL : VTAB 10: POKE H,R: PRINT "This Option Formats A Disk For You To Store Your Statements On."
  587. 5870  VTAB V1: POKE H,20: PRINT "Any Data On Your Disk Will Be Destroyed!"
  588. 5880  VTAB 21: POKE H,ES: PRINT "Press 'ESCape' To Abort": VTAB V2: POKE H,24: PRINT "Press Any Other Key To Continue"
  589. 5890  GOSUB 280: IF P = ES  THEN 5320
  590. 5900  GOSUB 860:M$ = "Disk Menu": GOSUB 570
  591. 5910  GOSUB 280: IF P = ES  THEN 5320
  592. 5920  IF P = H6  THEN DP = 1: GOTO 5950
  593. 5930  IF P <V5  OR P >V6  THEN 5910
  594. 5940 P = P -V4:DP = P
  595. 5950  HOME : VTAB V1: POKE H,20: PRINT "Press Any Key To Erase And Initialize": VTAB H7: POKE H,26: PRINT "A Storage Disk In Drive #";DP: VTAB V2: POKE H,ES: PRINT "Press 'ESCape' To Abort": GOSUB 280: IF P = ES  THEN 1250
  596. 5960  HOME : VTAB V1: POKE H,29: INVERSE : PRINT "INITIALIZING YOUR DISK";: NORMAL 
  597. 5970  POKE 42344,76: POKE 44793,11: POKE 44723,4: POKE 43273,65
  598. 5980  PRINT : PRINT D$;"INIT D"DP
  599. 5990  POKE 42344,32: POKE 44793,5: POKE 44723,12: POKE 43273,33
  600. 6000  HOME : VTAB V1: POKE H,18: PRINT "Your Disk Is Now Ready For Storing Statements": GOSUB 1000: GOTO 5320
  601. 6010  IF NI <1  THEN  HOME : CALL  -1052: VTAB V1: POKE H,26: PRINT "Sorry- No Data In Your File": GOSUB 1000: GOTO 5320
  602. 6020  HOME : VTAB V1: POKE H,30: PRINT "Saving Your DATA File"
  603. 6030  PRINT D$;"UNLOCK DATA,D";DD
  604. 6040  PRINT D$;"OPEN DATA"
  605. 6050  PRINT D$;"CLOSE"
  606. 6060  PRINT D$;"DELETE DATA"
  607. 6070  PRINT D$;"OPEN DATA"
  608. 6080  PRINT D$;"WRITE DATA"
  609. 6090  PRINT TA: PRINT HR: PRINT NI: FOR I = 1 TO NI: PRINT T%(I): PRINT DE$(I): PRINT CU$(I): PRINT TY$(I): NEXT 
  610. 6100  PRINT NA$: PRINT NC$: PRINT AD$: PRINT CI$: PRINT ST$: PRINT ZI$
  611. 6110  PRINT D$;"CLOSE DATA"
  612. 6120  PRINT D$;"LOCK DATA"
  613. 6130  GOTO 5320
  614. 6140  HOME : VTAB V1: POKE H,10: PRINT "Do You Wish To Update The DATA File Before Exiting?  (Y/N)": GOSUB 600: IF E = 1  THEN  PRINT  CHR$(21): HOME : END 
  615. 6150  GOTO 6020
  616. 6160  PRINT D$;"PR#3": PRINT D$;"CLOSE"
  617. 6170  IF  PEEK(222) = H5  THEN 6210
  618. 6180  HOME : CALL  -1052: PRINT : VTAB V1: POKE H,25: PRINT "Error #"; PEEK(222);" In Line "; PEEK(218) + PEEK(219) *256
  619. 6190  VTAB 16: POKE H,H2: PRINT "Press Any Key To Return To The Main Menu"
  620. 6200  GOSUB 280: GOTO 1250
  621. 6210  HOME : PRINT : CALL  -1052: VTAB 10: POKE H,H5: PRINT "The DATA File Necessary To Run This Program Was Not Found On This Disk"
  622. 6220  IF NI >0  THEN 6190
  623. 6230  VTAB V1: POKE H,18: PRINT "Do You Wish To Create This File?  (Y/N)"
  624. 6240  GOSUB 600: IF E = 1  THEN E = 0: GOTO 1250
  625. 6250  HOME : VTAB V1: POKE H,1
  626. 6260  INPUT "Please Specify The Drive Number Where The Data Is To Be Stored (1/2):";DD$: IF  VAL(DD$) <1  OR  VAL(DD$) >2  THEN  PRINT  CHR$(7): GOTO 6250
  627. 6270 DD =  VAL(DD$)
  628. 6280  HOME : VTAB V1: POKE H,26
  629. 6290  PRINT "Initializing Your DATA File"
  630. 6300  PRINT D$;"CLOSE"
  631. 6310  PRINT D$;"OPEN DATA,D";DD
  632. 6320  PRINT D$;"WRITE DATA"
  633. 6330  FOR I = 1 TO V4: PRINT 0: NEXT : FOR I = 1 TO R: PRINT " ": NEXT 
  634. 6340  PRINT D$;"CLOSE DATA"
  635. 6350  HOME : PRINT : VTAB V1: POKE H,7: PRINT "From The DATA File Menu Select Option 1 To Set Up Your DATA File": GOSUB 1000: GOSUB 1000
  636. 6360  GOTO 3690
  637. 6370 V3 = 2:H3 = 29:TI$ = "    INVOICE MASTER     ": GOSUB 830
  638. 6380  VTAB 9: POKE H,39: PRINT "By"
  639. 6390  VTAB 11: POKE H,32: PRINT "Joseph A. Movich"
  640. 6400  VTAB H6: POKE H,38: PRINT "and"
  641. 6410  VTAB H1: POKE H,32: PRINT "Barney D. Streit"
  642. 6420  VTAB H2: POKE H,18: PRINT "Copyright (C) 1991 By MindCraft Publ. Corp."
  643. 6430  VTAB V2: POKE H,28: PRINT "Press Any Key To Continue"
  644. 6440  GOSUB 280: RETURN 
  645. 6450 MP =  VAL( LEFT$(B$,2)):DP =  VAL( MID$ (B$,4,2)):YP =  VAL( RIGHT$(B$,2)):S1$ =  MID$ (B$,3,1):S2$ =  MID$ (B$,6,1)
  646. 6460  IF MP <1  OR MP >12  THEN DF = 1: GOTO 6510
  647. 6470  IF DP <1  OR DP >31  THEN DF = 1: GOTO 6510
  648. 6480  IF YP <0  OR YP >99  THEN DF = 1: GOTO 6510
  649. 6490  IF S1$ < >"/"  OR S2$ < >"/"  THEN DF = 1: GOTO 6510
  650. 6500 DF = 0
  651. 6510  RETURN 
  652. 6520  FOR X5 = 1 TO 79: PRINT " ";: NEXT : RETURN 
  653. 6530 NF = 1: IF  LEN(F$) >0  THEN  FOR NC = 1 TO  LEN(F$):NA =  ASC( MID$ (F$,NC,1)):NF = ((NA >64  AND NA <91)  OR (NA = 46)  OR (NA >47  AND NA <58  AND NC >1))  AND NF = 1: NEXT : IF  LEN(F$) >15  OR NF = 0  THEN IV = 1: RETURN 
  654. 6540 IV = 0: RETURN