Files
CGW/CGW0350.PRG
T
Jason Soltys 7905c43278 first commit
2026-07-14 00:41:31 -05:00

1864 lines
53 KiB
Plaintext

// 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