IF ROW21 <> 21 * VGA50() ENDIF SET DECIMAL TO 2 STORE ' ' TO ORDSTAT STORE 'N' TO INEW,WNEW,CHKSERLOOP STORE DATE() TO SDATE SET BELL OFF SET DEVICE TO SCREEN *CLEAR SELECT 1 SET ORDER TO 1 IF DBBB = 'AUDIO' IF ALIAS() <> 'CUSTAG' .OR. INDEXKEY(1) <> 'CUSTAG' .OR. INDEXKEY(2) <> 'NAMEAG' ? 'OPENING CUSTOMER 2ND TIME' USE STORE 'CUSTOMER' TO DNET DO NETERROR USE CUSTOMER INDEX CUSTNUM,NAME ENDIF ELSE IF ALIAS() <> 'CUSTOMER' .OR. INDEXKEY(1) <> 'CUSTNUM' .OR. INDEXKEY(2) <> 'NAME' ? 'OPENING CUSTOMER 2ND TIME' USE STORE 'CUSTOMER' TO DNET DO NETERROR USE CUSTOMER INDEX CUSTNUM,NAME ENDIF ENDIF STORE 40 TO MARKUP STORE '-' TO MM STORE ' ' TO TEMP1 STORE CTOD('01/01/1980') TO MSDATE STORE CTOD('12/31/2099') TO MEDATE STORE ' ' TO WS STORE 'N' TO BYPASS STORE 0 TO RTY,MII STORE 000000.00 TO DCOST SET COLOR TO 3 IF VSEL = 'I' STORE '<< INVOICES >>' TO TOP1 ENDIF IF VSEL = 'Q' STORE '<< QUOTES >>' TO TOP1 ENDIF IF VSEL = 'W' STORE '<< WORK ORDERS >>' TO TOP1 ENDIF SET KEY -1 TO ORDSTAT SET KEY -2 TO SVEN1 SET KEY -4 TO SINVEN SET KEY -6 TO QPRTORD SET KEY -7 TO POREQU SET KEY -8 TO QPRTFILE *SET KEY -9 TO QPRTQUO SET COLOR TO 11 STORE SPACE(20) TO ENCUST STORE SPACE(10) TO MSNAME,MSSTRING,MSPERSON,MSSTRING1 STORE 0 TO XINV STORE 0.00 TO XAMT STORE ' ' TO MSTATUS STORE 'N' TO MEXIT STORE 'N' TO MCREATE set device to screen set print off DO WHILE .T. *CLEAR KEYS STORE 0 TO MMCUSTNUM IF VSEL = 'I' STORE 'EOF() .OR. INUMBER <> LINV .OR. ROW > ROW21' TO LLP1 ENDIF IF VSEL = 'Q' STORE 'EOF() .OR. QNUMBER <> LINV .OR. ROW > ROW21' TO LLP1 ENDIF IF VSEL = 'W' STORE 'EOF() .OR. SNUMBER <> LINV .OR. ROW > ROW21' TO LLP1 ENDIF IF VSEL = 'I' STORE 'INUMBER <> LINV' TO LLP2 ENDIF IF VSEL = 'Q' STORE 'QNUMBER <> LINV' TO LLP2 ENDIF IF VSEL = 'W' STORE 'SNUMBER <> LINV' TO LLP2 ENDIF IF VSEL = 'I' STORE 'EOF() .OR. INUMBER <> LINV' TO LLP3 ENDIF IF VSEL = 'Q' STORE 'EOF() .OR. QNUMBER <> LINV' TO LLP3 ENDIF IF VSEL = 'W' STORE 'EOF() .OR. SNUMBER <> LINV' TO LLP3 ENDIF CLEAR SELECT 1 STORE ' ' TO TTIME DO TOP *SKIP 0 SELECT 2 store 0 to l1,l2 count for inumber <> 0 .and. dtoc(lastprt) = (' / / ') .and.date() > date+60 to l1 count for inumber <> 0 .and. totcost + tax <> amtpaid+amtpaid1+amtpaid2+amtpaid3.and.date>ctod('01/01/2011') .and.date() > date+60 to l2 if l1<> 0 .or.l2 <> 0 @ 4,0 say 'Invoices that have not been printed over 60 days - ' + str(l1,4,0) @ 6,0 say 'Invoices that have not been paid over 60 days - ' + str(l2,4,0) ? ' ' store ' ' to sel @ 8,0 say 'List Y/N - ' get sel picture '!' read if sel = 'Y' goto top clear store 1 to row do while .not. eof() if inumber <> 0 .and. dtoc(lastprt) = (' / / ') .and.date() > date+60 @ row,0 say str(inumber) + ' ' + dtoc(date) + ' not printed' store row+1 to row endif if inumber <> 0 .and. totcost + tax <> amtpaid+amtpaid1+amtpaid2+amtpaid3.and.date>ctod('01/01/2011').and.date() > date+60 store totcost-amtpaid-amtpaid1-amtpaid2-amtpaid3 to kkk @ row,0 say str(inumber) + ' ' + dtoc(date) + str(kkk,8,2) + ' not paid' store row+1 to row endif if row > 20 wait store 1 to row @ 4,0 clear endif skip enddo @ 23,0 say ' ' wait clear endif @ 4,0 clear endif *SKIP 0 SELECT 4 *SKIP 0 SELECT 1 @ 0,72 SAY TTIME SET COLOR TO 14 IF VSEL = 'I' @ 0,25 SAY 'ADD/EDIT/PRINT SINGLE INVOICE' ENDIF IF VSEL = 'Q' @ 0,37 SAY 'QUOTES' ENDIF IF VSEL = 'W' @ 0,35 SAY 'WORK ORDERS' ENDIF SET COLOR TO 11 *TO INCREMENT NUMBERS IF VAL(ENCUST) = 99999 STORE VAL(ENCUST) +1 TO ENCUST DO WHILE .T. IF ENCUST <10 STORE STR(ENCUST,1,0) TO ENCUST EXIT ENDIF IF ENCUST <100 STORE STR(ENCUST,2,0) TO ENCUST EXIT ENDIF IF ENCUST <1000 STORE STR(ENCUST,3,0) TO ENCUST EXIT ENDIF STORE STR(ENCUST,8,0) TO ENCUST EXIT ENDDO ENDIF SET DELIMITER ON STORE ENCUST + SPACE(20) TO ENCUST STORE SUBSTR(ENCUST,1,20) TO ENCUST SELECT 9 USE IF VSEL = 'I' @ 4,0 SAY 'Enter cust name,inv#,quo#,wo#,L = last 10 invoices - ' get encust picture '!!!!!!!!!!!!!!!!!!!!' ENDIF IF VSEL = 'Q' @ 4,0 SAY 'Enter cust name or quote number - ' get encust picture '!!!!!!!!!!!!!!!!!!!!' ENDIF IF VSEL = 'W' @ 4,0 SAY 'Enter cust name or work order number - ' get encust picture '!!!!!!!!!!!!!!!!!!!!' ENDIF @ 8,0 SAY 'Press ENTER only to SEARCH files' @ 10,0 SAY 'Enter EDIT for special editing features' *MII WILL NOT BE 0 IF A WO OR QUO IS AUTOMATICALLY TRANSFERING IF MII = 0 READ ELSE CLEAR GETS ENDIF IF SUBSTR(ENCUST,1,5) = 'L ' SELECT 2 SET ORDER TO 1 GOTO BOTT STORE 8 TO ROW @ 5,0 CLEAR STORE 10 TO CCC @ 6,0 SAY 'INV # NAME QUOTE# WO# TOTAL AMT' @ 7,0 SAY '----------------------------------------------------------------------------' DO WHILE .NOT. BOF() STORE CUSTNUM TO LL SELECT 1 SEEK LL STORE NAME TO MNAME SELECT 2 @ ROW,0 SAY STR(INUMBER,5,0) + ' ' + MNAME + ' ' + STR(QNUMBER,5,0) + ' ' + STR(SNUMBER,5,0) + ' ' + STR(TOTCOST,12,2) STORE ROW+1 TO ROW SKIP -1 STORE CCC-1 TO CCC IF CCC = 0 EXIT ENDIF ENDDO SELECT 2 SET ORDER TO 1 SKIP 0 ? ' ' WAIT LOOP ENDIF STORE 0 TO MII IF CL = 1 PRESSED = LASTKEY() IF PRESSED = 27 RETURN ENDIF ENDIF IF ENCUST = 'PASS' STORE ' ' TO ACCC @ 10,0 SAY 'ENTER ACCESS CODE TO DELETE WORK ORDER - ' GET ACCC PICTURE '!!!!!!!!!' DO PASSWORD IF PWOK <> 'Y' QUIT ENDIF ENDIF *ADDED ON 12/01/94 IF VAL(ENCUST) <> 0 STORE SUBSTR(ENCUST,1,5) TO ENCUST ENDIF IF VSEL = 'I' .AND. VAL(ENCUST) > 1100 .AND. VAL(ENCUST) < 6000 SELECT 2 SET ORDER TO 3 STORE VAL(ENCUST) TO LINV SEEK LINV IF EOF() ? ? CHR(7) ? 'WO NOT FOUND' ? LOOP ENDIF IF INUMBER <> 0 STORE STR(INUMBER,5,0) TO ENCUST ELSE @ 6,0 clear STORE 'N' TO TTWO STORE CUSTNUM TO XC SELECT 1 SET ORDER TO 1 SEEK XC STORE NAME TO XNAME SELECT 2 @ 6,0 SAY 'CUSTOMER NAME - ' + XNAME RELEASE XC,XNAME @ 8,0 SAY 'TRANSFER THIS WO# INTO A INVOICE (Y/N) - ' GET TTWO PICTURE '!' READ IF TTWO <> 'Y' LOOP ENDIF STORE 1 TO MWW,MII STORE 0 TO MWQ DO TRANSFER CLEAR GETS STORE STR(MII,5,0) TO ENCUST LOOP ENDIF ENDIF SELECT 1 IF VSEL = 'I' .AND. VAL(ENCUST) > 8000 .AND. VAL(ENCUST) < 15000 SELECT 2 SET ORDER TO 2 STORE VAL(ENCUST) TO LINV SEEK LINV IF EOF() ? ? CHR(7) ? 'QUOTE NOT FOUND' ? LOOP ENDIF IF INUMBER <> 0 STORE STR(INUMBER,5,0) TO ENCUST ELSE @ 6,0 clear STORE 'N' TO TTWO STORE CUSTNUM TO XC SELECT 1 SET ORDER TO 1 SEEK XC STORE NAME TO XNAME SELECT 2 @ 6,0 SAY 'CUSTOMER NAME - ' + XNAME RELEASE XC,XNAME @ 7,0 SAY 'TRANSFER THIS QUOTE INTO A INVOICE (Y/N) - ' GET TTWO PICTURE '!' READ IF TTWO <> 'Y' LOOP ENDIF STORE 1 TO MWQ,MII STORE 0 TO MWW DO TRANSFER CLEAR GETS STORE STR(MII,5,0) TO ENCUST LOOP ENDIF ENDIF SELECT 2 IF VSEL = 'I' SET ORDER TO 1 ENDIF IF VSEL = 'Q' SET ORDER TO 2 ENDIF IF VSEL = 'W' SET ORDER TO 3 ENDIF SELECT 1 *IF SUBSTR(ENCUST,1,5) = 'SCAN' * DO SCANMODE * LOOP *ENDIF IF SUBSTR(ENCUST,1,5) = ' ' STORE MSNAME + SPACE(15) TO MSNAME STORE SUBSTR(MSNAME,1,15) TO MSNAME STORE MSSTRING + SPACE(10) TO MSSTRING STORE SUBSTR(MSSTRING,1,10) TO MSSTRING STORE MSPERSON + SPACE(10) TO MSPERSON STORE SUBSTR(MSPERSON,1,10) TO MSPERSON STORE MSSTRING1 + SPACE(10) TO MSSTRING1 STORE SUBSTR(MSSTRING1,1,10) TO MSSTRING1 @ 7,0 CLEAR @ 7,0 SAY SEP @ 7,30 SAY '<<< SEARCH FIELDS >>>' STORE 'N' TO EDIT STORE 'A' TO LALL @ 9,0 SAY 'CO NAME - ' COLOR '3,4' GET MSNAME PICTURE '!!!!!!!!!!!!!!!' COLOR '3,4' @ 10,0 SAY 'SEARCH I=Invoice only, Q=Quote only, W=Workorder only, A=ALL - ' GET LALL PICTURE '!' @ 11,0 SAY 'STRING #1 - ' GET MSSTRING PICTURE '!!!!!!!!!!' @ 12,0 SAY 'STRING #2 (AND) - ' GET MSSTRING1 PICTURE '!!!!!!!!!!' STORE ' ' TO TOPBOT * @ 13,0 SAY 'STATUS .... - ' GET MSTATUS PICTURE '!!' * @ 9,40 SAY 'EDIT FILES - ' GET EDIT PICTURE '!' * @ 10,40 SAY 'INV NUMBER - ' GET XINV * @ 11,40 SAY 'TOT AMOUNT - ' GET XAMT PICTURE '9999999.99' * @ 12,40 SAY 'PRT DATE - ' GET MSDATE * @ 12,67 SAY '- ' GET MEDATE READ IF CL = 1 PRESSED = LASTKEY() IF PRESSED = 27 RETURN ENDIF ENDIF STORE 0 TO PLOOP IF SUBSTR(MSPERSON,1,2) <> ' ' .OR. SUBSTR(MSNAME,1,2) <> ' ' .OR. SUBSTR(MSSTRING,1,2) <> ' ' .OR. XINV <> 0 .OR. DTOC(MSDATE) <> '01/01/80' .OR. DTOC(MEDATE) <> '12/31/99' STORE VSEL TO MVSEL,SAA DO VINVOICE IF MVSEL = 'I' SELECT 2 USE INVOICE INDEX INUMM,QNUMM,SNUMM,XDATE *USE INVOICE INDEX INUMM,QNUMM,SNUMM SET ORDER TO 1 SELECT 4 USE INVMAIN INDEX INVMAIN,QUOMAIN,SCHMAIN SET ORDER TO 1 ENDIF IF MVSEL = 'Q' SELECT 2 USE INVOICE INDEX INUMM,QNUMM,SNUMM,XDATE *USE INVOICE INDEX INUMM,QNUMM,SNUMM SET ORDER TO 2 SELECT 4 USE INVMAIN INDEX INVMAIN,QUOMAIN,SCHMAIN SET ORDER TO 2 ENDIF IF MVSEL = 'W' SELECT 2 USE INVOICE INDEX INUMM,QNUMM,SNUMM,XDATE *USE INVOICE INDEX INUMM,QNUMM,SNUMM SET ORDER TO 3 SELECT 4 USE INVMAIN INDEX INVMAIN,QUOMAIN,SCHMAIN SET ORDER TO 3 ENDIF RELEASE MVSEL SET FILTER TO STORE SAA TO VSEL LOOP ENDIF ENDIF IF VAL(ENCUST) = 0 .AND. SUBSTR(ENCUST,1,5) = ' ' LOOP ENDIF ***FIND CUSTOMER @ 7,0 CLEAR IF VAL(ENCUST) < 999 SELECT 1 SET ORDER TO 2 SET EXACT OFF store upper(TRIM(ENCUST)) to ENCUST * FIND &ENCUST LOCATE FOR AT(ENCUST,NAME) <> 0 .OR. AT(ENCUST,COMMENTS) <> 0 .OR. AT(ENCUST,address) <> 0 .OR. AT(ENCUST,address1) <> 0 .OR. AT(ENCUST,CSZ) <> 0 IF EOF() .OR. RECNO() = 0 @ 5,0 CLEAR STORE ' ' TO SEPP @ 5,0 SAY 'CUSTOMER NOT FOUND .. ADD (Y/N) - ' GET SEPP PICTURE '!' READ IF CL = 1 PRESSED = LASTKEY() IF PRESSED = 27 RETURN ENDIF ENDIF @ 7,0 SAY ' ' IF SEPP <> 'Y' LOOP ENDIF SELECT 9 STORE 'LASTNUM' TO DNET DO NETERROR STORE CUSTNUM TO MCUSTNUM IF MCUSTNUM = 0 ? CHR(7) CLEAR @ 3,0 SAY 'CUSTOMER NUMBER = 0 ----- CALL SCOTT !!!!!' ? ' ' WAIT RETURN ENDIF STORE CUSTNUM+1 TO MCU DO LOCKWAIT REPLACE CUSTNUM WITH MCU RELEASE MCU UNLOCK SELECT 1 STORE 'Y' TO DNETAPPEND DO NETERROR DO LOCKWAIT REPLACE NAME WITH ENCUST REPLACE CUSTNUM WITH MCUSTNUM UNLOCK DO ADDCUST UNLOCK @ 5,0 CLEAR ELSE STORE RECNO() TO PPP CONTINUE IF .NOT. EOF() STORE 10 TO ROW GOTO PPP STORE LASTINQ TO DDATE STORE CUSTNUM TO XINQ STORE STR(CUSTNUM,6,0) + ' ' + SUBSTR(NAME,1,25) + ' ' + DTOC(LASTINQ) + ' ' + COMMENTS TO LLL @ ROW,0 SAY LLL STORE ROW+1 TO ROW CONTINUE @ ROW-3,0 SAY 'CUST # NAME LAST INQUIRE COMMENTS' @ ROW-2,0 SAY '-------------------------------------------------------------------------' DO WHILE .NOT. EOF() STORE STR(CUSTNUM,6,0) + ' ' + SUBSTR(NAME,1,25) + ' ' + DTOC(LASTINQ) + ' ' + COMMENTS TO LLL @ ROW,0 SAY LLL *KEEP RECENT INVOICE CUSTOMER 1ST ON LOOKUP IF LASTINQ > DDATE STORE CUSTNUM TO XINQ STORE LASTINQ TO DDATE ENDIF STORE ROW+1 TO ROW STORE 0 TO HH1 IF ROW > ROW21 @ ROW23,0 CLEAR @ ROW24,0 SAY 'Screen full Enter customer #, ENTER to continue list, ESC to exit -' GET HH1 SET COLOR TO 6* @ ROW24,18 say 'customer #' @ ROW24,30 SAY 'ENTER' @ ROW24,54 SAY 'ESC' SET COLOR TO 11 READ PRESSED = LASTKEY() IF PRESSED = 27 EXIT ENDIF @ ROW23,0 CLEAR STORE 10 TO ROW @ 10,0 CLEAR IF HH1 <> 0 EXIT ENDIF ENDIF CONTINUE ENDDO IF PRESSED = 27 LOOP ENDIF STORE ROW+2 TO ROW @ ROW,0 SAY ' ' STORE XINQ TO RTY IF RECNO() <> PPP @ ROW,0 CLEAR @ ROW,0 SAY 'ENTER CUSTOMER NUMBER - ' GET RTY READ IF CL = 1 PRESSED = LASTKEY() IF PRESSED = 27 LOOP ENDIF ENDIF ENDIF @ 10,0 CLEAR IF RTY = 0 LOOP ENDIF SET ORDER TO 1 SEEK RTY ELSE GOTO PPP ENDIF @ 4,50 SAY SPACE(80) @ 4,50 SAY STR(CUSTNUM,4,0) + '-' + SUBSTR(NAME,1,24) ENDIF DO LOCKWAIT REPLACE LASTINQ WITH DATE() UNLOCK STORE RECNO() TO CUSTREC STORE CUSTNUM TO MMCUSTNUM STORE INUMBER TO MINUMBER STORE QNUMBER TO MQNUMBER STORE SNUMBER TO MSNUMBER STORE LINVDATE TO MLINVDATE STORE LQUODATE TO MLQUODATE STORE LSCHDATE TO MLSCHDATE STORE PERSON TO MPPER STORE EMP TO MEMP STORE ' ' TO LA * @ 7,50 SAY 'CREATED - ' + DTOC(DATE) * STORE PERSON TO MPERSON STORE DATE() - MLINVDATE TO MMINV STORE DATE() - MLQUODATE TO MMQUO STORE DATE() - MLSCHDATE TO MMSCH SELECT 2 SET ORDER TO 1 SEEK MINUMBER IF MINUMBER <> 0 STORE PERSON TO L1 ELSE STORE ' ' TO L1 ENDIF SET ORDER TO 2 SEEK MQNUMBER IF MQNUMBER <> 0 STORE PERSON TO L2 ELSE STORE ' ' TO L2 ENDIF SET ORDER TO 3 SEEK MSNUMBER IF MSNUMBER <> 0 STORE PERSON TO L3 ELSE STORE ' ' TO L3 ENDIF IF VSEL = 'I' SET ORDER TO 1 ENDIF IF VSEL = 'Q' SET ORDER TO 2 ENDIF IF VSEL = 'W' SET ORDER TO 3 ENDIF SELECT 1 IF SUBSTR(FNAME,1,2) <> ' ' STORE 'Y' TO MFNAME ENDIF IF VSEL = 'I' @ 5,0 SAY 'Inv # (L)ast Inv, (A)dd Inv, (P)revious Inv, (N)previous Q/W/I - ' get la picture '!!!!!' @ 7,0 SAY 'LAST INVOICE NUMBER - ' + STR(MINUMBER,8,0) + ' ' + DTOC(MLINVDATE) + ' ' + STR(MMINV,4,0) + ' ' + SUBSTR(L1,1,20) @ 9,0 SAY 'LAST QUOTE NUMBER - ' + STR(MQNUMBER,8,0) + ' ' + DTOC(MLQUODATE) + ' DAYS OLD - ' + STR(MMQUO,4,0) + ' ' + SUBSTR(L2,1,20) @ 10,0 SAY 'LAST WORK ORDER NUMBER - ' + STR(MSNUMBER,8,0) + ' ' + DTOC(MLSCHDATE) + ' ' + STR(MMSCH,4,0) + ' ' + SUBSTR(L3,1,20) ENDIF IF VSEL = 'Q' @ 5,0 SAY 'Quo # (L)ast Quo, (A)dd Quo, (P)revious Quo, (N)previous Q/W/I - ' get la picture '!!!!!' @ 7,0 SAY 'LAST QUOTE NUMBER - ' + STR(MQNUMBER,8,0) + ' ' + DTOC(MLQUODATE) + ' DAYS OLD - ' + STR(MMQUO,4,0) + ' ' + SUBSTR(L2,1,20) @ 9,0 SAY 'LAST INVOICE NUMBER - ' + STR(MINUMBER,8,0) + ' ' + DTOC(MLINVDATE) + ' ' + STR(MMINV,4,0) + ' ' + SUBSTR(L1,1,20) @ 10,0 SAY 'LAST WORK ORDER NUMBER - ' + STR(MSNUMBER,8,0) + ' ' + DTOC(MLSCHDATE) + ' ' + STR(MMSCH,4,0) + ' ' + SUBSTR(L3,1,20) ENDIF IF VSEL = 'W' @ 5,0 SAY 'WO # (L)ast WO, (A)dd WO, (P)revious WO , (N)previous Q/W/I - ' get la picture '!!!!!' @ 7,0 SAY 'LAST WORK ORDER NUMBER - ' + STR(MSNUMBER,8,0) + ' ' + DTOC(MLSCHDATE) + ' ' + STR(MMSCH,4,0) + ' ' + SUBSTR(L3,1,20) @ 9,0 SAY 'LAST INVOICE NUMBER - ' + STR(MINUMBER,8,0) + ' ' + DTOC(MLINVDATE) + ' ' + STR(MMINV,4,0) + ' ' + SUBSTR(L1,1,20) @ 10,0 SAY 'LAST QUOTE NUMBER - ' + STR(MQNUMBER,8,0) + ' ' + DTOC(MLQUODATE) + ' ' + STR(MMQUO,4,0) + ' ' + SUBSTR(L2,1,20) ENDIF DO IHISTORY READ IF CL = 1 PRESSED = LASTKEY() IF PRESSED = 27 LOOP ENDIF ENDIF STORE ' ' TO ACCC @ ROW24,0 CLEAR IF SUBSTR(LA,1,10) = ' ' .OR. (SUBSTR(LA,1,1) <> 'A' .AND. SUBSTR(LA,1,1) <> 'L' .AND. SUBSTR(LA,1,1) <> 'P' .AND. SUBSTR(LA,1,1) <> 'N' .AND. VAL(LA) = 0) LOOP ENDIF IF LA = 'P' .OR. LA = 'N' SELECT 2 SET INDEX TO SKIP 0 STORE RECNO() TO AS GOTO BOTT IF VSEL = 'I' STORE 'INUMBER <> 0' TO MTEMP1 STORE 'INUMBER = 0' TO MTEMP2 STORE 'STR(INUMBER,5,0)' TO MTEMP3 IF DTOC(LASTPRT) <> ' / / ' STORE 'STR(INUMBER,5,0)+"B"' TO MTEMP3 ENDIF STORE AMTPAID+AMTPAID1+AMTPAID2+AMTPAID3 TO LLR IF LLR = (TOTCOST + TAX) .AND. LLR <> 0 STORE 'STR(INUMBER,5,0)+"P"' TO MTEMP3 ENDIF ENDIF IF VSEL = 'W' STORE 'SNUMBER <> 0' TO MTEMP1 STORE 'SNUMBER = 0' TO MTEMP2 STORE 'STR(SNUMBER,5,0)' TO MTEMP3 ENDIF IF VSEL = 'Q' STORE 'QNUMBER <> 0' TO MTEMP1 STORE 'QNUMBER = 0' TO MTEMP2 STORE 'STR(QNUMBER,5,0)' TO MTEMP3 ENDIF DO WHILE .NOT. BOF() IF LA = 'N' IF MMCUSTNUM = CUSTNUM EXIT ENDIF ELSE IF MMCUSTNUM = CUSTNUM .AND. &MTEMP1 EXIT ENDIF ENDIF SKIP -1 ENDDO STORE 14 TO ROW @ 12,0 CLEAR IF VSEL = 'W' @ 12,0 SAY ' # DATE PRT DATE TOTAL AMT PROBLEM' ELSE @ 12,0 SAY ' # DATE PRT DATE PD TOTAL AMT 1ST LINE DESC PERSON' ENDIF @ 13,0 SAY '------|----------|---------|--|----------|-------------------------|-------------' DO WHILE .NOT. BOF() PRESSED = INKEY() IF PRESSED = 27 EXIT ENDIF IF LA = 'N' IF MMCUSTNUM <> CUSTNUM SKIP -1 LOOP ENDIF ELSE IF MMCUSTNUM <> CUSTNUM .OR. &MTEMP2 SKIP -1 LOOP ENDIF ENDIF IF VSEL = 'I' STORE INUMBER TO RR @ 12,0 SAY 'INV' ENDIF IF VSEL = 'W' STORE SNUMBER TO RR @ 12,0 SAY 'WO ' ENDIF IF VSEL = 'Q' STORE QNUMBER TO RR @ 12,0 SAY 'QUO' ENDIF STORE AMTPAID+AMTPAID1+AMTPAID2+AMTPAID3 TO LLR IF LLR = (TOTCOST + TAX) .AND. LLR <> 0 STORE 'Y' TO MPD ELSE STORE ' ' TO MPD ENDIF IF LA = 'N' SET CENTURY OFF @ ROW,0 SAY ' ' + ' | ' + DTOC(DATE) + ' | ' + DTOC(LASTPRT) + '|' + MPD + ' |' + STR(TOTCOST,10,2) + '|' SET CENTURY ON IF INUMBER <> 0 STORE INUMBER TO RR @ ROW,0 SAY 'I' SELECT 4 SET ORDER TO 1 SKIP 0 SELECT 2 ENDIF IF QNUMBER <> 0 STORE QNUMBER TO RR @ ROW,2 SAY 'Q' SELECT 4 SET ORDER TO 2 SKIP 0 SELECT 2 ENDIF IF SNUMBER <> 0 STORE SNUMBER TO RR @ ROW,4 SAY 'W' SELECT 4 SET ORDER TO 3 SKIP 0 SELECT 2 ENDIF ELSE SET CENTURY OFF @ ROW,0 SAY SUBSTR(&MTEMP3,1,5) + ' | ' + DTOC(DATE) + ' | ' + DTOC(LASTPRT) + '|' + MPD + ' |' + STR(TOTCOST,10,2) + '|' SET CENTURY ON ENDIF IF VSEL = 'W' .AND. PROBLEM <> ' ' @ ROW,43 SAY SUBSTR(PROBLEM,1,25) ELSE SELECT 2 STORE PERSON TO UU SELECT 4 SEEK RR if .not. eof() @ ROW,43 SAY SUBSTR(DESC,1,25)+ ' ' + SUBSTR(UU,1,13) ELSE @ ROW,43 SAY 'EOF() NO LINES FOUND' ENDIF ENDIF STORE ROW+1 TO ROW SELECT 2 SKIP -1 PRESSED = LASTKEY() PRESSED1 = INKEY() IF PRESSED = 27 .OR. PRESSED1 = 27 EXIT ENDIF IF ROW = ROW22 STORE ' ' TO YY @ ROW+2,0 SAY 'SCREEN FULL ... PRESS RETURN FOR MORE ' GET YY READ IF CL = 1 PRESSED = LASTKEY() IF PRESSED = 27 EXIT ENDIF ENDIF STORE 14 TO ROW @ 14,0 CLEAR LOOP ENDIF ENDDO SELECT 2 USE INVOICE INDEX INUMM,QNUMM,SNUMM,XDATE GOTO AS IF VSEL = 'I' SET ORDER TO 1 ENDIF IF VSEL = 'Q' SET ORDER TO 2 ENDIF IF VSEL = 'W' SET ORDER TO 3 ENDIF SKIP 0 SELECT 4 IF VSEL = 'I' SET ORDER TO 1 ENDIF IF VSEL = 'Q' SET ORDER TO 2 ENDIF IF VSEL = 'W' SET ORDER TO 3 ENDIF SKIP 0 SELECT 2 IF PRESSED = 27 LOOP ENDIF ? ' ' WAIT 'END OF LIST ... PRESS RETURN TO CONTINUE ' TO YY @ 12,0 CLEAR LOOP ENDIF IF LA = 'L' IF VSEL = 'I' STORE INUMBER TO LINV ENDIF IF VSEL = 'Q' STORE QNUMBER TO LINV ENDIF IF VSEL = 'W' STORE SNUMBER TO LINV ENDIF IF LINV = 0 ? ? 'CUSTOMER DOES NOT HAVE A LAST NUMBER' ? WAIT LOOP ENDIF SELECT 2 SEEK LINV IF EOF() @ 4,0 CLEAR @ 4,0 SAY ' ' ? CHR(7) IF VSEL = 'I' ? 'LAST INVOICE NOT FOUND ... YOU MAY HAVE A PROBLEM' + STR(LINV,8,0) ENDIF IF VSEL = 'Q' ? 'LAST QUOTE NOT FOUND ... YOU MAY HAVE A PROBLEM' + STR(LINV,8,0) ENDIF IF VSEL = 'W' ? 'LAST WORK ORDER NOT FOUND ... YOU MAY HAVE A PROBLEM' + STR(LINV,8,0) ENDIF ? WAIT LOOP ELSE IF MMCUSTNUM <> CUSTNUM ? 'CUSTOMER NUMBER HAS BEEN CHANGED, DOES NOT MATCH LAST CUSTOMER NUMBER' ? WAIT LOOP ENDIF ENDIF ENDIF IF LA = 'A' **ADD NEW RECORD SELECT 2 GOTO TOP SET EXCLUSIVE OFF IF VSEL = 'I' *CHECK FOR DELETED NUMBER SELECT 9 IF ALIAS() <> 'INVDEL' STORE 'INVDEL' TO DNET DO NETERROR ENDIF LOCATE FOR INUMBER = 1111111 *BYPASSED DELETED NUMBER SEARCH *LOCATE FOR INUMBER <> 0 IF .NOT. EOF() @ ROW24,0 SAY 'GETTING NUMBER FROM DELETED NUMBER FILE "INVDEL"' STORE INUMBER TO MINUM DELETE PACK ELSE SELECT 9 IF ALIAS() <> 'LASTNUM' STORE 'LASTNUM' TO DNET DO NETERROR ENDIF GOTO 1 STORE INUMBER TO MINUM ENDIF SELECT 2 SEEK MINUM @ ROW24,0 SAY 'CHECKING DUPLICATES FOR ' + STR(MINUM,8,0) IF .NOT. EOF() ? CHR(7) @ ROW23,0 SAY 'ERROR ... DUPLICATE INVOICES NUMBERS FOUND !!!' + STR(MINUM,5,0) WAIT RETURN ENDIF DO WHILE .T. SELECT 4 SEEK MINUM IF .NOT. EOF() IF INUMBER = MINUM DO LOCKWAIT REPLACE INUMBER WITH 0 UNLOCK ENDIF SKIP 0 ELSE EXIT ENDIF ENDDO SELECT 2 STORE 'Y' TO MCREATE STORE 'Y' TO DNETAPPEND DO NETERROR REPLACE INUMBER WITH MINUM REPLACE USER WITH MUSER REPLACE PERSON WITH MPPER REPLACE EMP WITH MEMP UNLOCK SKIP 0 STORE 'Y' TO INEW ENDIF IF VSEL = 'Q' SELECT 9 IF ALIAS() <> 'INVDEL' STORE 'INVDEL' TO DNET DO NETERROR ENDIF LOCATE FOR QNUMBER = 1111111 *BYPASSED DELETED NUMBER SEARCH *LOCATE FOR QNUMBER <> 0 IF .NOT. EOF() @ ROW24,0 CLEAR @ ROW24,0 SAY 'GETTING NUMBER FROM DELETED NUMBER FILE "INVDEL"' STORE QNUMBER TO MINUM DELETE PACK ELSE SELECT 9 IF ALIAS() <> 'LASTNUM' STORE 'LASTNUM' TO DNET DO NETERROR ENDIF GOTO 1 STORE QNUMBER TO MINUM ENDIF SELECT 2 @ ROW24,0 CLEAR @ ROW24,0 SAY 'CHECKING DUPLICATES FOR ' + STR(MINUM,8,0) GOTO BOTTOM SKIP -10 DO WHILE .NOT. EOF() IF QNUMBER = MINUM ? CHR(7) @ ROW23,0 SAY 'ERROR ... DUPLICATE QUOTE NUMBERS FOUND !!!' + STR(MINUM,5,0) WAIT RETURN ENDIF SKIP ENDDO DO WHILE .T. SELECT 4 SEEK MINUM IF .NOT. EOF() IF QNUMBER = MINUM DO LOCKWAIT REPLACE QNUMBER WITH 0 UNLOCK ENDIF SKIP 0 ELSE EXIT ENDIF ENDDO SELECT 2 STORE 'Y' TO MCREATE STORE 'Y' TO DNETAPPEND STORE ' ' TO DNET DO NETERROR REPLACE QNUMBER WITH MINUM REPLACE PERSON WITH MPPER REPLACE EMP WITH MEMP UNLOCK SKIP 0 ENDIF IF VSEL = 'W' SELECT 9 IF ALIAS() <> 'INVDEL' STORE 'INVDEL' TO DNET DO NETERROR ENDIF LOCATE FOR SNUMBER = 1111111 *BYPASSED DELETED NUMBER SEARCH *LOCATE FOR SNUMBER <> 0 IF .NOT. EOF() @ ROW24,0 CLEAR @ ROW24,0 SAY 'GETTING NUMBER FROM DELETED NUMBER FILE "INVDEL"' STORE SNUMBER TO MINUM DELETE PACK ELSE SELECT 9 IF ALIAS() <> 'LASTNUM' STORE 'LASTNUM' TO DNET DO NETERROR ENDIF GOTO 1 STORE SNUMBER TO MINUM ENDIF SELECT 2 @ ROW24,0 CLEAR @ ROW24,0 SAY 'CHECKING DUPLICATES FOR ' + STR(MINUM,8,0) GOTO BOTTOM SKIP -10 DO WHILE .NOT. EOF() IF SNUMBER = MINUM ? CHR(7) @ ROW23,0 SAY 'ERROR ... DUPLICATE WORK ORDER NUMBERS FOUND !!!' + STR(MINUM,5,0) WAIT RETURN ENDIF SKIP ENDDO DO WHILE .T. SELECT 4 SEEK MINUM IF .NOT. EOF() IF QNUMBER = MINUM DO LOCKWAIT REPLACE SNUMBER WITH 0 UNLOCK ENDIF SKIP 0 ELSE EXIT ENDIF ENDDO SELECT 2 STORE 'Y' TO MCREATE STORE 'Y' TO DNETAPPEND DO NETERROR REPLACE SNUMBER WITH MINUM UNLOCK SKIP 0 STORE 'Y' TO WNEW ENDIF SELECT 2 STORE MINUM TO LINV DO LOCKWAIT REPLACE DATE WITH DATE() REPLACE PERSON WITH MPPER REPLACE TIME WITH TIME() REPLACE EMP WITH MEMP UNLOCK SELECT 9 IF ALIAS() <> 'LASTNUM' STORE 'LASTNUM' TO DNET DO NETERROR ENDIF @ ROW24,0 CLEAR @ ROW24,0 SAY 'INCREMENTING LAST NUMBER IN LASTNUM.DBF ' GOTO 1 DO LOCKWAIT IF VSEL = 'I' STORE INUMBER+1 TO LI REPLACE INUMBER WITH LI ENDIF IF VSEL = 'Q' STORE QNUMBER+1 TO LI REPLACE QNUMBER WITH LI ENDIF IF VSEL = 'W' STORE SNUMBER+1 TO LI REPLACE SNUMBER WITH LI ENDIF UNLOCK USE SET EXCLUSIVE OFF ELSE STORE 'N' TO MCREATE ENDIF IF VAL(LA) <> 0 STORE LA TO ENCUST ENDIF ENDIF *PROGRAM STARTS HERE AFTER ENTERING A NUMBER AT THE 1ST OR 2ND PROMPT IF VAL(ENCUST) > 999 STORE VAL(ENCUST) TO LINV ****LOCATE INVOICE SELECT 2 SEEK LINV IF EOF() @ 4,0 CLEAR @ 4,0 SAY ' ' ? CHR(7) IF VSEL = 'I' ? 'INVOICE NOT FOUND' ENDIF IF VSEL = 'Q' ? 'QUOTE NOT FOUND' ENDIF IF VSEL = 'W' ? 'WORK ORDER NOT FOUND' ENDIF ? WAIT LOOP ELSE *TRYING TO CHANGE CUSTOMER NUMBER IN INVOICE FILE !!! * IF CUSTNUM <> MMCUSTNUM IF CUSTNUM <> CUSTNUM STORE ' ' TO ACCC @ ROW24,0 SAY 'ENTER ACCESS CODE TO RE-ASSIGN FILE - ' GET ACCC PICTURE '!!!!!!!!!' DO PASSWORD IF PWOK <> 'Y' QUIT ENDIF ENDIF SKIP 0 STORE RECNO() TO MMREC *LOCATING CUSTOMER FOR THIS DIRECTLY ENTERED INV # STORE CUSTNUM TO MMCUSTNUM SELECT 1 SET ORDER TO 1 SEEK MMCUSTNUM STORE RECNO() TO CUSTREC SELECT 2 ENDIF ENDIF SELECT 1 STORE PHONE TO XPHONE STORE CONAME TO CKK IF RECNO() <> CUSTREC ? CHR(7) @ ROW22,0 CLEAR @ ROW22,0 SAY 'ERROR IN LOOKING BACK UP CUSTOMER FILE, PLEASE RE-INDEX' @ ROW23,0 SAY 'TEMPERARLY FORCING RECORD TO CORRECT ONE !!!' WAIT GOTO CUSTREC ENDIF STORE CUSTNUM TO MMCUSTNUM STORE NETDAYS TO MNETDAYS STORE NCOPY TO MNCOPY STORE PLIST TO MPLIST STORE NAME TO MNAME STORE TAXRATE TO MTAXRATE STORE RECNO() TO CUSTREC STORE POREQUIRED TO MPOREQ STORE FAX TO MFAX STORE PERSON TO MPERSON STORE EMP TO MEMP IF FNAME <> ' ' STORE 'S' TO WS ENDIF IF MNCOPY = 0 .AND. MPLIST = 0 ? CHR(7) ? ? 'ERROR - CUSTOMERS # INV AND # PACK LIST = 0' ? 'RECNO,NCOPY,PLIST,MNCOPY,MPLIST' ? STR(RECNO(),8,0),STR(NCOPY,8,0),STR(PLIST,8,0),STR(MNCOPY,8,0),STR(MPLIST,8,0) WAIT ENDIF SELECT 2 *MAKE SURE INVOICE = CUSTOMER #, NEEDED THIS WHEN CHANGING INVOICE NUMBER TO *NEW CUSTOMER NUMBER DO LOCKWAIT REPLACE CUSTNUM WITH MMCUSTNUM IF TAXRATE = 0 REPLACE TAXRATE WITH MTAXRATE ENDIF STORE TAXRATE TO MTAXRATE UNLOCK STORE INUMBER TO II STORE SNUMBER TO SS STORE QNUMBER TO QQ STORE RECNO() TO MMREC IF NCOPY <> 0 STORE NCOPY TO MNCOPY ENDIF IF PLIST <> 0 STORE PLIST TO MPLIST ENDIF IF MNCOPY = 0 .AND. MPLIST = 0 ? CHR(7) ? ? 'ERROR - INVOICE # INV AND # PACK LIST = 0' ? 'RECNO,NCOPY,PLIST,MNCOPY,MPLIST' ? STR(RECNO(),8,0),STR(NCOPY,8,0),STR(PLIST,8,0),STR(MNCOPY,8,0),STR(MPLIST,8,0) WAIT ENDIF **CACULATE TOTALS FOR THIS INVOICE STORE 0.00 TO SUBTOTAL,SUBTAX,TOTAL,PROFIT,MCOST SELECT 4 GOTO TOP STORE 'N' TO CSUM STORE 'N' TO COPF4 SEEK LINV IF .NOT. EOF() STORE 'Y' TO CSUM DO WHILE .T. IF &LLP3 EXIT ENDIF *MAKE SURE WHEN SELECT 2 HAS I,Q,W# THEN ALL SELECT 4'S MATCH IF INUMBER <> II .OR. SNUMBER <> SS .OR. QNUMBER <> QQ DO LOCKWAIT REPLACE INUMBER WITH II REPLACE SNUMBER WITH SS REPLACE QNUMBER WITH QQ UNLOCK ENDIF STORE LW1+STR(QTY,4,0)+';'+SUBSTR(PART,1,5)+';'+EMP + ';'+DESC+';'+STR(COST,8,2)+';'+STR(SELL,9,2)+';'+TAX+';' TO LW1 STORE MCOST + (QTY*COST) TO MCOST STORE PROFIT + (QTY*SELL)-(QTY*COST) TO PROFIT STORE SUBTOTAL + (QTY*SELL) TO SUBTOTAL * IF TAX = 'T' .OR. TAX = '*' .OR. TAX = 'C' IF TAX = 'T' .OR. TAX = '*' STORE SUBTAX + ((QTY*SELL)*MTAXRATE) TO SUBTAX STORE TOTAL + ((QTY*SELL)*MTAXRATE) + (QTY*SELL) TO TOTAL ELSE STORE TOTAL + (QTY*SELL) TO TOTAL * IF AT('CREDIT',DESC) <> 0 * DO LOCKWAIT * REPLACE TAX WITH 'C' * UNLOCK * ENDIF ENDIF IF SUBSTR(DESC,1,5) <> ' ' STORE 'Y' TO COPF4 ENDIF SKIP ENDDO IF COPF4 = 'Y' *All the data from the last called up file is stored in LW and executed *by pressing F4. *Strip out the serial/ numbers in memory variable LW1 STORE LW1 TO LW2 DO WHILE .T. *IF BUFFER IS EMPTY THEN DO NOT START IF LEN(TRIM(LW1)) < 10 EXIT ENDIF *Put this in here because stripping serial numbers did not work 11/03 exit STORE AT('S#',LW2) TO HH STORE AT('SN#',LW2) TO HH1 IF HH=0.AND.HH1=0 EXIT ENDIF IF HH <> 0 STORE HH TO HH3 DO WHILE .T. IF SUBSTR(LW2,HH3,1) = ';' EXIT ENDIF STORE HH3+1 TO HH3 ENDDO STORE SUBSTR(LW2,1,HH-1) + SUBSTR(LW2,HH3,999) TO LW2 ENDIF IF HH1 <> 0 STORE HH1 TO HH3 DO WHILE .T. IF SUBSTR(LW2,HH3,1) = ';' EXIT ENDIF STORE HH3+1 TO HH3 ENDDO STORE SUBSTR(LW2,1,HH1-1) + SUBSTR(LW2,HH3,999) TO LW2 ENDIF ENDDO STORE LW2 TO LW SET FUNCTION 4 TO LW ENDIF ENDIF STORE ROUND(PROFIT,2) TO PROFIT STORE ROUND(SUBTOTAL,2) TO SUBTOTAL STORE ROUND(SUBTAX,2) TO SUBTAX STORE ROUND(TOTAL,2) TO TOTAL STORE ROUND(MCOST,2) TO MCOST STORE 'N' TO MUPDATE1 STORE 'N' TO MUPDATE SELECT 2 IF CSUM = 'Y' SELECT 2 GOTO MMREC STORE ' ' TO MMM DO CHECKSUM IF CHECKSUM <> MMM @ ROW20,0 CLEAR STORE 'N' TO YYU @ ROW22,0 SAY 'INVALID CHECKSUM, RE-INDEX FILE (Y=BYPASS) - ' GET YYU PICTURE '!' @ ROW22,60 SAY 'RECORD # - ' + STR(RECNO(),8,0) READ IF YYU <> 'Y' RETURN ENDIF ENDIF RELEASE MMM ENDIF SELECT 2 GOTO MMREC DO DBTOMEM IF CONAME = ' ' * DO LOCKWAIT STORE CKK TO CONAME * UNLOCK ENDIF IF VSEL = 'W' .AND. SUBSTR(MNAME,1,4) <> 'TEMP' IF SUBSTR(DTOC(LASTPRT),1,2) = ' ' @ 0,0 SAY 'NOT INVOICED ' ELSE @ 0,0 SAY 'INVOICED-' + DTOC(LASTPRT) IF DTOC(LASTPRT) = '01/01/80' @ 0,0 SAY 'SERV CONTRACT ' ENDIF IF DTOC(LASTPRT) = '01/01/81' @ 0,0 SAY 'WARRANTY ' ENDIF ENDIF IF SUBSTR(DTOC(COMPLETED),1,2) = ' ' * @ 1,65 SAY 'NON COMPLETED' ELSE * @ 1,65 SAY 'COMPLETED ' ENDIF ENDIF @ 2,0 CLEAR @ ROW22,68 SAY STR(SUBTOTAL,10,2) @ ROW23,68 SAY STR(SUBTAX,10,2) @ ROW24,68 SAY STR(TOTAL,10,2) IF NONCOST = 'N' @ ROW23,59 SAY STR(MCOST,9,2) @ ROW23,50 SAY STR(PROFIT,10,2) ELSE @ ROW23,59 SAY STR(DCOST,9,2) ENDIF @ ROW24,0 SAY 'ESC TO PRINT/QUEUE/DELETE' *@ 2,0 SAY 'REC # - ' + STR(MMREC,8,0) IF VSEL = 'Q' STORE TIME() TO CALLBATI,MCALLBATI STORE ' ' TO WWQ IF DTOC(CALLBADA) = ' / / ' STORE DATE()+7 TO CALLBADA ENDIF * DO CACTIME * @ 2,67 SAY MCALLBATI + ' ' + WWQ ENDIF STORE 'Y' TO EDITINV IF VSEL = 'I' IF DTOC(LASTPRT) <> ' / / ' .AND. EDITINV = 'N' STORE 'N' TO EDITINV @ ROW24,0 SAY 'INVOICE ALREADY PRINTED ... NO CHANGES WILL BE SAVED ' ENDIF ENDIF IF VSEL = 'W' @ 1,0 SAY 'W-' + STR(SNUMBER,5,0) @ 1,9 SAY 'I-' + STR(INUMBER,5,0) @ 1,18 SAY 'Q-' + STR(QNUMBER,5,0) @ 1,29 SAY 'LAST PRINTED - ' + DTOC(WOPRINT) ENDIF IF VSEL = 'I' .OR. VSEL = 'Q' @ 2,0 SAY 'I-' + STR(INUMBER,5,0) @ 2,8 SAY 'Q-' + STR(QNUMBER,4,0) @ 2,16 SAY 'W-' + STR(SNUMBER,4,0) @ 2,24 SAY 'CREATED-' + DTOC(DATE) @ 2,45 SAY 'PO-' GET PO PICTURE '!!!!!!!!!!!!!!!!!!!!' * @ 2,67 SAY 'DUE-' GET IDUEDATE @ 3,0 SAY 'PRINT-' GET PRINT PICTURE '!' @ 3,11 SAY '#INV-' GET MNCOPY @ 3,21 SAY '#PACK-' GET MPLIST ENDIF SET DELIMITER ON IF VSEL = 'W' STORE 0 TO ROW ELSE STORE 31 TO ROW ENDIF @ 3,62 SAY 'PHONE#-' + STR(XPHONE,11,0) @ 3,ROW+1 SAY 'PERSON-' GET PERSON PICTURE '!!!!!!!!!!!!!!!!!!!' IF VSEL = 'W' CLEAR GETS @ 2,0 SAY 'EQUIP-' GET EQUIPMENT ENDIF SET DELIMITER OFF *IF VSEL = 'Q' * @ 4,0 SAY 'NEXTDUE - ' GET NEXTDUE PICTURE ' / / ' * @ 4,25 SAY 'DAYS BETWEEN BILLINGS - ' GET BILLDAYS *ENDIF IF VSEL = 'I' @ 4,0 SAY 'LASTPRT-' GET LASTPRT PICTURE '99/99/99' @ 4,20 SAY 'DUEDATE-' GET IDUEDATE PICTURE '99/99/99' @ 4,40 SAY 'RECDATE-' GET IRECDATE PICTURE '99/99/99' SET DELIMITER ON @ 4,60 SAY 'CHECKNUM-' GET CHECKNUM SET DELIMITER OFF ENDIF STORE ' ' TO MCOMM IF VSEL = 'W' SET DELIMITER ON * @ 3,0 SAY 'SPECIAL INSTRUCTIONS - ' GET SPECIAL PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!' @ 3,0 SAY 'PROBLEM -' GET PROBLEM @ 4,0 SAY 'ACTION -' GET ACTION @ 5,0 SAY 'COMPLETED-' GET COMPLETED PICTURE '99/99/99' @ 5,56 SAY 'START ON -' GET STARTON PICTURE '99/99/99' @ 6,0 SAY 'COMMENTS-' GET COMMENTS SET DELIMITER OFF @ 7,59 SAY 'TEC (J/D/H)-' GET EMP PICTURE '!!' @ 8,59 SAY 'Sercon/Warr- ' GET WS PICTURE '!' ELSE SET DELIMITER ON IF VSEL = 'Q' @ 4,0 SAY 'CALLBACK DATE - ' GET CALLBADA PICTURE '99/99/99' ENDIF @ 5,0 SAY 'COMMENTS-' GET COMMENTS PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' @ 5,62 SAY 'ND - ' GET MARKUP STORE AMTPAID+AMTPAID1+AMTPAID2+AMTPAID3 TO LLR @ 6,0 SAY 'AMTPAID - ' + STR(LLR,12,2) @ 6,ROW24 SAY 'TAXRATE - ' GET TAXRATE @ 6,62 SAY 'TEC -' GET EMP PICTURE '!!' *IF DBBB = 'SCOTT' .OR. DBBB = 'SUPERVISOR' STORE COMMISION TO MCOMM * IF MCOMM = '~' * STORE 'Y' TO MCOMM * ELSE * STORE ' ' TO MCOMM * ENDIF @ 7,59 SAY 'COMMISION PAID - ' GET MCOMM * IF COMMISION = '~' @ 8,59 SAY 'CO (CO,AG,PW,CP)-' GET CONAME * ENDIF * ENDIF SET DELIMITER OFF ENDIF SELECT 1 GOTO CUSTREC STORE CUSTNUM TO ZCUSTNUM @ 7,0 SAY 'CUSTOMERS NAME - ' + NAME STORE HRRATE TO MHRRATE @ 6,45 SAY 'HR RATE - ' + STR(MHRRATE,5,2) *@ 0,0 SAY 'LABOR RATE-' + STR(MHRRATE,5,0) *IF CUSTNUM = 1 @ 9,59 SAY 'CUST# -' GET ZCUSTNUM *ELSE * @ 9,59 SAY 'CUST# -' + STR(CUSTNUM,6,0) *ENDIF @ 8,0 SAY ' ADDRESS - ' + ADDRESS IF SUBSTR(ADDRESS1,1,5) = ' ' @ 9,0 SAY 'CITY/STATE/ZIP - ' + CSZ ELSE @ 9,0 SAY ' ADDRESS - ' + ADDRESS1 @ 10,0 SAY 'CITY/STATE/ZIP - ' + CSZ ENDIF IF PRINT = 'Y' @ ROW23,0 SAY 'QUEUED' ENDIF IF AT('W',STATUS) <> 0 @ ROW23,0 SAY 'WAITING PO' ENDIF IF AT('O',STATUS) <> 0 @ ROW23,0 SAY 'ON ORDER' ENDIF SELECT 2 STORE INUMBER TO QINUM STORE QNUMBER TO QQNUM STORE SNUMBER TO QSNUM STORE PERSON TO MPERSON SELECT 4 SEEK LINV IF EOF() STORE 'Y' TO DNETAPPEND STORE ' ' TO DNET DO NETERROR DO LOCKWAIT REPLACE INUMBER WITH QINUM REPLACE QNUMBER WITH QQNUM REPLACE SNUMBER WITH QSNUM REPLACE DATE WITH DATE() SELECT 2 STORE EMP TO MEMP SELECT 4 REPLACE EMP WITH MEMP UNLOCK ENDIF STORE 12 TO ROW SET COLOR TO 14 @ 10,0 SAY '--------------------------------------------------------------------------------' SET COLOR TO 11 SET KEY -1 TO ORDSTAT IF ORDSTAT = ' ' IF NONCOST = 'N' @ 11,0 SAY ' QTY|PART |T| DESCRIPTION |COST&SHP| SELL |T' ELSE @ 11,0 SAY ' QTY|PART |T| DESCRIPTION | | SELL |T' ENDIF ENDIF IF ORDSTAT = '1' SET KEY -1 TO ORDSTAT SET KEY -2 TO DUMMY *SET KEY -3 TO DUMMY SET KEY -4 TO DUMMY SET KEY -5 TO DUMMY SET KEY -6 TO DUMMY SET KEY -7 TO DUMMY SET KEY -8 TO DUMMY SET KEY -9 TO DUMMY @ 11,0 SAY ' QTY| PART #| DESCRIPTION |PAY INVOICE #' *@ 11,0 SAY ' QTY|PART |T| VNUM| NAME |ORD DATE|REC DATE' ENDIF STORE RECNO() TO LLP *FIRST DISPLAY OF LINE ITEMS SELECT 2 STORE VAL(SUBSTR(CHECKSUM,1,8)) TO LLT SELECT 5 IF ALIAS() <> 'INVENTORY' .OR. INDEXKEY(1) <> 'PNUM' USE STORE 'INVENTORY' TO DNET DO NETERROR USE INVENTORY INDEX PNUM ENDIF SELECT 6 IF ALIAS() <> 'INVSTOCK' USE STORE 'INVSTOCK' TO DNET DO NETERROR USE INVSTOCK ENDIF SELECT 4 SEEK LINV STORE '-' TO MM *FIRST PRINT OF LINE ITEMS *STORE 'Y' TO INCINV *STORE RECNO() TO L11 *DO ADJINV STORE ' ' TO ZEMP SELECT 4 *GOTO L11 DO WHILE .T. SELECT 4 STORE DESC TO MDESC **LOOK FOR PART NUMBER IF SUBSTR(PART,1,5) <> ' ' .AND. SUBSTR(MDESC,1,3) = ' ' STORE PART TO LL SELECT 5 FIND &LL IF EOF() SELECT 4 DO LOCKWAIT REPLACE DESC WITH 'PART NUMBER NOT FOUND' UNLOCK IF ORDSTAT = ' ' @ ROW,13 SAY DESC ENDIF ELSE SELECT 5 STORE PDESC TO MDESC11 STORE LCOST1 TO MCOST11 *REPLACE LABOR RATE WITH CUSTOMERS RATE IF LL = '90000' STORE MHRRATE TO MSELL11 ELSE STORE SELL TO MSELL11 ENDIF SELECT 4 DO LOCKWAIT STORE TRIM(MDESC11) + SUBSTR(MDESC,(LEN(TRIM(MDESC11)))+1,80) TO MDESC11 IF SUBSTR(DESC,1,5) = ' ' .OR. SUBSTR(DESC,1,21) = 'PART NUMBER NOT FOUND' REPLACE DESC WITH UPPER(MDESC11) REPLACE COST WITH MCOST11 REPLACE SELL WITH MSELL11 IF VAL(PART) < 90000 REPLACE TAX WITH '*' ENDIF * IF AT('CREDIT',DESC) <> 0 * REPLACE TAX WITH 'C' * ENDIF ENDIF UNLOCK STORE 'D' TO GET ENDIF ENDIF SELECT 4 STORE 'N' TO GET *CHECK FOR NO EMP ENTRY. IF EMP = BLANK THEN REPLACE WITH PREVIOUS IF EMP <> ' ' STORE EMP TO ZEMP ELSE IF ZEMP <> ' ' DO LOCKWAIT REPLACE EMP WITH ZEMP UNLOCK ENDIF ENDIF IF ROW <=ROW21 DO LINE1 ENDIF SKIP STORE LLT-1 TO LLT IF ROW21 = 21 STORE ROW+1 TO ROW ELSE STORE ROW+2 TO ROW ENDIF IF VSEL = 'I' IF INUMBER <> LINV .OR. EOF() EXIT ENDIF ENDIF IF VSEL = 'Q' IF QNUMBER <> LINV .OR. EOF() EXIT ENDIF ENDIF IF VSEL = 'W' IF SNUMBER <> LINV .OR. EOF() EXIT ENDIF ENDIF ENDDO @ ROW22,0 SAY '---------------------------------------------------------------------' @ ROW22,32 SAY MM IF ROW > ROW21 @ ROW22,31 SAY '<<< CONTINUED >>>' ENDIF STORE 12 TO ROW GOTO LLP IF LLT <> 0 .AND. LLT <> -1 @ ROW23,0 CLEAR @ ROW22,79 SAY ' ' ? CHR(7) @ ROW23,0 SAY 'CHECKSUM ERROR !!! TRY GOING TO MAIN MENU AND PRESS 2 RETURNS TO CLOSE FILES' WAIT 'IF THIS DOES NOT CORRECT THE PROBLEM REBUILD THE FILES' ENDIF READ SELECT 2 IF CUSTNUM <> ZCUSTNUM SELECT 1 SET ORDER TO 1 SEEK ZCUSTNUM IF .NOT. EOF() STORE RECNO() TO CUSTREC SELECT 2 DO LOCKWAIT REPLACE CUSTNUM WITH ZCUSTNUM STORE ZCUSTNUM TO MMCUSTNUM UNLOCK ENDIF ENDIF SELECT 4 IF PERSON = 'DP' STORE MPPER TO PERSON ENDIF *CHANGE COMMISION ONLY IF CODE IS CORRECT IF DBBB = 'SCOTT' IF MCOMM = '~' IF COMMISION = '~' STORE ' ' TO COMMISION ELSE STORE DATE() TO COMDATE STORE '~' TO COMMISION ENDIF ENDIF ENDIF RELEASE MCOMM STORE UPPER(DESC) TO DESC DO MEMTODB STORE 'Y' TO MUPDATE IF CL = 1 PRESSED = LASTKEY() IF PRESSED = 27 STORE 'Y' TO MEXIT ENDIF ENDIF SELECT 4 DO BOTTOM IF EDITINV = 'Y' *MAIN LOOP OF LINE ITEMS DO WHILE .T. SELECT 4 STORE QTY TO MQTY,MMQTY STORE PART TO MPART STORE EMP TO EMP STORE QTY TO QTY STORE DESC TO DESC STORE SN TO SN STORE COST TO COST STORE SELL TO SELL STORE INUMBER TO INUMBER STORE SNUMBER TO SNUMBER STORE PART TO PART STORE TAX TO TAX STORE QNUMBER TO QNUMBER STORE PURGE TO PURGE STORE VNUM TO VNUM STORE ORDDATE TO ORDDATE STORE RECDATE TO RECDATE STORE STATUS TO STATUS STORE INUSE TO INUSE STORE ALIGN TO ALIGN STORE PAYCOMMISI TO PAYCOMMISI STORE PAYINVNUM TO PAYINVNUM SELECT 9 USE SET COLOR TO 14 STORE 'Y' TO GET IF ORDSTAT = ' ' *HIGHLITE LINE IN RED IF MARKED FOR PAID IF PAYINVNUM <> ' ' SET COLOR TO 4 ENDIF @ ROW,0 SAY SPACE(80) @ ROW,0 GET MQTY @ ROW,4 SAY '|' @ ROW,5 GET PART @ ROW,10 SAY '|' @ ROW,11 GET EMP PICTURE '!' @ ROW,12 SAY '|' @ ROW,13 GET DESC PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' @ ROW,59 SAY '|' IF NONCOST = 'N' @ ROW,60 GET COST ELSE @ ROW,60 GET DCOST ENDIF @ ROW,68 SAY '|' @ ROW,70 GET SELL * @ ROW,78 SAY '|' @ ROW,79 GET TAX IF ROW21 <> 21 @ ROW+1,0 SAY 'SN - ' GET SN ENDIF STORE PART TO LL SELECT 5 * BLANK THESE OUT SO THAT QOH WILL NOT CACULATE ON EVERY LINE * STORE 0 TO MONHAND * IF SUBSTR(LL,1,5) <> ' ' * FIND &LL * IF .NOT. EOF() * STORE ONHAND TO MONHAND * SELECT 4 * @ ROW24,70 SAY SPACE(10) * @ ROW24,70 SAY 'QOH=' + STR(MONHAND,5,0) * ENDIF * ENDIF ENDIF STORE ' ' TO SEL IF ORDSTAT = '1' SET KEY -1 TO ORDSTAT SET KEY -2 TO SVEN1 SET KEY -4 TO SINVEN SET KEY -6 TO QPRTORD SET KEY -7 TO POREQU SET KEY -8 TO QPRTFILE * SET KEY -9 TO QPRTQUO @ ROW,0 SAY SPACE(80) @ ROW,0 SAY MQTY @ ROW,4 SAY '|' @ ROW,5 SAY PART @ ROW,10 SAY '|' @ ROW,11 SAY EMP @ ROW,12 SAY '|' @ ROW,13 SAY ' ' @ ROW,13 SAY DESC @ ROW,39 SAY '|' @ ROW,40 SAY SPACE(40) @ ROW,40 SAY COST @ ROW,50 SAY SELL SET DELIMITER ON @ ROW,59 GET PAYINVNUM SET DELIMITER OFF IF ROW21 <> 21 @ ROW+1,0 SAY 'SN - ' + SN ENDIF ENDIF SET CONFIRM ON READ SET CONFIRM OFF IF MTAXRATE = 0 .OR. MTAXRATE = 0.00 STORE ' ' TO TAX ENDIF SET COLOR TO 14 SELECT 4 IF M->COST <> 0 .AND. M->SELL = 0 STORE COST*1.35 TO SELL ENDIF STORE QTY TO LQTY STORE 'N' TO CHANGED STORE 'N' TO CHANGED1 IF MQTY <> MMQTY .OR. DESC <> M->DESC .OR. COST <> M->COST .OR. SELL <> M->SELL .OR. M->EMP <> EMP .OR. M->PAYCOMMISI <> PAYCOMMISI .OR. M->PAYINVNUM <> PAYINVNUM .OR. M->SN <> SN STORE 'Y' TO CHANGED IF MQTY=MMQTY .AND. COST=M->COST.AND.SELL=M->SELL.AND. EMP = M->EMP STORE 'Y' TO CHANGED1 ENDIF ENDIF IF TAX <> M->TAX .OR. PART <> M->PART STORE 'Y' TO CHANGED ENDIF IF CHANGED = 'Y' IF M->PAYINVNUM = '~' STORE ' ' TO M->PAYINVNUM DO LOCKWAIT REPLACE PAYINVNUM WITH ' ' UNLOCK ENDIF *CHECK TO SEE IF USE TRIED TO BLANKOUT PAY FIELD IF PAYINVNUM <> ' ' .AND. M->PAYINVNUM = ' ' STORE PAYINVNUM TO M->PAYINVNUM ENDIF STORE 'Y' TO PWOK IF PAYINVNUM <> ' ' .AND. CHANGED1 = 'N' save screen to ll ? CHR(7) @ ROW23,0 CLEAR STORE ' ' TO ACCC @ ROW23,0 SAY 'Enter password to change paid line - ' get accc picture '!!!!!!!!!' DO PASSWORD IF PWOK <> 'Y' QUIT ENDIF @ ROW23,0 SAY SPACE(80) * restore screen from ll * STORE 'Y' TO MLOOP * STORE QTY TO MQTY ENDIF IF PWOK = 'Y' DO LOCKWAIT REPLACE QTY WITH M->MQTY REPLACE DESC WITH UPPER(M->DESC) REPLACE COST WITH M->COST REPLACE SELL WITH M->SELL REPLACE INUMBER WITH M->INUMBER REPLACE SN WITH M->SN REPLACE SNUMBER WITH M->SNUMBER REPLACE PART WITH M->PART REPLACE EMP WITH UPPER(M->EMP) REPLACE TAX WITH M->TAX REPLACE QNUMBER WITH M->QNUMBER REPLACE PURGE WITH M->PURGE REPLACE VNUM WITH M->VNUM REPLACE ORDDATE WITH M->ORDDATE REPLACE RECDATE WITH M->RECDATE REPLACE STATUS WITH UPPER(M->STATUS) REPLACE INUSE WITH M->INUSE REPLACE ALIGN WITH M->ALIGN REPLACE PAYCOMMISI WITH UPPER(M->PAYCOMMISI) REPLACE PAYINVNUM WITH M->PAYINVNUM @ ROW24,0 CLEAR IF ORDSTAT = '1' SET FUNCTION 4 TO PAYINVNUM *CLEAR COPY LAST STRING STORE ' ' TO LW,LW1 @ ROW24,0 SAY 'PRESS F4 TO REPEATE INVOICE NUMBER ' ENDIF UNLOCK ENDIF ENDIF *REPRINT SCREEN WITH NON INTENSE SET COLOR TO 11 @ ROW,0 SAY SPACE(80) @ ROW,0 GET MQTY @ ROW,4 SAY '|' IF MQTY <> 0 .OR. COST <> 0 .OR. SELL <> 0 IF PART = ' ' DO LOCKWAIT REPLACE PART WITH '99999' UNLOCK ENDIF ENDIF @ ROW,5 GET PART @ ROW,10 SAY '|' @ ROW,11 GET EMP PICTURE '!' @ ROW,12 SAY '|' IF ORDSTAT = ' ' @ ROW,13 GET DESC PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' @ ROW,59 SAY '|' IF NONCOST = 'N' @ ROW,60 GET COST ELSE @ ROW,60 GET DCOST ENDIF @ ROW,68 SAY '|' @ ROW,70 GET SELL * @ ROW,78 SAY '|' @ ROW,79 GET TAX IF ROW21 <> 21 @ ROW+1,0 SAY 'SN - ' GET SN ENDIF * BLANK THESE OUT SO THAT QOH WILL NOT CACULATE ON EVERY LINE * STORE PART TO LL * SELECT 5 * FIND &LL * STORE ONHAND TO MONHAND * SELECT 4 * @ ROW24,70 SAY SPACE(10) * @ ROW24,70 SAY 'QOH=' + STR(MONHAND,5,0) ENDIF IF ORDSTAT = '1' @ ROW,13 GET DESC PICTURE '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' @ ROW,39 SAY '|' @ ROW,40 SAY SPACE(40) IF NONCOST = 'N' @ ROW,40 SAY COST PICTURE '99999.99' ENDIF @ ROW,48 SAY '|' @ ROW,50 SAY SELL PICTURE '999999.99' SET DELIMITER ON @ ROW,59 GET PAYINVNUM SET DELIMITER OFF ENDIF CLEAR GETS STORE 'Y' TO CHKSERIAL IF CHKSERIAL = 'Y' STORE 'Y' TO ADD DO CHKSER ENDIF SELECT 4 IF CHKSERLOOP = 'Y' LOOP ENDIF IF UPDATED() .AND. CHANGED = 'Y' STORE 'Y' TO MUPDATE SELECT 4 **LOOK FOR PART NUMBER STORE DESC TO MDESC *CHECK TO SEE IF LINE HAS A PART NUMBER * IF SUBSTR(PART,1,5) = ' ' .AND. COST+SELL <> 0 * @ ROW23,0 CLEAR * ? CHR(7) * STORE ' ' TO SEL * @ ROW23,0 SAY 'LINE ITEM MUST HAVE A PART NUMBER IF COST OR SELL PRICE EXISTIS !!! ' GET SEL * READ * LOOP * ENDIF IF SUBSTR(PART,1,5) <> ' ' .AND. SUBSTR(MDESC,1,3) = ' ' STORE PART TO LL SELECT 5 IF ALIAS() <> 'INVENTORY' .OR. INDEXKEY(1) <> 'PNUM' USE STORE 'INVENTORY' TO DNET DO NETERROR USE INVENTORY INDEX PNUM ENDIF FIND &LL IF EOF() SELECT 4 DO LOCKWAIT REPLACE DESC WITH 'PART NUMBER NOT FOUND' UNLOCK IF ORDSTAT = ' ' @ ROW,13 SAY DESC ENDIF ELSE SELECT 5 * STORE TRIM(MDESC11) + SUBSTR(MDESC,(LEN(TRIM(MDESC11)))+1,80) TO MDESC11 STORE PDESC TO MDESC11 STORE LCOST1 TO MCOST11 * IF MARKUP <> 0 * STORE 1 + (MARKUP*.01) TO QQ * STORE LCOST1 * QQ TO MSELL11 * ELSE *REPLACE LABOR RATE WITH CUSTOMERS RATE IF PART = '90000' STORE MHRRATE TO MSELL11 ELSE STORE SELL TO MSELL11 ENDIF * ENDIF SELECT 4 DO LOCKWAIT IF SUBSTR(DESC,1,5) = ' ' .OR. SUBSTR(DESC,1,21) = 'PART NUMBER NOT FOUND' REPLACE DESC WITH UPPER(MDESC11) REPLACE COST WITH MCOST11 REPLACE SELL WITH MSELL11 IF VAL(PART) < 90000 REPLACE TAX WITH '*' ENDIF ENDIF UNLOCK STORE 'D' TO GET DO LINE1 ENDIF ENDIF ENDIF IF VSEL = 'Q' STORE QNUMBER TO LLP ENDIF IF VSEL = 'I' STORE INUMBER TO LLP ENDIF IF VSEL = 'W' STORE SNUMBER TO LLP ENDIF IF MQTY = 998 DO INV998 LOOP ENDIF IF VSEL = 'Q' STORE QNUMBER TO LLP ENDIF IF VSEL = 'I' STORE INUMBER TO LLP ENDIF IF VSEL = 'W' STORE SNUMBER TO LLP ENDIF **search and replace description line if mqty = 997 @ 1,0 say 'worked ' wait store 'HR LABOR ON ' + substr(DTOC(DATE),1,5) TO DESC endif IF MQTY = 999 **DELETE LINE IF PAYINVNUM <> ' ' save screen to ll ? CHR(7) @ ROW23,0 CLEAR @ ROW23,0 SAY 'Cannot DELETE. This line is marked for paid !!' store ' ' to sel @ ROW24,0 SAY 'Call Scott to check this error' get sel read restore screen from ll STORE 'Y' TO MLOOP LOOP ENDIF IF CHKSERIAL = 'Y' STORE 'N' TO ADD DO CHKSER ENDIF SELECT 4 DO LOCKWAIT REPLACE QTY WITH MQTY UNLOCK STORE ROW TO MROW DO LOCKWAIT DELETE UNLOCK SKIP IF &LLP3 SKIP -1 @ ROW,0 SAY SPACE(80) STORE ROW-1 TO ROW STORE 'Y' TO DNETAPPEND DO NETERROR SELECT 2 STORE INUMBER TO QINUM STORE QNUMBER TO QQNUM STORE SNUMBER TO QSNUM SELECT 4 DO LOCKWAIT REPLACE INUMBER WITH QINUM REPLACE QNUMBER WITH QQNUM REPLACE SNUMBER WITH QSNUM REPLACE DATE WITH DATE() UNLOCK ENDIF STORE RECNO() TO MREC **UPDATE SCREEN STORE MROW-12 TO CC SKIP -CC STORE 12 TO ROW DO WHILE .T. STORE 'N' TO GET DO LINE1 IF ROW21 = 21 STORE ROW+1 TO ROW ELSE STORE ROW+2 TO ROW ENDIF SKIP IF &LLP1 DO WHILE ROW < ROW22 @ ROW,0 SAY SPACE(80) IF ROW21 = 21 STORE ROW+1 TO ROW ELSE STORE ROW+2 TO ROW ENDIF ENDDO GOTO MREC STORE MROW TO ROW EXIT ENDIF ENDDO DO BOTTOM LOOP ENDIF IF CHANGED = 'Y' DO LOCKWAIT REPLACE QTY WITH MQTY UNLOCK ENDIF IF CL = 1 PRESSED = LASTKEY() IF PRESSED = 27 SELECT 4 IF STATUS <> 'E' EXIT ENDIF ENDIF ** PgDn PRESSED IF PRESSED = 3 .OR. PRESSED = 13 STORE 'N' TO MLOOP DO ERRORCHK IF MLOOP = 'Y' LOOP ENDIF SKIP +1 IF ROW21 = 21 STORE ROW+1 TO ROW ELSE STORE ROW+2 TO ROW ENDIF IF &LLP3 SKIP -1 IF ROW21 <> 21 STORE ROW-2 TO ROW ELSE STORE ROW-1 TO ROW ENDIF IF SUBSTR(DESC,1,5) <> ' ' .OR. QTY <> 0 SELECT 4 STORE 'Y' TO DNETAPPEND DO NETERROR IF ROW21 = 21 STORE ROW+1 TO ROW ELSE STORE ROW+2 TO ROW ENDIF SELECT 2 STORE INUMBER TO QINUM STORE QNUMBER TO QQNUM STORE SNUMBER TO QSNUM STORE EMP TO MEMP SELECT 4 DO LOCKWAIT REPLACE INUMBER WITH QINUM REPLACE QNUMBER WITH QQNUM REPLACE SNUMBER WITH QSNUM REPLACE EMP WITH MEMP REPLACE DATE WITH DATE() UNLOCK ENDIF ENDIF ENDIF IF PRESSED = 18 ** PgUp PRESSED STORE 'N' TO MLOOP DO ERRORCHK IF MLOOP = 'Y' LOOP ENDIF SKIP -1 IF ROW21 <> 21 STORE ROW-2 TO ROW ELSE STORE ROW-1 TO ROW ENDIF IF &LLP2 SKIP IF ROW21 = 21 STORE ROW+1 TO ROW ELSE STORE ROW+2 TO ROW ENDIF LOOP ENDIF ENDIF ENDIF ****CURSOR POSISTION IF ROW > ROW21 STORE RECNO() TO MREC STORE ROW20 TO ROW SKIP -1 DO WHILE .T. STORE 'N' TO GET DO LINE1 IF ROW21 <> 21 STORE ROW-2 TO ROW ELSE STORE ROW-1 TO ROW ENDIF SKIP -1 IF ROW < 12 GOTO MREC STORE ROW21 TO ROW EXIT ENDIF ENDDO LOOP ENDIF IF ROW < 12 STORE RECNO() TO MREC SKIP STORE 13 TO ROW DO WHILE .T. STORE 'N' TO GET DO LINE1 SKIP IF ROW21 <> 21 STORE ROW+2 TO ROW ELSE STORE ROW+1 TO ROW ENDIF IF &LLP1 STORE 12 TO ROW GOTO MREC EXIT ENDIF ENDDO LOOP ENDIF ENDDO *THIS ENDIF ENDS THE IF EDITINV = 'Y' ENDIF SELECT 2 GOTO MMREC DO LOCKWAIT REPLACE PLIST WITH MPLIST REPLACE NCOPY WITH MNCOPY IF COMMISION = 'Y' .AND. DTOC(COMDATE) = ' / / ' REPLACE COMDATE WITH DATE() ENDIF UNLOCK **CACULATE TOTALS FOR THIS INVOICE STORE 0.00 TO SUBTOTAL,SUBTAX,TOTAL,PROFIT,MCOST STORE ' ' TO XEMP SELECT 4 SEEK LINV STORE 'N' TO NOCPU,NOMEM,NOHD,NOCD,NOFLO,NOMOU,NOKEY,NOWIN,NOVID,NOMOD,NOMON,NOSPK STORE 'N' TO XCASE IF .NOT. EOF() DO WHILE .T. IF &LLP3 EXIT ENDIF IF PART = '99999' IF AT('CASE',DESC) <> 0 .OR. AT('TOWER',DESC) <> 0 STORE 'Y' TO XCASE ENDIF IF AT('PROC',DESC) <> 0 .OR. AT('CPU',DESC) <> 0 .OR. AT('PENT',DESC) <> 0 STORE 'Y' TO NOCPU ENDIF IF AT('MONITOR',DESC) <> 0 STORE 'Y' TO NOMON ENDIF IF AT('MEM',DESC) <> 0 STORE 'Y' TO NOMEM ENDIF IF AT('HARD',DESC) <> 0 .OR. AT('HD',DESC) <> 0 STORE 'Y' TO NOHD ENDIF IF AT('CDROM',DESC) <> 0 .OR. AT('CD-R',DESC) <> 0 .OR. AT('CDRW',DESC) <> 0 .OR. AT('CD ROM',DESC) <> 0 STORE 'Y' TO NOCD ENDIF IF AT('1.4',DESC) <> 0 .OR. AT('FLOP',DESC) <> 0 STORE 'Y' TO NOFLO ENDIF IF AT('MOUSE',DESC) <> 0 STORE 'Y' TO NOMOU ENDIF IF AT('KEY',DESC) <> 0 STORE 'Y' TO NOKEY ENDIF IF AT('WIN',DESC) <> 0 STORE 'Y' TO NOWIN ENDIF IF AT('VIDEO',DESC) <> 0 STORE 'Y' TO NOVID ENDIF IF AT('MODEM',DESC) <> 0 STORE 'Y' TO NOMOD ENDIF IF AT('SPEAKER',DESC) <> 0 STORE 'Y' TO NOSPK ENDIF ENDIF IF EMP <> ' ' .AND. XEMP = ' ' STORE EMP TO XEMP ENDIF IF (QTY = 0 .AND. SUBSTR(DESC,1,10) = ' ') .OR. (COST = 0.00 .OR. COST = 0) .AND. (SELL = 0.00 .OR. SELL = 0) .AND. SUBSTR(DESC,1,20) = ' ' DO LOCKWAIT DELETE UNLOCK @ ROW24,0 CLEAR @ ROW24,0 SAY 'SUB ENTRY RECORD FOUND WITH NULL FIELDS ... DELETED !!!' ENDIF STORE MCOST + (QTY*COST) TO MCOST STORE PROFIT + (QTY*SELL)-(QTY*COST) TO PROFIT STORE SUBTOTAL + (QTY*SELL) TO SUBTOTAL * IF TAX = '*'.OR. TAX = 'T' .OR. TAX = 'C' IF TAX = '*'.OR. TAX = 'T' STORE SUBTAX + ((QTY*SELL)*MTAXRATE) TO SUBTAX STORE TOTAL + ((QTY*SELL)*MTAXRATE) + (QTY*SELL) TO TOTAL ELSE STORE TOTAL + (QTY*SELL) TO TOTAL ENDIF SKIP ENDDO ENDIF *CLEAR KEYS *SET KEY -1 TO DUMMY *SET KEY -2 TO DUMMY *SET KEY -3 TO DUMMY *SET KEY -4 TO DUMMY *SET KEY -5 TO DUMMY *SET KEY -6 TO DUMMY *SET KEY -7 TO DUMMY *SET KEY -8 TO DUMMY *SET KEY -9 TO DUMMY *STORE 'N' TO NOCPU,NOMEM,NOHD,NOCD,NOFLO,NOMOU,NOKEY,NOWIN STORE ' ' TO QSTAT IF NOCPU = 'N' STORE QSTAT + 'NO CPU ' TO QSTAT ENDIF IF NOMEM = 'N' STORE QSTAT + 'NO MEM ' TO QSTAT ENDIF IF NOHD = 'N' STORE QSTAT + 'NO HD ' TO QSTAT ENDIF IF NOCD = 'N' STORE QSTAT + 'NO CD ' TO QSTAT ENDIF IF NOFLO = 'N' STORE QSTAT + 'NO FLOPPY ' TO QSTAT ENDIF IF NOMOU = 'N' STORE QSTAT + 'NO MOUSE ' TO QSTAT ENDIF IF NOKEY = 'N' STORE QSTAT + 'NO KEY ' TO QSTAT ENDIF IF NOWIN = 'N' STORE QSTAT + 'NO WIN ' TO QSTAT ENDIF IF NOMOD = 'N' STORE QSTAT + 'NO MODEM ' TO QSTAT ENDIF IF NOSPK = 'N' STORE QSTAT + 'NO SPEAKERS ' TO QSTAT ENDIF IF NOVID = 'N' STORE QSTAT + 'NO VIDEO ' TO QSTAT ENDIF IF NOMON = 'N' STORE QSTAT + 'NO MONITOR ' TO QSTAT ENDIF IF LEN(ALLTRIM(QSTAT)) > 3 .AND. XCASE = 'Y' @ 23,0 CLEAR @ 23,0 SAY QSTAT WAIT @ 23,0 CLEAR ENDIF STORE ROUND(PROFIT,2) TO PROFIT STORE ROUND(SUBTOTAL,2) TO SUBTOTAL STORE ROUND(SUBTAX,2) TO SUBTAX STORE ROUND(TOTAL,2) TO TOTAL STORE ROUND(MCOST,2) TO MCOST @ ROW23,0 CLEAR @ ROW23,60 SAY 'W/O TAX -' + STR(SUBTOTAL,10,2) @ ROW24,60 SAY 'WITH TAX-' + STR(TOTAL,10,2) STORE 0 TO MARGIN IF MCOST <> 0 STORE (PROFIT/MCOST) * 100 TO MARGIN ENDIF IF NONCOST = 'N' @ ROW23,0 SAY '% PROFIT - ' + STR(MARGIN,5,0) @ ROW23,20 SAY 'PROFIT - ' + STR(PROFIT,8,2) @ ROW23,43 SAY 'COST- ' + STR(MCOST,9,2) @ ROW24,43 SAY 'TAX- ' + STR(SUBTAX,10,2) ENDIF *SEARCH FOR PO COST SELECT 6 STORE 'PO' TO DNET DO NETERROR GOTO BOTT STORE 0 TO LL STORE 0 TO AAA *IF DBBB = 'SCOTT' .OR. DBBB = 'DANIELLE' *@ ROW23,10 SAY 'SEARCHING FOR COST ON PO ... ' *DO WHILE .NOT. BOF() *@ ROW23,40 SAY LL *PRESSED = INKEY() *IF LL = 200 .OR. PRESSED = 27 * EXIT *ENDIF *IF INUMBER <> 0 * IF VAL(PO1)=INUMBER.OR.VAL(PO2)=INUMBER.OR.VAL(PO3)=INUMBER.OR.VAL(PO4)=INUMBER.OR.VAL(PO5)=INUMBER.OR.VAL(PO6)=INUMBER.OR.VAL(PO7)=INUMBER.OR.VAL(PO8)=INUMBER.OR.VAL(PO9)=INUMBER * STORE ACOST+AAA TO AAA * ENDIF *ENDIF *IF SNUMBER <> 0 * IF VAL(PO1)=SNUMBER.OR.VAL(PO2)=SNUMBER.OR.VAL(PO3)=SNUMBER.OR.VAL(PO4)=SNUMBER.OR.VAL(PO5)=SNUMBER.OR.VAL(PO6)=SNUMBER.OR.VAL(PO7)=SNUMBER.OR.VAL(PO8)=SNUMBER.OR.VAL(PO9)=SNUMBER * STORE ACOST+AAA TO AAA * ENDIF *ENDIF *IF QNUMBER <> 0 * IF VAL(PO1)=QNUMBER.OR.VAL(PO2)=QNUMBER.OR.VAL(PO3)=QNUMBER.OR.VAL(PO4)=QNUMBER.OR.VAL(PO5)=QNUMBER.OR.VAL(PO6)=QNUMBER.OR.VAL(PO7)=QNUMBER.OR.VAL(PO8)=QNUMBER.OR.VAL(PO9)=QNUMBER * STORE ACOST+AAA TO AAA * ENDIF *ENDIF *SKIP -1 *STORE LL+1 TO LL *ENDDO **@ ROW23,0 SAY 'ACTUAL PO COST = ' + STR(AAA,7,2) *STORE MCOST - AAA TO AA1 *IF AAA <> 0 ** @ ROW23,25 SAY 'DIFF = ' + STR(AA1,7,2) *ENDIF *USE *ENDIF SELECT 2 GOTO MMREC STORE ' ' TO MMM DO LOCKWAIT REPLACE CUSTNUM WITH MMCUSTNUM REPLACE TOTCOST WITH SUBTOTAL REPLACE COST WITH MCOST REPLACE TAX WITH SUBTAX IF EMP = ' ' REPLACE EMP WITH XEMP ENDIF IF MPOREQ = 'Y' .AND. SUBSTR(PO,1,5) = ' ' .AND. VSEL = 'I' REPLACE STATUS WITH 'W' ENDIF STORE 'Y' TO SEL IF VSEL = 'W' IF WS = 'W' .OR. WS = 'S' IF LASTPRT > CTOD('01/01/85') @ ROW23,0 SAY 'INVOICE ALREADY PRINTED ... RE-ASSIGN WARRANTY/SERVICE CONTRACT ?? - ' GET SEL PICTURE '!' READ ENDIF ENDIF IF WS = 'S' .AND. SEL = 'Y' REPLACE LASTPRT WITH CTOD('01/01/80') ENDIF IF WS = 'W' .AND. SEL = 'Y' REPLACE LASTPRT WITH CTOD('01/01/81') ENDIF ENDIF UNLOCK *UPDATE EMPLOYEE CODE IN CUSTOMERS FILE SELECT 1 IF EMP = ' ' DO LOCKWAIT REPLACE EMP WITH XEMP UNLOCK ENDIF SELECT 2 @ ROW24,0 SAY SPACE(40) IF PRINT = 'Y' * @ ROW23,0 SAY 'QUEUED' ENDIF *ADJUST INVENTORY STORE 'N' TO INCINV *DO ADJINV STORE ' ' TO SSS IF INEW = 'Y' .AND. SSS = ' ' STORE 'Q' TO SSS ENDIF IF VSEL = 'W' STORE ' ' TO SSS ENDIF IF DBBB = 'SCOTT' @ ROW24,0 SAY '(P)RT,(Q)UEUE,(U)N-QUEUE,(D)EL,(F)ILE C:\INVOICE.TXT - ' GET SSS PICTURE '!' ELSE @ ROW24,0 SAY '(P)RT,(F)ILE C:\INVOICE.TXT - ' GET SSS PICTURE '!' ENDIF READ IF AT('W',STATUS) <> 0 IF SUBSTR(PO,1,5) <> ' ' ? CHR(7) @ ROW24,0 CLEAR DO LOCKWAIT @ ROW24,0 SAY 'PO ALREADY ASSIGNED ... CHANGE STATUS - ' GET STATUS PICTURE '!!' READ UNLOCK ENDIF ENDIF STORE 'N' TO BYPASS IF MUPDATE1 = 'Y' .OR. MUPDATE = 'Y' SELECT 1 GOTO CUSTREC @ ROW24,0 clear @ ROW24,0 say 'UPDATING LAST FILE NUMBER' DO LASTINV @ ROW24,0 CLEAR ENDIF SELECT 2 GOTO MMREC @ ROW23,0 CLEAR @ ROW23,0 SAY SPACE(20) @ ROW23,0 SAY 'WRITING CHECKSUM ' DO CHECKSUM SELECT 2 GOTO MMREC DO LOCKWAIT REPLACE CHECKSUM WITH MMM UNLOCK IF MCREATE = 'Y' IF MUPDATE1 = 'Y' .OR. MUPDATE = 'Y' @ ROW24,0 CLEAR ELSE @ ROW24,0 CLEAR @ ROW24,0 SAY 'DELETING FILE .. NO UPDATES' **DELETE FILE SELECT 2 GOTO MMREC DO LOCKWAIT IF VSEL = 'I' REPLACE INUMBER WITH 0 ENDIF IF VSEL = 'Q' REPLACE QNUMBER WITH 0 ENDIF IF VSEL = 'W' REPLACE SNUMBER WITH 0 ENDIF UNLOCK SELECT 4 DO LOCKWAIT IF VSEL = 'I' .AND. INUMBER = LINV REPLACE INUMBER WITH 0 ENDIF IF VSEL = 'Q' .AND. QNUMBER = LINV REPLACE QNUMBER WITH 0 ENDIF IF VSEL = 'W' .AND. SNUMBER = LINV REPLACE SNUMBER WITH 0 ENDIF UNLOCK ENDIF ENDIF SELECT 2 IF SSS = 'D' STORE 0 TO CC,CCC @ ROW23,0 CLEAR SELECT 2 ? CHR(7) STORE ' ' TO ACCC @ ROW24,0 CLEAR IF VSEL = 'I' @ ROW24,0 SAY 'ENTER ACCESS CODE TO DELETE INVOICE (Hint capital "TXXX, 2 backspace, DD")- ' GET ACCC PICTURE '!!!!!!!!!' ENDIF IF VSEL = 'Q' IF INUMBER <> 0 ? CHR(7) @ ROW24,0 SAY 'Cannot delete a quote that has a invoice number assigned .. must delete inv 1st' get accc read return endif ENDIF IF VSEL = 'W' IF INUMBER <> 0 ? CHR(7) @ ROW24,0 SAY 'Cannot delete a WO that has a invoice number assigned .. must delete inv 1st' get accc read return endif * @ ROW24,0 SAY 'ENTER ACCESS CODE TO DELETE WORK ORDER - ' GET ACCC PICTURE '!!!!!!!!!' ENDIF IF VSEL = 'I' DO PASSWORD IF PWOK <> 'Y' QUIT ENDIF @ ROW23,0 CLEAR IF VSEL = 'I' IF TOTCOST <> 0 @ ROW23,0 CLEAR ? CHR(7) @ ROW23,0 SAY 'CANNOT DELETE INVOICE WITH AN AMOUNT' WAIT LOOP ENDIF *M FOR DOUBLE DEDUCTION STORE 'Y' TO INCINV STORE INUMBER TO LINV * DO ADJINV ENDIF @ ROW23,0 SAY 'DELETING INVOICE ' + STR(INUMBER,5,0) + '... PLEASE WAIT ' ENDIF IF VSEL = 'Q' @ ROW23,0 SAY 'DELETING QUOTE ' + STR(QNUMBER,5,0) + '... PLEASE WAIT ' ENDIF IF VSEL = 'W' @ ROW23,0 SAY 'DELETING WORK ORDER ' + STR(SNUMBER,5,0) + '... PLEASE WAIT ' ENDIF *ADD DELETED NUMBER TO INVDEL SELECT 9 USE STORE 'INVDEL' TO DNET DO NETERROR STORE 'Y' TO DNETAPPEND STORE 'INVDEL' TO DNET DO NETERROR DO LOCKWAIT IF VSEL = 'Q' REPLACE QNUMBER WITH LINV ENDIF IF VSEL = 'I' REPLACE INUMBER WITH LINV ENDIF IF VSEL = 'W' REPLACE SNUMBER WITH LINV ENDIF UNLOCK SELECT 2 SEEK LINV DO WHILE .T. IF EOF() EXIT ENDIF DO LOCKWAIT IF VSEL = 'Q' IF QNUMBER = LINV REPLACE QNUMBER WITH 0 ENDIF ENDIF IF VSEL = 'I' IF INUMBER = LINV REPLACE INUMBER WITH 0 ENDIF ENDIF IF VSEL = 'W' IF SNUMBER = LINV REPLACE SNUMBER WITH 0 ENDIF ENDIF REPLACE NEXTDUE WITH CTOD(" / / ") REPLACE LASTPRT WITH CTOD(" / / ") REPLACE PRINT WITH ' ' REPLACE IDUEDATE WITH CTOD(" / / ") REPLACE IRECDATE WITH CTOD(" / / ") REPLACE REPRINT WITH ' ' STORE CC+1 TO CC @ ROW24,0 SAY 'MAIN DELETIONS - ' + STR(CC,3,0) UNLOCK SKIP IF &LLP3 EXIT ENDIF ENDDO SELECT 4 SEEK LINV DO WHILE .T. IF EOF() EXIT ENDIF SKIP + 1 STORE RECNO() TO RTEMP SKIP -1 DO LOCKWAIT IF VSEL = 'Q' IF QNUMBER = LINV REPLACE QNUMBER WITH 0 ENDIF ENDIF IF VSEL = 'I' IF INUMBER = LINV REPLACE INUMBER WITH 0 ENDIF ENDIF IF VSEL = 'W' IF SNUMBER = LINV REPLACE SNUMBER WITH 0 ENDIF ENDIF STORE CCC+1 TO CCC @ ROW24,40 SAY 'SUB FILE DELETIONS - ' + STR(CCC,3,0) UNLOCK GOTO RTEMP IF &LLP3 EXIT ENDIF ENDDO ENDIF SELECT 2 IF SSS = 'P' SELECT 2 GOTO MMREC IF VSEL = 'I' SAVE SCREEN TO III * DO PDOUBLE RESTORE SCREEN FROM III @ ROW24,0 CLEAR DO INVPRT DO PENDCAP set device to screen set print off *DO THIS TO FORCE A PRINTER SELECTION WHEN SELPRT AND CURPRT ARE EQUAL STORE 5 TO CURPRT SAVE SCREEN DO SELPRT RESTORE SCREEN DO LOCKWAIT ENDIF IF VSEL = 'W' DO WOPRINT ENDIF ENDIF IF SSS = 'F' DO INVPRTFI ENDIF *START REMINDER SCREEN IF WORKORDER IF VSEL = 'W' COPY FILE \ACCT\SENDMEAS.PRG TO \ACCT\STARTREM ENDIF SELECT 2 IF SSS = 'Q' .AND. DBBB = 'SCOTT' SELECT 2 GOTO MMREC DO LOCKWAIT REPLACE PRINT WITH 'Y' UNLOCK ENDIF IF SSS = 'U' .AND. DBBB = 'SCOTT' SELECT 2 GOTO MMREC DO LOCKWAIT REPLACE PRINT WITH ' ' UNLOCK ENDIF ENDDO DO QPRTFILE *DO QPRTQUO DO QPRTORD DO SINVEN DO POREQU DO SVEN1 DO ORDSTAT