home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / DB3.ARC / MAIN.PRG < prev    next >
Encoding:
Text File  |  1984-10-25  |  14.3 KB  |  534 lines

  1. PROCEDURE Costmenu
  2. SELECT 1
  3. USE Gettemp
  4. SELECT 2
  5. USE Postfile
  6. SELECT 4
  7. USE Supplier INDEX Supplier
  8. SELECT 5
  9. USE Personne
  10. *
  11. DO WHILE .T.
  12.   CLEAR
  13.   @  2, 0 SAY '* * * * * *   B I L L S   &   T I M E   S H E E T S   * * * * * *'
  14.   @  4,15 SAY '   1> ENTER EMPLOYEE TIME SHEETS'
  15.   @  6,15 SAY '   2> ENTER SUPPLIER BILLS'
  16.   @  8,15 SAY '   3> UPDATE the Costbase'
  17.   @ 10,15 SAY '   4> EDIT the Postfile'
  18.   @ 12, 0 SAY '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
  19.   @ 14,15 SAY 'Choose a number or press <ENTER> to exit.'
  20.   @ 15, 0
  21.   *
  22.   WAIT ' ' TO Costing
  23.   *
  24.   DO CASE
  25.       CASE Costing = '1'
  26.          @ ROW(),0 SAY 'Preparing Employee Time Sheets'
  27.          DO Costtime
  28.       CASE Costing = '2'
  29.          @ ROW(),0 SAY 'Preparing Supplier Bills'
  30.          SELECT 8
  31.          USE Invoices
  32.          DO Costbill
  33.       CASE Costing = '3'
  34.          @ ROW(),0 SAY 'Preparing to UPDATE Costbase'
  35.          SELECT 3
  36.          USE Costbase INDEX Costname,Costjobs
  37.          DO Costupda
  38.       CASE Costing = '4'
  39.          @ ROW(),0 SAY 'Selecting Posting File'
  40.          Changing = 'Y'
  41.          DO WHILE LEN(Changing) <> 0
  42.             SELECT 2
  43.             GO TOP
  44.             IF EOF()
  45.                CLEAR
  46.                ? '     There are no entries in the Posting file.'
  47.                WAIT
  48.                Changing = ''
  49.             ELSE
  50.                GO BOTTOM
  51.                CLEAR
  52.                @  3,10 SAY 'Edit Postfile '
  53.                @  5,10 SAY 'There are '+STR(RECNO(),5)+' file entries.'
  54.                WAIT 'Which entry do you want to EDIT?' TO Recno
  55.                *
  56.                * Next line converts the Character value of Which into a
  57.                * Numeric value.  This is necessary in the 'ELSE' part.
  58.                * The EDIT command must be given a NUMERIC value to edit.
  59.                IF &Recno <= 0 .OR. &Recno > RECNO()
  60.                   ?
  61.                   WAIT '   Out of range: do you want to continue (Y or N)?' ;
  62.                       TO Changing
  63.                ELSE
  64.                   GOTO &Recno
  65.                   CLEAR
  66.                   @  1, 0 SAY 'Postfile Edit'
  67.                   @  3, 0 SAY '           Entry'+ STR(RECNO(),5)
  68.                   @  5, 0 SAY '      Check Date' GET Check_Date
  69.                   @  6, 0 SAY '    Check Number' GET Check_Nmbr
  70.                   @  7, 0 SAY '          Client' GET Client PICTURE '!!!'
  71.                   @  8, 0 SAY '      Job Number' GET Job_Nmbr 
  72.                   @  9, 0 SAY '          Amount' GET Amount
  73.                   @ 10, 0 SAY '            Name' GET Name PICTURE '!!!!!!!!!!!!!!!!!!!!'
  74.                   @ 11, 0 SAY '     Description' GET Descrip PICTURE '!!!!!!!!!!!!!!!!!!!!'
  75.                   @ 12, 0 SAY '     Bill Number' GET Bill_Nmbr PICTURE '!!!!!!!'
  76.                   @ 13, 0 SAY '       Bill Date' GET Bill_Date
  77.                   @ 14, 0 SAY '           Hours' GET HOURS
  78.                   @ 15, 0 SAY ' Employee Number' GET Emp_Nmbr
  79.                   @ 19,10 SAY '^W to save, ESC to cancel changes.'
  80.                   READ
  81.                   @ 19,0
  82.                   WAIT 'Press (ENTER) to exit, any key to continue';
  83.                        TO Changing
  84.                ENDIF
  85.             ENDIF
  86.          ENDDO Changing
  87.       CASE LEN(Costing) = 0
  88.          @ ROW(),0 SAY 'Returning to Main Menu'
  89.          CLOSE DATABASE
  90.          RETURN
  91.          *
  92.       OTHERWISE
  93.       *
  94.    ENDCASE Costing
  95. ENDDO
  96. *
  97. PROCEDURE Paymenu
  98. SELECT 2
  99. USE Postfile
  100. SELECT 3
  101. USE Costbase Index Costname,Costjobs
  102. SELECT 4
  103. USE Supplier INDEX Supplier
  104. SELECT 5
  105. USE Personne
  106. SELECT 6
  107. USE Checkfil
  108. DO WHILE .T.
  109.    CLEAR
  110.    @  3, 0 SAY '* * * * *   P A Y   B I L L S   &   S A L A R I E S   * * * * *'
  111.    @  5,20 SAY '     1> PAY SALARIES'
  112.    @  7,20 SAY '     2> PAY BILLS'
  113.    @  9, 0 SAY '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
  114.    @ 11,20 SAY 'Choose a number or press <ENTER>'
  115.    @ 12, 0
  116.    *
  117.    WAIT ' ' TO Paying
  118.    *
  119.    DO CASE
  120.       CASE Paying = '1'
  121.          @ ROW(),0 SAY 'Preparing to Pay Salaries' 
  122.          SELECT 7
  123.          USE WAGES
  124.          DO Payemps
  125.       CASE Paying = '2'
  126.          @ ROW(),0 SAY 'Preparing to Pay Bills'
  127.          * Count to see if there are any undeleted records in the
  128.          * Postfile.  If not, do the Paybills command file.  If
  129.          * there are some, ask if user still wants to pay bills.
  130.          SELECT 2
  131.          COUNT FOR .NOT. DELETED() TO Any
  132.          IF Any = 0
  133.             DO PayBills
  134.          ELSE
  135.             ? 
  136.             ? 'The Posting file contains '+STR(Any,5)+' bills' 
  137.             ? 'that have not been posted to the Costbase yet.'
  138.             WAIT 'Do you still want to pay bills now (Y or N)?' To Continue
  139.             IF UPPER(Continue) = 'Y'
  140.                DO Paybills
  141.             ENDIF
  142.          ENDIF
  143.       CASE LEN(Paying) = 0
  144.          @ ROW(),0 SAY 'Returning to Main Menu'
  145.          CLEAR ALL
  146.          RETURN
  147.          *
  148.       OTHERWISE
  149.       *
  150.    ENDCASE Paying
  151. ENDDO
  152. PROCEDURE Depmenu
  153. SELECT 1
  154. USE Deptemp
  155. SELECT 8
  156. USE Deposits
  157. SELECT 10
  158. USE Invoices INDEX Invoices
  159. DO WHILE .T.
  160.    CLEAR
  161.    @  3, 0 SAY '* * * * *   D E P O S I T S   &   C H E C K B O O K   * * * * *'
  162.    @  5,20 SAY '   1> Enter In Coming Money'
  163.    @  7,20 SAY '   2> Change our Check Number '
  164.    @  9,20 SAY '   3> Change Checkbook Balance'
  165.    @ 11, 0 SAY '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
  166.    @ 13,20 SAY 'Choose a number or press <ENTER>'
  167.    @ 14, 0
  168.    *
  169.    WAIT ' ' TO Incoming
  170.    *
  171.    DO CASE
  172.       CASE Incoming = '1'
  173.          @ ROW(),0 SAY 'Loading In Coming Money'
  174.          DO Deposits
  175.       CASE Incoming = '2'
  176.          RESTORE FROM Konstant
  177.          CLEAR
  178.          @ 3,20 SAY 'CHANGE CHECK NUMBER'
  179.          @ 5, 0 SAY 'This is the next check number' GET NextCheck
  180.          @ 6, 0 SAY 'To leave it unchanged, press <ENTER>'
  181.          @ 7, 0 SAY 'To change it, type in the new number.'
  182.          READ
  183.          SAVE TO Konstant
  184.       CASE Incoming = '3'
  185.          RESTORE FROM Konstant
  186.          CLEAR
  187.          @ 3,20 SAY 'CHANGE CHECKBOOK BALANCE'
  188.          @ 5, 0 SAY 'The current balance is:' GET MBalance
  189.          @ 6, 0 SAY 'To leave it unchanged, press <ENTER>'
  190.          @ 7, 0 SAY 'To change it, type in the new value.'
  191.          READ
  192.          SAVE TO Konstant
  193.       CASE LEN(Incoming) = 0
  194.          @ ROW(),0 SAY 'Returning to Main Menu'
  195.          CLEAR ALL
  196.          RETURN
  197.          *
  198.       OTHERWISE
  199.       *
  200.    ENDCASE Incoming
  201. ENDDO
  202. PROCEDURE Invmenu
  203. SELECT 1
  204. USE Invget
  205. SELECT 7
  206. USE Claddres 
  207. SELECT 8
  208. USE Invoices INDEX Invoices
  209. SELECT 9
  210. USE Billings INDEX Billings, Billjobs
  211. *
  212. DO WHILE .T.
  213.    CLEAR
  214.    @  2, 0 SAY '* * * * * * *   C L I E N T   B I L L I N G   * * * * * * *'
  215.    @  4,20 SAY '1> Bill Clients by Job'
  216.    @  6,20 SAY '2> Edit/Print Invoices in Entry File'
  217.    @  8,20 SAY '3> Print Invoice Forms'
  218.    @ 10, 0 SAY '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
  219.    @ 12,20 SAY 'Choose a number or press <ENTER>'
  220.    @ 13, 0
  221.    *
  222.    WAIT ' ' TO Invoicing
  223.    *
  224.    DO CASE
  225.       CASE Invoicing = '1'
  226.          @ ROW(),0 SAY 'Preparing to Bill Clients by Job'
  227.          DO Invoices
  228.       CASE Invoicing = '2'
  229.          @ ROW(),0 SAY 'Preparing Invoices in Entry File'
  230.          DO Invedit
  231.       CASE Invoicing = '3'
  232.          @ ROW(),0 SAY 'Preparing to Print Invoice Forms'
  233.          SELECT 1
  234.          GO TOP
  235.          CLEAR
  236.          IF EOF()
  237.             WAIT ;
  238.             'There are no INVOICES to be printed.  Type any key to continue'
  239.          ELSE
  240.             * Invoices are all checked to see that only jobs for one client
  241.             * are entered against an invoice.  Necessary because they could
  242.             * have been changed by editing.
  243.             PUBLIC Aborted
  244.             Aborted = .F.
  245.             DO Invcheck
  246.             IF .NOT. Aborted
  247.                DO Invprint
  248.                DO Invupdat
  249.             ENDIF
  250.          ENDIF
  251.       CASE LEN(Invoicing) = 0
  252.          @ ROW(),0 SAY 'Returning to Main Menu'
  253.          CLEAR ALL
  254.          RETURN
  255.          *
  256.       OTHERWISE
  257.       *
  258.    ENDCASE Invoicing
  259. ENDDO
  260. PROCEDURE Jobcosts
  261. SELECT 2
  262. USE Postfile
  263. SELECT 3
  264. USE Costbase INDEX Costjobs,Costname
  265. SELECT 9
  266. USE Billings INDEX Billjobs,Billings
  267. *
  268. * First, check to see whether there are still costs that have not been
  269. * posted into the Costbase from the Postfile
  270. SELECT 2
  271. COUNT FOR .NOT. DELETED() TO Any
  272. IF Any > 0
  273.    ?
  274.    ? 'There are '+STR(Any,5)+' entries in the Postfile.'
  275.    WAIT 'Do you still want to do the Job Costs (Y or N). ' TO Continue
  276.    IF UPPER(Continue) <> 'Y'
  277.       RETURN
  278.    ENDIF
  279. ENDIF
  280. *
  281. RESTORE FROM Konstant
  282. *
  283. * Initialize memory variables
  284. Random = 0
  285. Again = ' '
  286. *
  287. DO WHILE LEN(Again) <> 0
  288.    MClient = '   '
  289.    MJob_Nmbr = '    '
  290.    Hardcopy = ' '
  291.    Number = 'N'
  292.    *
  293.    CLEAR
  294.    @  2,11 SAY '         JOB COST SUMMARY :'
  295.    @  4,11 SAY 'ENTER CLIENT CODE ' GET MClient PICTURE '!!!'
  296.    @  5,11 SAY ' ENTER JOB NUMBER ' GET MJob_Nmbr PICTURE '!!!!'
  297.    @  6,11 SAY '       P to PRINT ' GET Hardcopy PICTURE '!'
  298.    @  7,11 SAY 'SHOW BILL NUMBERS ' GET Number PICTURE '!'
  299.    *
  300.    Getting = SPACE(1)
  301.    DO WHILE LEN(Getting) <> 0
  302.      READ SAVE
  303.      @ 8,0 CLEAR
  304.      IF ' ' $ MClient
  305.          @  9,10 SAY 'CLIENT code is 3 characters.'
  306.      ENDIF
  307.      IF VAL(MJob_Nmbr) >99 .AND. VAL(MJob_Nmbr) <1000  .OR. VAL(MJob_Nmbr) <=0
  308.          * Clear to end of screen
  309.          @ 10,10 SAY 'The JOB NUMBER is wrong.'
  310.          @ 11,15 SAY 'Agency jobs are 2 digits,'
  311.          @ 12,15 SAY 'Client jobs are 4 digits.'
  312.      ENDIF
  313.      @ 14,10 SAY 'Type any key to correct it,'
  314.      WAIT '<ENTER> to finish.' TO Getting
  315.      @ 14,0
  316.    ENDDO
  317.    Again = Getting
  318.    CLEAR GETS
  319.    *
  320.    @ 8,0 CLEAR
  321.    ACCEPT '    OPTIONAL JOB DESCRIPTION  ' TO Message
  322.    Message = TRIM(UPPER(Message))
  323.    *
  324.    ?
  325.    ?
  326.    CLEAR
  327.    IF Hardcopy = 'P'
  328.       SET PRINT ON
  329.    ENDIF
  330.    *
  331.    IF Number = 'Y'
  332.       Switch = 'Bill #'
  333.    ELSE
  334.       Switch = SPACE(0)
  335.    ENDIF
  336.    *
  337.    ? DTOC(Date()) + ':  COST SUMMARY' + ' FOR &MClient-'
  338.    ?? &MJob_Nmbr
  339.    ? SPACE(12) + Message
  340.    ?
  341.    ? 'DATE     NAME                 DESCRIPTION                AMOUNT';
  342.      +' &Switch'
  343.    ?
  344.    SELECT 3
  345.    IF Number = 'Y'
  346.       Switch = ',Bill_Nmbr'
  347.    ELSE
  348.       Switch = ''
  349.    ENDIF
  350.    *
  351.    STORE 0 TO Costs, Inside, Buyouts, HowMany, LineCnt, Spacer
  352.    FIND &MJob_Nmbr
  353.    IF RECNO() <> 0
  354.    DO WHILE Job_Nmbr = VAL(MJob_Nmbr) .AND. .NOT. EOF()
  355.       IF .NOT. DELETED()
  356.          ? Bill_Date, Name, Descrip+'   ', Amount &Switch
  357.          *
  358.          IF Check_Nmbr = '--'
  359.             Inside = Inside + Amount
  360.          ELSE
  361.             Buyouts = Buyouts + Amount
  362.          ENDIF
  363.          Costs = Costs + Amount
  364.          *
  365.          LineCnt = LineCnt + 1
  366.          Spacer = Spacer + 1
  367.          *
  368.          IF Spacer = 10
  369.             Spacer = 0
  370.             ?
  371.          ENDIF
  372.          *
  373.          IF LineCnt = 50
  374.             * formfeed with print on
  375.             IF Hardcopy = 'P'
  376.                SET CONSOLE OFF
  377.                ? CHR(12)
  378.                SET CONSOLE ON
  379.                SET PRINT OFF
  380.             ENDIF
  381.             *
  382.             STORE 0 TO LineCnt, Spacer
  383.             *
  384.             ? 'DATE    NAME                 DESCRIPTION';
  385.               + SPACE(16) + 'AMOUNT'
  386.             ?
  387.          ENDIF
  388.       ENDIF
  389.       SKIP
  390.    ENDDO
  391. ENDIF
  392. *
  393. ? SPACE(54) + '----------'
  394. ? STR(Inside,9,2) +' inside costs  + '+ STR(Buyouts,9,2);
  395.   + ' buyouts =  TOTAL: ' + STR(Costs,9,2)
  396. ?
  397. Min = Inside + 1.18 * Buyouts
  398. ? SPACE(15) + 'IF ALL COSTS ARE IN, bill this amount: ' + STR(Min,9,2)
  399. ?
  400. LineCnt = LineCnt + 5
  401. Spacer = 0
  402. IF LineCnt = 40
  403.    LineCnt = 0
  404.    IF Hardcopy = 'P'
  405.       SET CONSOLE OFF
  406.       ? CHR(12)
  407.       SET CONSOLE ON
  408.       SET PRINT OFF
  409.    ENDIF
  410. ELSE
  411.    ?
  412.    ?
  413.    ?
  414. ENDIF
  415. *
  416. SELECT 9
  417. ? 'BILLED TO DATE FOR &MClient-'
  418. ?? &MJob_Nmbr
  419. ?
  420. ? 'DATE   INV#    TAXABLE        TAX    TAX FREE  DESCRIPTION'
  421. ?
  422. LineCnt = LineCnt + 4
  423. STORE 0 TO Costs, T, S, F
  424. *
  425. STORE 0 TO Costs, Inside, Buyouts, HowMany, LineCnt, Spacer
  426. FIND &MJob_Nmbr
  427. IF RECNO() <> 0
  428.    DO WHILE Job_Nmbr = VAL(MJob_Nmbr) .AND. .NOT. EOF()
  429.       IF .NOT. DELETED()
  430.          ? Inv_Date, Inv_Nmbr, STR(Taxable,9,2) + '   ' +;
  431.          STR(Sales_Tax,9,2) + ' ', TaxFree, Descrip
  432.          T = T + Taxable
  433.          S = S + Sales_Tax
  434.          F = F + TaxFree
  435.          LineCnt = LineCnt + 1
  436.          Spacer = Spacer + 1
  437.          *
  438.          IF Spacer = 10
  439.             Spacer = 0
  440.             ?
  441.          ENDIF
  442.          *
  443.          IF LineCnt = 50
  444.             LineCnt = 0
  445.             Spacer = 0
  446.             *
  447.             IF Hardcopy = 'P'
  448.                SET CONSOLE OFF
  449.                ? CHR(12)
  450.                SET CONSOLE ON
  451.                SET PRINT OFF
  452.             ENDIF
  453.             *
  454.             ? 'DATE   INV#    TAXABLE        TAX    TAX FREE';
  455.               + '  DESCRIPTION'
  456.             ?
  457.          ENDIF
  458.       ENDIF
  459.       SKIP
  460.    ENDDO
  461. ENDIF
  462. *
  463. Costs = T + S + F
  464. ? SPACE(15) + '---------  ---------   ---------'
  465. ? ' SUB-TOTALS:  '+STR(T,9,2) + '  '+STR(S,9,2)+'   ' + STR(F,9,2)
  466. ? SPACE(37) + '----------'
  467. ? SPACE(30) + 'BILLED ' + STR(T+F,9,2)
  468. IF S > 0
  469.    ?? ' + tax.'
  470. ENDIF
  471. *
  472. IF Hardcopy = 'P'
  473.    SET CONSOLE OFF
  474.    ? CHR(12)
  475.    SET CONSOLE ON
  476.    SET PRINT OFF
  477. ENDIF
  478. *
  479. ? 'Type any key to continue,'
  480. WAIT 'press <ENTER> to exit.' TO Again
  481. ENDDO Again
  482. *
  483. CLEAR ALL
  484. RETURN
  485. *
  486. PROCEDURE Indexing
  487. USE Costbase
  488. GO BOTTOM
  489. Temp = STR(RECNO(),5)
  490. SET TALK ON
  491. *
  492. CLEAR
  493. @ 5,0 SAY 'Indexing ' + Temp + ' Costbase records'
  494. ? 'by JOB NUMBER to Costjobs.ndx:'
  495. ERASE Costjobs.ndx
  496. INDEX ON Job_Nmbr TO Costjobs
  497. ?
  498. ?
  499. ? 'Indexing ' + Temp + ' Costbase records'
  500. ? 'by SUPPLIER NAME to Costname.ndx:'
  501. ERASE Costname.ndx
  502. INDEX ON Name to Costname
  503. *
  504. USE Billings
  505. GO BOTTOM
  506. Temp = STR(RECNO(),5)
  507. ?
  508. ?
  509. ? 'Indexing ' + Temp + ' Billings records'
  510. ? 'by INVOICE NUMBER to Billings.ndx:'
  511. ERASE Billings.ndx
  512. INDEX ON Inv_Nmbr TO Billings
  513. ?
  514. ?
  515. ? 'Indexing ' + Temp + ' Billings records'
  516. ? 'by JOB NUMBER to Billjobs.ndx:'
  517. ERASE Billjobs.ndx
  518. INDEX ON Job_Nmbr TO Billjobs
  519. *
  520. USE Invoices
  521. GO BOTTOM
  522. Temp = STR(RECNO(),5)
  523. ?
  524. ?
  525. ? 'Indexing ' + Temp + ' Invoice records'
  526. ? 'by INVOICE NUMBER to Invoices.ndx:'
  527. ERASE Invoices.ndx
  528. INDEX ON Inv_Nmbr TO Invoices
  529. USE
  530. *
  531. SET TALK OFF
  532. RETURN
  533.  
  534.