Addressed a bug causing a possible race condition with writing the WMO Curr Status. Removed RDS and WMO comments until a better solution arrives.
This commit is contained in:
@ -62,7 +62,7 @@ Declare function Logging_Services, Environment_Services, Datetime, obj_WO_Ste
|
|||||||
Declare function SRP_Rotate_Array, SRP_DateTime, obj_WO_Log, obj_Shipment, SRP_Date
|
Declare function SRP_Rotate_Array, SRP_DateTime, obj_WO_Log, obj_Shipment, SRP_Date
|
||||||
Declare subroutine Material_Services, Memory_Services, Database_Services, SRP_Array, Btree.Extract, Logging_Services
|
Declare subroutine Material_Services, Memory_Services, Database_Services, SRP_Array, Btree.Extract, Logging_Services
|
||||||
Declare subroutine SRP_Stopwatch, Set_Status, RList, Work_Order_Services, SQL_Services, obj_WO_Mat, obj_Notes
|
Declare subroutine SRP_Stopwatch, Set_Status, RList, Work_Order_Services, SQL_Services, obj_WO_Mat, obj_Notes
|
||||||
Declare subroutine SRP_Rotate_Array, SRP_DateTime, obj_WO_Log
|
Declare subroutine SRP_Rotate_Array, SRP_DateTime, obj_WO_Log, Hold_Services
|
||||||
|
|
||||||
UseMakeupWafersTable = Database_Services('ReadDataRow', 'APP_INFO', 'USE_MAKEUP_WAFERS_TABLE')
|
UseMakeupWafersTable = Database_Services('ReadDataRow', 'APP_INFO', 'USE_MAKEUP_WAFERS_TABLE')
|
||||||
If UseMakeupWafersTable EQ '' then UseMakeupWafersTable = False$
|
If UseMakeupWafersTable EQ '' then UseMakeupWafersTable = False$
|
||||||
@ -310,7 +310,8 @@ Service ProcessAutoHold()
|
|||||||
HoldList<-1> = ReactType:TAB$:HoldEntityID
|
HoldList<-1> = ReactType:TAB$:HoldEntityID
|
||||||
OnHold = Xlate(HoldEntity, HoldEntityID, 'HOLD', 'X')
|
OnHold = Xlate(HoldEntity, HoldEntityID, 'HOLD', 'X')
|
||||||
If OnHold NE True$ then
|
If OnHold NE True$ then
|
||||||
obj_WO_Mat('ToggleHold',WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:'':@RM:'H':@RM:'SYSTEM')
|
//obj_WO_Mat('ToggleHold',WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:'':@RM:'H':@RM:'SYSTEM')
|
||||||
|
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, '', 'H', '', 'SYSTEM')
|
||||||
end
|
end
|
||||||
|
|
||||||
LogData = ''
|
LogData = ''
|
||||||
@ -1351,6 +1352,3 @@ ClearCursors:
|
|||||||
Next counter
|
Next counter
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ $insert NOTIFICATION_EQU
|
|||||||
Declare function Scan_Services, Memory_Services, Database_Services, SRP_JSON, RTI_CreateGUID, Memberof
|
Declare function Scan_Services, Memory_Services, Database_Services, SRP_JSON, RTI_CreateGUID, Memberof
|
||||||
Declare function Get_Property, RDS_Services, EpiPro_Services, DateTime, Signature_Services
|
Declare function Get_Property, RDS_Services, EpiPro_Services, DateTime, Signature_Services
|
||||||
Declare subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, Security_Services, obj_Notes
|
Declare subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, Security_Services, obj_Notes
|
||||||
Declare subroutine obj_WO_Mat_Log, obj_WO_Mat, Set_Status, SAP_Services, Rds_Services, Wm_Out_Services
|
Declare subroutine obj_WO_Mat_Log, obj_WO_Mat, Set_Status, SAP_Services, Rds_Services, Wm_Out_Services, Hold_Services
|
||||||
|
|
||||||
//TODO - flag used during cutover, delete from APP_INFO and removed commented lines reference Use2DBarcode
|
//TODO - flag used during cutover, delete from APP_INFO and removed commented lines reference Use2DBarcode
|
||||||
*Use2DBarcode = Database_Services('ReadDataRow', 'APP_INFO', 'USE_PACKAGING_2D')
|
*Use2DBarcode = Database_Services('ReadDataRow', 'APP_INFO', 'USE_PACKAGING_2D')
|
||||||
@ -148,14 +148,14 @@ Service CompletePackaging(CassetteID, OperatorID, BaggerIdentifier)
|
|||||||
// Add CassComp transaction to SAP queue
|
// Add CassComp transaction to SAP queue
|
||||||
SAPBatchNo = Xlate('WO_MAT', WOMatKey, 'SAP_BATCH_NO', 'X')
|
SAPBatchNo = Xlate('WO_MAT', WOMatKey, 'SAP_BATCH_NO', 'X')
|
||||||
If SAPBatchNo EQ '' then SAP_Services('AddCassCompTransaction', WOMatKey)
|
If SAPBatchNo EQ '' then SAP_Services('AddCassCompTransaction', WOMatKey)
|
||||||
Begin Case
|
* Begin Case
|
||||||
Case CommentEntity = 'RDS'
|
* Case CommentEntity = 'RDS'
|
||||||
CommentText = 'Packaging completed for RDS ' :CassetteID: ' by user ' : OperatorID
|
* CommentText = 'Packaging completed for RDS ' :CassetteID: ' by user ' : OperatorID
|
||||||
Rds_Services('AddComment', CassetteID, CommentText, OperatorID)
|
* Rds_Services('AddComment', CassetteID, CommentText, OperatorID)
|
||||||
Case CommentEntity = 'WM_OUT'
|
* Case CommentEntity = 'WM_OUT'
|
||||||
CommentText = 'Packaging completed for WM_OUT ' :CassetteID: ' by user ' : OperatorID
|
* CommentText = 'Packaging completed for WM_OUT ' :CassetteID: ' by user ' : OperatorID
|
||||||
Wm_Out_Services('AddComment', CassetteID, CommentText, OperatorID)
|
* Wm_Out_Services('AddComment', CassetteID, CommentText, OperatorID)
|
||||||
End Case
|
* End Case
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -255,7 +255,8 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
CtrlEntID = False$ ;* Control checked/unchecked
|
CtrlEntID = False$ ;* Control checked/unchecked
|
||||||
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
||||||
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
||||||
obj_WO_Mat('ToggleHold', Parms)
|
//obj_WO_Mat('ToggleHold', Parms)
|
||||||
|
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
|
||||||
|
|
||||||
// Write fail packaging record in material log for first cassette ID
|
// Write fail packaging record in material log for first cassette ID
|
||||||
LogDate = OCONV( Date(), 'D2/' )
|
LogDate = OCONV( Date(), 'D2/' )
|
||||||
@ -315,7 +316,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
IF Get_Status(errCode) THEN Error_Services('Add', 'Error code ':errCode:' in ':Service:' service.')
|
IF Get_Status(errCode) THEN Error_Services('Add', 'Error code ':errCode:' in ':Service:' service.')
|
||||||
|
|
||||||
// Add error to error stack
|
// Add error to error stack
|
||||||
ErrorMessage = 'Lots do not match – operation cannot continue. '|
|
ErrorMessage = 'Lots do not match - operation cannot continue. '|
|
||||||
: 'Lot has been put on hold - place lot on hold shelf and notify Supervisor, Lead, or Engineering'
|
: 'Lot has been put on hold - place lot on hold shelf and notify Supervisor, Lead, or Engineering'
|
||||||
Error_Services('Add', ErrorMessage)
|
Error_Services('Add', ErrorMessage)
|
||||||
end
|
end
|
||||||
@ -348,7 +349,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
// Valid Poly scan - has to be exact match
|
// Valid Poly scan - has to be exact match
|
||||||
Response = ScanData[2, 999]
|
Response = ScanData[2, 999]
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Location does not equal POLY – operation cannot continue.')
|
Error_Services('Add', 'Location does not equal POLY - operation cannot continue.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Case ScanType EQ 'TRILAM'
|
Case ScanType EQ 'TRILAM'
|
||||||
@ -356,7 +357,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
// Valid Trilam scan - has to be exact match
|
// Valid Trilam scan - has to be exact match
|
||||||
Response = ScanData[2, 999]
|
Response = ScanData[2, 999]
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Location does not equal TRILAM – operation cannot continue.')
|
Error_Services('Add', 'Location does not equal TRILAM - operation cannot continue.')
|
||||||
end
|
end
|
||||||
|
|
||||||
Case ScanType EQ 'CASSETTE_1'
|
Case ScanType EQ 'CASSETTE_1'
|
||||||
@ -407,7 +408,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
HoldStatus = Xlate('WO_MAT', CassetteID, 'HOLD', 'X')
|
HoldStatus = Xlate('WO_MAT', CassetteID, 'HOLD', 'X')
|
||||||
FQAComp = Signature_Services('FinalSigComp', CassetteID)
|
FQAComp = Signature_Services('FinalSigComp', CassetteID)
|
||||||
If (HoldStatus EQ True$) then
|
If (HoldStatus EQ True$) then
|
||||||
ErrorMessage = 'Lot is currently on hold – operation cannot continue. ' |
|
ErrorMessage = 'Lot is currently on hold - operation cannot continue. ' |
|
||||||
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
|
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
|
||||||
Error_Services('Add', ErrorMessage)
|
Error_Services('Add', ErrorMessage)
|
||||||
end else If FQAComp NE True$ then
|
end else If FQAComp NE True$ then
|
||||||
@ -430,7 +431,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
FQAComp = Epipro_Services('GetFinalQAStatus', CassetteID)
|
FQAComp = Epipro_Services('GetFinalQAStatus', CassetteID)
|
||||||
LblCheckComp = Signature_Services('CheckQALabelStatus', WOMatKey)
|
LblCheckComp = Signature_Services('CheckQALabelStatus', WOMatKey)
|
||||||
If (HoldStatus EQ True$) then
|
If (HoldStatus EQ True$) then
|
||||||
ErrorMessage = 'Lot is currently on hold – operation cannot continue. ' |
|
ErrorMessage = 'Lot is currently on hold - operation cannot continue. ' |
|
||||||
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
|
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
|
||||||
Error_Services('Add', ErrorMessage)
|
Error_Services('Add', ErrorMessage)
|
||||||
end else If FQAComp NE True$ then
|
end else If FQAComp NE True$ then
|
||||||
@ -454,7 +455,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
WONo = Field(WOMatKey, '*', 1)
|
WONo = Field(WOMatKey, '*', 1)
|
||||||
CassNo = Field(WOMatKey, '*', 2)
|
CassNo = Field(WOMatKey, '*', 2)
|
||||||
If (HoldStatus EQ True$) then
|
If (HoldStatus EQ True$) then
|
||||||
ErrorMessage = 'Lot is currently on hold – operation cannot continue.' |
|
ErrorMessage = 'Lot is currently on hold - operation cannot continue.' |
|
||||||
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
|
: 'Place lot on hold shelf and notify Supervisor, Lead, or Engineering.'
|
||||||
Error_Services('Add', ErrorMessage)
|
Error_Services('Add', ErrorMessage)
|
||||||
end else If FQAComp NE True$ then
|
end else If FQAComp NE True$ then
|
||||||
@ -588,7 +589,8 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
CtrlEntID = False$ ;* Control checked/unchecked
|
CtrlEntID = False$ ;* Control checked/unchecked
|
||||||
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
||||||
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
||||||
obj_WO_Mat('ToggleHold', Parms)
|
//obj_WO_Mat('ToggleHold', Parms)
|
||||||
|
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
|
||||||
|
|
||||||
// Check if second cassette ID is a valid RDS or WM_OUT key
|
// Check if second cassette ID is a valid RDS or WM_OUT key
|
||||||
Convert '.' to '*' in SecondCassID
|
Convert '.' to '*' in SecondCassID
|
||||||
@ -646,7 +648,8 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
CtrlEntID = False$ ;* Control checked/unchecked
|
CtrlEntID = False$ ;* Control checked/unchecked
|
||||||
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
||||||
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
||||||
obj_WO_Mat('ToggleHold', Parms)
|
//obj_WO_Mat('ToggleHold', Parms)
|
||||||
|
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
|
||||||
end
|
end
|
||||||
|
|
||||||
// Send scan mismatch notification
|
// Send scan mismatch notification
|
||||||
@ -690,7 +693,3 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
|||||||
end
|
end
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -282,12 +282,23 @@ Service GetWMOData(WorkOrderNo, Columns, ShowGasGauge, WMOOverrideList)
|
|||||||
@RECORD = Database_Services('ReadDataRow', 'WM_OUT', @ID)
|
@RECORD = Database_Services('ReadDataRow', 'WM_OUT', @ID)
|
||||||
If Error_Services('NoError') then
|
If Error_Services('NoError') then
|
||||||
For each Column in Columns using @VM setting vPos
|
For each Column in Columns using @VM setting vPos
|
||||||
Val = Calculate(Column)
|
Begin Case
|
||||||
Conv = Xlate('DICT.WM_OUT', Column, DICT_CONV$, 'X')
|
Case Column EQ 'HOLD'
|
||||||
If Conv NE '' then
|
HoldStatus = Calculate(Column)
|
||||||
Val = OConv(Val, Conv)
|
If HoldStatus EQ True$ then
|
||||||
end
|
HoldStatus = 'On Hold'
|
||||||
WMOList<fPos, vPos> = Val
|
end else
|
||||||
|
HoldStatus = 'Off Hold'
|
||||||
|
end
|
||||||
|
WMOList<fPos, vPos> = HoldStatus
|
||||||
|
Case Otherwise$
|
||||||
|
Val = Calculate(Column)
|
||||||
|
Conv = Xlate('DICT.WM_OUT', Column, DICT_CONV$, 'X')
|
||||||
|
If Conv NE '' then
|
||||||
|
Val = OConv(Val, Conv)
|
||||||
|
end
|
||||||
|
WMOList<fPos, vPos> = Val
|
||||||
|
End Case
|
||||||
Next Column
|
Next Column
|
||||||
end else
|
end else
|
||||||
Error_Services('Add', 'Error reading WM_OUT Record ' : @ID : ' in the ' : Service : ' service.')
|
Error_Services('Add', 'Error reading WM_OUT Record ' : @ID : ' in the ' : Service : ' service.')
|
||||||
@ -347,6 +358,3 @@ Service GetWaferMap(WMOKey)
|
|||||||
end
|
end
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user