open-insight/LSL2/STPROC/OBJ_ORDER.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

970 lines
31 KiB
Plaintext

COMPILE FUNCTION obj_Order(Method,Parms)
/*
Methods for Order table
08/15/2004 JCH - Initial Coding
Properties:
Methods:
Find() ;* Lookup Order number
Ord_WOLog(OrderNo,OrderRecord) ;* Adds detail information to WO_LOG from old format Order window
*/
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_Change, obj_Notes, Send_Info
$INSERT MSG_EQUATES
$INSERT ORDER_EQU
$INSERT ORDER_DET_EQU
$INSERT QUOTE_EQU
$INSERT PROD_SPEC_EQU
$INSERT COMPANY_EQU
$INSERT WO_LOG_EQU
$INSERT WO_STEP_EQU
$INSERT VISION_LOG_EQUATES ;* Auto generated from dictionary builder
$INSERT QUOTE_SIGS_EQU
$INSERT NOTIFICATION_EQU
$INSERT RDS_EQU
EQU MT_ORG_QUOTE$ TO 1 ;* Quote as found in Order Line Item
EQU MT_NEW_QUOTE$ TO 2 ;* Quote as corrected for multi step processes
EQU MT_PSN$ TO 3 ;* PSN(s) as found in corrected quote table -> position of PSN in this list gives step number
EQU MT_WO$ TO 4 ;* WO(s) from Order Line Item - items multiple WO's will always use the second (or) only wo found here
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 = 'CurrStatus' ; GOSUB CurrStatus
CASE Method = 'WOQuotes' ; GOSUB WOQuotes
CASE Method = 'PostVision' ; GOSUB PostVision
CASE Method = 'POChange' ; GOSUB POChange
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
* * * * * * *
CurrStatus:
* * * * * * *
OrderNo = Parms[1,@RM]
OrderRec = Parms[COL2()+1,@RM]
IF OrderNo = '' THEN RETURN ;* No error just return
IF OrderRec = '' THEN OrderRec = XLATE('ORDER',OrderNo,'','X')
IF OrderRec = '' THEN RETURN ;* No error just return
BEGIN CASE
END CASE
Result = ''
RETURN
* * * * * * *
Find:
* * * * * * *
OrderKeys = Dialog_Box( 'DIALOG_ORDER_FIND', @WINDOW, '' )
Result = OrderKeys
RETURN
* * * * * * *
WOQuotes:
* * * * * * *
IF NOT(ASSIGNED(OrderNo)) THEN
OrderNo = Parms[1,@RM]
OrderRec = Parms[COL2()+1,@RM]
END ELSE
OrderRec = ''
END
IF OrderNo = '' THEN RETURN
IF OrderRec = '' THEN
OrderRec = XLATE('ORDER',OrderNo,'','X')
END
IF OrderRec = '' THEN RETURN
OrderDetKeys = OrderRec<ORDER_ORDER_DET_KEY$>
ItemNos = ''
FOR I = 1 TO COUNT(OrderDetKeys,@VM) + (OrderDetKeys NE '')
ItemNos<1,I> = FIELD(OrderDetKeys<1,I>,'*',2)
NEXT I
ItemQuoteNos = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_QUOTE_NO$,'X')
ItemPromiseDts = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_PROMISE_DT$,'X')
ItemWorkOrders = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_WO_NO$,'X')
ItemQtys = XLATE('ORDER_DET',OrderDetKeys,ORDER_DET_ITEM_QTY$,'X')
SortArray = ''
QuoteResults = ''
PromiseDtResults = ''
ItemNoResults = ''
WorkOrderResults = ''
FOR I = 1 TO COUNT(ItemQuoteNos,@VM) + (ItemQuoteNos NE '')
IF ItemQtys<1,I> > 0 THEN
Element = ItemQuoteNos<1,I>:'*':ItemPromiseDts<1,I>
LOCATE Element IN SortArray BY 'AR' USING @VM SETTING Pos THEN
ItemNoResults = INSERT(ItemNoResults,1,Pos,-1,ItemNos<1,I>)
END ELSE
SortArray = INSERT(SortArray,1,Pos,0,Element)
QuoteResults = INSERT(QuoteResults,1,Pos,0,ItemQuoteNos<1,I>)
PromiseDtResults = INSERT(PromiseDtResults,1,Pos,0,ItemPromiseDts<1,I>)
ItemNoResults = INSERT(ItemNoResults,1,Pos,0,ItemNos<1,I>)
WorkOrderResults = INSERT(WorkOrderResults,1,Pos,0,ItemWorkOrders<1,I>)
END
END ;* End of check for cancelled line item
NEXT I
SWAP @SVM WITH ', ' IN ItemNoResults
Result = QuoteResults:@FM:PromiseDtResults:@FM:ItemNoResults:@FM:WorkOrderResults:@FM:SortArray
RETURN
* * * * * * * *
PostVision:
* * * * * * * *
* Create or Update Order information from the AS400 - Vision system
VisionOrderNo = Parms[1,@RM] ;* Order<48>
VisionItemNo = Parms[COL2()+1,@RM] ;* Order_Det<18> - same as OI item number
LineItemStatus = Parms[COL2()+1,@RM] ;* Order_Det<19>
BillToCustNo = Parms[COL2()+1,@RM] ;* Order<46> ;* Vision Customer Number
ShipToCustNo = Parms[COL2()+1,@RM] ;* Order<47> ;* Vision Customer Number
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>
ItemCRD = Parms[COL2()+1,@RM] ;* Order_Det<12>
ItemQuoteNo = Parms[COL2()+1,@RM] ;* Order_Det<22>
CustName = Parms[COL2()+1,@RM] ;* Order<49>
IF VisionOrderNo = '' THEN RETURN
IF ItemQuoteNo = '' THEN RETURN
OrderNo = XLATE('VISION_ORDER',VisionOrderNo,1,'X')
IF OrderNo = '' THEN
ItemNo = ABS(VisionItemNo)
END ELSE
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
END
QuoteRec = XLATE('QUOTE',ItemQuoteNo,'','X')
*** Get Epi Customer Number ***
OPEN 'DICT.COMPANY' TO DictCompany ELSE
ErrMsg('Unable to open "DICT.COMPANY" for lookup in COMM_CUSTOMER_EPI - CompNoLF Method.')
RETURN
END
SearchString = 'VISION_CUST_NO':@VM:ShipToCustNo:@FM
Option = ''
Flag = ''
Btree.Extract(SearchString,'COMPANY',DictCompany,EpiCustNo,Option,Flag) ;* Get Epi Cust No
*** Verify Customer Number is on record ***
SendMessage = 0
IF EpiCustNo = '' THEN
LogNo = NextKey('VISION_LOG')
LogRec = ''
LogRec<VISION_LOG_TIMESTAMP$> = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT')
LogRec<VISION_LOG_LOG_DESC$> = 'No EPI Cust No. for Vision Ship To Customer'
LogRec<VISION_LOG_VISION_ORDER$> = VisionOrderNo
LogRec<VISION_LOG_VISION_LINE$> = VisionItemNo
LogRec<VISION_LOG_ORDER_NO$> = OrderNo
LogRec<VISION_LOG_ITEM_NO$> = ItemNo
LogRec<VISION_LOG_FIELD_NAME$,-1> = 'SHIP_TO_CUST_NO'
LogRec<VISION_LOG_VISION_VALUE$,-1> = ShipToCustNo
LogRec<VISION_LOG_OI_VALUE$,-1> = '' ;* Log as an error
OVParms = 'VISION_LOG':@RM:LogNo:@RM:@RM:LogRec
obj_Tables('WriteRec',OVParms)
Recipients = XLATE('NOTIFICATION','ORDER_ENTRY',NOTIFICATION_USER_ID$,'X')
SentFrom = "Vision Posting Process"
Subject = 'Vision Error Logged ':LogNo
Message = 'Errors occured while attempting to post an order from Vision'
AttachWindow = 'VISION_LOG'
AttachKey = LogNo
SendToGroup = ''
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
RETURN
END ELSE
Captive = XLATE('COMPANY',EpiCustNo,COMPANY_CAPTIVE$,'X')
IF Captive THEN
LogNo = NextKey('VISION_LOG')
LogRec = ''
LogRec<VISION_LOG_TIMESTAMP$> = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT')
LogRec<VISION_LOG_LOG_DESC$> = 'Order with Captive EPI Cust No. Received from Vision'
LogRec<VISION_LOG_VISION_ORDER$> = VisionOrderNo
LogRec<VISION_LOG_VISION_LINE$> = VisionItemNo
LogRec<VISION_LOG_ORDER_NO$> = OrderNo
LogRec<VISION_LOG_ITEM_NO$> = ItemNo
LogRec<VISION_LOG_FIELD_NAME$,-1> = 'CUST_NO'
LogRec<VISION_LOG_VISION_VALUE$,-1> = ShipToCustNo
LogRec<VISION_LOG_OI_VALUE$,-1> = '' ;* Log as an error
OVParms = 'VISION_LOG':@RM:LogNo:@RM:@RM:LogRec
obj_Tables('WriteRec',OVParms)
Recipients = XLATE('NOTIFICATION','ORDER_ENTRY',NOTIFICATION_USER_ID$,'X') ;* OrderNotif$ is customer service
SentFrom = "Vision Posting Process"
Subject = 'Vision Error Logged ':LogNo
Message = 'Errors occured while attempting to post an order from Vision'
AttachWindow = 'VISION_LOG'
AttachKey = LogNo
SendToGroup = ''
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
RETURN
END ;* End of check for captive
END ;* End of check for Null EpiCustNo
Send_Info('Posting Vision order...')
*** Verify Customer Part Number matches that on the Quote -> PSN ***
IF PartType = '2' THEN
StepPSNs = QuoteRec<QUOTE_PROC_STEP_PSN$>
FirstStepPSN = StepPSNs<1,1>
CustPartNos = XLATE('PROD_SPEC',FirstStepPSN,PROD_SPEC_CUST_PART_NO$,'X')
CustPartDesc = XLATE('PROD_SPEC',FirstStepPSN,PROD_SPEC_PN_DESC$,'X')
OldStylePartNos = ''
FOR I = 1 TO COUNT(CustPartNos,@VM) + (CustPartNos NE '')
OldStylePartNos<1,I> = CustPartNos<1,I>:CustPartDesc<1,I>
NEXT I
CONVERT @LOWER_CASE TO @UPPER_CASE IN CustPartNos
LOCATE CustPartNo IN CustPartNos USING @VM SETTING Dummy ELSE
LOCATE CustPartNo IN OldStylePartNos USING @VM SETTING Dummy ELSE
SWAP @VM WITH ', ' IN CustPartNos
LogNo = NextKey('VISION_LOG')
LogRec = ''
LogRec<VISION_LOG_TIMESTAMP$> = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT')
LogRec<VISION_LOG_LOG_DESC$> = 'Cust Part No. ':QUOTE(CustPartNo):' Not Found IN PSN: ':FirstStepPSN
LogRec<VISION_LOG_VISION_ORDER$> = VisionOrderNo
LogRec<VISION_LOG_VISION_LINE$> = VisionItemNo
LogRec<VISION_LOG_ORDER_NO$> = OrderNo
LogRec<VISION_LOG_ITEM_NO$> = ItemNo
LogRec<VISION_LOG_FIELD_NAME$,-1> = 'CUST_PART_NO'
LogRec<VISION_LOG_VISION_VALUE$,-1> = CustPartNo
LogRec<VISION_LOG_OI_VALUE$,-1> = CustPartNos ;* Log as an error
OVParms = 'VISION_LOG':@RM:LogNo:@RM:@RM:LogRec
obj_Tables('WriteRec',OVParms)
Recipients = XLATE('NOTIFICATION','ORDER_ENTRY',NOTIFICATION_USER_ID$,'X') ;* OrderNotif$ is customer service
SentFrom = "Vision Posting Process"
Subject = 'Vision Error Logged ':LogNo
Message = 'Errors occured while attempting to post an order from Vision'
AttachWindow = 'VISION_LOG'
AttachKey = LogNo
SendToGroup = ''
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
RETURN
END
END
END ;* End of check for part type 2
*** Verify Customer Number on the Quote ***
QuoteCustNo = QuoteRec<QUOTE_CUST_NO$>
* EpiCustNo is the EpiShipToCustNo on the order
SearchString = 'VISION_CUST_NO':@VM:BillToCustNo:@FM
Option = ''
Flag = ''
Btree.Extract(SearchString,'COMPANY',DictCompany,EpiBillCustNo,Option,Flag) ;* Get Epi BillToCustNo
LogMessage = ''
IF EpiCustNo NE QuoteCustNo THEN
IF EpiBillCustNo NE QuoteCustNo THEN
LogMessage = "Customer No on the Quote is NOT one of the Customer Numbers on the Order"
END
END
IF LogMessage NE '' THEN
* Customer Number mismatch
LogNo = NextKey('VISION_LOG')
LogRec = ''
LogRec<VISION_LOG_TIMESTAMP$> = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT')
LogRec<VISION_LOG_LOG_DESC$> = "Customer Number on Quote doesn't match either Customer Number on Order"
LogRec<VISION_LOG_VISION_ORDER$> = VisionOrderNo
LogRec<VISION_LOG_VISION_LINE$> = VisionItemNo
LogRec<VISION_LOG_ORDER_NO$> = OrderNo
LogRec<VISION_LOG_ITEM_NO$> = ItemNo
LogRec<VISION_LOG_FIELD_NAME$,-1> = 'QUOTE_NO'
LogRec<VISION_LOG_VISION_VALUE$,-1> = 'S':ShipToCustNo:'>':EpiCustNo:' - B':BillToCustNo:'>':EpiBillCustNo
LogRec<VISION_LOG_OI_VALUE$,-1> = QuoteCustNo ;* Log as an error
OVParms = 'VISION_LOG':@RM:LogNo:@RM:@RM:LogRec
obj_Tables('WriteRec',OVParms)
Recipients = XLATE('NOTIFICATION','ORDER_ENTRY',NOTIFICATION_USER_ID$,'X') ;* OrderNotif$ is customer service
SentFrom = "Vision Posting Process"
Subject = 'Vision Error Logged ':LogNo
Message = 'Errors occured while attempting to post an order from Vision'
AttachWindow = 'VISION_LOG'
AttachKey = LogNo
SendToGroup = ''
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
RETURN
END
DefaultItemDesc = QuoteRec<QUOTE_PROC_DESC$>
IF DefaultItemDesc = '' THEN
ItemDesc = 'Order from Vision'
END ELSE
ItemDesc = DefaultItemDesc
END
OCTableNames = ''
OCRecordKeys = ''
OCColumns = ''
OCValues = ''
OCOldValues = ''
OCNewValues = ''
IF OrderNo = '' THEN
* New Order
OrderNo = NextKey('ORDER')
OrderRec = ''
OrderRec<ORDER_ENTRY_ID$> = 'VISION'
OrderRec<ORDER_ENTRY_DATE$> = Date()
OrderRec<ORDER_VISION_ORDER_NO$> = VisionOrderNo
OrderRec<ORDER_CUST_NO$> = EpiCustNo
OrderRec<ORDER_SHIP_TO_CUST_NO$> = ShipToCustNo
OrderRec<ORDER_BILL_TO_CUST_NO$> = BillToCustNo
OrderRec<ORDER_PO_NO$> = CustPONo
OrderRec<ORDER_VISION_CUST_NAME$> = CustName
* Added 08/25/2005 JCH - J.C. Henry & Co., Inc.
CustRec = XLATE('COMPANY',EpiCustNo,'','X')
CustBillTo = CustRec<COMPANY_BILL_TO_CUST_NO$>
IF CustBillTo = '' OR (BillToCustNo = ShipToCustNo) THEN
OrderRec<ORDER_BILL_TO_COMPANY$> = CustRec<COMPANY_BILL_TO_CO$>
OrderRec<ORDER_BILL_TO_ATTN$> = CustRec<COMPANY_BILL_TO_ATTN$>
OrderRec<ORDER_BILL_TO_ADDRESS$> = CustRec<COMPANY_BILL_TO_ADDRESS$>
OrderRec<ORDER_BILL_TO_CITY$> = CustRec<COMPANY_BILL_TO_CITY$>
OrderRec<ORDER_BILL_TO_STATE$> = CustRec<COMPANY_BILL_TO_STATE$>
OrderRec<ORDER_BILL_TO_ZIP$> = CustRec<COMPANY_BILL_TO_ZIP$>
OrderRec<ORDER_BILL_TO_COUNTRY$> = CustRec<COMPANY_COUNTRY$>
END ELSE
BillCustRec = XLATE('COMPANY',CustBillTo,'','X')
OrderRec<ORDER_BILL_TO_COMPANY$> = BillCustRec<COMPANY_BILL_TO_CO$>
OrderRec<ORDER_BILL_TO_ATTN$> = BillCustRec<COMPANY_BILL_TO_ATTN$>
OrderRec<ORDER_BILL_TO_ADDRESS$> = BillCustRec<COMPANY_BILL_TO_ADDRESS$>
OrderRec<ORDER_BILL_TO_CITY$> = BillCustRec<COMPANY_BILL_TO_CITY$>
OrderRec<ORDER_BILL_TO_STATE$> = BillCustRec<COMPANY_BILL_TO_STATE$>
OrderRec<ORDER_BILL_TO_ZIP$> = BillCustRec<COMPANY_BILL_TO_ZIP$>
OrderRec<ORDER_BILL_TO_COUNTRY$> = BillCustRec<COMPANY_COUNTRY$>
END
OrderRec<ORDER_SHIP_TO_COMPANY$> = CustRec<COMPANY_SHIP_TO_CO$>
OrderRec<ORDER_SHIP_TO_ATTN$> = CustRec<COMPANY_SHIP_TO_ATTN$>
OrderRec<ORDER_SHIP_TO_ADDRESS$> = CustRec<COMPANY_SHIP_TO_ADDRESS$>
OrderRec<ORDER_SHIP_TO_CITY$> = CustRec<COMPANY_SHIP_TO_CITY$>
OrderRec<ORDER_SHIP_TO_STATE$> = CustRec<COMPANY_SHIP_TO_STATE$>
OrderRec<ORDER_SHIP_TO_ZIP$> = CustRec<COMPANY_SHIP_TO_ZIP$>
IF CustRec<COMPANY_COUNTRY$> = '' THEN
OrderRec<ORDER_SHIP_TO_COUNTRY$> = 'USA'
END ELSE
OrderRec<ORDER_SHIP_TO_COUNTRY$> = CustRec<COMPANY_COUNTRY$>
END
OrderRec<ORDER_TERMS$> = CustRec<COMPANY_TERMS$>
OrderRec<ORDER_INVOICE_NOTES$> = CustRec<COMPANY_INVOICE_NOTES$>
OrderRec<ORDER_CAPTIVE$> = CustRec<COMPANY_CAPTIVE$>
OrderRec<ORDER_CONSIGNMENT$> = CustRec<COMPANY_CONSIGNMENT$>
OrderRec<ORDER_INCO_CODE$> = CustRec<COMPANY_INCO_CODE$>
* End of added code
obj_Tables('WriteRec','ORDER':@RM:OrderNo:@RM:@RM:OrderRec)
*obj_Tables('WriteRec','VISION_ORDER':@RM:VisionOrderNo:@RM:@RM:OrderNo) ;* Application maintained cross reference table
;* Changed to a Relational Index 8/26/2005 JCH
ODParms = OrderNo:@RM
ODParms := ItemNo:@RM
ODParms := ItemQuoteNo:@RM
ODParms := EpiPartNo:@RM
ODParms := ItemDesc:@RM ;* XLATE to EPI_PART table ?
ODParms := ItemUnitPrice:@RM
ODParms := ItemQty:@RM
ODParms := '':@RM ;* Pass WONo as null
ODParms := VisionItemNo:@RM
ODParms := LineItemStatus:@RM
ODParms := PartType:@RM
ODParms := CustPartNo:@RM
ODParms := ItemShipQty:@RM
ODParms := ItemPromiseDt:@RM
ODParms := ItemReqShipDt:@RM
ODParms := ItemCalcSWODt:@RM
ODParms := ItemCRD
obj_Order_Det('Create',ODParms)
OCTableNames = 'ORDER_DET'
OCRecordKeys = OrderNo:'*':ItemNo
IF PartType = '2' OR PartType = '5' THEN
WONo = obj_WO_Log('Create',OrderNo:@RM:ItemNo:@RM:ItemQuoteNo)
IF Get_Status(errCode) THEN
RETURN
Send_Info(' ')
END ELSE
obj_Order_Det('AddWONo',OrderNo:@RM:ItemNo:@RM:WONo)
OCTableNames<1,-1> = 'WO_LOG'
OCRecordKeys<1,-1> = WONo
END
END
Reason = 'New from Vision'
obj_Order_Change('Create',OrderNo:@RM:OCTableNames:@RM:OCRecordKeys:@RM:OCColumns:@RM:OCValues:@RM:OCOldValues:@RM:OCNewValues:@RM:Reason:@RM:'VISION')
END ELSE
* No changes to the order itself
IF RowExists('ORDER_DET', OrderNo:'*':ItemNo) THEN
* This is an update
ODParms = 'ORDER_DET':@RM:OrderNo:'*':ItemNo
OrderDetRec = obj_Tables('ReadRec',ODParms)
IF Get_Status(errCode) THEN
Send_Info(' ')
RETURN
END
WONo = OrderDetRec<ORDER_DET_WO_NO$>
WORec = XLATE('WO_LOG',WONo,'','X')
OCCnt = 0 ;* Order Change log parameters
OCTableNames = ''
OCRecordKeys = ''
OCColumns = ''
OCValues = ''
OCNewValues = ''
OCOldValues = ''
IF WORec<WO_LOG_CASS_DTM$> NE '' THEN
LogRec = ''
* Material has been received
Reason = 'Vision Change after Material Received'
IF WORec<WO_LOG_CASS_REL_DTM$,1> = '' THEN
IF OrderDetRec<ORDER_DET_ITEM_QTY$> NE ICONV(ItemQty,'MD0') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'ITEM_QTY'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemQty,'MD0')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_ITEM_QTY$>
END
OrderDetRec<ORDER_DET_ITEM_QTY$> = ICONV(ItemQty,'MD0') ;* Work Order not yet Released to Production
END ELSE
IF ICONV(ItemQty,'MD0') NE OrderDetRec<ORDER_DET_ITEM_QTY$> THEN
LogRec<VISION_LOG_FIELD_NAME$,-1> = 'ITEM_QTY'
LogRec<VISION_LOG_VISION_VALUE$,-1> = ICONV(ItemQty,'MD0')
LogRec<VISION_LOG_OI_VALUE$,-1> = OrderDetRec<ORDER_DET_ITEM_QTY$> ;* Log as an error
END
END
* Error Log stuff
IF ICONV(ItemPromiseDt,'D') NE OrderDetRec<ORDER_DET_PROMISE_DT$> THEN
LogRec<VISION_LOG_FIELD_NAME$,-1> = 'PROMISE_DT'
LogRec<VISION_LOG_VISION_VALUE$,-1> = ICONV(ItemPromiseDt,'D')
LogRec<VISION_LOG_OI_VALUE$,-1> = OrderDetRec<ORDER_DET_PROMISE_DT$>
END
IF ICONV(ItemCRD,'D') NE OrderDetRec<ORDER_DET_CUST_REQ_DT$> THEN
LogRec<VISION_LOG_FIELD_NAME$,-1> = 'CUST_REQ_DT'
LogRec<VISION_LOG_VISION_VALUE$,-1> = ICONV(ItemCRD,'D')
LogRec<VISION_LOG_OI_VALUE$,-1> = OrderDetRec<ORDER_DET_CUST_REQ_DT$>
END
IF LogRec NE '' THEN
LogNo = NextKey('VISION_LOG')
LogRec<VISION_LOG_TIMESTAMP$> = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT')
LogRec<VISION_LOG_LOG_DESC$> = 'Order Item Update after Material Received'
LogRec<VISION_LOG_VISION_ORDER$> = VisionOrderNo
LogRec<VISION_LOG_VISION_LINE$> = VisionItemNo
LogRec<VISION_LOG_ORDER_NO$> = OrderNo
LogRec<VISION_LOG_ITEM_NO$> = ItemNo
OVParms = 'VISION_LOG':@RM:LogNo:@RM:@RM:LogRec
obj_Tables('WriteRec',OVParms)
Recipients = XLATE('NOTIFICATION','ORDER_ENTRY',NOTIFICATION_USER_ID$,'X') ;* OrderNotif$ is customer service
SentFrom = "Vision Posting Process"
Subject = 'Vision Error Logged ':LogNo
Message = 'Errors occured while attempting to post an order from Vision'
AttachWindow = 'VISION_LOG'
AttachKey = LogNo
SendToGroup = ''
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
END
IF OrderDetRec<ORDER_DET_UNIT_PRICE$> NE ICONV(ItemUnitPrice,'MD2') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'UNIT_PRICE'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemUnitPrice,'MD2')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_UNIT_PRICE$>
END
IF OrderDetRec<ORDER_DET_REQ_SHIP_DT$> NE ICONV(ItemReqShipDt,'D') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'REQ_SHIP_DT'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemReqShipDt,'D')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_REQ_SHIP_DT$>
END
IF OrderDetRec<ORDER_DET_SHIP_WIN_DT$> NE ICONV(ItemCalcSWODt,'D') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'SHIP_WIN_DT'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemCalcSWODt,'D')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_SHIP_WIN_DT$>
END
IF OrderDetRec<ORDER_DET_VISION_ITEM_STATUS$> NE LineItemStatus THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'VISION_ITEM_STATUS'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = LineItemStatus
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_VISION_ITEM_STATUS$>
END
IF OrderDetRec<ORDER_DET_VISION_SHIP_QTY$> NE ICONV(ItemShipQty,'MD0') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'VISION_SHIP_QTY'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemShipQty,'MD0')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_VISION_SHIP_QTY$>
END
IF OCCnt > 0 THEN
obj_Order_Change('Create',OrderNo:@RM:OCTableNames:@RM:OCRecordKeys:@RM:OCColumns:@RM:OCValues:@RM:OCOldValues:@RM:OCNewValues:@RM:Reason:@RM:'VISION')
END
OrderDetRec<ORDER_DET_UNIT_PRICE$> = ICONV(ItemUnitPrice,'MD2')
OrderDetRec<ORDER_DET_REQ_SHIP_DT$> = ICONV(ItemReqShipDt,'D')
OrderDetRec<ORDER_DET_SHIP_WIN_DT$> = ICONV(ItemCalcSWODt,'D')
OrderDetRec<ORDER_DET_VISION_ITEM_STATUS$> = LineItemStatus
OrderDetRec<ORDER_DET_VISION_SHIP_QTY$> = ICONV(ItemShipQty,'MD0')
ODParms = FieldStore(ODParms,@RM,4,1,OrderDetRec)
obj_Tables('WriteRec',ODParms)
END ELSE
* CustWaferInfo entered
* Material Received
* Released
OrderDetTotShipQty = XLATE('ORDER_DET',OrderNo:'*':ItemNo,'TOTAL_SHIP_QTY','X') ;*****************************
OrderDetItemQty = OrderDetRec<ORDER_DET_ITEM_QTY$>
IF LineItemStatus = 'C' THEN
BEGIN CASE
CASE OrderDetTotShipQty = 0 AND WORec<WO_LOG_CASS_REL_DTM$,1> = ''
* Item is being cancelled zero out qtys and prices
ItemUnitPrice = 0
ItemQty = 0
IF WONo NE '' THEN
obj_WO_Log('RemOrderItem',WONo:@RM:OrderNo:@RM:ItemNo)
END
OrderDetRec<ORDER_DET_WO_NO$> = ''
Reason = 'Vision Order Item Cancellation Received'
CASE OrderDetTotShipQty = OrderDetItemQty
Reason = 'Vision Order Item Closed from Vision'
CASE 1
Reason = 'Vision Order Change Received'
END CASE
END ELSE
Reason = 'Vision Order Change Received'
END
IF OrderDetRec<ORDER_DET_UNIT_PRICE$> NE ICONV(ItemUnitPrice,'MD2') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'UNIT_PRICE'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemUnitPrice,'MD2')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_UNIT_PRICE$>
END
IF OrderDetRec<ORDER_DET_ITEM_QTY$> NE ICONV(ItemQty,'MD0') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'ITEM_QTY'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemQty,'MD0')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_ITEM_QTY$>
END
IF OrderDetRec<ORDER_DET_PROMISE_DT$> NE ICONV(ItemPromiseDt,'D') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'PROMISE_DT'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemPromiseDt,'D')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_PROMISE_DT$>
END
IF OrderDetRec<ORDER_DET_CUST_REQ_DT$> NE ICONV(ItemCRD,'D') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'CUST_REQ_DT$'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemCRD,'D')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_CUST_REQ_DT$>
END
IF OrderDetRec<ORDER_DET_REQ_SHIP_DT$> NE ICONV(ItemReqShipDt,'D') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'REQ_SHIP_DT'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemReqShipDt,'D')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_REQ_SHIP_DT$>
END
IF OrderDetRec<ORDER_DET_SHIP_WIN_DT$> NE ICONV(ItemCalcSWODt,'D') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'SHIP_WIN_DT'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemCalcSWODt,'D')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_SHIP_WIN_DT$>
END
IF OrderDetRec<ORDER_DET_VISION_ITEM_STATUS$> NE LineItemStatus THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'VISION_ITEM_STATUS'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = LineItemStatus
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_VISION_ITEM_STATUS$>
END
IF OrderDetRec<ORDER_DET_VISION_SHIP_QTY$> NE ICONV(ItemShipQty,'MD0') THEN
OCCnt += 1
OCTableNames<1,OCCnt> = 'ORDER_DET'
OCRecordKeys<1,OCCnt> = OrderNo:'*':ItemNo
OCColumns<1,OCCnt> = 'VISION_SHIP_QTY'
OCValues<1,OCCnt> = ''
OCNewValues<1,OCCnt> = ICONV(ItemShipQty,'MD0')
OCOldValues<1,OCCnt> = OrderDetRec<ORDER_DET_VISION_SHIP_QTY$>
END
obj_Order_Change('Create',OrderNo:@RM:OCTableNames:@RM:OCRecordKeys:@RM:OCColumns:@RM:OCValues:@RM:OCOldValues:@RM:OCNewValues:@RM:Reason)
OrderDetRec<ORDER_DET_UNIT_PRICE$> = ICONV(ItemUnitPrice,'MD2')
OrderDetRec<ORDER_DET_ITEM_QTY$> = ICONV(ItemQty,'MD0')
OrderDetRec<ORDER_DET_PROMISE_DT$> = ICONV(ItemPromiseDt,'D')
OrderDetRec<ORDER_DET_CUST_REQ_DT$> = ICONV(ItemCRD,'D')
OrderDetRec<ORDER_DET_REQ_SHIP_DT$> = ICONV(ItemReqShipDt,'D')
OrderDetRec<ORDER_DET_SHIP_WIN_DT$> = ICONV(ItemCalcSWODt,'D')
OrderDetRec<ORDER_DET_VISION_ITEM_STATUS$> = LineItemStatus
OrderDetRec<ORDER_DET_VISION_SHIP_QTY$> = ICONV(ItemShipQty,'MD0')
ODParms = FieldStore(ODParms,@RM,4,1,OrderDetRec)
obj_Tables('WriteRec',ODParms)
END ;* End of check for material received
END ELSE
* This is a new detail record
GOSUB WOQuotes
WorkOrders = Result<4>
QuoteShipDtPairs = Result<5>
Result = ''
ODQuoteDate = ItemQuoteNo:'*':ICONV(ItemPromiseDt,'D')
LOCATE ODQuoteDate IN QuoteShipDtPairs BY 'AR' USING @VM SETTING Pos THEN
WONo = WorkOrders<1,Pos>
IF WONo NE '' AND ( PartType = '2' OR PartType = '5') THEN
obj_WO_Log('AddOrderItem',WONo:@RM:OrderNo:@RM:ItemNo)
END
END ELSE
WONo = ''
END
ODParms = OrderNo:@RM
ODParms := ItemNo:@RM
ODParms := ItemQuoteNo:@RM
ODParms := EpiPartNo:@RM
ODParms := ItemDesc:@RM ;* XLATE to EPI_PART table ?
ODParms := ItemUnitPrice:@RM
ODParms := ItemQty:@RM
ODParms := WONo:@RM ;* Pass as null
ODParms := VisionItemNo:@RM
ODParms := LineItemStatus:@RM
ODParms := PartType:@RM
ODParms := CustPartNo:@RM
ODParms := ItemShipQty:@RM
ODParms := ItemPromiseDt:@RM
ODParms := ItemReqShipDt:@RM
ODParms := ItemCalcSWODt:@RM
ODParms := ItemCRD
obj_Order_Det('Create',ODParms)
IF WONo = '' AND ( PartType = '2' OR PartType = '5') THEN
WONo = obj_WO_Log('Create',OrderNo:@RM:ItemNo:@RM:ItemQuoteNo)
IF Get_Status(errCode) THEN
Send_Info(' ')
RETURN
END ELSE
obj_Order_Det('AddWONo',OrderNo:@RM:ItemNo:@RM:WONo)
END
END
END
END
Send_Info(' ') ;* Look at the whole line!!!!!!!!!!!!!!!!!!!
RETURN
* * * * * * *
POChange:
* * * * * * *
OrderNo = Parms[1,@RM]
OrgPONo = Parms[COL2()+1,@RM]
PONo = Parms[COL2()+1,@RM]
IF OrderNo = '' THEN ErrorMsg = 'Unassigned parameter "OrderNo" passed to routine (':Method:').'
IF OrgPONo = '' THEN ErrorMsg = 'Unassigned parameter "OrgPONo" passed to routine (':Method:').'
IF PONo = '' THEN ErrorMsg = 'Unassigned parameter "PONo" passed to routine (':Method:').'
IF ErrorMsg NE '' THEN RETURN
OrderRec= XLATE('ORDER',OrderNo,'','X')
WONos = OrderRec<ORDER_WO_KEYS$> ;* Get List of Work Orders on Order
WOStepKeys = XLATE('WO_LOG',WONos,WO_LOG_WO_STEP_KEY$,'X') ;* Get List of all WO Steps for All Work Orders on Order
CONVERT @VM TO @FM IN WOStepKeys
RdsNos = XLATE('WO_STEP',WOStepKeys,WO_STEP_RDS_KEY$,'X') ;* Get List of all RDS Keys for all WOSteps on all Work Orders
CONVERT @FM TO @VM IN RdsNos
RTParms = 'RDS'
LockedRDSNos = ''
FOR I = 1 TO COUNT(RdsNos,@VM) + (RdsNos NE '')
RdsNo = RdsNos<1,I>
IF RdsNo NE '' THEN
RTParms = FieldStore(RTParms, @RM, 2, 1, RdsNo)
obj_Tables('LockRec',RTParms)
IF Get_Status(errCode) THEN
FOR N = 1 TO COUNT(LockedRDSNos,@VM) + (LockedRDSNos NE '')
RTParms = FieldStore(RTParms, @RM, 2, 1, LockedRDSNos<1,N>)
obj_Tables('UnlockRec',RTParms) ;* Unlock everything locked up to here
NEXT N
otParms = 'ORDER':@RM:OrderNo
OrderRec = obj_Tables('ReadRec',otParms)
OrderRec<ORDER_PO_NO$> = OrgPONo
otParms = FieldStore(otParms,@RM,4,1,OrderRec)
obj_Tables('WriteRec',otParms)
ErrorMsg = 'Unable to lock RDS ':QUOTE(RdsNo):' for delete.'
RETURN
END ELSE
LockedRDSNos<1,-1> = RdsNo
END
END
NEXT I
RDSTableVar = FIELD(RTParms,@RM,3)
FOR I = 1 TO COUNT(LockedRDSNos,@VM) + (LockedRDSNos NE '')
LockedRDSNo = LockedRDSNos<1,I>
READ RDSRec FROM RDSTableVar,LockedRDSNo THEN
RDSRec<RDS_PO$> = PONo
RTParms = FieldStore(RTParms, @RM, 2, 1, LockedRDSNo)
RTParms = FieldStore(RTParms, @RM, 4, 1, RDSRec)
obj_Tables('WriteRec',RTParms) ;* Write and unlock RDS records
END
NEXT I
Result = WONos
RETURN