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 ; SchedIDCnt = COUNT(SchedIDs,@VM) + (SchedIDs NE '') PartNos = OrdRec ; PartNoCnt = COUNT(PartNos,@VM) + (PartNos NE '') LotNos = OrdRec ; LotNoCnt = COUNT(LotNos,@VM) + (LotNos NE '') Qtys = OrdRec ; QtyCnt = COUNT(Qtys,@VM) + (Qtys NE '') Prices = OrdRec ; PriceCnt = COUNT(Prices,@VM) + (Prices NE '') WONos = OrdRec ; WOCnt = COUNT(WONos,@VM) + (WONos NE '') QuoteIDs = OrdRec ; QuoteCnt = COUNT(QuoteIDs,@VM) + (QuoteIDs NE '') SetupChgs = OrdRec ; SetupChgCnt = COUNT(SetupChgs,@VM) + (SetupChgs NE '') SRPChgs = OrdRec ; SRPChgCnt = COUNT(SRPChgs,@VM) + (SRPChgs NE '') WafInvIDs = OrdRec ; WafInvCnt = COUNT(WafInvIDs,@VM) + (WafInvIDs NE '') SubPartNos = OrdRec ; 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 = '' THEN WOStruct = WONo IF WOStruct = '' AND OrdNo NE '' THEN WOStruct = OrdNo IF WOStruct = '' AND QuoteIDs<1,I> NE '' THEN WOStruct = QuoteIDs<1,I> IF WOStruct = '' AND Prices<1,I> NE '' THEN WOStruct = 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 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 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