home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / workdb.zip / ADD.PRG < prev    next >
Text File  |  1988-08-15  |  20KB  |  532 lines

  1. *!!* dBASE CONVERT - dBASE III File Conversion Aid  v2.01  1/10/86
  2. *
  3. SET HEADING OFF
  4. SET SAFETY OFF
  5. * add.sig 08/18/83
  6. *******************************************************************
  7. * THIS MODULE ADDS RECORDS TO THE ORDERS (SIG/M) DATA BASE.
  8. * IT IS WELL WORTH PRINTING OUT AND STUDYING BECAUSE IT CON-
  9. * TAINS MANY PRACTICAL HINTS FOR WRITING A dBASE PROGRAM.
  10. * COMMENTS ARE INSERTED AT APPROPRIATE POINTS IN THE FILE.
  11. * COMMENTS ALREADY IN MAIN.SIG ARE NOT REPEATED.
  12. ******************************************************************
  13. * WE WANT TO GET RID OF THE INDEX WHEN WE ADD. IF YOU
  14. * HAVE A SMALL DATA BASE IT IS OK - BUT OTHERWISE YOU
  15. * HAVE TO WAIT FOR EACH RECORD TO BE INDEXED. MOST COMMERCIAL
  16. * PROGRAMS INDEX EVERY TIME AND IT COSTS YOU TIME. HERE WE
  17. * GIVE YOU THE OPTION OF INDEXING OR NOT WHEN YOU EXIT. IF
  18. * YOU DO NOT, THE RECORDS ARE THERE, BUT YOU WILL NOT FIND
  19. * THEM EXCEPT BY THE STRING SEARCH IN SEARCH1.SIG (SINCE IT
  20. * USES THE 'LOCATE FOR' COMMAND TO FIND NON INDEXED DATA.
  21. * THE INDEX IS STILL ON - SO WE TAKE IT OFF
  22. CLOSE INDEX
  23. CLEAR
  24.  
  25. STORE .T. TO FIRST
  26.  
  27. STORE .T. TO MORE
  28. * because we use three screens in this add - it makes for a neater
  29. * screen if we get rid of the colons around the add field
  30. SET DELIMITER OFF
  31. DO WHILE MORE
  32.    IF FIRST
  33.       * get record number for automatic order number addition
  34.       GOTO BOTTOM
  35.       @  2, 0 SAY "+---------------------------------------"
  36.       @  2,39 SAY "---------------------------------------+"
  37.       @  3, 5 SAY "ORDER NUMBER:"
  38.       @  3,43 SAY "Complete:"
  39.       @  4, 8 SAY "Last name:"
  40.       @  4,46 SAY "First:"
  41.       @  5,10 SAY "Address:"
  42.       @  6, 9 SAY "(line 2):"
  43.       @  7, 9 SAY "(line 3):"
  44.       @  8,13 SAY "City:"
  45.       @  8,46 SAY "State:"
  46.       @  8,65 SAY "ZIP:"
  47.       @  9,11 SAY "Amount:"
  48.       @  9,46 SAY "Enter:"
  49.       @  9,64 SAY "Ship:"
  50.       @ 11,00 SAY "Enter Individual Volumes Ordered (999 when done): "
  51.       @ 12, 2 SAY "Volumes:"
  52.       @ 14, 2 SAY "Remarks:"
  53.       @ 15, 2 SAY "Remarks:"
  54.       @ 16, 0 SAY "Backorder:"
  55.       @ 17,44 SAY "Catalog:"
  56.       @ 18, 2 SAY "Shipped:"
  57.       @ 18,26 SAY "Shipped:"
  58.       @ 18,62 SAY "Update:"
  59.       @ 19, 0 SAY "+---------------------------------------"
  60.       @ 19,39 SAY "---------------------------------------+"
  61.    ENDIF FIRST
  62.  
  63.    STORE .F. TO FIRST
  64.    * IN SIG/M.CMD WE HAVE SAVED OUR VARIABLES AS A FILE ADD.MEM. WE NOW
  65.    * BRING THEM UP (NOTE - IN ADD.INV WHERE ARE VARIABLES ARE ESSENTIALLY
  66.    * NUMERIC WE DO NOT USE THIS METHOD.  IF YOU RUN THE SAME PROGRAM ON
  67.    * BOTH CP/M 80 AND CP/M 86 FIRST DELETE ALL .MEM FILES AS THEY CANNOT
  68.    * BE MOVED BETWEEN OPERATING SYSTEMS.
  69.    RESTORE FROM ADD
  70.    * WE ASSUME ENTER DATE IS TODAY
  71.    STORE DTOC(DATE()) TO mentered
  72.    STORE DTOC(DATE()) TO mshipped
  73.    * we went to the bottom of the file - i.e. the last record -
  74.    * we add one to that and get  4 digits of the order number
  75.    STORE RECNO() TO ord_num
  76.    STORE ORD_NUM + 1 TO ORD_NUM
  77.    * change to character field from numeric
  78.    STORE STR(ord_num,4,0) TO ord_num1
  79.    * however, we want the order number to give us some date data
  80.    * so we will use the date as part of the order number
  81.    * it will be nnnnMMDDY. only way to get a duplicate order number
  82.    * would be to add records, delete, pack and add more records on same
  83.    * so please - pack at the end of the day
  84.    STORE ord_num1 + SUBSTR(DTOC(DATE()),1,2) + SUBSTR(DTOC(DATE()),4,2) + SUBSTR(DTOC(DATE()),8,1)
  85.    STORE 'Y' TO MCOMP
  86.    STORE 'N' TO MCATALOG
  87.    STORE 'ADD RECORDS MODULE' TO MODE
  88.    STORE 'ENTER AS MANY RECORDS AS YOU WANT.' TO PROMPT1
  89.    STORE "When done, enter 'blank' for last name" TO prompt2
  90.    STORE "or Control 'Q' to end session" TO prompt3
  91.    IF SUBSTR(DTOC(DATE()),1,2) <> '00' .AND. mdayu =  '  '
  92.       STORE DTOC(DATE()) to mdayu
  93.    ENDIF
  94.    STORE DTOC(DATE()) TO mshipped
  95.    * NOTE THE SHIFTS BETWEEN GET AND SAY. THIS SCREEN IS
  96.    * REALLY A 3 STAGE SCREEN. THE FIRST PART CONTAINS THE
  97.    * CUSTOMER DATA. THEN WE INPUT ALL VOLUMES ORDERED AND
  98.    * THE PROGRAM AUTOMATICALLY WRITES THEM TO THE FILE
  99.    * UNTIL FINISHED. BECAUSE OF THIS WE WANT TO MAKE SURE
  100.    * DATA FROM THE LAST RECORD IS ELIMINATED.
  101.    *FIRST MAKE SURE WE WANT TO ADD A RECORD
  102.    @  1,25 SAY MODE
  103.    @  3,19 SAY MORDER PICTURE '999999999'
  104.    @  3,53 SAY '  '
  105.    @  4,19 GET MLNAME
  106.    @  4,53 SAY MFNAME
  107.    @  5,19 SAY MADDR1
  108.    @  6,19 SAY MADDR2
  109.    @  7,19 SAY MADDR3
  110.    @  8,19 SAY MCITY
  111.    @  8,53 SAY MSTATE PICTURE '!!'
  112.    @  8,70 SAY MZIP PICTURE '99999'
  113.    @  9,19 SAY '           '
  114.    @  9,53 SAY '        '
  115.    @ 11,62 SAY MSTATUS
  116.    @ 12,11 SAY MVOL1
  117.    @ 14,11 SAY MREM1
  118.    @ 15,11 SAY MREM2
  119.    @ 16,11 SAY MBO
  120.    @ 17,53 SAY '  '
  121.    @ 18,11 SAY '        '
  122.    @ 18,35 SAY '        '
  123.    @ 18,70 SAY '        '
  124.    @ 20,12 SAY PROMPT1
  125.    @ 21,12 SAY PROMPT2
  126.    @ 22,12 SAY PROMPT3
  127.    READ
  128.    * IF WE DO WANT TO ADD A RECORD - THEN DO IT
  129.    IF MLNAME <> '    '
  130.       @  1,25 SAY MODE
  131.       @  3,19 SAY MORDER PICTURE '999999999'
  132.       @  3,53 SAY '  '
  133.       @  4,19 SAY MLNAME
  134.       @  4,53 GET MFNAME
  135.       @  5,19 GET MADDR1
  136.       @  6,19 GET MADDR2
  137.       @  7,19 GET MADDR3
  138.       @  8,19 GET MCITY
  139.       @  8,53 GET MSTATE PICTURE '!!'
  140.       @  8,70 GET MZIP PICTURE '99999'
  141.       @  9,19 GET MAMT
  142.       @  9,53 SAY MENTERED PICTURE '99/99/99'
  143.       @ 11,62 SAY MSTATUS
  144.       @ 12,11 SAY MVOL1
  145.       @ 14,11 SAY MREM1
  146.       @ 15,11 SAY MREM2
  147.       @ 16,11 SAY MBO
  148.       @ 17,53 SAY '  '
  149.       @ 18,11 SAY MBO_SHIP PICTURE '99/99/99'
  150.       @ 18,35 SAY MBO2_SHIP PICTURE '99/99/99'
  151.       @ 18,70 SAY MDAYU PICTURE '99/99/99'
  152.       @ 20,12 SAY PROMPT1
  153.       @ 21,12 SAY PROMPT2
  154.       @ 22,12 SAY PROMPT3
  155.       READ
  156.       * ALWAYS USE CLEAR GETS AFTER GETS. OTHERWISE YOUR PROGRAM WILL
  157.       * HAVE A HEART ATTACK. SEE PAGE 71 OF THE dbase manual
  158.       CLEAR GETS
  159.       * WE NOW GO TO PART 2 OF THE SCREEN. WE STORE 999
  160.       * TO MVOL SO THAT ON OUR LAST RECORD WE CAN EXIT THE ADD EASIER
  161.  
  162.       STORE .T. TO GETIT
  163.       STORE '            ' TO MSTATUS
  164.       * ADD AS MANY RECORDS AS YOU WANT. MSTATUS SHOWS WHETHER THE
  165.       * ITEM WAS IN STOCK. MVOL1 SHOWS WHAT WAS IN STOCK, MBO WHAT WAS
  166.       * BACKORDERED. IF 999 NO MORE VOLUMES
  167.       DO WHILE GETIT
  168.          @ 11,62 SAY MSTATUS
  169.          @ 12,11 SAY MVOL1
  170.          @ 16,11 SAY MBO
  171.          @ 11,48 GET MVOL
  172.          READ
  173.          @ 11,62
  174.          CLEAR GETS
  175.          IF MVOL = 999
  176.             *!! Logical constant converted.
  177.             STORE .F. TO GETIT
  178.             STORE '             ' TO MSTATUS
  179.             *!! Logical constant converted.
  180.             STORE .F. TO AVOID
  181.             * IF THE VOLUME WAS NOT 999 GO TO THE OTHER DATA BASE
  182.          ELSE
  183.             USE STOCK
  184.             * FIND THE RECORD FOR THAT VOLUME. WE USE THE +1 BECAUSE OF VOL. 0
  185.             * YOU COULD JUST AS EASILY (ALTHOUGH SLIGHTLY SLOWER) FIND
  186.             * ANY DATA IN AN INDEXED OR NON-INDEXED FILE.
  187.             * YOU COULD ALSO USE THE SELECT PRIMARY AND SECONDARY COMMAND HERE -
  188.             * BUT FOR THIS DATA BASE, THIS IS THE SIMPLEST WAY OF DOING IT.
  189.             LOCATE FOR RECNO() = mvol + 1
  190.             * IF THE VOLUME WAS IN THE FILE
  191.             IF .NOT. EOF()
  192.                GOTO MVOL + 1
  193.                * WE NEED ANOTHER CONTROL VARIABLE - WITHOUT IT VOLUMES NOT
  194.                * IN THE FILE WOUND UP BEING WRITTEN TO THE BACKORDERED LIST
  195.                *!! Logical constant converted.
  196.                STORE .T. TO AVOID
  197.                * WE NOW WRITE TO THE OTHER FILE AND ADJUST THE INVENTORY
  198.                IF OPEN_INV - BACK_ORD - WAIT_SHIP + RECVD + PEND > 0
  199.                   *!! Logical constant converted.
  200.                   REPLACE CHANGE1 WITH .T.
  201.                   REPLACE OPEN_INV WITH OPEN_INV -1
  202.                   STORE 'IN STOCK ' TO MSTATUS
  203.                   REPLACE SHIP WITH SHIP + 1
  204.                   REPLACE DAYCH1 WITH MENTERED
  205.                ELSE
  206.  
  207.                   REPLACE CHANGE2 WITH .T.
  208.                   REPLACE BACK_ORD WITH BACK_ORD+1
  209.                   STORE 'BACKORDER' TO MSTATUS
  210.                   REPLACE BACKSHIP WITH BACKSHIP + 1
  211.                   REPLACE DAYCH2 WITH MENTERED
  212.                ENDIF OPEN:INV
  213.             ELSE
  214.                * if no such volume
  215.                STORE 'TRY AGAIN ' TO MSTATUS
  216.  
  217.                STORE .F. TO AVOID
  218.             ENDIF .NOT. EOF
  219.             * BACK TO OUR MAIN DATA BASE
  220.             * TELL THEM WHAT YOU FOUND AT STATUS AND LIST IT ON THE ORDER OR BACKORDER LINE
  221.             * NOTE HOW WE BUILD UP THE STRING THAT IS THE LIST OF VOLUMES
  222.             USE SIG/M
  223.  
  224.             IF AVOID = .T.
  225.                IF MSTATUS = 'IN STOCK'
  226.                   STORE TRIM(mvol1) + STR(mvol,3,0) + ','  TO mvol1
  227.                ELSE
  228.                   STORE TRIM(mbo) + STR(mvol,3,0) + ','  TO mbo
  229.                ENDIF mstatus = 'IN STOCK"
  230.             ENDIF AVOID
  231.          ENDIF MVOL
  232.       ENDDO WHILE GETIT
  233.       * BLANK THE STATUS LINE AND GO TO PART 3 OF THE SCREEN AFTER 999
  234.       * NOTE THAT YOU NEED NOT ENTER DATA IN THE ORDER IT APPEARS ON
  235.       * THE SCREEN - WE DON'T KNOW IF THE ORDER IS COMPLETE OR BACKORDERED
  236.       * UNTIL THE END. YOU SET THE ORDER - BUT DON'T DRIVE THE USER CRAZY.
  237.       STORE '             ' TO MSTATUS
  238.       @ 11,62 SAY MSTATUS
  239.       @ 14,11 GET MREM1
  240.       @ 15,11 GET MREM2
  241.       @ 17,53 GET MCATALOG PICTURE '!'
  242.       @ 18,11 GET MBO_SHIP PICTURE '99/99/99'
  243.       @ 18,35 GET MBO2_SHIP PICTURE '99/99/99'
  244.       @  9,70 GET MSHIPPED PICTURE '99/99/99'
  245.       @  3,53 GET MCOMP PICTURE '!'
  246.       READ
  247.       CLEAR GETS
  248.       * DETERMINE IF THERE IS INCOMPLETE OR INCORRECT DATA. THIS PART OF THE
  249.       * PROGRAM CAN HANDLE A SUBSTANTIAL EDITING MODULE -
  250.       DO CASE
  251.          CASE .NOT. (mcomp = 'Y' .OR. mcomp = 'N')
  252.  
  253.               STORE .T. TO ERROR
  254.          CASE .NOT. (mcatalog = 'Y' .OR. mcatalog = 'N' .OR. mcatalog = 'B')
  255.  
  256.               STORE .T. TO ERROR
  257.          OTHERWISE
  258.  
  259.               STORE .F. TO ERROR
  260.       ENDCASE
  261.       IF ERROR
  262.          @ 01,00
  263.          @ 20,00
  264.          @ 21,00
  265.          @ 22,00
  266.          @ 1,18 SAY 'PLEASE CORRECT THE INDICATED DATA'
  267.  
  268.          STORE .T. TO AN_ERROR
  269.          DO WHILE AN_ERROR
  270.             DO CASE
  271.                CASE  .NOT. (mcomp = 'Y' .OR. mcomp = 'N')
  272.                     @ 21,15 SAY 'Must answer "Y" or "N" if shipping completed                '
  273.                     @  3,53 GET MCOMP PICTURE '!'
  274.                     READ
  275.                     @ 1,00
  276.                CASE .NOT. (mcatalog = 'Y' .OR. mcatalog = 'N' .OR. mcatalog = 'B')
  277.                     @ 21,15 SAY 'Catalog is either "Y", "N" or "B" (backordered)'
  278.                     @ 17,53 GET MCATALOG PICTURE '!'
  279.                     READ
  280.                     @ 1,00
  281.                OTHERWISE
  282.  
  283.                     STORE .F. TO AN_ERROR
  284.             ENDCASE
  285.          ENDDO WHILE AN:ERROR
  286.       ENDIF ERROR
  287.       * GIVE THEM A SECOND TRY AT THE DATA. IN MOST CASES IT WILL BE CORRECT, BUT
  288.       * WHY NOT GIVE THEM ANOTHER CRACK. IT IS SIMPLER TO REPEAT THE WHOLE ROUTINE
  289.       * ALTHOUGH YOU COULD LOOP BACK TO THE BEGINNING. WE ALSO WANT A WAY TO
  290.       * READJUST THE INVENTORY INCASE YOU PUT IN A WRONG VOLUME.
  291.       STORE 'Y' TO COMMAND
  292.       @ 20,00
  293.       @ 21,00
  294.       @ 22,00
  295.       @ 21,15 SAY 'IS THE ABOVE CORRECT ?                         '
  296.       @ 21,48 GET COMMAND PICTURE '!'
  297.       READ
  298.       @ 21,00
  299.       IF COMMAND = 'N'
  300.          CLEAR
  301.          @ 04,00 SAY "DO YOU WANT TO ELIMINATE ANY VOLUMES ON THE ORDERED OR BACKORDER LIST ? "
  302.          @ 04,70 GET COMMAND PICTURE '!'
  303.          READ
  304.          IF COMMAND = 'Y'
  305.             @ 06,00 SAY "Items you enter here will automatically be adjusted in the Inventory."
  306.             @ 07,00 SAY "After you have made the changes you will then be able to edit"
  307.             @ 08,00 SAY "the list of disks shipped and/or backordered."
  308.             @ 09,00 SAY "Enter 999 when done"
  309.             *!! Logical constant converted.
  310.             STORE .T. TO GETIT
  311.             STORE 999 TO MVOL
  312.             DO WHILE GETIT
  313.                @ 11,10 SAY "INVENTORY TO BE ADJUSTED FOR VOLUME "
  314.                @ 14,02 SAY "Volumes"
  315.                @ 14,11 SAY MVOL1
  316.                @ 16,00 SAY "Backorder"
  317.                @ 16,11 SAY MBO
  318.                @ 11,48 GET MVOL
  319.                READ
  320.                CLEAR GETS
  321.                IF MVOL = 999
  322.  
  323.                   STORE .F. TO GETIT
  324.                ELSE
  325.                   USE STOCK
  326.                   LOCATE FOR RECNO() = mvol + 1
  327.                   IF .NOT. EOF()
  328.                      GOTO MVOL + 1
  329.                      DO CASE
  330.                         CASE OPEN_INV - BACK_ORD - WAIT_SHIP + RECVD + PEND > 0
  331.                              REPLACE OPEN_INV WITH OPEN_INV +1
  332.                              REPLACE SHIP WITH SHIP -1
  333.                         CASE (open_inv - back_ord - wait_ship + recvd + pend = 0 .AND. back_
  334.                              REPLACE OPEN_INV WITH OPEN_INV + 1
  335.                              REPLACE SHIP WITH SHIP -1
  336.                         CASE BACK_ORD >0
  337.                              REPLACE BACK_ORD WITH BACK_ORD-1
  338.                              REPLACE BACKSHIP WITH BACKSHIP -1
  339.                      ENDCASE
  340.                   ENDIF .NOT. EOF
  341.                   USE SIG/M
  342.                ENDIF MVOL
  343.             ENDDO WHILE GETIT
  344.             * AT THIS POINT WE ARE DOING SOME TIGHT EDITING - SO PROTECT AGAINST
  345.             * A SLIP OF THE FINGERS
  346.             SET CONFIRM ON
  347.             @ 11,10 SAY "Please adjust data 'Volumes' and/or 'Backorders'  "
  348.             @ 14,02 SAY "Volumes"
  349.             @ 14,11 GET MVOL1
  350.             @ 16,00 SAY "Backorder"
  351.             @ 16,11 GET MBO
  352.             READ
  353.             CLEAR GETS
  354.             SET CONFIRM OFF
  355.             * BACK TO NORMAL EDITING
  356.          ENDIF COMMAND = Y
  357.          * NOW THAT VOLUME NUMBERS TAKEN CARE OF WE CAN ADJUST THE REST OF
  358.          * THE DATA
  359.          CLEAR
  360.          STORE 'ADD RECORDS MODULE' TO MODE
  361.          STORE 'ENTER AS MANY RECORDS AS YOU WANT.' TO PROMPT1
  362.          STORE "When done, enter blank for last name " TO prompt2
  363.          STORE "or Control 'Q' to end session" TO prompt3
  364.          @  1,25 SAY MODE
  365.          @  2, 0 SAY "+---------------------------------------"
  366.          @  2,39 SAY "---------------------------------------+"
  367.          @  3, 5 SAY "ORDER NUMBER:"
  368.          @  3,43 SAY "Complete:"
  369.          @  4, 8 SAY "Last name:"
  370.          @  4,46 SAY "First:"
  371.          @  5,10 SAY "Address:"
  372.          @  6, 9 SAY "(line 2):"
  373.          @  7, 9 SAY "(line 3):"
  374.          @  8,13 SAY "City:"
  375.          @  8,46 SAY "State:"
  376.          @  8,65 SAY "ZIP:"
  377.          @  9,11 SAY "Amount:"
  378.          @  9,46 SAY "Enter:"
  379.          @  9,64 SAY "Ship "
  380.          @ 11,00 SAY "Enter Individual Volumes Ordered (999 when done): "
  381.          @ 12, 2 SAY "Volumes:"
  382.          @ 14, 2 SAY "Remarks:"
  383.          @ 16, 0 SAY "Backorder:"
  384.          @ 17,44 SAY "Catalog:"
  385.          @ 18, 2 SAY "Shipped:"
  386.          @ 18,26 SAY "Shipped:"
  387.          @ 18,62 SAY "Update:"
  388.          @ 19, 0 SAY "+---------------------------------------"
  389.          @ 19,39 SAY "---------------------------------------+"
  390.          @ 20,12 SAY PROMPT1
  391.          @ 21,12 SAY PROMPT2
  392.          @ 22,12 SAY PROMPT3
  393.          @  3,19 GET MORDER PICTURE '999999999'
  394.          @  3,53 SAY MCOMP PICTURE '!'
  395.          @  4,19 GET MLNAME
  396.          @  4,53 GET MFNAME
  397.          @  5,19 GET MADDR1
  398.          @  6,19 GET MADDR2
  399.          @  7,19 GET MADDR3
  400.          @  8,19 GET MCITY
  401.          @  8,53 GET MSTATE PICTURE '!!'
  402.          @  8,70 GET MZIP PICTURE '99999'
  403.          @  9,19 GET MAMT
  404.          @  9,53 SAY MENTERED PICTURE '99/99/99'
  405.          @  9,70 SAY MSHIPPED PICTURE '99/99/99'
  406.          @ 11,60 SAY MSTATUS
  407.          @ 12,11 SAY MVOL1
  408.          @ 14,11 SAY MREM1
  409.          @ 15,11 SAY MREM2
  410.          @ 16,11 SAY MBO
  411.          @ 17,53 SAY MCATALOG
  412.          @ 18,11 SAY MBO_SHIP PICTURE '99/99/99'
  413.          @ 18,35 SAY MBO2_SHIP PICTURE '99/99/99'
  414.          @ 18,70 SAY MDAYU PICTURE '99/99/99'
  415.          READ
  416.          CLEAR GETS
  417.        
  418.          STORE .T. TO GETIT
  419.          STORE 999 TO MVOL
  420.          STORE '          ' TO MSTATUS
  421.          DO WHILE GETIT
  422.             @ 11,60 SAY MSTATUS
  423.             @ 12,11 SAY MVOL1
  424.             @ 16,11 SAY MBO
  425.             @ 11,48 GET MVOL
  426.             READ
  427.             @ 11,60
  428.             CLEAR GETS
  429.             IF MVOL = 999
  430.        
  431.                STORE .F. TO GETIT
  432.                STORE '           ' TO MSTATUS
  433.        
  434.                STORE .F. TO AVOID
  435.             ELSE
  436.                USE STOCK
  437.                LOCATE FOR RECNO() = mvol + 1
  438.                IF .NOT. EOF()
  439.                   GOTO MVOL + 1
  440.        
  441.                   STORE .T. TO AVOID
  442.                   IF OPEN_INV - BACK_ORD - WAIT_SHIP + RECVD + PEND > 0
  443.        
  444.                      REPLACE CHANGE1 WITH .T.
  445.                      REPLACE OPEN_INV WITH OPEN_INV -1
  446.                      STORE 'IN STOCK ' TO MSTATUS
  447.                      REPLACE SHIP WITH SHIP + 1
  448.                      REPLACE DAYCH1 WITH MENTERED
  449.                   ELSE
  450.        
  451.                      REPLACE CHANGE2 WITH .T.
  452.                      REPLACE BACK_ORD WITH BACK_ORD+1
  453.                      STORE 'BACKORDER' TO MSTATUS
  454.                      REPLACE BACKSHIP WITH BACKSHIP +1
  455.                      REPLACE DAYCH2 WITH MENTERED
  456.                   ENDIF OPEN:INV
  457.                ELSE
  458.                   STORE 'TRY AGAIN ' TO MSTATUS
  459.        
  460.                   STORE .F. TO AVOID
  461.                ENDIF .NOT. EOF
  462.             ENDIF MVOL
  463.             USE SIG/M
  464.        
  465.             IF AVOID = .T.
  466.                IF MSTATUS = 'IN STOCK'
  467.                   STORE TRIM(mvol1) + STR(mvol,3,0) + ','  TO mvol1
  468.                ELSE
  469.                   STORE TRIM(mbo) + STR(mvol,3,0) + ','  TO mbo
  470.                ENDIF MSTATUS
  471.             ENDIF AVOID
  472.          ENDDO WHILE GETIT
  473.          STORE '           ' TO MSTATUS
  474.          @ 11,60 SAY MSTATUS
  475.          @ 14,11 GET MREM1
  476.          @ 15,11 GET MREM2
  477.          @ 17,53 GET MCATALOG PICTURE '!'
  478.          @ 18,11 GET MBO_SHIP PICTURE '99/99/99'
  479.          @ 18,35 GET MBO2_SHIP PICTURE '99/99/99'
  480.          @  9,70 GET MSHIPPED PICTURE '99/99/99'
  481.          @  3,53 GET MCOMP PICTURE '!'
  482.          READ
  483.          CLEAR GETS
  484.       ENDIF COMMAND = N
  485.       * OUR ADDING AND EDITING IS DONE - LET US ADD THE RECORD TO THE FILE
  486.       APPEND BLANK
  487.       REPLACE ORDER WITH MORDER, COMP WITH MCOMP
  488.       REPLACE LNAME WITH MLNAME, FNAME WITH MFNAME
  489.       REPLACE ADDR1 WITH MADDR1, ADDR2 WITH MADDR2, ADDR3 WITH MADDR3
  490.       REPLACE CITY WITH MCITY, STATE WITH MSTATE, ZIP WITH MZIP
  491.       REPLACE VOL1 WITH MVOL1
  492.       REPLACE AMT WITH MAMT
  493.       REPLACE ENTERED WITH MENTERED, SHIPPED WITH MSHIPPED
  494.       REPLACE REM1 WITH MREM1, REM2 WITH MREM2
  495.       REPLACE BO WITH MBO, CATALOG WITH MCATALOG, BO_SHIP WITH MBO_SHIP
  496.       REPLACE BO2_SHIP WITH MBO2_SHIP, DAYU WITH MDAYU
  497.     
  498.       REPLACE NEW WITH .T.
  499.     
  500.       STORE .T. TO MORE
  501.    ELSE
  502.     
  503.       STORE .F. TO MORE
  504.    ENDIF MLNAME = ' '
  505. ENDDO WHILE MORE
  506. * IF NO MORE RECORDS TO BE ADDED - ASK IF THEY WANT TO INDEX
  507. STORE 'Y' TO COMMAND
  508. CLEAR
  509. @ 02,10 SAY  'THE  NEWLY ADDED ORDERS WILL NOT APPEAR'
  510. @ 03,10 SAY  'TO BE IN THE FILE UNTIL THEY ARE RE-INDEXED'
  511. @ 04,10 SAY  'AND THIS WILL TAKE SOME TIME....'
  512. @ 06,10 SAY  'YOU MAY RE-INDEX NOW OR BY USING THE'
  513. @ 07,10 SAY  'MAINTENANCE FUNCTION NUMBER 6'
  514. @ 10,10 SAY  'Do you wish to RE-INDEX records NOW (Y/N)'
  515. @ 10,52 GET   COMMAND PICTURE '!'
  516. READ
  517. IF COMMAND = 'Y'
  518.    @ 14,10 SAY 'RECORDS ARE NOW BEING RE-INDEXED. '
  519.    @ 16,10 SAY 'PLEASE BE PATIENT AS THIS TAKES A LITTLE TIME....'
  520.    STORE CHR(PEEK(063)) TO dr
  521.    INDEX ON UPPER(lname) TO &dr.:orders
  522. ENDIF COMMAND  = Y
  523. * get our drive letter
  524. STORE CHR(PEEK(063)) TO dr
  525. SET INDEX TO &DR.:ORDERS
  526. RELEASE ALL
  527. * set the colons back on
  528. SET DELIMITER ON
  529.  
  530. STORE .T. TO FIRST
  531.  
  532.