@ 15,0 SAY 'COMPILING INCOME PLEASE WAIT, MAY TAKE UP TO 15 MINUTES ' *STORE 'Y' TO COLLECTED *DO WHILE .T. CLOSE DATA *PROGRAM CACULATES INCOME/SALES REPORT FROM INVOICE FILES *MAIN FILE IN SELECT 1 *SUBMAIN FILE IN SELECT 4 IF MPRT = 'P' EJECT ENDIF STORE 3 TO ROW STORE 1 TO CNT STORE 0 TO SOFT,SYSTEM,CABLE,RENTAL,SERVICE,PROGRAM,LABOR,MISC,MMCUST,MMCUSTVAL,ICOUNT,MCOST STORE 0 TO MCTOT STORE 99 TO PROW *COMBINE INVOICE,INVPURGE SELECT 10 SET EXCLUSIVE ON USE BIGSPEND ZAP SET EXCLUSIVE OFF USE BIGSPEND SELECT 9 USE STORE 'INVOICE' TO DNET DO NETERROR COPY TO TEMP6 USE SELECT 9 STORE 'TEMP6' TO DNET DO NETERROR @ 14,0 CLEAR @ 14,0 SAY 'COMBINING MONTHLY INVOICE DATABASES ' STORE 1 TO LL DO WHILE .T. IF LL < 10 STORE 'INV0'+ STR(LL,1,0) + YYY + '.DBF' TO LLP ELSE STORE 'INV'+ STR(LL,2,0) + YYY + '.DBF' TO LLP ENDIF @ 14,40 SAY LLP IF FILE("&LLP") @ 14,40 SAY LLP APPEND FROM &LLP ELSE @ 14,40 SAY 'NOT FOUND ' + LLP ENDIF STORE LL+1 TO LL IF LL = 13 EXIT ENDIF ENDDO SELECT 2 USE ACCTCODE INDEX F:\ACCT\TEMP8 *COMBINE INVMAIN,INVMAINP SELECT 4 STORE 'INVMAIN' TO DNET DO NETERROR COPY TO TEMP7 USE STORE 'INVMAIN' TO DNET DO NETERROR COPY TO TEMP7 USE STORE 'TEMP7' TO DNET DO NETERROR @ 14,0 CLEAR @ 14,0 SAY 'COMBINING MONTHLY INVOICE DATABASES ' STORE 1 TO LL DO WHILE .T. IF LL < 10 STORE 'INVM0'+ STR(LL,1,0) + YYY + '.DBF' TO LLP ELSE STORE 'INVM' + STR(LL,2,0) + YYY + '.DBF' TO LLP ENDIF @ 14,40 SAY LLP IF FILE("&LLP") @ 14,40 SAY LLP APPEND FROM &LLP ELSE @ 14,40 SAY 'NOT FOUND ' + LLP ENDIF STORE LL+1 TO LL IF LL = 13 EXIT ENDIF ENDDO SELECT 4 INDEX ON INUMBER TO F:\PUBLIC\TEMP7 USE TEMP7 INDEX F:\PUBLIC\TEMP7 SELECT 5 STORE 'CUSTOMER' TO DNET DO NETERROR DO FILELOCK REPLACE ALL YTDTOT WITH 0 UNLOCK INDEX ON CUSTNUM TO TEMP12 USE CUSTOMER INDEX TEMP12 STORE 3 TO ROW SELECT 9 STORE CUSTNUM TO MMM *SORT MAIN INVOICE FILE BY CUSTOMER AND INUMBER GOTO TOP DO WHILE .NOT. EOF() SELECT 5 SEEK MMM IF EOF() STORE 'CUSTOMER NOT FOUND' TO MMNAME ELSE STORE NAME TO MMNAME ENDIF SELECT 9 DO LOCKWAIT REPLACE COMMENTS WITH MMNAME UNLOCK SKIP ENDDO SELECT 9 STORE 'TEMP6' TO DNET DO NETERROR INDEX ON STR(CUSTNUM,5,0) + COMMENTS + STR(INUMBER,5,0) TO F:\PUBLIC\TEMP6 USE TEMP6 INDEX F:\PUBLIC\TEMP6 SKIP 0 STORE 'Y' TO MFIRST STORE CUSTNUM TO RRR,RRRR DO WHILE .NOT. EOF() IF COLLECTED = 'Y' IF IRECDATE < CTOD(BDATE) .OR. IRECDATE > CTOD(EDATE) .OR. AMTPAID = 0 .OR. INUMBER = 0 SKIP LOOP ENDIF ELSE IF LASTPRT < CTOD(BDATE) .OR. LASTPRT > CTOD(EDATE) .OR. TOTCOST = 0 .OR. INUMBER = 0 SKIP LOOP ENDIF ENDIF IF COLLECTED = 'Y' IF INUMBER <> 0 .AND. AMTPAID = 0 ? CHR(7) ? RECNO(),' NO AMOUNT FOR THIS INVOICE !!!' ? SKIP LOOP ENDIF ENDIF IF COLLECTED = 'Y' STORE AMTPAID TO MAMTPAID ELSE STORE TOTCOST TO MAMTPAID ENDIF STORE CUSTNUM TO RRR SELECT 5 SEEK RRR IF EOF() ? RECNO(),' CUSTOMER ',RRR,' NOT FOUND' ? SELECT 9 SKIP LOOP ENDIF STORE TAXRATE TO MTAXRATE STORE NAME TO KK STORE NAME TO MNAME *CHECK INV FILE AGAINST INVMAIN FILE IF CUSTNUM <> RRRR .AND. MFIRST <> 'Y' ? SPACE(58),CHR(18),'==========' STORE ROW+3 TO ROW ? SPACE(55),CHR(18),MCTOT STORE PROW+3 TO PROW ? ' ' SELECT 10 STORE 'Y' TO DNETAPPEND DO NETERROR REPLACE XNAME WITH KK REPLACE XTOTAL WITH MCTOT STORE 0 TO MCTOT ENDIF SELECT 9 STORE 'N' TO MFIRST STORE CUSTNUM TO RRRR STORE CHECKSUM TO CCC STORE INUMBER TO MINUM STORE 0 TO MSELL,MTAX,LCOUNT,MTOT,MMTAX IF COLLECTED = 'Y' STORE CHR(15) + STR(RECNO(),4,0) + ' ' + DTOC(IRECDATE) + ' ' + MNAME + ' ' + STR(INUMBER,6,0) + ' ' + STR(TOTCOST,12,2) TO PLINE ELSE STORE CHR(15) + STR(RECNO(),4,0) + ' ' + DTOC(DATE) + ' ' + MNAME + ' ' + STR(INUMBER,6,0) + ' ' + STR(TOTCOST,12,2) TO PLINE ENDIF STORE MCTOT+TOTCOST TO MCTOT STORE CUSTNUM TO MMM SELECT 5 DO LOCKWAIT REPLACE YTDTOT WITH MCTOT UNLOCK SELECT 9 IF PROW > 55 .OR. PROW = 0 IF PROW <> 0 EJECT ENDIF IF COLLECTED = 'Y' STORE CHR(18) + 'INVOICES PAID ' + 'COMPUTER AUDIO, INC.' + SPACE(10) + 'RUN DATE - ' + DTOC(DATE()) TO RRR ELSE STORE CHR(18) + 'INVOICES PRINTED ' + 'COMPUTER AUDIO, INC.' + SPACE(10) + 'RUN DATE - ' + DTOC(DATE()) TO RRR ENDIF ? RRR STORE 'DATE RANGES ' + BDATE + ' - ' + EDATE + SPACE(35) + 'ACCT - ' + MACCT TO RRR ? RRR ? '-------------------------------------------------------------------------------' IF COLLECTED = 'Y' ? 'REC# REC DATE COMPANY INV # AMT' ELSE ? 'REC# CREAT DAT COMPANY INV # AMT' ENDIF ? ' ' STORE 6 TO PROW ENDIF ? PLINE STORE PROW+1 TO PROW SELECT 4 SEEK MINUM DO WHILE .NOT. EOF() .AND. INUMBER = MINUM STORE 0 TO MMTAX STORE MSELL + (QTY*SELL) TO MSELL STORE MCOST + (QTY*COST) TO MCOST IF TAX <> ' ' STORE MTAX + ((QTY*SELL) * MTAXRATE) TO MTAX STORE ((QTY*SELL) * MTAXRATE) TO MMTAX ENDIF STORE LCOUNT + 1 TO LCOUNT SELECT 9 IF COLLECTED = 'Y' STORE 'MON' + SUBSTR(DTOC(IRECDATE),1,2) TO PPO STORE 'RMON' + SUBSTR(DTOC(IRECDATE),1,2) TO RPPO ELSE STORE 'MON' + SUBSTR(DTOC(LASTPRT),1,2) TO PPO STORE 'RMON' + SUBSTR(DTOC(LASTPRT),1,2) TO RPPO ENDIF STORE TAXRATE TO MTAXRATE SELECT 4 DO WHILE .T. *IF SUBSTR(DTOC(LASTPRT),1,2) = '10' * SET PRINT OFF * SET CONSOLE ON * ? MAMTPAID * WAIT * SET PRINT ON * SET CONSOLE OFF *ENDIF *ADD IN TAX IF MMTAX <> 0 IF MTAXRATE = .01 SELECT 2 FIND '85' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MMTAX ELSE LOCATE FOR CODE = '85' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 85 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MMTAX ENDIF UNLOCK ENDIF IF MTAXRATE = .06 SELECT 2 FIND '87' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MMTAX ELSE LOCATE FOR CODE = '87' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 87 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MMTAX ENDIF UNLOCK ENDIF SELECT 4 ENDIF IF PART = '90000 ' SELECT 2 FIND '90' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MAMTPAID ELSE LOCATE FOR CODE = '90' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 90 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MAMTPAID ENDIF UNLOCK SELECT 4 EXIT ENDIF IF PART = '90010 ' SELECT 2 FIND '91' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MAMTPAID ELSE LOCATE FOR CODE = '91' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 91 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MAMTPAID ENDIF UNLOCK SELECT 4 EXIT ENDIF IF PART = '90020 ' SELECT 2 FIND '96' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MAMTPAID ELSE LOCATE FOR CODE = '96' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 96 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MAMTPAID ENDIF UNLOCK SELECT 4 EXIT ENDIF IF PART = '90030 ' SELECT 2 FIND '92' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MAMTPAID ELSE LOCATE FOR CODE = '92' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 92 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MAMTPAID ENDIF UNLOCK SELECT 4 EXIT ENDIF IF PART = '90050 ' SELECT 2 FIND '99' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MAMTPAID ELSE LOCATE FOR CODE = '99' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 99 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MAMTPAID ENDIF UNLOCK SELECT 4 EXIT ENDIF IF VAL(PART) >= 30000 .AND. VAL(PART) <=39999 SELECT 2 FIND '93' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MAMTPAID ELSE LOCATE FOR CODE = '93' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 93 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MAMTPAID ENDIF UNLOCK SELECT 4 EXIT ENDIF *NO CODE FOUND SO ADD IT TO INVOICE SALES SELECT 2 FIND '95' DO LOCKWAIT IF .NOT. EOF() REPLACE &PPO WITH &PPO + MAMTPAID ELSE LOCATE FOR CODE = '95' IF EOF() SET PRINT OFF SET CONSOLE ON ? CHR(7) CLEAR ? 'ERROR CANNOT LOCATE CODE 95 IN ACCTCODE' WAIT QUIT ENDIF REPLACE &PPO WITH &PPO + MAMTPAID ENDIF UNLOCK SELECT 4 EXIT ENDDO STORE MSELL + MTOT TO MTOT STORE 0 TO MAMTPAID SELECT 4 SKIP ENDDO SELECT 9 IF COLLECTED = 'Y' STORE 'CMON' + SUBSTR(DTOC(IRECDATE),1,2) TO CMON STORE 'XCMON' + SUBSTR(DTOC(IRECDATE),1,2) TO XCMON ELSE STORE 'CMON' + SUBSTR(DTOC(LASTPRT),1,2) TO CMON STORE 'XCMON' + SUBSTR(DTOC(LASTPRT),1,2) TO XCMON ENDIF STORE &CMON + MCOST TO &CMON STORE &XCMON + MSELL TO &XCMON STORE 0 TO MCOST SELECT 9 STORE ' ' TO MERROR IF LCOUNT <> VAL(SUBSTR(CCC,1,9)) STORE 'C.S. BAD ' TO MERROR ENDIF *IF STR(COST,12,2) <> STR(MCOST,12,2) * STORE MERROR + ' | ' + 'COST BAD' TO MERROR *ENDIF IF STR(TOTCOST,12,2) <> STR(MSELL,12,2) STORE MERROR + ' | ' + 'TOTCOST BAD ' + STR(MSELL,10,2) + STR(TOTCOST,10,2) TO MERROR ENDIF IF STR(TAX,12,2) <> STR(MTAX,12,2) STORE MERROR + ' | ' + 'TAX BAD' TO MERROR ENDIF SKIP ENDDO *IF COLLECTED = 'N' * EXIT *ELSE * STORE 'N' TO COLLECTED *ENDIF *ENDDO