COMPILE FUNCTION obj_Order_Recon(Method,Parms) /* Methods for Order_Recon table 06/13/2005 JCH - Initial Coding Properties: Methods: ReconOrder(Parms) */ DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box, obj_WO_Log, NextKey DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, obj_WO_Step, obj_WO_Log, Btree.Extract, ErrMsg DECLARE SUBROUTINE obj_Order_Det, obj_Order $INSERT MSG_EQUATES $INSERT ORDER_EQU $INSERT ORDER_DET_EQU $INSERT ORDER_RECON_EQU $INSERT COMPANY_EQU ErrTitle = 'Error in Stored Procedure "obj_Order_Recon"' 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 = 'ReconOrder' ; GOSUB ReconOrder 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 * * * * * * * Create: * * * * * * * RETURN * * * * * * * Find: * * * * * * * RETURN * * * * * * * * ReconOrder: * * * * * * * * * Create or Update Order information from the AS400 - Vision system TimeStamp = Parms[1,@RM] Parms[1,COL2()] = '' ;* Strip off Timedate from front of the parameter list VisionOrderNo = Parms[1,@RM] ;* Order<48> VisionItemNo = Parms[COL2()+1,@RM] ;* Order_Det<18> LineItemStatus = Parms[COL2()+1,@RM] ;* Order_Det<19> BillToCustNo = Parms[COL2()+1,@RM] ;* Order<47> ShipToCustNo = Parms[COL2()+1,@RM] ;* Order<46> CustPONo = Parms[COL2()+1,@RM] ;* Order<41> EpiPartNo = Parms[COL2()+1,@RM] ;* Order_Det<3> PartType = Parms[COL2()+1,@RM] ;* Order_Det<20> CustPartNo = Parms[COL2()+1,@RM] ;* Order_Det<8> ItemQty = Parms[COL2()+1,@RM] ;* Order_Det<6> ItemShipQty = Parms[COL2()+1,@RM] ;* Order_Det<21> ItemNetQty = Parms[COL2()+1,@RM] ;* Not Used ItemUnitPrice = Parms[COL2()+1,@RM] ;* Order_Det<5> ItemExtPrice = Parms[COL2()+1,@RM] ;* Not Used ItemPromiseDt = Parms[COL2()+1,@RM] ;* Order_Det<11> ItemReqShipDt = Parms[COL2()+1,@RM] ;* Order_Det<13> ItemCalcSWODt = Parms[COL2()+1,@RM] ;* Order_Det<14> ItemCRDt = Parms[COL2()+1,@RM] ;* Order_Det<12> ItemQuoteNo = Parms[COL2()+1,@RM] ;* Order_Det<22> CustName = Parms[COL2()+1,@RM] ;* Order<49> VisionInvoiceNo = Parms[COL2()+1,@RM] ;* OrderDet<24> VisionInvoiceItem = Parms[COL2()+1,@RM] ;* OrderDet<25> IF VisionOrderNo = '' THEN RETURN thisItemQty = ICONV(ItemQty,'MD0') thisItemUnitPrice = ICONV(ItemUnitPrice,'MD2') thisItemPromiseDt = ICONV(ItemPromiseDt,'D') thisItemReqShipDt = ICONV(ItemReqShipDt,'D') thisItemCalcSWODt = ICONV(ItemCalcSWODt,'D') thisItemCRDt = ICONV(ItemCRDt,'D') IF thisItemPromiseDt = '' THEN ErrorMsg = 'Invalid ItemPromiseDt ':QUOTE(ItemPromiseDt):' passed to routine. (':Method:')' IF thisItemReqShipDt = '' THEN ErrorMsg = 'Invalid ItemReqShipDt ':QUOTE(ItemReqShipDt):' passed to routine. (':Method:')' IF thisItemCalcSWODt = '' THEN ErrorMsg = 'Invalid ItemCalcSWODt ':QUOTE(ItemCalcSWODt):' passed to routine. (':Method:')' IF thisItemCRDt = '' THEN ErrorMsg = 'Invalid ItemCRDt ':QUOTE(ItemCRDt):' passed to routine. (':Method:')' IF thisItemUnitPrice = '' THEN thisItemUnitPrice = 0 ;* This thing is failing the test below JCH 3/14/2008 IF thisItemQty = '' THEN NULL IF ItemShipQty = '0' AND LineItemStatus = 'C' THEN * This is a canceled item thisItemQty = 0 thisItemUnitPrice = 0 END OPEN 'DICT.COMPANY' TO DictCompany ELSE ErrorMsg = 'Unable to open "DICT.COMPANY" for update.' RETURN END SearchString = 'VISION_CUST_NO':@VM:ShipToCustNo:@FM Option = '' Flag = '' Btree.Extract(SearchString,'COMPANY',DictCompany,EpiCustNo,Option,Flag) ;* Get Epi Cust No Captive = XLATE('COMPANY',EpiCustNo,COMPANY_CAPTIVE$,'X') Consignment = XLATE('COMPANY',EpiCustNo,COMPANY_CONSIGNMENT$,'X') IF Captive OR Consignment THEN RETURN IF ErrorMsg THEN RETURN ItemDesc = 'Order from Vision' OrderNo = XLATE('VISION_ORDER',VisionOrderNo,1,'X') OrderDetKeys = XLATE('ORDER',OrderNo,ORDER_ORDER_DET_KEY$,'X') VisionItemNos = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_VISION_LINE_NO$,'X') LOCATE VisionItemNo IN VisionItemNos USING @VM SETTING Pos THEN ItemNo = FIELD(OrderDetKeys<1,Pos>,'*',2) ;* Take the item number for the second part of the key END ELSE ItemNo = ABS(VisionItemNo) END IF VisionInvoiceNo NE '' AND OrderNo NE '' THEN obj_Order_Det('AddVisionInvoice',OrderNo:@RM:ItemNo:@RM:VisionInvoiceNo:@RM:VisionInvoiceItem) END OPEN 'ORDER_RECON' TO ORTable ELSE ErrorMsg = 'Unable to open "ORDER_RECON" for update.' RETURN END OPEN 'DICT.ORDER_RECON' TO DictORTable ELSE ErrorMsg = 'Unable to open "DICT.ORDER_RECON" for update.' RETURN END WRITE TimeStamp ON DictORTable,'%LAST_DTM%' ELSE ErrorMsg = 'Unable to WRITE TimeStamp on DICT.ORDER_RECON' RETURN END READ ORRec FROM ORTable,VisionOrderNo ELSE ORRec = '' ;* No locking - this is the only process with access to this table ORRec = OrderNo END LoadedItems = '' IF OrderNo = '' THEN obj_Order('PostVision',Parms) ;* Put into OpenInsight ???????????????????? END IF NOT(RowExists('ORDER_DET',OrderNo:'*':ItemNo)) THEN obj_Order('PostVision',Parms) ;* Put into OpenInsight ???????????????????? END OrderRec = XLATE('ORDER',OrderNo,'','X') OrderDetRec = XLATE('ORDER_DET',OrderNo:'*':ItemNo,'','X') IF OrderRec NE BillToCustNo THEN DetItemNo = '-' FieldName = 'BILL_TO_CUST_NO' VisionVal = BillToCustNo OIVal = OrderRec GOSUB LoadItem END IF OrderRec NE ShipToCustNo THEN DetItemNo = '-' FieldName = 'SHIP_TO_CUST_NO' VisionVal = ShipToCustNo OIVal = OrderRec GOSUB LoadItem END OrdPONo = OrderRec OrdRelNo = OrderRec OrdLineNo = OrderRec BEGIN CASE CASE OrdPONo = CustPONo Match = 1 CASE OrdPONo:'-':OrdRelNo = CustPONo OrdPONo = OrdPONo:'-':OrdRelNo Match = 1 CASE OrdPONo:'-':OrdLineNo = CustPONo OrdPONo = OrdPONo:'-':OrdLineNo Match = 1 CASE OrdPONo:'-':OrdRelNo:'-':OrdLineNo = CustPONo OrdPONo = OrdPONo:'-':OrdRelNo:'-':OrdLineNo Match = 1 CASE OrdPONo:'-':OrdLineNo:'-':OrdRelNo = CustPONo OrdPONo = OrdPONo:'-':OrdLineNo:'-':OrdRelNo Match = 1 CASE 1 Match = 0 END CASE IF NOT(Match) THEN DetItemNo = '-' FieldName = 'PO_NO' VisionVal = CustPONo OIVal = OrdPONo GOSUB LoadItem END IF OrderRec NE CustName THEN DetItemNo = '-' FieldName = 'VISION_CUST_NAME' VisionVal = CustName OIVal = OrderRec GOSUB LoadItem END IF OrderDetRec NE ItemQuoteNo THEN DetItemNo = ItemNo FieldName = 'QUOTE_NO' VisionVal = ItemQuoteNo OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE EpiPartNo THEN DetItemNo = ItemNo FieldName = 'EPI_PN' VisionVal = EpiPartNo OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE thisItemUnitPrice THEN DetItemNo = ItemNo FieldName = 'UNIT_PRICE' VisionVal = thisItemUnitPrice OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE thisItemQty THEN DetItemNo = ItemNo FieldName = 'ITEM_QTY' VisionVal = thisItemQty OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE VisionItemNo THEN DetItemNo = ItemNo FieldName = 'VISION_LINE_NO' VisionVal = VisionItemNo OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE LineItemStatus THEN DetItemNo = ItemNo FieldName = 'VISION_ITEM_STATUS' VisionVal = LineItemStatus OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE PartType THEN DetItemNo = ItemNo FieldName = 'VISION_PART_TYPE' VisionVal = PartType OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE CustPartNo THEN DetItemNo = ItemNo FieldName = 'CUST_PN' VisionVal = CustPartNo OIVal = OrderDetRec GOSUB LoadItem END IF XLATE('ORDER_DET',OrderNo:'*':ItemNo,'TOT_SHIP_WFR_QTY','X') NE ItemShipQty THEN DetItemNo = ItemNo FieldName = 'VISION_SHIP_QTY' VisionVal = ItemShipQty OIVal = XLATE('ORDER_DET',OrderNo:'*':ItemNo,'TOT_SHIP_WFR_QTY','X') GOSUB LoadItem END IF OrderDetRec NE thisItemPromiseDt THEN DetItemNo = ItemNo FieldName = 'PROMISE_DT' VisionVal = thisItemPromiseDt OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE thisItemReqShipDt THEN DetItemNo = ItemNo FieldName = 'REQ_SHIP_DT' VisionVal = thisItemReqShipDt OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE thisItemCalcSWODt THEN DetItemNo = ItemNo FieldName = 'SHIP_WIN_DT' VisionVal = thisItemCalcSWODt OIVal = OrderDetRec GOSUB LoadItem END IF OrderDetRec NE thisItemCRDt THEN DetItemNo = ItemNo FieldName = 'CUST_REQ_DT' VisionVal = thisItemCRDt OIVal = OrderDetRec GOSUB LoadItem END IF ORRec NE OrderNo THEN WRITE ORRec ON ORTable,VisionOrderNo ELSE NULL END RETURN * * * * * * * LoadItem: * * * * * * * LoadedItem = DetItemNo:'*':FieldName LOCATE LoadedItem IN LoadedItems USING @VM SETTING Pos ELSE LoadedItems = INSERT(LoadedItems,1,Pos,0,LoadedItem) ORRec = INSERT(ORRec,ORDER_RECON_ITEM_NO$,Pos,0,DetItemNo) ORRec = INSERT(ORRec,ORDER_RECON_FIELD_NAME$,Pos,0,FieldName) ORRec = INSERT(ORRec,ORDER_RECON_VISION_VALUE$,Pos,0,VisionVal) ORRec = INSERT(ORRec,ORDER_RECON_OI_VALUE$,Pos,0,OIVal) END RETURN