Added critical flag to PostProcedure service. Refactored other work order quantity calls to use PostProcedure.

This commit is contained in:
Infineon\StieberD 2025-04-01 13:18:08 -07:00 committed by Stieber Daniel (CSC FI SPS MESLEO)
parent 5c69abbbde
commit e5bfa43b09
5 changed files with 2439 additions and 2525 deletions

View File

@ -1,4 +1,4 @@
COMPILE FUNCTION obj_WM_Out(Method,Parms)
Compile Function obj_WM_Out(Method,Parms)
/*
Methods for WM_OUT table
@ -17,27 +17,28 @@ COMPILE FUNCTION obj_WM_Out(Method,Parms)
*/
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, NextKey, obj_WO_Verify, obj_Prod_Spec, Send_Dyn, obj_RDS_Makeup
DECLARE FUNCTION obj_RDS2, obj_WM_Out, Delete, Signature_Services, Environment_Services, Logging_Services
DECLARE FUNCTION Database_Services
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, obj_WO_Step, obj_RDS_Layer, obj_RDS_Test, Btree.Extract
DECLARE SUBROUTINE Extract_SI_Keys, obj_WM_Out, obj_WO_Mat, obj_Post_Log, obj_WO_Mat_Log, ErrMsg, obj_WO_Wfr
DECLARE SUBROUTINE Logging_Services, Material_Services, Database_Services, Update_Index, Work_Order_Services
Declare Function Get_Status, Msg, Utility, obj_Tables, NextKey, obj_WO_Verify, obj_Prod_Spec, Send_Dyn, obj_RDS_Makeup
Declare Function obj_RDS2, obj_WM_Out, Delete, Signature_Services, Environment_Services, Logging_Services
Declare Function Database_Services
Declare Subroutine Set_Status, Msg, obj_Tables, Send_Dyn, obj_WO_Step, obj_RDS_Layer, obj_RDS_Test, Btree.Extract
Declare Subroutine Extract_SI_Keys, obj_WM_Out, obj_WO_Mat, obj_Post_Log, obj_WO_Mat_Log, ErrMsg, obj_WO_Wfr
Declare Subroutine Logging_Services, Material_Services, Database_Services, Update_Index, Work_Order_Services
Declare Subroutine Service_Services
$INSERT MSG_EQUATES
$INSERT APP_INSERTS
$INSERT WO_LOG_EQU
$INSERT WO_STEP_EQU
$INSERT WO_MAT_EQUATES
$INSERT EPI_SUSCEPTOR_EQUATES
$INSERT RDS_EQUATES
$INSERT WM_OUT_EQUATES
$INSERT PROD_SPEC_EQUATES
$INSERT QUOTE_SPEC_EQU
$INSERT SURFACE_SCAN_EQUATES
$INSERT CLEAN_INSP_EQUATES
$INSERT WMO_WFRS_EQUATES
$INSERT REACT_RUN_EQUATES
$Insert MSG_EQUATES
$Insert APP_INSERTS
$Insert WO_LOG_EQU
$Insert WO_STEP_EQU
$Insert WO_MAT_EQUATES
$Insert EPI_SUSCEPTOR_EQUATES
$Insert RDS_EQUATES
$Insert WM_OUT_EQUATES
$Insert PROD_SPEC_EQUATES
$Insert QUOTE_SPEC_EQU
$Insert SURFACE_SCAN_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert WMO_WFRS_EQUATES
$Insert REACT_RUN_EQUATES
ErrTitle = 'Error in Stored Procedure "obj_WM_Out"'
ErrorMsg = ''
@ -131,8 +132,6 @@ Create:
SubPostClean = SubstrateSpec<1,QSSubPostClean$> ;***************************************************************************************
*PSType = SubstrateSpec<1,QSSubSpecType$> ;* Deprecated 8/22/2012 JCH
PSType = XLATE('PROD_SPEC',PSNo,'SPEC_TYPE','X') ;* Added 8/22/2012 JCH
IF CassLoadQty = '' THEN
@ -157,7 +156,6 @@ Create:
END
END
WORec = XLATE('WO_LOG',WONo,'','X')
InboundWaferQty = 0
@ -385,8 +383,6 @@ CurrStatus:
NEXT I
IF NCRCount = SlotCount AND FillCount = 0 AND WMOutRec<WM_OUT_MAKEUP_BOX$> NE 1 THEN
*Result = 'REJ'
*RETURN
RejectFlag = 1
END ELSE
RejectFlag = 0
@ -399,10 +395,6 @@ CurrStatus:
Signatures = SigArray<2>
SigDtms = SigArray<3>
* SigProfile = WOMatRec<WO_MAT_SIG_PROFILE$>
* Signatures = WOMatRec<WO_MAT_SIGNATURE$>
* SigDtms = WOMatRec<WO_MAT_SIG_DTM$>
ProfCnt = COUNT(SigProfile,@VM) + (SigProfile NE '')
* Section new on 12/8/2011 JCH
@ -513,21 +505,6 @@ CurrStatus:
RETURN
END
* StaticCurrStatus = WMOutRec<WM_OUT_CURR_STATUS_STATIC$>
*
* If Result NE StaticCurrStatus then
* // Log the discrepancy
* LogData = ''
* LogData<1> = LoggingDTM
* LogData<2> = @User4
* LogData<3> = WMOutKey
* LogData<4> = Result
* LogData<5> = StaticCurrStatus
* Logging_Services('AppendLog', objCurrStatusLog, LogData, @RM, @FM)
* Material_Services('PostWMOutUpdateRequest', WMOutKey)
* end
RETURN
@ -652,7 +629,6 @@ NextOpenSlots:
RETURN
* * * * * * *
SlotStatus:
* * * * * * *
@ -744,7 +720,6 @@ AddWafer:
MUCassIDs = Parms[COL2()+1,@RM]
MUSlots = Parms[COL2()+1,@RM]
IF WONo = '' THEN ErrorMsg = 'Null Parameter "WONo" passed to routine. (':Method:')'
IF WOStep = '' THEN ErrorMsg = 'Null Parameter "WOStep" passed to routine. (':Method:')'
IF CassNo = '' THEN ErrorMsg = 'Null Parameter "CassNo" passed to routine. (':Method:')'
@ -758,7 +733,6 @@ AddWafer:
IF ErrorMsg NE '' THEN RETURN
otParms = 'WM_OUT':@RM:WONo:'*':WOStep:'*':CassNo
* WMOutRec = obj_Tables('ReadRec',otParms)
WMOutRec = Database_Services('ReadDataRow', 'WM_OUT', WONo:'*':WOStep:'*':CassNo)
IF Get_Status(errCode) THEN RETURN
@ -780,17 +754,14 @@ AddWafer:
obj_Post_Log('Create','WO_MAT':@RM:WONo:'*':CassNo:@RM:WO_MAT_WMO_LOAD_DTM$:@RM:ICONV(CurrDTM,'DT'))
END
LastSlotNo = WMOutRec<WM_OUT_SLOT_NO$>[-1,'B':@VM]
LastSlot = 0
LastRDSNo = ''
LastReactNo = ''
WfrIDs = ''
NewSlotIDs = ''
FOR I = 1 TO SlotCnt
SlotNo = SlotNos<1,I>
@ -835,42 +806,13 @@ AddWafer:
Parms := '':@RM ;* CurrInvLoc
Parms := 'O' ;* Wfr Side
obj_WO_Wfr('AddEvent',Parms)
END
NEXT I
/*
IF NewSlotIDs NE '' THEN
* * * * Added 9/7/2016 JCH - wafer history * * * *
Parms = WfrIDs:@RM ;* WfrID
Parms := CurrDTM:@RM ;* EventDtm
Parms := @USER4:@RM ;* EventBy
Parms := 'UNLOAD':@RM ;* Event
Parms := NewSlotIDs:@RM ;* NewSlotID
Parms := '':@RM ;* RunLoc
Parms := '':@RM ;* NCRNo
Parms := '':@RM ;* TWUse
Parms := '':@RM ;* CurrSlotID
Parms := '':@RM ;* NewToolID (Load Tool)
Parms := 'R':ReactNo:@RM ;* CurrToolID (Unload Tool)
Parms := '':@RM ;* NewInvLoc
Parms := '':@RM ;* CurrInvLoc
Parms := 'O' ;* Wfr Side
obj_WO_Wfr('AddEvent',Parms)
END
*/
otParms = FieldStore(otParms,@RM,4,0,WMOutRec) ;* Put record in 4th field of OtParms
* obj_Tables('WriteRec',otParms)
Database_Services('WriteDataRow', 'WM_OUT', WONo:'*':WOStep:'*':CassNo, WMOutRec, True$, False$, True$)
If Error_Services('NoError') then
@ -929,8 +871,6 @@ RemoveWafer:
WMOKey = WONo:'*':WOStep:'*':CassNo
* otParms = 'WM_OUT':@RM:WONo:'*':WOStep:'*':CassNo
* WMOutRec = obj_Tables('ReadRec',otParms)
WMOutRec = Database_Services('ReadDataRow', 'WM_OUT', WMOKey)
IF Get_Status(errCode) THEN RETURN ;* Added 2/24/2009 JCH
@ -946,8 +886,6 @@ RemoveWafer:
END
NEXT I
* otParms = FieldStore(otParms,@RM,4,0,WMOutRec) ;* Put record in 4th field of OtParms
* obj_Tables('WriteRec',otParms)
Database_Services('WriteDataRow', 'WM_OUT', WMOkey, WMOutRec, True$, False$, True$)
RETURN
@ -995,7 +933,7 @@ AddShip:
// Update work order SHIP_QTY_STATIC
WONo = Field(WMOutKey, '*', 1)
Work_Order_Services('UpdateShippedQty', WONo)
Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'UpdateShippedQty':@VM:WONo, False$)
RETURN
@ -1230,6 +1168,7 @@ AddMakeupWafers:
RETURN
* * * * * * *
SubMakeupWafers:
* * * * * * *
@ -1325,6 +1264,7 @@ SubMakeupWafers:
RETURN
* * * * * * *
RemMakeupWafers:
* * * * * * *
@ -1585,6 +1525,7 @@ CassRDSWfrCnts:
RETURN
* * * * * * *
GetPartNoQtys:
* * * * * * *
@ -1914,6 +1855,7 @@ EpiReactNo:
RETURN Result
* * * * * * *
ConvertCleanInsp:
* * * * * * *
@ -2010,6 +1952,3 @@ ConvertCleanInsp:
RETURN

