home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / DBASEACC.ARC / INVOICES.PRG < prev    next >
Text File  |  1979-12-31  |  5KB  |  181 lines

  1. * INVOICES.CMD
  2. * This file accepts inputs for invoices to clients.  Individual projects
  3. * and items are stored in the Billings data file.  Any number of items
  4. * may be entered using a single invoice number.  Invoice numbers are
  5. * automatically generated by the computer and stored in the Constant.Mem
  6. * file.
  7. *   After all the job billings have been entered, they are summarized by
  8. * invoice number and the data is stored in the Invoices file.
  9. *   A printout of items billed and invoice totals is provided.
  10.  
  11.  
  12.  
  13. RESTORE FROM Constant
  14. SET TALK OFF
  15. DO GetDate
  16.  
  17. USE Billings
  18. COPY STRUCTURE TO GetCosts
  19.  
  20. USE GetCosts
  21. STORE ' ' TO Billing
  22. DO WHILE !(Billing) <> 'F'
  23.     APPEND BLANK
  24.     STORE STR(#,5) TO Number
  25.     REPLACE Inv:Date WITH Date, Inv:Nmbr WITH Next:Inv
  26.  
  27.     ERASE
  28.     STORE 'T' TO Entering
  29.     DO WHILE !(Entering) <> 'F'
  30.  ERASE
  31.  @ 3, 0 SAY 'INVOICE NUMBER  '+Next:Inv
  32.  @ 3,30 SAY '    DATE    '+Inv:Date
  33.  @ 5,0 SAY ' RECORD NUMBER:  '-Number
  34.  IF !(Billing) = 'S'
  35.      @ 7,0 SAY '         CLIENT:'+MClient
  36.      REPLACE Client WITH MClient
  37.  ELSE
  38.      @ 7,0 SAY '        CLIENT ' GET Client
  39.  ENDIF
  40.  
  41. @   8,0 SAY '    JOB NUMBER ' GET Job:Nmbr
  42. @   9,0 SAY 'TAXABLE AMOUNT ' GET Taxable
  43. @  10,0 SAY 'TAXFREE AMOUNT ' GET TaxFree
  44. @  11,0 SAY '  P. O. NUMBER ' GET PO:Nmbr
  45. @  12,0 SAY '   DESCRIPTION ' GET Descrip
  46. READ
  47.  
  48. STORE !(Client) TO MClient
  49. REPLACE Client WITH !(MClient),Descrip WITH !(Descrip),;
  50.         PO:Nmbr WITH !(PO:Nmbr)
  51. @   7,16 SAY Client
  52. @  11,16 SAY PO:Nmbr
  53. @  12,16 SAY Descrip
  54. IF Taxable > 0
  55.     REPLACE Sales:Tax WITH 0.06*Taxable
  56.     @ 13,0 SAY '           SALES TAX' GET Sales:Tax
  57. ENDIF
  58.  
  59. IF Job:Nmbr < 100
  60.     @ 16,0 SAY '           JOB not 3 digits.'
  61. ENDIF
  62.  
  63. IF MClient <> '   ' .AND. (Taxable > 0 .OR. TaxFree > 0)
  64.     @ 17,0 SAY '          C to CHANGE this entry.'
  65.     ? '        <Return> to continue.'
  66.  
  67.      WAIT TO New
  68.      IF !(New)='C'
  69.   STORE 'T' TO Entering
  70.      ELSE
  71.   @ 16,0 SAY '           F if FINISHED,       '
  72.   @ 17,0 SAY '           S for SAME invoice number,'
  73.   @ 18,0 SAY '  <Return> for NEXT invoice number.'
  74.   @ 19,0 SAY '            '
  75.   ACCEPT TO New
  76.  
  77.   IF !(New) <> 'S'
  78.       STORE STR(VAL(Next:Inv)+3,5) TO Next:Inv
  79.   ENDIF
  80.   STORE 'F' TO Entering
  81.      ENDIF
  82.      STORE New TO Billing
  83.  ELSE
  84.      @ 17,0 SAY '          CLIENT or AMOUNT missing.'
  85.      ?
  86.      ? '      F if FINISHED,'
  87.      ? '     <Return> to correct the record.'
  88.      WAIT TO Billing
  89.      IF !(Billing)='F'
  90.   DELETE RECORD &Number
  91.   STORE 'F' TO Entering
  92.      ELSE
  93.   STORE 'T' TO Entering
  94.      ENDIF
  95.  ENDIF
  96.     ENDDO Entering
  97. ENDDO Billing
  98.  
  99. RELEASE Billing, Entering, MClient, Task, Number, Date, New
  100. SAVE TO Constant
  101.  
  102. PACK
  103.  
  104.  
  105. GO TOP
  106. ERASE
  107. IF EOF
  108.     ? 'No invoices to add to the file.'
  109.     ? 'Press any key to continue.'
  110.     WAIT
  111. ELSE
  112.     @ 5,20 SAY '**** DO NOT INTERRUPT ****'
  113.     @ 7,20 SAY 'UPDATING BILLINGS AND INVOICES'
  114.  
  115.     * Costs entered are totalled by invoice number to Scratch because several
  116.     * job costs can be entered against each invoice number.Amounts are adjusted
  117.     * for one client who always pays promptly and takes a 2% discount. Each
  118.     * invoice is totalled.  Temp has only summary data needed for a printout.
  119.  
  120.  
  121.     USE Invoices
  122.     COPY STRUCTURE TO Scratch
  123.  
  124.     USE GetCosts
  125.     ERASE
  126.     @ 5,10 SAY 'When ready to print the billings you just added,'
  127.     @ 6,10 SAY 'press <Return>'
  128.     TOTAL ON Inv:Nmbr TO Scratch FIELDS Taxable, Sales:Tax, TaxFree
  129.     WAIT TO Number
  130.  
  131.     SET PRINT ON
  132.     ? 'ENTRIES BY JOB NUMBER:'
  133.     ?
  134.     ? 'INV #   JOB    DATE   TAXABLE     TAX    TAXFREE    P.O.#  DESCRIPTION'
  135.     ?
  136.  
  137.     * "Output" is needed in the Printout Command file
  138.     STORE 'Y' TO Output
  139.     STORE 'OFF' TO Condition
  140.     DO Printout
  141.  
  142.     * One of our clients always pays promptly and takes a 2% discount.
  143.     * We do this after the original entries were printed out:
  144.     REPLACE Taxable WITH 0.980*Taxable,TaxFree WITH 0.980*TaxFree,Sales:Tax;
  145.     WITH 0.980*Sales:Tax FOR Client = 'SPI'
  146.     ?
  147.     ? 'Updating the BILLINGS database now.'
  148.     USE Billings INDEX Billings
  149.     APPEND FROM GetCosts
  150.  
  151.     USE Scratch
  152.     REPLACE All Amount WITH (Taxable + Sales:Tax + TaxFree)
  153.     COPY TO Temp FIELDS Inv:Date,Inv:Nmbr, Taxable, Sales:Tax,;
  154.        TaxFree, Amount
  155.     REPLACE Taxable WITH 0.980*Taxable, TaxFree WITH 0.980*TaxFree, Sales:Tax;
  156.    WITH 0.980*Sales:Tax,Amount WITH 0.980*Amount FOR Client = 'SPI'
  157.  
  158.     USE Temp
  159.     STORE 'Y' TO Output
  160.     SET PRINT ON
  161.     ?
  162.     ?
  163.     ? 'TOTALS BY INVOICE NUMBER:'
  164.     ?
  165.     ? 'DATE      INV#      TAXABLE       TAX      TAXFREE     TOTAL'
  166.     ?
  167.  
  168.     DO Printout
  169.     ?
  170.     ? 'Updating the INVOICES database now.'
  171.     USE Invoices INDEX Invoices
  172.     APPEND FROM Scratch
  173. ENDIF
  174.  
  175. USE
  176. DELETE FILE Scratch
  177. DELETE FILE Temp
  178. DELETE FILE GetCosts
  179. RELEASE All
  180. RETURN
  181.