COMPILE ROUTINE TEST_shipment(Dummy) ROWDEF(CHARSTR) DECLARE SUBROUTINE obj_Notes, Set_Status, Msg, obj_Tables, ErrMsg, Send_Info DECLARE FUNCTION Get_Status, obj_Tables, Msg $INSERT ORDER_EQU $INSERT ORDER_DET_EQU $INSERT COC_EQU $INSERT WO_LOG_EQU $INSERT COMPANY_EQU $INSERT RDS_EQU debug FOR ShipNo = 52393 TO 54084 GOSUB TestCode Send_Info(ShipNo) NEXT ShipNo GOTO Bail * * * * * * * * TestCode: * * * * * * * * Result = '' IF ShipNo = '' THEN ErrorMsg = 'Null parameter "ShipNo" passed to routine. (':Method:')' RETURN END OtParms = 'COC':@RM:ShipNo ShipRec = obj_Tables('ReadOnlyRec',OtParms) ;* Change this back to 'ReadRec' when done with development ****************** IF Get_Status(errCode) THEN RETURN IF ShipRec = '' THEN RETURN SendDtm = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT') SendUser = @USER4 WorkOrderNo = ShipRec WORec = XLATE('WO_LOG',WorkOrderNo,'','X') OrderNo = WORec WOCustNo = WORec OrderItemNos = WORec OrderDetKeys = '' FOR I = 1 TO COUNT(OrderItemNos,@VM) + (OrderItemNos NE '') OrderDetKeys<1,I> = OrderNo:'*':OrderItemNos<1,I> ;* All of Order Item Keys on the Work Order NEXT I Captive = XLATE('COMPANY',WOCustNo,COMPANY_CAPTIVE$,'X') Consignment = XLATE('COMPANY',WOCustNo,COMPANY_CONSIGNMENT$,'X') BEGIN CASE CASE Captive ; Ordertype = 'CAPTIVE' CASE Consignment ; OrderType = 'CAPTIVE' ;* Vision doesn't know about consignment orders yet CASE 1 ; OrderType = 'MERCHANT' END CASE * Build the Order Line Item Detail from RDS records using local methods OrderItemShippedQtys = '' OrderItemRejQtys = '' OrderItemRDSNos = '' RDSNos = ShipRec FOR I = 1 TO COUNT(RDSNos,@VM) + (RDSNos NE '') RDSNo = RDSNos<1,I> RDSRec = XLATE('RDS',RDSNo,'','X') Rejects = XLATE('RDS',RDSNo,'TOT_REJ','X') WfrsOut = XLATE('RDS',RDSNo,'WFRS_OUT','X') TWProd = RDSRec OrderItem = RDSRec IF Captive OR Consignment THEN Rejects = 0 END ELSE Rejects += TWProd END LOCATE OrderItem IN OrderItemNos USING @VM SETTING Pos THEN OrderItemShippedQtys<1,Pos> = OrderItemShippedQtys<1,Pos> + WfrsOut OrderItemRejQtys<1,Pos> = OrderItemRejQtys<1,Pos> + Rejects OrderItemRDSNos<1,Pos,-1> = RDSNo END NEXT I OrderRec = XLATE('ORDER',OrderNo,'','X') Company = '001' Warehouse = 'ME1' WorkOrderItem = '0' CustPONo = OrderRec ;* Doctor this up to include the Release No CustPOLineNo = OrderRec ShipToCustNo = OrderRec BillToCustNo = OrderRec TotalWafersOrdered = SUM(XLATE('ORDER_DET',OrderDetKeys,'WAFER_QTY','X')) TotalShipWfrQty = XLATE('COC',ShipNo,'TOT_QTY','X') ;* Total Good Wafers on Shipment TotalShipRejQty = XLATE('COC',ShipNo,'TOT_REJ','X') ;* Total Reject Wafers in Shipment TotalShipProdQty = XLATE('COC',ShipNo,'TOT_PROD','X') TotalShipmentWafers = TotalShipWfrQty + TotalShipRejQty + TotalShipProdQty ;* Total wafers in this shipment OrderItemPartTypes = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_VISION_PART_TYPE$,'X') ;* Part Types on this Work Order PrevShipNos = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_SHIP_NO$,'X') ;* All shipments on work order LOCATE ShipNo IN PrevShipNos USING @VM SETTING Pos THEN PrevShipNos = DELETE(PrevShipNos,1,Pos,0) ;* Remove current shipment from list END TotPrevShipQtys = SUM(XLATE('COC',PrevShipNos,'TOT_WAFERS_SHIPPED','X')) ;* All wafers shipped on previous shipments against this Work Order ResultLine = 0 * Now Load the Line Item specific stuff IF INDEX(OrderItemPartTypes,'5',1) THEN * This Work Order has SRP and/or surcharges on it IF TotalShipmentWafers + TotPRevShipQtys >= TotalWafersOrdered THEN FOR I = 1 TO COUNT(OrderItemPartTypes,@VM) + (OrderItemPartTypes NE '') IF OrderItemPartTypes<1,I> = '5' THEN OrderItemKey = OrderDetKeys<1,I> OrderDetRec = XLATE('ORDER_DET',OrderItemKey,'','X') Canceled = (OrderDetRec = 0 AND OrderDetRec = 0) IF NOT(Canceled) THEN ResultLine += 1 Result<1,ResultLine> = OrderItemNos<1,I> Result<2,ResultLine> = '' ;* Wafer Quantities Result<3,ResultLine> = '1' Result<4,ResultLine> = OrderDetRec END END NEXT I END ;* End of check for last shipment on order END FOR I = 1 TO COUNT(OrderItemNos,@VM) + (OrderItemNos NE '') IF OrderItemShippedQtys<1,I> NE '' OR OrderItemRejQtys<1,I> NE '' THEN OrderItemNo = OrderItemNos<1,I> OrderDetRec = XLATE('ORDER_DET',OrderNo:'*':OrderItemNo,'','X') VisionLineNo = FMT(ABS(OrderDetRec),'R(0)#3') EPIPartNo = OrderDetRec CustPartNo = OrderDetRec IF OrderDetRec = '' THEN UnitPrice = OCONV(0,'MD32') END ELSE UnitPrice = OCONV(OrderDetRec,'MD32') END QuoteNo = OrderDetRec CustReqDt = OCONV(OrderDetRec,'[VISION_DT_FORMAT]') PromiseDt = OCONV(OrderDetRec,'[VISION_DT_FORMAT]') ShipLineShipQty = OrderItemShippedQtys<1,I> ShipLineRejQty = 0 ItemRDSNos = OrderItemRDSNos<1,I> IF ShipLineShipQty NE '' THEN ResultLine += 1 Result<1,ResultLine> = OrderItemNos<1,I> Result<2,ResultLine> = OrderItemShippedQtys<1,I> Result<3,ResultLine> = '' Result<4,ResultLine> = OrderDetRec END END ;* End of check for Shipped or Reject Qtys NEXT I ShipRec = Result<1> ShipRec = Result<2> ShipRec = Result<3> ShipRec = Result<4> otParms = FIELDSTORE(otParms,@RM,4,0,ShipRec) obj_Tables('WriteRec',OtParms) RETURN * * * * * * * Bail: * * * * * * * RETURN