View File

@ -1,4 +1,4 @@
COMPILE FUNCTION obj_WO_Mat(Method,Parms)
Compile Function obj_WO_Mat(Method,Parms)
/*
Methods for the Work Order Material (WO_MAT) table
@ -25,49 +25,48 @@ COMPILE FUNCTION obj_WO_Mat(Method,Parms)
*/
#pragma precomp SRP_PreCompiler
Declare Function Get_Status, Msg, Utility, obj_Tables, Dialog_Box,NextKey, Popup, Get_Property, obj_RDS, RetStack
Declare Function Database_Services, GaN_Services, Logging_Services, Environment_Services, Signature_Services
Declare Function obj_WO_Mat, obj_WM_In, obj_WM_Out, obj_Prod_Spec, obj_Clean_Insp, obj_Calendar, obj_Popup
Declare Function Error_Services, Memberof, Datetime
Declare Subroutine Set_Status, Msg, obj_Tables, Send_Dyn, Btree.Extract, ErrMsg, Send_Dyn, RList, obj_WO_Log, Send_Event
Declare Subroutine obj_RDS, Extract_SI_Keys, obj_Pend_Ship_Labels, obj_WO_Mat_QA, Work_Order_Services, Service_Services
Declare Subroutine obj_notes, obj_Clean_Insp, obj_Post_Log, Send_Info, obj_WO_Mat_Log, obj_SAP, obj_WO_Mat, obj_WO_Wfr
Declare Subroutine Logging_Services, Set_Property, Delete, Database_Services, SRP_Stopwatch, Material_Services
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box,NextKey, Popup, Get_Property, obj_RDS, RetStack
DECLARE FUNCTION Database_Services, GaN_Services, Logging_Services, Environment_Services, Signature_Services
DECLARE FUNCTION obj_WO_Mat, obj_WM_In, obj_WM_Out, obj_Prod_Spec, obj_Clean_Insp, obj_Calendar, obj_Popup
DECLARE FUNCTION Error_Services, Memberof, Datetime
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, Btree.Extract, ErrMsg, Send_Dyn, RList, obj_WO_Log, Send_Event, obj_RDS, Extract_SI_Keys
DECLARE SUBROUTINE obj_notes, obj_Clean_Insp, obj_Post_Log, Send_Info, obj_WO_Mat_Log, obj_SAP, obj_WO_Mat, obj_Pend_Ship_Labels, obj_WO_Mat_QA
DECLARE SUBROUTINE obj_WO_Wfr, Logging_Services, Set_Property, Delete, Database_Services, SRP_Stopwatch
DECLARE SUBROUTINE Material_Services, Work_Order_Services
$Insert MSG_EQUATES
$Insert WO_MAT_EQUATES
$Insert WM_OUT_EQUATES
$Insert WM_IN_EQUATES
$Insert WO_STEP_EQU
$Insert WO_LOG_EQUATES
$Insert NOTIFICATION_EQU
$Insert RDS_MAKEUP_EQU
$Insert DICT_EQUATES
$Insert REACT_RUN_EQUATES
$Insert ORDER_EQU
$Insert ORDER_DET_EQU
$Insert RDS_EQU
$Insert PROD_SPEC_EQUATES
$Insert PRS_STAGE_EQUATES
$Insert QUOTE_SPEC_EQU
$Insert SAP_LOG_EQUATES
$Insert CUST_EPI_PART_EQUATES
$Insert EPI_PART_EQUATES
$Insert PROD_VER_EQUATES
$Insert COMPANY_EQUATES
$Insert SEMI_VEND_CODE_EQUATES
$Insert WO_MAT_QA_EQUATES
$Insert QA_MET_EQUATES ;* Used for GetQAMet return data structure
$Insert LOGICAL
$Insert WO_MAT_WFR_EQUATES
$Insert RUN_STAGE_EQUATES
$INSERT MSG_EQUATES
$INSERT WO_MAT_EQUATES
$INSERT WM_OUT_EQUATES
$INSERT WM_IN_EQUATES
$INSERT WO_STEP_EQU
$INSERT WO_LOG_EQUATES
$INSERT NOTIFICATION_EQU
$INSERT RDS_MAKEUP_EQU
$INSERT DICT_EQUATES
$INSERT REACT_RUN_EQUATES
$INSERT ORDER_EQU
$INSERT ORDER_DET_EQU
$INSERT RDS_EQU
$INSERT PROD_SPEC_EQUATES
$INSERT PRS_STAGE_EQUATES
$INSERT QUOTE_SPEC_EQU
$INSERT SAP_LOG_EQUATES
$INSERT CUST_EPI_PART_EQUATES
$INSERT EPI_PART_EQUATES
$INSERT PROD_VER_EQUATES
$INSERT COMPANY_EQUATES
$INSERT SEMI_VEND_CODE_EQUATES
$INSERT WO_MAT_QA_EQUATES
$INSERT QA_MET_EQUATES ;* Used for GetQAMet return data structure
$INSERT LOGICAL
$INSERT WO_MAT_WFR_EQUATES
$INSERT RUN_STAGE_EQUATES
Equ TARGET_ACTIVELIST$ TO 5
EQU TARGET_ACTIVELIST$ TO 5
EQU CRLF$ TO \0D0A\
EQU TAB$ TO \09\
EQU Comma$ TO ','
Equ CRLF$ TO \0D0A\
Equ TAB$ TO \09\
Equ Comma$ TO ','
errCode = ''
@ -129,19 +128,6 @@ IF ErrorMsg NE '' THEN
RETURN ''
END
/*
TraceOn = XLATE('PROGRAM_TRACE',@STATION:'*FLAG','','X')
IF TraceOn THEN
OPEN 'PROGRAM_TRACE' TO PTFile THEN
READ TraceLog FROM PTFile,@STATION:'*LOG' ELSE TraceLog = ''
LogParms = Parms
CONVERT @RM TO '/' IN LogParms
TraceLog := @FM:"obj_WO_Mat('":Method:"',":LogParms
WRITE TraceLog ON PTFile,@STATION:'*LOG' THEN NULL
END
END
*/
Result = ''
BEGIN CASE
@ -226,6 +212,7 @@ END
RETURN Result
* * * * * * *
GetWfrKeys:
* * * * * * *
@ -248,6 +235,7 @@ Result = CurrLocs
RETURN
* * * * * * *
Create:
* * * * * * *
@ -419,13 +407,9 @@ CreateWMO:
WONo = Parms[1,@RM]
CassNo = Parms[COL2()+1,@RM]
IF WONo = '' THEN ErrorMsg = 'Null parameter "WONo" passed to routine. (':Method:')'
IF CassNo = '' THEN ErrorMsg = 'Null parameter "CassNo" passed to routine. (':Method:')'
IF ErrorMsg NE '' THEN RETURN
WORec = XLATE('WO_LOG',WONo,'','X')
@ -490,6 +474,7 @@ obj_Tables('WriteRec',OtParms)
RETURN
* * * * * * *
Delete:
* * * * * * *
@ -583,6 +568,7 @@ END
RETURN
* * * * * * *
LockSet:
* * * * * * *
@ -643,11 +629,11 @@ NEXT I
RETURN
* * * * * * *
CurrStatus:
* * * * * * *
* If @User4 EQ 'DANIEL_ST' then SRP_Stopwatch('Reset')
* If @User4 EQ 'DANIEL_ST' then SRP_Stopwatch('Start', 'Begin CurrStatus')
IF NOT(ASSIGNED(WOMatKey)) THEN WOMatKey = Parms[1,@RM]
IF NOT(ASSIGNED(WOMatRec)) THEN WOMatRec = Parms[COL2()+1,@RM]
@ -655,8 +641,6 @@ IF WOMatKey = '' THEN RETURN ;* This is used in the dictionary -> don't throw
WONo = WOMatKey[1,'*']
IF WOMatRec = '' THEN WOMatRec = XLATE('WO_MAT',WOMatKey,'','X')
IF WOMatRec<WO_MAT_VOID$> THEN
@ -711,7 +695,6 @@ END ELSE
WMIStatus = ''
END
IF WMOKey NE '' THEN
WMOStatus = WOMatRec<WO_MAT_WMO_CURR_STATUS$>
IF WMOStatus = 'COMP' AND NOT(InCleanRoom) THEN
@ -913,6 +896,7 @@ IF Result = 'RTS' AND WOMatRec<WO_MAT_SHIP_HOLD$> = 1 THEN Result = 'SHOLD'
RETURN
* * * * * * *
OutofPTO:
* * * * * * *
@ -1172,58 +1156,9 @@ BEGIN CASE
If LastEntryAction EQ InvAction AND LastEntryLocCd = LocCd then
Done = True$
end
* Begin Case
* Case InvAction EQ '1QA'
*
* WOMatRecVerify = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
* LastEntryIndex = DCount(WOMatRecVerify<WO_MAT_INV_WH$>, @VM)
* LastEntryAction = WOMatRecVerify<WO_MAT_INV_ACTION$, LastEntryIndex>
* If LastEntryAction EQ '1QA' then Done = True$
* LogData = ''
* LogData<1> = WOMatRecVerify<WO_MAT_INV_DTM$, LastEntryIndex>
* LogData<2> = WONo
* LogData<3> = CassNo
* LogData<4> = WOMatRecVerify<WO_MAT_INV_USER$, LastEntryIndex>
* LogData<5> = LastEntryIndex
* LogData<6> = WOMatRecVerify<WO_MAT_INV_TAG$, LastEntryIndex>
* LogData<7> = WOMatRecVerify<WO_MAT_INV_WH$, LastEntryIndex>
* LogData<8> = WOMatRecVerify<WO_MAT_INV_LOCATION$, LastEntryIndex>
* LogData<9> = LastEntryAction
* LogData<10> = WOMatRecVerify<WO_MAT_INV_TOOL_ID$, LastEntryIndex>
* LogData<11> = WOMatRecVerify<WO_MAT_INV_SCAN_ENTRY$, LastEntryIndex>
* LogData<12> = NumAttempts
* Logging_Services('AppendLog', WOMatObjLog3, LogData, @RM, @FM)
*
* Case InvAction EQ 'PLACE' and LocCd EQ 'PTI'
*
* WOMatRecVerify = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
* LastEntryIndex = DCount(WOMatRecVerify<WO_MAT_INV_WH$>, @VM)
* LastEntryAction = WOMatRecVerify<WO_MAT_INV_ACTION$, LastEntryIndex>
* LastEntryLocCd = WOMatRecVerify<WO_MAT_INV_LOCATION$, LastEntryIndex>
* If ( (LastEntryAction EQ 'PLACE') and (LastEntryLocCd EQ 'PTI') ) then Done = True$
* LogData = ''
* LogData<1> = WOMatRecVerify<WO_MAT_INV_DTM$, LastEntryIndex>
* LogData<2> = WONo
* LogData<3> = CassNo
* LogData<4> = WOMatRecVerify<WO_MAT_INV_USER$, LastEntryIndex>
* LogData<5> = LastEntryIndex
* LogData<6> = WOMatRecVerify<WO_MAT_INV_TAG$, LastEntryIndex>
* LogData<7> = WOMatRecVerify<WO_MAT_INV_WH$, LastEntryIndex>
* LogData<8> = WOMatRecVerify<WO_MAT_INV_LOCATION$, LastEntryIndex>
* LogData<9> = LastEntryAction
* LogData<10> = WOMatRecVerify<WO_MAT_INV_TOOL_ID$, LastEntryIndex>
* LogData<11> = WOMatRecVerify<WO_MAT_INV_SCAN_ENTRY$, LastEntryIndex>
* LogData<12> = NumAttempts
* Logging_Services('AppendLog', WOMatObjLog4, LogData, @RM, @FM)
*
* Case Otherwise$
* Done = True$
*
* End Case
Until ( (Done EQ True$) or (NumAttempts EQ 10) )
Repeat
LogData = ''
LogData<1> = WOMatRecVerify<WO_MAT_INV_DTM$, LastEntryIndex>
LogData<2> = WONo
@ -1271,6 +1206,7 @@ END CASE
RETURN
* * * * * * *
InvDelta:
* * * * * * *
@ -1879,7 +1815,6 @@ ChangeFlag:
END
END
WOMatRec<FieldNo> = Value ;* Set Flag field here
WMTableParms = FieldStore(WMTableParms,@RM,4,0,WOMatRec) ;* Put record in 4th field of OtParms
@ -1942,12 +1877,14 @@ ChangeFlag:
RETURN
* * * * * * *
AddNCR:
* * * * * * *
RETURN
* * * * * * *
RemNCR:
* * * * * * *
@ -2104,6 +2041,7 @@ SignNCR:
RETURN
* * * * * * *
AddMakeupWafers:
* * * * * * *
@ -2251,7 +2189,6 @@ SubMakeupWafers:
WOMatRec<WO_MAT_SLOT_REP_BY$,MadeupSlot> = '' ;* Added 10/06/2010 JCH *
WOMatRec<WO_MAT_MU_WAFER_THK_RESULT$,MadeupSlot> = '' ;* Added 03/14/2017 FDR *
NEXT I
otParms = FIELDSTORE(otParms,@RM,4,0,WOMatRec)
@ -2414,6 +2351,7 @@ RemMakeupWafers:
RETURN
* * * * * * *
RepMakeupWafers:
* * * * * * *
@ -2602,6 +2540,7 @@ SlotWaferIDs:
RETURN
* * * * * * *
TestSlotWaferIDs:
* * * * * * *
@ -2932,11 +2871,11 @@ GetGRProps:
END
Result = GRWfrQty:@FM:ScrapQty:@FM:ProdTWQty:@FM:AvailMUWfrQty:@FM:MUCassIDs:@FM:MUCassQtys
// GAN uses GaN_Serices('GetGaNGRProps')
If ReactorType EQ 'GAN' then Result = ''
RETURN
* * * * * * *
ConvertMakeup:
* * * * * * *
@ -3417,6 +3356,7 @@ CassRDSWfrCnts:
RETURN
*********
GetFQADtm:
*********
@ -3424,6 +3364,7 @@ GetFQADtm:
rec = Signature_Services('GetSigInfo', WOMatKey, 'QA')
Result = rec<2>
RETURN
@ -3471,6 +3412,7 @@ GetSigProfile:
RETURN
* * * * * * *
CassSigProfile:
* * * * * * *
@ -3680,6 +3622,7 @@ SetSignature:
RETURN
* * * * * * *
ClearSignature:
* * * * * * *
@ -3769,6 +3712,7 @@ RETURN
* * * * * * *
TestStatus:
* * * * * * *
IF NOT(ASSIGNED(WOMatKey)) THEN WOMatKey = Parms[1,@RM]
IF NOT(ASSIGNED(WOMatRec)) THEN WOMatRec = Parms[COL2()+1,@RM]
@ -4018,10 +3962,11 @@ AddShip:
// Update work order SHIP_QTY_STATIC
WONo = Field(WOMatKey, '*', 1)
Work_Order_Services('UpdateShippedQty', WONo)
Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'UpdateShippedQty':@VM:WONo, False$)
RETURN
* * * * * * *
RemShip:
* * * * * * *
@ -4057,6 +4002,7 @@ RemShip:
RETURN
* * * * * * *
AddReship:
* * * * * * *
@ -4102,6 +4048,7 @@ AddReship:
RETURN
* * * * * *
SetPartNo:
* * * * * *
@ -4260,6 +4207,7 @@ RefreshSigProfile:
RETURN
* * * * * * *
SetWfrQty:
* * * * * * *
@ -5182,6 +5130,7 @@ GetEventLog:
RETURN
* * * * * * *
GetADERead:
* * * * * * *
@ -5616,6 +5565,3 @@ ExpCOA:
RETURN

