// CGW0350 - don and mike - 08-06-94 ************************************************* #INCLUDE 'CGWINCLD.PRG' ************************************************* FUNCTION DEF_MITEMS() LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 FIELDNAME := 'PARTNUM' COLHEAD := {'Part #'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'DISPVALUE(PARTNUM,"MISC_ITEMS",{"DESC"})' COLHEAD := {'Description'} TOTALFLD := .F. DISPLEN := 25 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'DISPVALUE(PARTNUM,"MISC_ITEMS",{"GL_NUM"})' COLHEAD := {'GL Num'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'UOM' COLHEAD := {'Unit','Of', 'Measure'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(DLR_AMT, 10,4) ' COLHEAD := {'Dealer'} TOTALFLD := .F. DISPLEN := 10 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(SD_AMT, 10,4) ' COLHEAD := {'Special','Dealer'} TOTALFLD := .F. DISPLEN := 10 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(BU_AMT, 10,4) ' COLHEAD := {'Builder'} TOTALFLD := .F. DISPLEN := 10 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(DIST_AMT, 10,4) ' COLHEAD := {'Distributor'} TOTALFLD := .F. DISPLEN := 10 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(LUMB_AMT, 10,4) ' COLHEAD := {'Lumbermen'} TOTALFLD := .F. DISPLEN := 10 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(IC_AMT, 10,4) ' COLHEAD := {'Intercompany'} TOTALFLD := .F. DISPLEN := 10 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) RETURN FIELDARR ******************************************************************** //** P3N - 3/18/99 - LIMIT THE NUMBER OF FIELDS PRINTING ON REPORT ******************************************************************** FUNCTION DEF_BILLTRAN() LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 FIELDNAME := 'ORDER_NUM' COLHEAD := {'Order #'} TOTALFLD := .F. DISPLEN := 6 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'SPACE(1) + INVNR' COLHEAD := {'Invoice#'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'CRMNR' COLHEAD := {' Ref #'} TOTALFLD := .F. DISPLEN := 6 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) * FIELDNAME := 'GL_NUM' * COLHEAD := {'GL Acct #'} * TOTALFLD := .F. * DISPLEN := 10 * DISPDEC := 0 * AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'SPACE(2) + SALCD' COLHEAD := {'Sale','Code'} TOTALFLD := .F. DISPLEN := 4 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'SLSNR' COLHEAD := {'Sales',' Rep'} TOTALFLD := .F. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'SPACE(3) + ACREC' COLHEAD := {'Active',' Code'} TOTALFLD := .F. DISPLEN := 6 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'SPACE(1) + COMNO' COLHEAD := {'Comp#'} TOTALFLD := .F. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'CUSNR' COLHEAD := {'Customer#'} TOTALFLD := .F. DISPLEN := 9 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'TRNDT' COLHEAD := {'Trans','Date'} TOTALFLD := .F. DISPLEN := 6 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(INVAM,13,2)' COLHEAD := {' Invoice ',' Amount '} TOTALFLD := .T. DISPLEN := 13 DISPDEC := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(TXBLAMT,13,2)' COLHEAD := {' Taxable ',' Amount '} TOTALFLD := .T. DISPLEN := 13 DISPDEC := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(TXAM1,13,2)' COLHEAD := {'Sales Tax Amt'} TOTALFLD := .T. DISPLEN := 13 DISPDEC := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'TXSCHED' COLHEAD := {' Tax ',' Sched'} TOTALFLD := .F. DISPLEN := 6 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) RETURN FIELDARR ************************************************* FUNCTION DEF_ORDERS(WHATRPT) LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 LOCAL PRTCUSTNAME := .F. IF EMPTY(WHATRPT) ELSEIF WHATRPT = 'FULFILLMENT' PRTCUSTNAME := .T. ENDIF FIELDNAME := 'CUST_ID' COLHEAD := {'Cust ID'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) IF PRTCUSTNAME //**IF EMPTY(CUST_ID) //** P3N - 08/29/01 //** FIELDNAME := 'No Customer Found' //** P3N - 08/29/01 //**ELSE //** P3N - 08/29/01 //** FIELDNAME := 'GET_COMPNAME(CUST_ID)' //** P3N - 08/29/01 //**ENDIF //** P3N - 08/29/01 FIELDNAME := 'GET_COMPNAME(CUST_ID)' //** P3N - 08/29/01 COLHEAD := {'Company Name'} TOTALFLD := .F. DISPLEN := 30 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) ENDIF IF EMPTY(WHATRPT) //** P3N - 08/30/01 FIELDNAME := 'ORDER_NUM' COLHEAD := {'Order#'} TOTALFLD := .F. DISPLEN := 6 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'CUST_PO' COLHEAD := {'PO #'} TOTALFLD := .F. DISPLEN := 10 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) ENDIF //** P3N - 08/30/01 FIELDNAME := 'INVOICENUM' COLHEAD := {'Invoice'} TOTALFLD := .F. DISPLEN := 7 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'DTOC(ORDER_DATE)' COLHEAD := {'Order','Date'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) IF EMPTY(WHATRPT) //** P3N - 08/30/01 FIELDNAME := 'DTOC(CALL_DATE)' COLHEAD := {'Call','Date'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'DTOC(PDATE_LAST)' COLHEAD := {'Prod','Date'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'DTOC(DDATE_LAST)' COLHEAD := {'Delivery','Date'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'SLSMAN' COLHEAD := {'Sold','By'} TOTALFLD := .F. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'TERMS' COLHEAD := {'Terms'} TOTALFLD := .F. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) ENDIF //** P3N - 08/30/01 FIELDNAME := 'SHP_METHOD' COLHEAD := {'Shp','Mthd'} TOTALFLD := .F. DISPLEN := 4 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) IF EMPTY(WHATRPT) //** P3N - 08/30/01 FIELDNAME := 'DEL_ROUTE' COLHEAD := {'Rte'} TOTALFLD := .F. DISPLEN := 3 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'PRICE_SHT' COLHEAD := {'Price','Sheet'} TOTALFLD := .F. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'TAXSCH' COLHEAD := {'Tax','Sch'} TOTALFLD := .F. DISPLEN := 6 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(ORD_L_TTL,10,2)' COLHEAD := {' Items',' Total'} TOTALFLD := .T. DISPLEN := 10 DISPDEC := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(ORD_D_TTL,8,2)' COLHEAD := {' Misc.',' Total'} TOTALFLD := .T. DISPLEN := 8 DISPDEC := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(SALES_TAX,9,2)' COLHEAD := {' Tax'} TOTALFLD := .T. DISPLEN := 9 DISPDEC := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) **FIELDNAME := 'STR(FREIGHT,8,2)' **COLHEAD := {' Freight'} **TOTALFLD := .T. **DISPLEN := 8 **DISPDEC := 2 **AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(DISCOUNT,6,2)' COLHEAD := {'Discnt'} TOTALFLD := .T. DISPLEN := 6 DISPDEC := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) ENDIF //** P3N - 08/30/01 FIELDNAME := 'STR(TOTAL_AMT,9,2)' COLHEAD := {' Total',' Amount'} TOTALFLD := .T. DISPLEN := 10 DISPDEC := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) RETURN FIELDARR ************************************************* FUNCTION GET_COMPNAME(SEEKKEY) LOCAL RETVAL IF CUST_MAST->(DBSEEK(SEEKKEY)) RETVAL := CUST_MAST->COMP_NAME ELSEIF EMPTY(SEEKKEY) //** P3N - 08/29/01 RETVAL := 'NO Customer Found' //** P3N - 08/29/01 ELSE RETVAL := 'Cust. ID - ' + TRIM(SEEKKEY) + ' NOT Found!' ENDIF RETURN TRIM(RETVAL) ************************************************* FUNCTION BLD_MOPROD(ACTION) LOCAL MORDER_NUM, SEEKKEY, MYEAR, MMONTH, MQUANTITY LOCAL RANGEBLOCK, MPROD_CODE, M_DATE LOCAL BARM_FACTOR, XXX := 0,I, SELFILE SELECT ORD_LINES IF LASTREC() = 1 .OR. EMPTY(RANGEARR) .OR. EMPTY(RANGEARR[1]) RANGEBLOCK := MAKE_BLOCK( '.T.' ) ELSE RANGEBLOCK := MAKE_BLOCK( RANGEARR[1] ) ENDIF DO CASE CASE ACTION = 'ORDER' M_DATE = 'ORDER_DATE' CASE ACTION = 'PRODUCTION' M_DATE = 'PDATE_LAST' CASE ACTION = 'INVOICING' M_DATE = 'IDATE_LAST' CASE ACTION = 'DELIVER' M_DATE = 'DDATE_LAST' END CASE FOR I := 1 TO 2 IF I = 1 SELFILE := 'ORD_LINES' ELSE SELFILE := 'ADDL_LINES' ENDIF SELECT (SELFILE) GOTO TOP BARM_FACTOR = SETBARM(,, 20, RECCOUNT() ) XXX = 0 DO WHILE !EOF() XXX++ BARM_UPDATE(,,XXX, BARM_FACTOR) IF NEXTKEY() = 27 INKEY() // GET RID OF ESCAPE KEY CLOSE DATABASES RETURN NIL ENDIF IF EMPTY(PROD_CODE) SKIP 1 LOOP ENDIF IF !EVAL(RANGEBLOCK) SKIP 1 LOOP ENDIF PROD_RPTLINE( SELFILE, M_DATE ) SKIP 1 ENDDO NEXT RETURN .T. ******************************************************** FUNCTION ORD_MAST_DATA( FLDNAME ) LOCAL SEEKKEY := ORDER_NUM ORD_MAST->(DBSEEK(SEEKKEY )) RETURN ORD_MAST->&FLDNAME ******************************************************** FUNCTION PROD_RPTLINE( SELFILE, MDATE ) LOCAL SAVESEL := SELECT(), M_DATE, MYEAR, MMONTH, MQUANTITY, MPROD_CODE LOCAL MLOC_CODE LOCAL MCOLOR := ' ' //** P3N - 01/16/02 LOCAL PRODTIME := LEFT(MDATE,1) //** P3N - 01/16/02 LOCAL MPRODHRS := 0 //** P3N - 01/16/02 ORD_MAST->(DBSEEK( (SAVESEL)->ORDER_NUM )) M_DATE := ORD_MAST->&MDATE MYEAR = STR(YEAR(M_DATE),4) MMONTH = LEFT(CMONTH(M_DATE),3) IF EMPTY(MMONTH) .OR. QUANTITY = 0 RETURN .F. ENDIF MCOLOR := GETCOLOR() //** P3N - 01/16/02 MPROD_CODE = PROD_CODE IF PRODTIME == 'P' //** P3N - 01/16/02 MQUANTITY := GETPRODQTY('QTY') //** P3N - 01/16/02 MPRODHRS := GETPRODQTY('HRS') //** P3N - 01/16/02 ELSE //** P3N - 01/16/02 MQUANTITY := QUANTITY //** P3N - 01/16/02 ENDIF //** P3N - 01/16/02 MLOC_CODE = LOC_CODE SEEKKEY = MYEAR + MPROD_CODE + MLOC_CODE SELECT USERFILE7 SEEK SEEKKEY IF !FOUND() ADD_REC() REPLACE PROD_YEAR WITH MYEAR REPLACE PROD_CODE WITH MPROD_CODE REPLACE LOC_CODE WITH MLOC_CODE ELSE REC_LOCK() ENDIF REPLACE PROD_COLOR WITH MCOLOR //** P3N - 01/16/02 REPLACE PROD_HOURS WITH PROD_HOURS + MPRODHRS //** P3N - 01/16/02 REPLACE &MMONTH WITH &MMONTH + MQUANTITY REPLACE CAT_CODE WITH GET_CATCODE(MPROD_CODE) REPLACE ORDER_NUM WITH ORD_MAST->ORDER_NUM REPLACE THIS_DATE WITH M_DATE REPLACE PDATE_LAST WITH ORD_MAST->PDATE_LAST REPLACE IDATE_LAST WITH ORD_MAST->IDATE_LAST REPLACE DDATE_LAST WITH ORD_MAST->DDATE_LAST UNLOCK SELECT (SAVESEL) RETURN .T. ******************************************************************** //** P3N - 01/16/02 ** //** GET THE PRODUCTION QTY FOR A GIVEN LINE ITEM ** ******************************************************************** FUNCTION GETPRODQTY(CMD) LOCAL RETVAL := 0 LOCAL CURFILE := 'ORD_PROD' LOCAL SVSEL := ALIAS() LOCAL SEEKKEY := (SVSEL)->ORDER_NUM + STR((SVSEL)->LINE_NUM,3) IF (CURFILE)->(DBSEEK(SEEKKEY)) DO WHILE (CURFILE)->(!EOF()) .AND. ; (CURFILE)->ORDER_NUM == ORD_LINES->ORDER_NUM .AND. ; (CURFILE)->LINE_NUM == ORD_LINES->LINE_NUM IF EMPTY((CURFILE)->COMPL_DATE) ELSEIF EMPTY(M->RANGE5) .AND. EMPTY(M->RANGE6) IF CMD == 'QTY' RETVAL := RETVAL + (CURFILE)->COMPL_QTY ELSEIF CMD == 'HRS' RETVAL := RETVAL + (CURFILE)->HOURS ENDIF ELSEIF (CURFILE)->COMPL_DATE >= M->RANGE5 .AND. ; (CURFILE)->COMPL_DATE <= M->RANGE6 IF CMD == 'QTY' RETVAL := RETVAL + (CURFILE)->COMPL_QTY ELSEIF CMD == 'HRS' RETVAL := RETVAL + (CURFILE)->COMPL_HOURS ENDIF ENDIF (CURFILE)->(DBSKIP(+1)) ENDDO ENDIF RETURN RETVAL ******************************************************************** //** P3N - 01/16/02 ** //** GET THE COLOR FOR A GIVEN LINE ITEM ** ******************************************************************** FUNCTION GETCOLOR(CMD) LOCAL RETVAL := '' LOCAL SVSEL := ALIAS(), CURFILE LOCAL SEEKKEY := '' IF ALLTRIM( SVSEL ) == 'ORD_LINES' CURFILE := 'ORDER_OPTS' ELSEIF ALLTRIM( SVSEL ) == 'ADDL_LINES' CURFILE := 'ADDL_OPTS' ENDIF IF EMPTY(CMD) .OR. ALLTRIM( SVSEL )$'ORD_LINES ADDL_LINES' SEEKKEY := ORD_LINES->ORDER_NUM + STR(ORD_LINES->LINE_NUM,3) IF (CURFILE)->(DBSEEK(SEEKKEY)) DO WHILE (CURFILE)->(!EOF()) .AND. ; (CURFILE)->ORDER_NUM == ORD_LINES->ORDER_NUM .AND. ; (CURFILE)->LINE_NUM == ORD_LINES->LINE_NUM IF AT('COLOR',(CURFILE)->ATT_CODE) > 0 RETVAL := (CURFILE)->USER_RESP ENDIF (CURFILE)->(DBSKIP(+1)) ENDDO ENDIF ELSEIF CMD == 'PROD_COLOR' RETVAL := (SVSEL)->PROD_COLOR ENDIF RETURN RETVAL ******************************************************************** // SELECT ORD_MAST // // IF LASTREC() = 1 .OR. EMPTY(RANGEARR) .OR. EMPTY(RANGEARR[1]) // RANGEBLOCK := MAKE_BLOCK( '.T.' ) // ELSE // RANGEBLOCK := MAKE_BLOCK( RANGEARR[1] ) // ENDIF // // GO TOP // BARM_FACTOR = SETBARM(,, 20, RECCOUNT() ) // DO WHILE EVAL(RANGEBLOCK) .AND. !EOF() // // XXX++ // BARM_UPDATE(,,XXX, BARM_FACTOR) // // DO CASE // CASE ACTION = 'ORDER' // M_DATE = ORDER_DATE // // CASE ACTION = 'PRODUCTION' // M_DATE = PDATE_LAST // // CASE ACTION = 'INVOICING' // M_DATE = IDATE_LAST // // CASE ACTION = 'DELIVER' // M_DATE = DDATE_LAST // END CASE // // MORDER_NUM = ORDER_NUM // // SELECT ORD_LINES // SEEK MORDER_NUM // DO WHILE MORDER_NUM = ORDER_NUM .AND. !EOF() // IF EMPTY(PROD_CODE) // SKIP 1 // LOOP // ENDIF // // MYEAR = STR(YEAR(M_DATE),4) // MMONTH = LEFT(CMONTH(M_DATE),3) // IF EMPTY(MMONTH) // SKIP 1 // LOOP // ENDIF // // MPROD_CODE = PROD_CODE // MQUANTITY = QUANTITY // // SEEKKEY = MYEAR + MPROD_CODE // SELECT USERFILE7 // SEEK SEEKKEY // IF !FOUND() // ADD_REC() // REPLACE PROD_YEAR WITH MYEAR // REPLACE PROD_CODE WITH MPROD_CODE // ELSE // REC_LOCK() // ENDIF // // REPLACE &MMONTH WITH &MMONTH + MQUANTITY // REPLACE CAT_CODE WITH GET_CATCODE(MPROD_CODE) // REPLACE CAT_CODE WITH GET_CATCODE(MPROD_CODE) // REPLACE ORDER_NUM WITH ORD_MAST->ORDER_NUM // REPLACE ORDER_DATE WITH ORD_MAST->ORDER_DATE // REPLACE PDATE_LAST WITH ORD_MAST->PDATE_LAST // REPLACE IDATE_LAST WITH ORD_MAST->IDATE_LAST // REPLACE DDATE_LAST WITH ORD_MAST->DDATE_LAST // // UNLOCK // SELECT ORD_LINES // SKIP 1 // ENDDO // SELECT ORD_MAST // SKIP 1 // ENDDO // RETURN NIL // ************************************************* FUNCTION DEF_MOPROD() LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 FIELDNAME := 'PROD_YEAR' COLHEAD := {'Year'} TOTALFLD := .F. DISPLEN := 6 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'PROD_CODE' COLHEAD := {'Product'} TOTALFLD := .F. DISPLEN := 9 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'PROD_COLOR' //** P3N - 01/16/02 COLHEAD := {'Product',' Color'} //** P3N - 01/16/02 TOTALFLD := .F. //** P3N - 01/16/02 DISPLEN := 10 //** P3N - 01/16/02 DISPDEC := 0 //** P3N - 01/16/02 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) IF M->PRODTIME = 2 //** P3N - 01/16/02 FIELDNAME := 'STR(PROD_HOURS,10,2)' //** P3N - 01/16/02 COLHEAD := {'Total Prod',' Hours'} //** P3N - 01/16/02 TOTALFLD := .T. //** P3N - 01/16/02 DISPLEN := 10 //** P3N - 01/16/02 DISPDEC := 2 //** P3N - 01/16/02 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) ENDIF //** P3N - 01/16/02 FIELDNAME := 'LOC_CODE' COLHEAD := {'Location'} TOTALFLD := .F. DISPLEN := 14 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(JAN,5)' COLHEAD := {' JAN'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(FEB,5)' COLHEAD := {' FEB'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(MAR,5)' COLHEAD := {' MAR'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(APR,5)' COLHEAD := {' APR'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(MAY,5)' COLHEAD := {' MAY'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(JUN,5)' COLHEAD := {' JUN'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(JUL,5)' COLHEAD := {' JUL'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(AUG,5)' COLHEAD := {' AUG'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(SEP,5)' COLHEAD := {' SEP'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(OCT,5)' COLHEAD := {' OCT'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(NOV,5)' COLHEAD := {' NOV'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(DEC,5)' COLHEAD := {' DEC'} TOTALFLD := .T. DISPLEN := 5 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'STR(YEAR_END(),10)' COLHEAD := {' TOTAL'} TOTALFLD := .T. DISPLEN := 10 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) RETURN FIELDARR ************************************************* //** P3N - 02/27/02 ** //** PER LINDAS REQUEST FROM DATADICT PRNT_POS** ************************************************* FUNCTION DEF_CMRPT() LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 FIELDNAME := 'CUST_ID' COLHEAD := {'Customer','Number'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'COMP_NAME' COLHEAD := {'Customer','Name'} TOTALFLD := .F. DISPLEN := 30 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) //**FIELDNAME := 'ALLTRIM(CONT_FNAME) + " " + CONT_LNAME' //**COLHEAD := {'Contact','Name'} //**TOTALFLD := .F. //**DISPLEN := 40 //**AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'CUST_ADDR' COLHEAD := {'Address '} TOTALFLD := .F. DISPLEN := 30 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'CUST_ADDR2' COLHEAD := {'Address '} TOTALFLD := .F. DISPLEN := 30 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'CUST_CITY' COLHEAD := {'City'} TOTALFLD := .F. DISPLEN := 30 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'CUST_STATE' COLHEAD := {'ST'} TOTALFLD := .F. DISPLEN := 2 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'CUST_ZIP' COLHEAD := {' Zip'} TOTALFLD := .F. DISPLEN := 5 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'PHONE' COLHEAD := {'Phone'} TOTALFLD := .F. DISPLEN := 12 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'FAX' COLHEAD := {'FAX'} TOTALFLD := .F. DISPLEN := 12 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'TERMS +"/"+ GETTERMS()' COLHEAD := {'Terms'} TOTALFLD := .F. DISPLEN := 25 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'STR(CREDIT_LIM,12,2)' COLHEAD := {'Credit Limit'} TOTALFLD := .F. DISPLEN := 12 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'SPACE(3)+PRE_BILL' COLHEAD := {'PreBill'} TOTALFLD := .F. DISPLEN := 7 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'SPACE(1)+PICK_DEL' COLHEAD := {'PU','Del','Ins'} TOTALFLD := .F. DISPLEN := 3 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + DEL_ROUTE' COLHEAD := {'Del', 'Rte'} TOTALFLD := .F. DISPLEN := 3 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + GL_CODE' COLHEAD := {'GL', 'Code'} TOTALFLD := .F. DISPLEN := 4 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) RETURN FIELDARR ************************************************* //** P3N - 02/27/02 ************************************************* FUNCTION GETTERMS() LOCAL SEEKKEY := CUST_MAST->TERMS LOCAL RETVAL := 'No TERM ' + ALLTRIM(SEEKKEY) + ' FOUND' IF TERMS->(DBSEEK(SEEKKEY)) RETVAL := TERMS->DESC ENDIF RETURN RETVAL ************************************************* FUNCTION BLD_CUSTDEL() LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 FIELDNAME := 'CUST_ID' COLHEAD := {'Customer',' ID'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'COMP_NAME' COLHEAD := {'Customer','Name'} TOTALFLD := .F. DISPLEN := 30 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'ALLTRIM(CONT_FNAME) + " " + CONT_LNAME' COLHEAD := {'Contact','Name'} TOTALFLD := .F. DISPLEN := 15 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + DEL_ROUTE' COLHEAD := {'Delivery', ' Route'} TOTALFLD := .F. DISPLEN := 30 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'SHIPNAME' COLHEAD := {'Shipping', 'Information'} TOTALFLD := .F. DISPLEN := 40 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) RETURN FIELDARR ************************************************* FUNCTION BLD_CUSTSETUP() LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 FIELDNAME := 'CUST_ID' COLHEAD := {'Customer',' ID'} TOTALFLD := .F. DISPLEN := 8 DISPDEC := 0 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC} ) FIELDNAME := 'COMP_NAME' COLHEAD := {'Customer','Name'} TOTALFLD := .F. DISPLEN := 30 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + PICK_DEL' COLHEAD := {'PU/DEL','Install'} TOTALFLD := .F. DISPLEN := 7 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + SHP_METHOD' COLHEAD := {'Shipping', ' Code'} TOTALFLD := .F. DISPLEN := 8 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + SLSMAN' COLHEAD := {'Salesman'} TOTALFLD := .F. DISPLEN := 8 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + TERMS' COLHEAD := {'Terms'} TOTALFLD := .F. DISPLEN := 5 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + PRICE_SHT' COLHEAD := {'Price', 'Sheet'} TOTALFLD := .F. DISPLEN := 5 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := 'TAXSCH' COLHEAD := {'Sales', ' Tax','Sched'} TOTALFLD := .F. DISPLEN := 6 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) **FIELDNAME := 'STR(SLS_TX_PCT,7,4)' FIELDNAME := 'STR( CALC_STAX( TAXSCH, .F. ),7,4)' COLHEAD := {'Sales', ' Tax',' %'} TOTALFLD := .F. DISPLEN := 6 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) FIELDNAME := '" " + RND_PRICE' COLHEAD := {'Round', 'Price'} TOTALFLD := .F. DISPLEN := 5 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) RETURN FIELDARR ************************************************* ********************************************************* FUNCTION SEEKCATDESC(SEEKKEY) LOCAL SAVESEL := SELECT() SELECT CATEGORY DBSEEK(SEEKKEY) SELECT (SAVESEL) RETURN ALLTRIM(CATEGORY->DESC) ************************************************** FUNCTION SEEKATTDESC(SEEKKEY) LOCAL SAVESEL := SELECT() SELECT ATTRIBUTES DBSEEK(SEEKKEY) SELECT (SAVESEL) RETURN '"' + ALLTRIM(ATTRIBUTES->ATT_CODE) + '"/' + ALLTRIM(ATTRIBUTES->DESC) ************************************************** * BUILD THE PRICING REPORT IN A USER FILE ************************************************** FUNCTION BLD_PRICERPT(DATAFILE, PKEY, RPT_TYPE, LEVEL ) LOCAL PROD_ARR := {}, P_ARR := {}, G_ARR := {}, I, ELM, II LOCAL ROW_CNT := 0, COL_CNT := 0, CNT_ARR := {}, AS_FILE, P_SOURCE LOCAL MP_KEY, MP_SK_BLK, MP_FOUND := .F., PCT_STR LOCAL PE_KEY, PE_SK_BLK, PE_FOUND := .F., P_ARRAY := {}, SEEKKEY LOCAL CUT_SPEC_ARR, L, L2, MP_ARR //* //* OPEN ALL DBFS TO BE USED TO BUILD THE REPORT //* DBOPEN('RULES') DBOPEN('RULEPACK') DBOPEN('CUST_ATTS',,,{2}) DBOPEN('CUST_OPTS',,,{3}) DBOPEN('PROD_ATTS',,,{2}) DBOPEN('PROD_OPTS',,,{3}) DBOPEN('CAT_ATTS',,,{2}) DBOPEN('CAT_OPTS',,,{3}) DBOPEN('ATTRIBUTES',,,{1}) DBOPEN('ATT_OPTS',,,{3}) DBOPEN('MATHPACK',,,{1}) DBOPEN('PRI_EXTRAS',,,{2}) DBOPEN('CUST_PE',,,{1}) DBOPEN("PRODUCT",,, {1}) // OPEN PRODUCT FILE FO SINGLE INDEX DBOPEN("CATEGORY",,, {1}) // OPEN CATEGORY FILE FO SINGLE INDEX DBOPEN("CUT_SPEC") DBOPEN("ATTRIB_CUT") IF LEVEL = 'MODEL' PR_CUSTID := SPACE(8) ELSE PR_CUSTID := CUST_MAST->CUST_ID ENDIF PROD_ARR := BUILD_GETARR(PKEY, 2,,,,,,PR_CUSTID) //* GET ALL INFO FOR THE PRICING RPT P_ARRAY := PROD_ARR[PRICE_ARR] G_ARR := PROD_ARR[GET_ARR] AS_FILE := PROD_ARR[ATRB_SRC] IF SUBS(PROD_ARR[ATRB_SRC], 1, 3) == 'PRO' //PRODUCT LEVEL P_SOURCE := 'MODEL Level' ELSEIF SUBS(PROD_ARR[ATRB_SRC], 1, 3) == 'CAT' //CATEGORY LEVEL P_SOURCE := 'CATEGORY Level' ELSEIF SUBS(PROD_ARR[ATRB_SRC], 1, 3) == 'CUS' //CATEGORY LEVEL P_SOURCE := 'CUSTOMER Level' ELSE P_SOURCE := 'SYSTEM Level' // SYSTEM LEVEL ENDIF // ADDED BY DON 2-21-94 TO GET DEALER PICKUP DISCOUNT SELECT CATEGORY DBSEEK(PRODUCT->CAT_CODE) SELECT USERFILE7 GO TOP IF RPT_TYPE == 'PRICE' //PRICING REPORT FOR II := 1 TO LEN(P_ARRAY) IF LEVEL = 'CUST' .AND. P_ARRAY[II,1] <> CUST_MAST->PRICE_SHT LOOP ENDIF P_ARR := GET_PRICEARR(P_ARRAY, P_ARRAY[II, 1]) IF EMPTY(P_ARR) LOOP ENDIF IF LEVEL = 'CUST' REP_VAR := 'Normal Base Price for CUSTOMER ' + PR_CUSTID + ' - (Pick up Discount = ' ; + STR(CATEGORY->D_PICKDISC, 5,2) + ')' * ADD_U7(REP_VAR) * REP_VAR := ' ' * ADD_U7(REP_VAR) * LOOP ELSE IF P_ARRAY[II, 1] == 'D' //DEALER PRICING REP_VAR := 'Base Price - DEALER PRICING - (Pick up Discount = ' ; + STR(CATEGORY->D_PICKDISC, 5,2) + ')' ELSE IF VALTYPE(P_ARR) != 'A' // IS THIS AN ARRAY OF ROWS / COLS // NO - IT IS THE % OF DEALER PRICE PCT_STR := STR(P_ARR,6,2) + '% ' + ' of Dealer Price' IF P_ARRAY[II, 1] == 'J' //DISTIBUTER PRICING REP_VAR := 'Base Price - DISTRIBUTER PRICING - ' + PCT_STR ELSEIF P_ARRAY[II, 1] == 'L' //LUMBER MAN PRICING REP_VAR := 'Base Price - LUMBER MAN PRICING - ' + PCT_STR ELSEIF P_ARRAY[II, 1] == 'B' //BUILDER PRICING REP_VAR := 'Base Price - BUILDER PRICING - ' + PCT_STR ELSEIF P_ARRAY[II, 1] == 'S' //SPECIAL DEALER PRICING REP_VAR := 'Base Price - SPECIAL DEALER PRICING - ' + PCT_STR ELSEIF P_ARRAY[II, 1] == 'I' //INTERCOMPANY PRICING REP_VAR := 'Base Price - INTERCOMPANY PRICING - ' + PCT_STR ELSE //PRICING OPTION NOT FOUND REP_VAR := 'OPTION NOT FOUND - ' + P_ARR[II, 1] ENDIF ADD_U7(REP_VAR) REP_VAR := ' ' ADD_U7(REP_VAR) LOOP ELSE IF P_ARRAY[II, 1] == 'J' //DISTIBUTER PRICING REP_VAR := 'Base Price - DISTRIBUTER PRICING ' ELSEIF P_ARRAY[II, 1] == 'L' //LUMBER MAN PRICING REP_VAR := 'Base Price - LUMBER MAN PRICING ' ELSEIF P_ARRAY[II, 1] == 'B' //BUILDER PRICING REP_VAR := 'Base Price - BUILDER PRICING ' ELSEIF P_ARRAY[II, 1] == 'S' //SPECIAL DEALER PRICING REP_VAR := 'Base Price - SPECIAL DEALER PRICING ' ELSEIF P_ARRAY[II, 1] == 'I' //SPECIAL DEALER PRICING REP_VAR := 'Base Price - INTERCOMPANY PRICING ' ELSE //PRICING OPTION NOT FOUND REP_VAR := 'OPTION NOT FOUND - ' + P_ARR[II, 1] ENDIF ENDIF ENDIF ENDIF ADD_U7(REP_VAR) REP_VAR := SPACE(15) + ' Attributes' + SPACE(5) + ' Options' + SPACE(15) + 'Default Rule' ADD_U7(REP_VAR) REP_VAR := SPACE(15) + ' ----------' + SPACE(5) + ' -------' + SPACE(15) + '------- ----' ADD_U7(REP_VAR) FOR I := 1 TO LEN(P_ARR) IF P_ARR[I, ROW_COL] == 'R' // PROCESS ROWS ELM := ASCAN(G_ARR, { |X| X[ATRB] == P_ARR[I, ATRB] } ) IF ELM > 0 CNT_ARR := BLD_BASE( G_ARR[ELM], P_ARR[I], ROW_CNT, COL_CNT ) ROW_CNT := CNT_ARR[1] COL_CNT := CNT_ARR[2] ENDIF ENDIF NEXT ROW_CNT := 0 COL_CNT := 0 FOR I := 1 TO LEN(P_ARR) IF P_ARR[I, ROW_COL] == 'C' // PROCESS COLUMNS ELM := ASCAN(G_ARR, { |X| X[ATRB] == P_ARR[I, ATRB] } ) IF ELM > 0 CNT_ARR := BLD_BASE( G_ARR[ELM], P_ARR[I], ROW_CNT, COL_CNT ) ROW_CNT := CNT_ARR[1] COL_CNT := CNT_ARR[2] ENDIF ENDIF NEXT ROW_CNT := 0 COL_CNT := 0 NEXT BLD_LEGND('1') ELSE //PRODUCTION REPORT REP_VAR := 'Production Information:' ADD_U7(REP_VAR) ADD_U7(' ') REP_VAR := 'Adjustments:' ADD_U7(REP_VAR) REP_VAR := 'SAW Width' + SPACE(5) + 'SAW Height' + SPACE(5) + ; ' TT Width' + SPACE(5) + ' TT Height' + SPACE(5) + ; ' NS Width' + SPACE(5) + ' NS Height' + SPACE(5) + ; ' OS Width' + SPACE(5) + ' OS Height' + SPACE(5) ADD_U7(REP_VAR) REP_VAR := '---------' + SPACE(5) + '----------' + SPACE(5) + ; '---------' + SPACE(5) + '----------' + SPACE(5) + ; '---------' + SPACE(5) + '----------' + SPACE(5) + ; '---------' + SPACE(5) + '----------' + SPACE(5) ADD_U7(REP_VAR) REP_VAR := STR(PRODUCT->SAW_WIDTH,9,4) + SPACE(5) + STR(PRODUCT->SAW_HEIGHT,10,4) + SPACE(5) + ; STR(PRODUCT->TT_WIDTH,9,4) + SPACE(5) + STR(PRODUCT->TT_HEIGHT,10,4) + SPACE(5) + ; STR(PRODUCT->NS_WIDTH,9,4) + SPACE(5) + STR(PRODUCT->NS_HEIGHT,10,4) + SPACE(5) + ; STR(PRODUCT->OS_WIDTH,9,4) + SPACE(5) + STR(PRODUCT->OS_HEIGHT,10,4) ADD_U7(REP_VAR) ADD_U7(' ') REP_VAR := 'Sizes:' ADD_U7(REP_VAR) REP_VAR := 'Storm Width ' + SPACE(2) + 'Storm Hght ' + SPACE(5) + ; 'Screen Width' + SPACE(2) + 'Screen Hght' + SPACE(5) + ; 'Glass Width ' + SPACE(2) + 'Glass Hght ' + SPACE(5) + ; 'Sash Width ' + SPACE(2) + 'Sash Hght ' ADD_U7(REP_VAR) REP_VAR := '----------- ' + SPACE(2) + '---------- ' + SPACE(5) + ; '------------' + SPACE(2) + '-----------' + SPACE(5) + ; '----------- ' + SPACE(2) + '---------- ' + SPACE(5) + ; '---------- ' + SPACE(2) + '--------- ' ADD_U7(REP_VAR) REP_VAR := SPACE(3) + ; STR(PRODUCT->STR_WIDTH,8,4) + SPACE(5) + STR(PRODUCT->STR_HEIGHT,8,4) + SPACE(10) + ; STR(PRODUCT->MACH_SCRNW,8,4) + SPACE(5) + STR(PRODUCT->MACH_SCRNW,8,4) + SPACE(8) + ; STR(PRODUCT->MACH_GLASW,8,4) + SPACE(5) + STR(PRODUCT->MACH_GLASW,8,4) + SPACE(8) + ; STR(PRODUCT->MACH_SASHW,8,4) + SPACE(5) + STR(PRODUCT->MACH_SASHW,8,4) ADD_U7(REP_VAR) ENDIF ************************************************** * BUILD THE PRODUCT OPTIONS PRICING INFO ************************************************** REP_VAR := REPLICATE('-', LEN(USERFILE7->DATA) ) ADD_U7(REP_VAR) IF RPT_TYPE == 'PRICE' //PRICING REPORT REP_VAR := 'Product Option Pricing - Attributes are Defined at the ' ELSE REP_VAR := 'Product Option Cutting - Attributes are Defined at the ' ENDIF REP_VAR := REP_VAR + ALLTRIM(P_SOURCE) ADD_U7(REP_VAR) REP_VAR := ' ' ADD_U7(REP_VAR) IF RPT_TYPE == 'PRICE' //PRICING REPORT REP_VAR := ' Attributes' + ' B/A' + ' Options' + ; SPACE(21) + '$/Unit ' + SPACE(6) + ' $/UI' + SPACE(5) + ; ' $/SqFt' + SPACE(5) + ' Default Rule' + SPACE(5) + 'Print Options' ADD_U7(REP_VAR) REP_VAR := ' ----------' + ' ---' + ' -------' + ; SPACE(21) + '------ ' + SPACE(6) + '------' + SPACE(5) + ; '--------' + SPACE(5) + '------- ----' + SPACE(5) + '-------------' ELSE //PRODUCTION REPORT REP_VAR := ' Attributes' + ' B/A' + ' Options' + ; SPACE(17) + 'Width Adj.' + SPACE(2) + 'Height Adj.' + SPACE(3) + ; 'Default' + SPACE(3) + 'Rule' + SPACE(5) + 'Print Options' ADD_U7(REP_VAR) REP_VAR := ' ----------' + ' ---' + ' -------' + ; SPACE(17) + '----------' + SPACE(2) + '-----------' + SPACE(3) + ; '-------' + SPACE(3) + '----' + SPACE(5) + '-------------' ENDIF ADD_U7(REP_VAR) FOR I := 1 TO LEN(G_ARR) IF EMPTY(G_ARR[I]) ELSE REP_VAR := SPACE(1) BLD_OPT(G_ARR[I], REP_VAR, 'PO', RPT_TYPE) ENDIF NEXT BLD_LEGND('2') ************************************************** * BUILD THE USER NUMERIC INPUT FIELDS ************************************************** REP_VAR := REPLICATE('-', LEN(USERFILE7->DATA) ) ADD_U7(REP_VAR) REP_VAR := 'User Numeric Input Fields - Attributes are Defined at the ' REP_VAR := REP_VAR + ALLTRIM(P_SOURCE) ADD_U7(REP_VAR) REP_VAR := SPACE(10) + 'User Input Attributes' ADD_U7(REP_VAR) REP_VAR := SPACE(10) + '---------------------' ADD_U7(REP_VAR) FOR I := 1 TO LEN(G_ARR) IF EMPTY( G_ARR[I] ) ELSE IF G_ARR[I, OPT_TYP] == 'U' REP_VAR := SPACE(15) + G_ARR[I, ATRB] ADD_U7(REP_VAR) ENDIF ENDIF NEXT ************************************************** * BUILD THE SYSTEM CALC FIELDS - MATHPACK ************************************************** REP_VAR := REPLICATE('-', LEN(USERFILE7->DATA) ) ADD_U7(REP_VAR) REP_VAR := 'System Calc. Fields - These Apply to ALL UI Excess Attributes for entire CATEGORY - ' REP_VAR := REP_VAR + SEEKCATDESC(PRODUCT->CAT_CODE) ADD_U7(REP_VAR) REP_VAR := SPACE(15) + 'Calc Attribute' + SPACE(4) + ' Field 1 ' + SPACE(6) + 'Oper' + SPACE(10) + ' Field 2 ' ADD_U7(REP_VAR) REP_VAR := SPACE(15) + '--------------' + SPACE(4) + '---------' + SPACE(6) + '----' + SPACE(10) + '---------' ADD_U7(REP_VAR) FOR I := 1 TO LEN(G_ARR) IF EMPTY( G_ARR[I] ) ELSE IF G_ARR[I, OPT_TYP] == 'C' REP_VAR := SPACE(19) + G_ARR[I, ATRB] MP_KEY := PRODUCT->CAT_CODE + G_ARR[I, ATRB] MP_SK_BLK := {|| MATHPACK->CAT_CODE + MATHPACK->ATT_CODE} MP_FOUND := MATHPACK->(DBSEEK (MP_KEY) ) IF MP_FOUND DO WHILE MP_KEY == EVAL(MP_SK_BLK) REP_VAR := REP_VAR + SPACE(5) + MATHPACK->FIELD1 + SPACE(6) + MATHPACK->OPERATOR + SPACE(15) + MATHPACK->FIELD2 ADD_U7(REP_VAR) MATHPACK->(DBSKIP(1)) REP_VAR := SPACE(29) ENDDO ELSE REP_VAR := REP_VAR + 'NO Calc. Values FOUND' ADD_U7(REP_VAR) ENDIF ENDIF ENDIF NEXT IF RPT_TYPE == 'PRICE' //PRICING REPORT ************************************************** * BUILD THE PRICING EXTRA FIELDS - PRI_EXTRAS ************************************************** REP_VAR := REPLICATE('-', LEN(USERFILE7->DATA) ) ADD_U7(REP_VAR) REP_VAR := 'Pricing Extra Fields Defined for CATEGORY - ' REP_VAR := REP_VAR + SEEKCATDESC(PRODUCT->CAT_CODE) ADD_U7(REP_VAR) REP_VAR := SPACE(5) + ' Extra Option ' + SPACE(5) + ' Rule ' REP_VAR := REP_VAR + SPACE(5) + 'Price Sheet' REP_VAR := REP_VAR + SPACE(5) + 'True Value' + SPACE(5) + 'False Value' REP_VAR := REP_VAR + SPACE(5) + ' $ / Unit ' + SPACE(5) + ' $ / UI ' REP_VAR := REP_VAR + SPACE(5) + ' $ / SqFt ' ADD_U7(REP_VAR) REP_VAR := SPACE(5) + '---------------- ' + SPACE(5) + ' ---- ' REP_VAR := REP_VAR + SPACE(5) + '-----------' REP_VAR := REP_VAR + SPACE(5) + '----------' + SPACE(5) + '-----------' REP_VAR := REP_VAR + SPACE(5) + ' -------- ' + SPACE(5) + ' ------- ' REP_VAR := REP_VAR + SPACE(5) + ' -------- ' ADD_U7(REP_VAR) PE_KEY := PRODUCT->CAT_CODE PE_SK_BLK := {|| PRI_EXTRAS->CAT_CODE } PE_FOUND := PRI_EXTRAS->(DBSEEK (PE_KEY) ) IF PE_FOUND DO WHILE PE_KEY == EVAL(PE_SK_BLK) REP_VAR := STR(PRI_EXTRAS->SEQ_NUM,2) + '. '+ PRI_EXTRAS->OPTION + SPACE(5) REP_VAR := REP_VAR + PRI_EXTRAS->RULE_PACK + SPACE(5) REP_VAR := REP_VAR + PRI_EXTRAS->PRICE_SHT + SPACE(7) REP_VAR := REP_VAR + PRI_EXTRAS->TRUE_VAL + SPACE(5) REP_VAR := REP_VAR + PRI_EXTRAS->FALSE_VAL + SPACE(6) REP_VAR := REP_VAR + TRANSFORM(PRI_EXTRAS->UNIT_SALE, '99,999.99') + SPACE(6) //** P3N - 6/9/98 UPDATED TO ALLOW UI/SQFT PRICING @ .01 CENT REP_VAR := REP_VAR + TRANSFORM(PRI_EXTRAS->UI_SALE, '99,999.9999') + SPACE(4) REP_VAR := REP_VAR + TRANSFORM(PRI_EXTRAS->SQFT_SALE, '99,999.9999') ******REP_VAR := REP_VAR + TRANSFORM(PRI_EXTRAS->UI_SALE, '99,999.99') + SPACE(6) ******REP_VAR := REP_VAR + TRANSFORM(PRI_EXTRAS->SQFT_SALE, '99,999.99') ADD_U7(REP_VAR) SEEKKEY := PRI_EXTRAS->CAT_CODE + PRI_EXTRAS->OPTION CUST_PE->(DBSEEK(SEEKKEY) ) DO WHILE CUST_PE->CAT_CODE + CUST_PE->OPTION == SEEKKEY .AND. !EOF() IF EMPTY(PR_CUSTID) .OR. CUST_PE->CUST_ID == PR_CUSTID REP_VAR := SPACE(41) + '* ' + CUST_PE->CUST_ID + ' *' ADD_U7(REP_VAR) ENDIF CUST_PE->(DBSKIP(1)) ENDDO PRI_EXTRAS->(DBSKIP(1)) ENDDO ELSE REP_VAR := 'NO Pricing Extras FOUND' ADD_U7(REP_VAR) ENDIF ENDIF ************************************************** * BUILD THE CUTTING SPEC ARRAY AND PRINT IT ************************************************** IF LEVEL == 'MODEL' //MODEL CUTTING REPT REP_VAR := REPLICATE('-', LEN(USERFILE7->DATA) ) ADD_U7(REP_VAR) REP_VAR = 'Cutting Specifications' ADD_U7(REP_VAR) REP_VAR = 'ATTRIBUTE DESC' + SPACE(22) + 'CODE PROFILE SEQ# QTY RULE PRINT ON' REP_VAR = REP_VAR + ' Field 1 ' + SPACE(2) + 'Oper' + SPACE(1) + 'Field 2' ADD_U7(REP_VAR) REP_VAR = '---------- ------------------------- ------ ------- ---- --- ------- --------' REP_VAR = REP_VAR + ' ---------' + SPACE(1) + '----' + SPACE(1) + '---------' ADD_U7(REP_VAR) CUT_SPEC_ARR := GET_CUT_SPEC( PKEY ) FOR L = 1 TO LEN(CUT_SPEC_ARR) REP_VAR = CUT_SPEC_ARR[L,1] + ' ' // ATT_CODE REP_VAR = REP_VAR + CUT_SPEC_ARR[L,10] + ' ' // DESC REP_VAR = REP_VAR + CUT_SPEC_ARR[L,4] + ' ' // PRNT CODE REP_VAR = REP_VAR + CUT_SPEC_ARR[L,5] + ' ' // PROFILE REP_VAR = REP_VAR + STR(CUT_SPEC_ARR[L,2],4) + ' ' // SEQ # REP_VAR = REP_VAR + STR(CUT_SPEC_ARR[L,3],3) + ' ' // QTY REP_VAR = REP_VAR + CUT_SPEC_ARR[L,8] + ' ' // RULE REP_VAR = REP_VAR + CUT_SPEC_ARR[L,9] + ' ' // PRINT ON MP_ARR := {} SEEKKEY = PRODUCT->PROD_CODE + CUT_SPEC_ARR[L,1] // MATH PACK SELECT MATHPACK SEEK SEEKKEY DO WHILE SEEKKEY == CAT_CODE + ATT_CODE IF TYPE = 'C' // CUTTING SPEC MATH PATH AADD(MP_ARR, FIELD1 + SPACE(2) + OPERATOR + SPACE(2) + FIELD2) ENDIF SKIP 1 ENDDO IF !EMPTY(MP_ARR) FOR L2 = 1 TO LEN(MP_ARR) IF L2 = 1 // IF IT'S THE FIRST LINE REP_VAR = REP_VAR + SPACE(1) + MP_ARR[L2] ELSE REP_VAR = SPACE(78) + MP_ARR[L2] ENDIF ADD_U7(REP_VAR) NEXT ELSE ADD_U7(REP_VAR) ENDIF NEXT ENDIF REP_VAR := REPLICATE('-', LEN(USERFILE7->DATA) ) ADD_U7(REP_VAR) RETURN P_SOURCE ************************************************** * BUILD THE BASE PRICING REPORT INFO ************************************************** PROCEDURE BLD_BASE(G_ARR, P_ARR, ROW_CNT, COL_CNT) LOCAL REP_VAR := ' ', I IF P_ARR[ROW_COL] == 'R' .AND. ROW_CNT < 1 ROW_CNT ++ REP_VAR := SPACE(2) + 'ROWS ' ELSEIF P_ARR[ROW_COL] == 'C' .AND. COL_CNT < 1 COL_CNT ++ REP_VAR := SPACE(2) + 'COLUMNS ' ELSE REP_VAR := SPACE(10) ENDIF BLD_OPT(G_ARR, REP_VAR, 'BP') RETURN {ROW_CNT, COL_CNT} ************************************************** * FIND ALL OPTIONS IN THE OPT_ARR - G_ARR[3] ************************************************** PROCEDURE BLD_OPT ( G_ARR, REP_VAR, TYP, RPT_TYPE ) *-LOCAL I, OPT_SOURCE LOCAL I, OPT_SOURCE, MSEQUENCE IF EMPTY( G_ARR[OPT_ARR] ) .OR. G_ARR[OPT_TYP]$'CU' ELSE // MSL *-REP_VAR := REP_VAR + SPACE(9) + G_ARR[ATRB] //// MIKE LEWIS CHANGE 2/21/94 // MOVED THE FOLLOWING TO END OF ATTRIBUTE IF SUBS(G_ARR[OPT_SRC], 1, 3) == 'PRO' OPT_SOURCE := '(M) ' ELSEIF SUBS(G_ARR[OPT_SRC], 1, 3) == 'CAT' OPT_SOURCE := '(C) ' ELSEIF SUBS(G_ARR[OPT_SRC], 1, 3) == 'CUS' OPT_SOURCE := '(U) ' ELSE OPT_SOURCE := '(S) ' ENDIF IF TYP == 'BP' REP_VAR := REP_VAR + SPACE(5) + OPT_SOURCE + G_ARR[ATRB] ELSEIF TYP == 'PO' REP_VAR := REP_VAR + OPT_SOURCE + G_ARR[ATRB] + ' (' + G_ARR[BAFLAG] + ')' ENDIF FOR I := 1 TO LEN(G_ARR[OPT_ARR]) //// MIKE LEWIS CHANGE 2/21/94 // PUTTING THE SEQUENCE NUMBER OF OPTION WHERE THE SOURCE WAS! MSEQUENCE = STR(G_ARR[OPT_ARR,I,5],2) + '. ' // SEQUENCE OF OPTIONS IF TYP == 'BP' // BASE PRICE REP_VAR := REP_VAR + SPACE(5) + MSEQUENCE + G_ARR[OPT_ARR, I, OPT_DESC] REP_VAR := REP_VAR + SPACE(4) + G_ARR[OPT_ARR, I, OPT_DEF] REP_VAR := REP_VAR + SPACE(5) + G_ARR[OPT_ARR, I, OPT_RULE] ADD_U7(REP_VAR) REP_VAR := SPACE(29) ELSEIF TYP == 'PO' // PRICING OPTIONS REP_VAR := REP_VAR + SPACE(3) + MSEQUENCE + G_ARR[OPT_ARR, I, OPT_DESC] IF RPT_TYPE == 'PRICE' //PRICING REPORT REP_VAR := REP_VAR + SPACE(3) + TRANSFORM(G_ARR[OPT_ARR, I, OPT_AMTS, OA_PRICE], '9,999.99') REP_VAR := REP_VAR + SPACE(3) + TRANSFORM(G_ARR[OPT_ARR, I, OPT_AMTS, OA_UI], '9,999.9999') REP_VAR := REP_VAR + SPACE(3) + TRANSFORM(G_ARR[OPT_ARR, I, OPT_AMTS, OA_SQFT], '9,999.9999') ELSE //PRODUCT REPORT REP_VAR := REP_VAR + SPACE(3) + TRANSFORM(G_ARR[OPT_ARR, I, OPT_WADJ], '999.9999') REP_VAR := REP_VAR + SPACE(3) + TRANSFORM(G_ARR[OPT_ARR, I, OPT_HADJ], '999.9999') ENDIF REP_VAR := REP_VAR + SPACE(8) + G_ARR[OPT_ARR, I, OPT_DEF] REP_VAR := REP_VAR + SPACE(6) + G_ARR[OPT_ARR, I, OPT_RULE] IF EMPTY( G_ARR[OPT_ARR, I, OPT_PIND] ) ELSE REP_VAR := REP_VAR + SPACE(3) + '(' + G_ARR[OPT_ARR, I, OPT_PIND] + ')' REP_VAR := REP_VAR + SPACE(1) + G_ARR[OPT_ARR, I, OPT_PVAL] ENDIF ADD_U7(REP_VAR) REP_VAR := SPACE(20) ENDIF NEXT ADD_U7(REP_VAR) ENDIF RETURN ************************************************** * CREATE THE LEGEND FOR THE REPORTS ************************************************** PROCEDURE BLD_LEGND(OPT) LOCAL REP_VAR IF OPT == '1' REP_VAR := SPACE(15) + '(S) - SYSTEM Option ' ELSE REP_VAR := SPACE(1) + '(S) - SYSTEM Option ' + SPACE(76) + '(A) - ALWAYS Print' ENDIF ADD_U7(REP_VAR) IF OPT == '1' REP_VAR := SPACE(15) + '(C) - CATEGORY Option ' ELSE REP_VAR := SPACE(1) + '(C) - CATEGORY Option ' + SPACE(76) + '(N) - NEVER Print' ENDIF ADD_U7(REP_VAR) IF OPT == '1' REP_VAR := SPACE(15) + '(M) - MODEL Option ' ELSE REP_VAR := SPACE(1) + '(M) - MODEL Option ' + SPACE(76) + '(D) - Print If DEFAULT' ENDIF ADD_U7(REP_VAR) IF OPT == '1' REP_VAR := SPACE(15) + '(U) - USER DEFINED Special Pricing Option' ELSE REP_VAR := SPACE(1) + '(U) - USER DEFINED Special Pricing Option ' + SPACE(56) + '(E) - Print If NOT DEFAULT' ENDIF ADD_U7(REP_VAR) * IF OPT == '1' * ELSE * REP_VAR := SPACE(99) + '(E) - Print If NOT Default' * ADD_U7(REP_VAR) * ENDIF RETURN ************************************************** * ADD THE INFORMATION INTO THE USER FILE ************************************************** PROCEDURE ADD_U7(REP_VAR) LOCAL SAVESEL := SELECT() SELECT USERFILE7 ADD_REC(5) REPLACE DATA WITH REP_VAR SELECT(SAVESEL) RETURN ************************************************** * DEFINE THE PRICING REPORT USERFILE LAYOUT AND HEADINGS FOR RPRIN-REPORT GENERATOR ************************************************** FUNCTION FLD_PRICERPT(RPT_TYPE, LEVEL) //* FUNCTION FLD_PRICERPT(ATRB_SOURCE) LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 LOCAL HEAD1, HEAD2, HEAD3, HEAD4, HEAD5 LOCAL DBF_FLD_INFO := {} WAIT_BOX(' *** Retreiving Model Definitions *** ',; ' *** PLEASE WAIT ***') // THIS IS REALLY A BLD_PROC PARAMETER ?? ATRB_SOURCE := BLD_PRICERPT('USERFILE7', PRODUCT->PROD_CODE, RPT_TYPE, LEVEL) FIELDNAME := 'DATA' HEAD1 := [ 'Category - ' + ALLTRIM(PRODUCT->CAT_CODE) + ' / ' + SEEKCATDESC(PRODUCT->CAT_CODE) ] HEAD2 := [ 'Model - ' + ALLTRIM(PRODUCT->PROD_CODE) + ' / ' + ALLTRIM(PRODUCT->DESC) ] HEAD3 := 'Attributes are Defined at the ' + ATRB_SOURCE IF LEVEL = 'CUST' HEAD4 := 'Customer - ' + ALLTRIM(CUST_MAST->COMP_NAME) + ' Phone - ' + CUST_MAST->PHONE + ' Fax - ' + CUST_MAST->FAX ELSE HEAD4 := ' ' ENDIF IF LEVEL = 'CUST' HEAD5 := ' ' + ALLTRIM(CUST_MAST->CUST_CITY) + ' ' + ALLTRIM(CUST_MAST->CUST_STATE) + ' ' + CUST_MAST->CUST_ZIP ELSE HEAD5 := ' ' ENDIF COLHEAD := {&HEAD1, &HEAD2, HEAD3, HEAD4, HEAD5} TOTALFLD := .F. DISPLEN := 130 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) RETURN FIELDARR ************************************************** * DEFINE THE PRODUCT PRICING REPORT USERFILE LAYOUT * AND HEADINGS FOR RPRIN-REPORT GENERATOR ************************************************** FUNCTION BASEPRICE() //* FUNCTION FLD_PRICERPT(ATRB_SOURCE) LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 LOCAL HEAD1, HEAD2, HEAD3 LOCAL DBF_FLD_INFO := {} WAIT_BOX(' *** Retreiving Model Definitions *** ',; ' *** PLEASE WAIT ***') FIELDNAME := 'DATA' HEAD1 := [ 'Category - "' + ALLTRIM(PRODUCT->CAT_CODE) + '" / ' + SEEKCATDESC(PRODUCT->CAT_CODE) ] HEAD2 := ' ' COLHEAD := {&HEAD1, HEAD2} TOTALFLD := .F. DISPLEN := 131 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) RETURN FIELDARR *********************************** FUNCTION BLD_RULERPT // BUILD REPORT FOR RULE VERIFICATION AND ASSIGNMENT LOCAL FIELDARR := {} LOCAL FIELDNAME, COLHEAD, TOTALFLD, DISPLEN, DISPDEC := 0 LOCAL HEAD1, HEAD2, HEAD3 LOCAL DBF_FLD_INFO := {} LOCAL FLD_ARR := {}, MSG WAIT_BOX(' *** Verifying Rule Definitions *** ',; ' *** PLEASE WAIT ***') FIELDNAME := 'DATA' HEAD1 := 'RULE VERIFICATION' HEAD2 := '' HEAD3 := '' COLHEAD := {HEAD1, HEAD2, HEAD3} TOTALFLD := .F. DISPLEN := 120 AADD(FIELDARR, {FIELDNAME, COLHEAD, TOTALFLD, DISPLEN} ) //* //* OPEN ALL DBFS TO BE USED TO BUILD THE REPORT //* DBOPEN('RULES') DBOPEN('RULEPACK') DBOPEN('PROD_ATTS',,,{2}) DBOPEN('PROD_OPTS',,,{3}) DBOPEN('CAT_ATTS',,,{2}) DBOPEN('CAT_OPTS',,,{3}) DBOPEN('ATT_OPTS',,,{3}) DBOPEN('PRI_EXTRAS',,,{2}) DBOPEN("PRODUCT",,, {1}) // OPEN PRODUCT FILE FO SINGLE INDEX DBOPEN("CATEGORY",,, {1}) // OPEN CATEGORY FILE FO SINGLE INDEX DBOPEN("STD_SIZES",,, {1}) // RESET THE UPDATED FLAGS IN BOTH RULE FILES SELECT RULES FIL_LOCK(1) REPLACE ALL UPDATED WITH ' ' UNLOCK SELECT RULEPACK FIL_LOCK(1) REPLACE ALL UPDATED WITH ' ' UNLOCK // CHECK THE PRODUCT FILE AADD(FLD_ARR, {'Stock Product ', 'PROD_CODE'}) VERIFY_RULE('PRODUCT', FLD_ARR) //** PERRY 2-17-98 ** VERIFY_RULE('PRI_EXTRAS', FLD_ARR) // CHECK THE PRICING EXTRA FILE FLD_ARR := {} //** PERRY 2-17-98 AADD(FLD_ARR, {'Category ', 'CAT_CODE'}) AADD(FLD_ARR, {'Option ', 'OPTION'}) VERIFY_RULE('PRI_EXTRAS', FLD_ARR) // CHECK THE PRODUCT ATTRIBUTES FLD_ARR := {} AADD(FLD_ARR, {'Model', 'PROD_CODE'}) AADD(FLD_ARR, {'Attribute', 'ATT_CODE'}) VERIFY_RULE('PROD_ATTS', FLD_ARR) // CHECK THE CATEGORY ATTRIBUTES FLD_ARR := {} AADD(FLD_ARR, {'Category ', 'CAT_CODE'}) AADD(FLD_ARR, {'Attribute', 'ATT_CODE'}) VERIFY_RULE('CAT_ATTS', FLD_ARR) // CHECK THE ATTRIBUTE OPTIONS FLD_ARR := {} AADD(FLD_ARR, {'Attribute ', 'ATT_CODE'}) AADD(FLD_ARR, {'Option ', 'OPT_VALUE'}) VERIFY_RULE('ATT_OPTS', FLD_ARR) // CHECK THE PRODUCT OPTIONS FLD_ARR := {} AADD(FLD_ARR, {'Model ', 'PROD_CODE'}) AADD(FLD_ARR, {'Attribute ', 'ATT_CODE'}) AADD(FLD_ARR, {'Option ', 'OPT_VALUE'}) VERIFY_RULE('PROD_OPTS', FLD_ARR) // CHECK THE CATEGORY OPTIONS FLD_ARR := {} AADD(FLD_ARR, {'Category ', 'CAT_CODE'}) AADD(FLD_ARR, {'Attribute ', 'ATT_CODE'}) AADD(FLD_ARR, {'Option ', 'OPT_VALUE'}) VERIFY_RULE('CAT_OPTS', FLD_ARR) // SEE IF ALL RULES ARE BEING USED SELECT RULES GOTO TOP DO WHILE !EOF() IF UPDATED <> 'Y' MSG = 'Rule ' + ALLTRIM(RULE_CODE) + ' in the Rule File is not assigned' ADD_U7(MSG) ENDIF SKIP 1 ENDDO // SEE IF ALL RULES HAVE A RULEPACK SELECT RULEPACK GOTO TOP DO WHILE !EOF() IF UPDATED <> 'Y' MSG = 'Rule ' + ALLTRIM(RULE_CODE) + ' in the Rule PACK File is not assigned' ADD_U7(MSG) ENDIF SKIP 1 ENDDO RETURN FIELDARR ************************************************ FUNCTION VERIFY_RULE(MFILE, FLD_ARR, FLD2CHECK) // CHECK RULES FOR FOR MFILE LOCAL MRULE_PACK IF FLD2CHECK = NIL FLD2CHECK := 'RULE_PACK' ENDIF SELECT &MFILE DO WHILE !EOF() IF !EMPTY(&FLD2CHECK) MRULE_PACK = &FLD2CHECK SELECT RULES SEEK MRULE_PACK IF !FOUND() REPORT_IT(MFILE, 'RULES', FLD_ARR, FLD2CHECK) ELSE REC_LOCK(1) REPLACE UPDATED WITH 'Y' UNLOCK SELECT RULEPACK SEEK MRULE_PACK IF !FOUND() REPORT_IT(MFILE, 'RULEPACK', FLD_ARR, FLD2CHECK) ELSE DO WHILE RULE_CODE == MRULE_PACK .AND. !EOF() REC_LOCK(1) REPLACE UPDATED WITH 'Y' UNLOCK SKIP 1 ENDDO ENDIF ENDIF ENDIF SELECT &MFILE SKIP 1 ENDDO RETURN ************************************************ FUNCTION REPORT_IT(MFILE1, MFILE2, FLD_ARR, FLD2CHECK) // ADD A RECORD TO THE REPORT FILE LOCAL SAVESEL := SELECT(), REPTLINE, MSG:= ' ', MFIELD SELECT USERFILE7 ADD_REC(1) FOR L = 1 TO LEN(FLD_ARR) MFIELD = FLD_ARR[L,2] MSG = MSG + FLD_ARR[L,1] + ALLTRIM(&MFILE1->&MFIELD) + ', ' NEXT **REPTLINE = 'Rule ' + ALLTRIM(&MFILE1->RULE_PACK) + ',' + MSG REPTLINE = 'Rule ' + ALLTRIM(&MFILE1->&FLD2CHECK) + ',' + MSG REPTLINE = REPTLINE + ' in the ' + MFILE1 + " wasn't Found in the " + MFILE2 + ' File' REPLACE DATA WITH REPTLINE SELECT(SAVESEL) RETURN ********************************************************** FUNCTION YEAR_END // RETURN TOTAL OF ALL THE MONTHLY BUCKETS FOR 'MONTHLY PRODUCTION REPORT' LOCAL RETVAL RETVAL = USERFILE7->JAN + USERFILE7->FEB + USERFILE7->MAR + USERFILE7->APR RETVAL = RETVAL + USERFILE7->MAY + USERFILE7->JUN + USERFILE7->JUL + USERFILE7->AUG RETVAL = RETVAL + USERFILE7->SEP + USERFILE7->OCT + USERFILE7->NOV + USERFILE7->DEC RETURN RETVAL