222 lines
5.9 KiB
Plaintext
222 lines
5.9 KiB
Plaintext
COMPILE FUNCTION obj_Order_Test(Method,Parms)
|
|
/*
|
|
Methods for Order table
|
|
|
|
08/15/2004 JCH - Initial Coding
|
|
|
|
Properties:
|
|
|
|
Methods:
|
|
|
|
Find() ;* Lookup Order number
|
|
|
|
|
|
*/
|
|
|
|
|
|
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box
|
|
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn
|
|
|
|
$INSERT MSG_EQUATES
|
|
$INSERT ORDER_EQU
|
|
$INSERT WO_LOG_EQU
|
|
|
|
EQU ST$WO TO 1
|
|
EQU ST$ORD_NO TO 2
|
|
EQU ST$QUOTE_NO TO 3
|
|
EQU ST$PRICE TO 4
|
|
EQU ST$LOT_NOS TO 5
|
|
EQU ST$LOT_QTYS TO 6
|
|
EQU ST$PART_NOS TO 7
|
|
EQU ST$SUB_PART_NOS TO 8
|
|
EQU ST$WAF_INV_IDS TO 9
|
|
EQU ST$SCHED_IDS TO 10
|
|
EQU ST$ADD_CHG_DESCS TO 11
|
|
EQU ST$ADD_CHG_AMTS TO 12
|
|
EQU ST$CASS_CNT TO 13
|
|
EQU ST$CASS_QTY TO 14
|
|
|
|
ErrTitle = 'Error in Stored Procedure "obj_Order"'
|
|
ErrorMsg = ''
|
|
|
|
IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine'
|
|
IF NOT(ASSIGNED(Parms)) THEN Parms = ''
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
RETURN ''
|
|
END
|
|
|
|
Result = ''
|
|
|
|
BEGIN CASE
|
|
CASE Method = 'Find' ; GOSUB Find
|
|
CASE Method = 'Ord_WOLog' ; GOSUB Ord_WOLog
|
|
CASE 1
|
|
ErrorMsg = 'Unknown Method ':QUOTE(Method):' passed to routine.'
|
|
|
|
END CASE
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
RETURN ''
|
|
END
|
|
|
|
RETURN Result
|
|
|
|
|
|
* * * * * * *
|
|
Find:
|
|
* * * * * * *
|
|
|
|
OrderKeys = Dialog_Box( 'DIALOG_ORDER_FIND', @WINDOW, '' )
|
|
|
|
Result = OrderKeys
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Ord_WOLog:
|
|
* * * * * * *
|
|
|
|
OrdNo = Parms[1,@RM]
|
|
OrdRec = Parms[COL2()+1,@RM]
|
|
|
|
|
|
IF NOT(ASSIGNED(OrdNo)) THEN ErrorMsg = 'Unassigned parameter "OrdNo" passed to routine. (':Method:')'
|
|
IF NOT(ASSIGNED(OrdRec)) THEN OrdRec = ''
|
|
|
|
IF ErrorMsg NE '' OR OrdNo = '' THEN RETURN
|
|
|
|
IF OrdRec = '' THEN
|
|
OrdRec = XLATE('ORDER',OrdNo,'','X')
|
|
END
|
|
|
|
|
|
|
|
SchedIDs = OrdRec<ORDER_SCHEDULE_IDS$> ; SchedIDCnt = COUNT(SchedIDs,@VM) + (SchedIDs NE '')
|
|
PartNos = OrdRec<ORDER_PART_NUM$> ; PartNoCnt = COUNT(PartNos,@VM) + (PartNos NE '')
|
|
LotNos = OrdRec<ORDER_LOT_NUM$> ; LotNoCnt = COUNT(LotNos,@VM) + (LotNos NE '')
|
|
Qtys = OrdRec<ORDER_QUANTITY$> ; QtyCnt = COUNT(Qtys,@VM) + (Qtys NE '')
|
|
Prices = OrdRec<ORDER_PRICE$> ; PriceCnt = COUNT(Prices,@VM) + (Prices NE '')
|
|
WONos = OrdRec<ORDER_WO$> ; WOCnt = COUNT(WONos,@VM) + (WONos NE '')
|
|
QuoteIDs = OrdRec<ORDER_QUOTE_IDS$> ; QuoteCnt = COUNT(QuoteIDs,@VM) + (QuoteIDs NE '')
|
|
SetupChgs = OrdRec<ORDER_SETUP_CHARGE$> ; SetupChgCnt = COUNT(SetupChgs,@VM) + (SetupChgs NE '')
|
|
SRPChgs = OrdRec<ORDER_SRP_CHARGE$> ; SRPChgCnt = COUNT(SRPChgs,@VM) + (SRPChgs NE '')
|
|
WafInvIDs = OrdRec<ORDER_WAF_INV_IDS$> ; WafInvCnt = COUNT(WafInvIDs,@VM) + (WafInvIDs NE '')
|
|
SubPartNos = OrdRec<ORDER_SUB_PART_NUM$> ; SubPartCnt = COUNT(SubPartNos,@VM) + (SubPartNos NE '')
|
|
|
|
|
|
MVCnt = SchedIDCnt
|
|
IF PartNoCnt > MVCnt THEN MVCnt = PartNoCnt
|
|
IF LotNoCnt > MVCnt THEN MVCnt = LotNoCnt
|
|
IF QtyCnt > MVCnt THEN MVCnt = QtyCnt
|
|
IF PriceCnt > MVCnt THEN MVCnt = PriceCnt
|
|
IF WOCnt > MVCnt THEN MVCnt = WOCnt
|
|
IF QuoteCnt > MVCnt THEN MVCnt = QuoteCnt
|
|
IF SetupChgCnt > MVCnt THEN MVCnt = SetupChgCnt
|
|
IF SRPChgCnt > MVCnt THEN MVCnt = SRPChgCnt
|
|
IF WafInvCnt > MVCnt THEN MVCnt = WafInvCnt
|
|
IF SubPartCnt > MVCnt THEN MVCnt = SubPartCnt
|
|
|
|
|
|
|
|
WOList = ''
|
|
WOStructs = ''
|
|
|
|
FOR I = 1 TO MVCnt
|
|
WONo = WONos<1,I>
|
|
LOCATE WONo IN WOList USING @FM SETTING WOPos ELSE
|
|
WOList = INSERT(WOList,WOPos,0,0,WONo)
|
|
END
|
|
|
|
WOStruct = FIELD(WOStructs,@RM,WOPos,1)
|
|
|
|
IF WOStruct<ST$WO> = '' THEN WOStruct<ST$WO> = WONo
|
|
IF WOStruct<ST$ORD_NO> = '' AND OrdNo NE '' THEN WOStruct<ST$ORD_NO> = OrdNo
|
|
IF WOStruct<ST$QUOTE_NO> = '' AND QuoteIDs<1,I> NE '' THEN WOStruct<ST$QUOTE_NO> = QuoteIDs<1,I>
|
|
IF WOStruct<ST$PRICE> = '' AND Prices<1,I> NE '' THEN WOStruct<ST$PRICE> = Prices<1,I>
|
|
|
|
|
|
IF LotNos<1,I> = '' OR (SetupChgs<1,I> NE '' OR SRPChgs<1,I> NE '') THEN
|
|
AddChgDesc = PartNos<1,I>
|
|
IF SubPartNos<1,I> NE '' THEN AddChgDesc := ' ':SubPartNos<1,I>
|
|
|
|
AddChgAmt = ''
|
|
IF SetupChgs<1,I> NE '' THEN AddChgAmt = SetupChgs<1,I>
|
|
IF SRPChgs<1,I> NE '' THEN AddChgAmt = SRPChgs<1,I>
|
|
IF AddChgAmt = '' THEN AddChgAmt = 0
|
|
|
|
LOCATE AddChgDesc IN WOStruct<ST$ADD_CHG_DESCS> USING @VM SETTING ACPos ELSE
|
|
WOStruct = INSERT(WOStruct,ST$ADD_CHG_DESCS,ACPos,0,AddChgDesc)
|
|
WOStruct = INSERT(WOStruct,ST$ADD_CHG_AMTS,ACPos,0,AddChgAmt)
|
|
END
|
|
END ELSE
|
|
SchedID = SchedIDs<1,I>
|
|
|
|
SchedRec = XLATE('SCHEDULE',SchedID,'','X')
|
|
CassCnt = SchedRec<30>
|
|
|
|
LotQty = Qtys<1,I>
|
|
IF LotQty <= 25 THEN
|
|
CassCnt = 1
|
|
CassQty = LotQty
|
|
END ELSE
|
|
|
|
|
|
BEGIN CASE
|
|
CASE MOD(LotQty,25) = 0
|
|
CassCnt = LotQty/25
|
|
CassQty = 25
|
|
|
|
CASE MOD(LotQty,24) = 0
|
|
CassCnt = LotQty/24
|
|
CassQty = 24
|
|
|
|
CASE MOD(LotQty,15) = 0
|
|
CassCnt = LotQty/15
|
|
CassQty = 15
|
|
|
|
CASE MOD(LotQty,12) = 0
|
|
CassCnt = LotQty/12
|
|
CassQty = 12
|
|
|
|
CASE MOD(LotQty,10) = 0
|
|
CassCnt = LotQty/10
|
|
CassQty = 10
|
|
|
|
CASE 1
|
|
CassCnt = ''
|
|
CassQty = ''
|
|
|
|
END CASE
|
|
END ;* End of small lot check
|
|
|
|
LOCATE SchedID IN WOStruct<ST$SCHED_IDS> USING @VM SETTING SchedPos ELSE
|
|
WOStruct = INSERT(WOStruct,ST$SCHED_IDS,SchedPos,0,SchedID)
|
|
WOStruct = INSERT(WOStruct,ST$LOT_NOS,SchedPos,0,LotNos<1,I>)
|
|
WOStruct = INSERT(WOStruct,ST$LOT_QTYS,SchedPos,0,Qtys<1,I>)
|
|
WOStruct = INSERT(WOStruct,ST$PART_NOS,SchedPos,0,PartNos<1,I>)
|
|
WOStruct = INSERT(WOStruct,ST$SUB_PART_NOS,SchedPos,0,SubPartNos<1,I>)
|
|
WOStruct = INSERT(WOStruct,ST$WAF_INV_IDS,SchedPos,0,WafInvIDs<1,I>)
|
|
WOStruct = INSERT(WOStruct,ST$CASS_CNT,SchedPos,0,CassCnt)
|
|
WOStruct = INSERT(WOStruct,ST$CASS_QTY,SchedPos,0,CassQty)
|
|
END ;* End of Locate Sched Pos
|
|
|
|
END ;* End of check for lot number
|
|
|
|
WOStructs = FIELDSTORE(WOStructs,@RM,WOPos,-1,WOStruct)
|
|
|
|
|
|
NEXT I
|
|
|
|
Result = WOStructs
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
|
|
|