View File

@ -39,7 +39,7 @@ Common /ServiceServices/ Unused1@, Unused2@, Unused3@, Unused4@, Unused5@, Unuse
Declare function Service_Services, Memory_Services, SRP_List, SRP_FastArray, SRP_Array, Database_Services, Datetime
Declare Function GetTickCount, SRP_Decode, RTI_CREATEGUID
Declare subroutine Service_Services, Memory_Services, SRP_List, SRP_FastArray, RList, Set_Status, Database_Services
Declare Subroutine Yield, WinYield, Sleepery
Declare Subroutine Yield, WinYield, Sleepery, Btree.Extract
GoToService else
Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
@ -212,16 +212,41 @@ Service ProcessProcedureQueue()
end service
Service PostProcedure(ProcedureName, Params)
Service PostProcedure(ProcedureName, Params, Critical=BOOLEAN)
Response = ''
If Critical EQ '' then Critical = True$
PostToQueue = True$
If (ProcedureName NE '') then
If (Params NE '') then
If Not(Critical) then
// Check if there is already a matching request in the queue before posting another one.
Query = 'PROC_NAME':@VM:ProcedureName:@FM
Query := 'PARAMS':@VM:Params:@FM
Open 'DICT.PROC_QUEUE' to hDict then
Keys = ''
Option = 'E'
Flag = ''
Btree.Extract(Query, 'PROC_QUEUE', hDict, Keys, Option, Flag)
If Flag EQ 0 then
If Keys NE '' then PostToQueue = False$
end else
Error_Services('Add', 'Error in ':Service:' service. Error calling Btree.Extract.')
end
end else
Error_Services('Add', 'Error in ':Service:' service. Error opening DICT.PROC_QUEUE.')
end
end
If PostToQueue then
RequestKeyID = RTI_CreateGUID()
RequestRow = ''
RequestRow<PROC_QUEUE.PROC_NAME$> = ProcedureName
RequestRow<PROC_QUEUE.PARAMS$> = Params
RequestRow<PROC_QUEUE.ENTRY_DTM$> = Datetime()
Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, False$)
end
end else
Error_Services('Add', 'Error in ':Service:' service. Null Params passed in.')
end
end else
Error_Services('Add', 'Error in ':Service:' service. Null ProcedureName passed in.')
end
@ -233,4 +258,3 @@ return
/// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -703,7 +703,7 @@ Service ReleaseCassettes(WONo)
end
end
Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'UpdateReleasedQty':@VM:WONo)
Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'UpdateReleasedQty':@VM:WONo, False$)
If ErrorMsg NE '' then Error_Services('Add', ErrorMsg)
Response = DCount(UnReleasedCassNos, @VM)
@ -1461,3 +1461,4 @@ ClearCursors:
return

View File

@ -817,8 +817,8 @@ WRITE_RECORD:
end
If OrigRecord<WO_MAT_WAFER_QTY$> NE Record<WO_MAT_WAFER_QTY$> then
Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'UpdateReceivedQty':@VM:WONo)
Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'UpdateReleasedQty':@VM:WONo)
Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'UpdateReceivedQty':@VM:WONo, False$)
Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'UpdateReleasedQty':@VM:WONo, False$)
end
CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKeyID)
@ -841,6 +841,7 @@ return
// ----- Internal Methods ----------------------------------------------------------------------------------------------
Initialize_System_Variables:
// Save these for restoration later
SaveDict = @DICT
SaveID = @ID
@ -874,13 +875,16 @@ Initialize_System_Variables:
end
end
@RECORD = Record
return
Restore_System_Variables:
Transfer SaveDict to @DICT
Transfer SaveID to @ID
Transfer SaveRecord to @RECORD
@FILE.ERROR = OrigFileError
return