Migrate BaggerIdentification project.
This commit is contained in:
committed by
Mitchem Dakota (IT FI MES External)
parent
dc8665d553
commit
d7215cfa9a
@ -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 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_Rotate_Array, SRP_DateTime, obj_WO_Log, Hold_Services
|
||||
Declare subroutine SRP_Rotate_Array, SRP_DateTime, obj_WO_Log
|
||||
|
||||
UseMakeupWafersTable = Database_Services('ReadDataRow', 'APP_INFO', 'USE_MAKEUP_WAFERS_TABLE')
|
||||
If UseMakeupWafersTable EQ '' then UseMakeupWafersTable = False$
|
||||
@ -149,22 +149,33 @@ Service GetLotHistory(IDType=IDType, LotID, StartDate, EndDate)
|
||||
|
||||
Case IndexC(ThisComment, 'Material Placed on Hold', 1)
|
||||
CommentArray<I,3> = 'HOLD_ON'
|
||||
|
||||
Case IndexC(ThisComment, 'Packaging completed for', 1)
|
||||
CommentArray<I,3> = 'PACK'
|
||||
End Case
|
||||
Next I
|
||||
|
||||
// WO_MAT Actions
|
||||
INVDTMs = WOMatRow<WO_MAT_INV_DTM$>
|
||||
INVUsers = WOMatRow<WO_MAT_INV_USER$>
|
||||
INVActions = WOMatRow<WO_MAT_INV_ACTION$>
|
||||
ActionList = INVDTMs :@FM: INVUsers :@FM: INVActions :@FM:@FM
|
||||
ActionArray = SRP_Rotate_Array(ActionList)
|
||||
INVDTMs = WOMatRow<WO_MAT_INV_DTM$>
|
||||
INVUsers = WOMatRow<WO_MAT_INV_USER$>
|
||||
INVActions = WOMatRow<WO_MAT_INV_ACTION$>
|
||||
ActionList = INVDTMs :@FM: INVUsers :@FM: INVActions :@FM:@FM
|
||||
ActionArray = SRP_Rotate_Array(ActionList)
|
||||
// Remove Hold Inventory actions from array because they are populated from RDS commments.
|
||||
HoldOffCount = Count(INVActions, 'HOLD_OFF')
|
||||
HoldOnCount = Count(INVActions, 'HOLD_ON')
|
||||
PackCount = Count(INVActions, 'PACK')
|
||||
Locate 'HOLD_OFF' in InvActions Using @VM Setting POS then
|
||||
ActionArray = Delete(ActionArray, POS, 0, 0)
|
||||
end
|
||||
Locate 'HOLD_ON' in InvActions Using @VM Setting POS then
|
||||
ActionArray = Delete(ActionArray, POS, 0, 0)
|
||||
end
|
||||
For K = 1 to PackCount
|
||||
Locate 'PACK' in InvActions Using @VM Setting POS then
|
||||
ActionArray = Delete(ActionArray, POS, 0, 0)
|
||||
end
|
||||
Next K
|
||||
|
||||
end else
|
||||
// RDS is default IDType
|
||||
@ -189,22 +200,35 @@ Service GetLotHistory(IDType=IDType, LotID, StartDate, EndDate)
|
||||
|
||||
Case IndexC(ThisComment, 'Material Placed on Hold', 1)
|
||||
CommentArray<I,3> = 'HOLD_ON'
|
||||
|
||||
Case IndexC(ThisComment, 'Packaging completed for', 1)
|
||||
CommentArray<I,3> = 'PACK'
|
||||
End Case
|
||||
Next I
|
||||
|
||||
// WO_MAT Actions
|
||||
INVDTMs = WOMatRow<WO_MAT_INV_DTM$>
|
||||
INVUsers = WOMatRow<WO_MAT_INV_USER$>
|
||||
INVActions = WOMatRow<WO_MAT_INV_ACTION$>
|
||||
ActionList = INVDTMs :@FM: INVUsers :@FM: INVActions :@FM:@FM
|
||||
ActionArray = SRP_Rotate_Array(ActionList)
|
||||
INVDTMs = WOMatRow<WO_MAT_INV_DTM$>
|
||||
INVUsers = WOMatRow<WO_MAT_INV_USER$>
|
||||
INVActions = WOMatRow<WO_MAT_INV_ACTION$>
|
||||
ActionList = INVDTMs :@FM: INVUsers :@FM: INVActions :@FM:@FM
|
||||
ActionArray = SRP_Rotate_Array(ActionList)
|
||||
HoldOffCount = Count(INVActions, 'HOLD_OFF')
|
||||
HoldOnCount = Count(INVActions, 'HOLD_ON')
|
||||
PackCount = Count(INVActions, 'PACK')
|
||||
|
||||
// Remove Hold Inventory actions from array because they are populated from RDS commments.
|
||||
|
||||
Locate 'HOLD_OFF' in InvActions Using @VM Setting POS then
|
||||
ActionArray = Delete(ActionArray, POS, 0, 0)
|
||||
end
|
||||
Locate 'HOLD_ON' in InvActions Using @VM Setting POS then
|
||||
ActionArray = Delete(ActionArray, POS, 0, 0)
|
||||
end
|
||||
For K = 1 to PackCount
|
||||
Locate 'PACK' in InvActions Using @VM Setting POS then
|
||||
ActionArray = Delete(ActionArray, POS, 0, 0)
|
||||
end
|
||||
Next K
|
||||
end
|
||||
// Add Comments if present
|
||||
If CommentArray NE '' then
|
||||
@ -286,8 +310,7 @@ Service ProcessAutoHold()
|
||||
HoldList<-1> = ReactType:TAB$:HoldEntityID
|
||||
OnHold = Xlate(HoldEntity, HoldEntityID, 'HOLD', 'X')
|
||||
If OnHold NE True$ then
|
||||
//obj_WO_Mat('ToggleHold',WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:'':@RM:'H':@RM:'SYSTEM')
|
||||
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, '', 'H', '', 'SYSTEM')
|
||||
obj_WO_Mat('ToggleHold',WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:'':@RM:'H':@RM:'SYSTEM')
|
||||
end
|
||||
|
||||
LogData = ''
|
||||
|
@ -217,6 +217,8 @@ Event EDL_PASSWORD_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
ScanData = Get_Property(CtrlEntID, 'TEXT')
|
||||
If ScanData NE '' then
|
||||
Username = Get_Property(@Window:'.EDL_USER_ID_SCAN', 'TEXT')
|
||||
PolyText = Get_Property(@Window:'.EDL_POLY_SCAN', 'TEXT')
|
||||
BaggerID = PolyText[5,1]
|
||||
ScanData = Packaging_Services('ProcessScanData', ScanData, 'PASSWORD', Username)
|
||||
If Error_Services('NoError') then
|
||||
Set_Property(CtrlEntID, 'TEXT', ScanData)
|
||||
@ -225,7 +227,7 @@ Event EDL_PASSWORD_SCAN.LOSTFOCUS(Flag, FocusID)
|
||||
//replace period with asterisk for GaN cassettes
|
||||
Convert '.' to '*' in CassetteID
|
||||
OperatorID = Get_Property(@Window:'.EDL_USER_ID_SCAN', 'TEXT')
|
||||
Packaging_Services('CompletePackaging', CassetteID, OperatorID)
|
||||
Packaging_Services('CompletePackaging', CassetteID, OperatorID, BaggerID)
|
||||
If Error_Services('NoError') then
|
||||
SuccessMessage = 'Bagging process complete!'
|
||||
MsgStruct = ""
|
||||
|
@ -36,7 +36,7 @@ $insert NOTIFICATION_EQU
|
||||
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 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, Hold_Services
|
||||
Declare subroutine obj_WO_Mat_Log, obj_WO_Mat, Set_Status, SAP_Services, Rds_Services, Wm_Out_Services
|
||||
|
||||
//TODO - flag used during cutover, delete from APP_INFO and removed commented lines reference Use2DBarcode
|
||||
*Use2DBarcode = Database_Services('ReadDataRow', 'APP_INFO', 'USE_PACKAGING_2D')
|
||||
@ -56,25 +56,28 @@ Options SCAN_TYPES = 'EMPLOYEE', 'CASSETTE_1', 'CASSETTE_2', 'POLY', 'TRI
|
||||
// SERVICES
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
Service CompletePackaging(CassetteID, OperatorID)
|
||||
|
||||
Service CompletePackaging(CassetteID, OperatorID, BaggerIdentifier)
|
||||
|
||||
* 1. Write success packaging record in Material Log
|
||||
* 2. Write success PTO record in Material Log
|
||||
* 3. Send SAP Cassette Complete transaction (up to now, this has been done at FQA)
|
||||
* 4. Create comment in CassetteID record
|
||||
|
||||
RDSKey = CassetteID
|
||||
WMOKey = CassetteID
|
||||
RDSKey = CassetteID
|
||||
WMOKey = CassetteID
|
||||
Convert '.' to '*' in WMOKey
|
||||
|
||||
CommentEntity = ''
|
||||
Begin Case
|
||||
Case RowExists('RDS', RDSKey) EQ True$
|
||||
// RDS number
|
||||
WOMatKey = Xlate('RDS', RDSKey, 'WO', 'X')
|
||||
WOMatKey = WoMatKey:'*':Xlate('RDS', RDSKey, 'CASS_NO', 'X')
|
||||
WOMatKey = Xlate('RDS', RDSKey, 'WO', 'X')
|
||||
WOMatKey = WoMatKey:'*':Xlate('RDS', RDSKey, 'CASS_NO', 'X')
|
||||
CommentEntity = 'RDS'
|
||||
|
||||
Case RowExists('WM_OUT', WMOKey) EQ True$
|
||||
// WM_OUT key
|
||||
WOMatKey = Xlate('WM_OUT', WMOKey, 'WO_MAT_KEY', 'X')
|
||||
WOMatKey = Xlate('WM_OUT', WMOKey, 'WO_MAT_KEY', 'X')
|
||||
CommentEntity = 'WM_OUT'
|
||||
|
||||
Case RowExists('WO_MAT', CassetteID) EQ True$
|
||||
// WO_MAT key
|
||||
@ -88,6 +91,15 @@ Service CompletePackaging(CassetteID, OperatorID)
|
||||
|
||||
If Error_Services('NoError') then
|
||||
|
||||
Begin Case
|
||||
Case BaggerIdentifier EQ 'L'
|
||||
BaggerIdentifier = 'LeftBagger'
|
||||
Case BaggerIdentifier EQ 'R'
|
||||
BaggerIdentifier = 'RightBagger'
|
||||
Case Otherwise$
|
||||
BaggerIdentifier = ''
|
||||
End Case
|
||||
|
||||
WONo = Field(WOMatKey, '*', 1, 1)
|
||||
CassNo = Field(WOMatKey, '*', 2, 1)
|
||||
|
||||
@ -105,7 +117,7 @@ Service CompletePackaging(CassetteID, OperatorID)
|
||||
LocCd = 'PACK'
|
||||
UserID = OperatorID
|
||||
Tag = 'Packaging complete'
|
||||
ToolID = ''
|
||||
ToolID = BaggerIdentifier
|
||||
|
||||
WOMLParms = LogFile:@RM
|
||||
WOMLParms := LogDTM:@RM
|
||||
@ -136,6 +148,14 @@ Service CompletePackaging(CassetteID, OperatorID)
|
||||
// Add CassComp transaction to SAP queue
|
||||
SAPBatchNo = Xlate('WO_MAT', WOMatKey, 'SAP_BATCH_NO', 'X')
|
||||
If SAPBatchNo EQ '' then SAP_Services('AddCassCompTransaction', WOMatKey)
|
||||
Begin Case
|
||||
Case CommentEntity = 'RDS'
|
||||
CommentText = 'Packaging completed for RDS ' :CassetteID: ' by user ' : OperatorID
|
||||
Rds_Services('AddComment', CassetteID, CommentText, OperatorID)
|
||||
Case CommentEntity = 'WM_OUT'
|
||||
CommentText = 'Packaging completed for WM_OUT ' :CassetteID: ' by user ' : OperatorID
|
||||
Wm_Out_Services('AddComment', CassetteID, CommentText, OperatorID)
|
||||
End Case
|
||||
end
|
||||
end
|
||||
|
||||
@ -235,8 +255,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
CtrlEntID = False$ ;* Control checked/unchecked
|
||||
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
||||
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
||||
//obj_WO_Mat('ToggleHold', Parms)
|
||||
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
|
||||
obj_WO_Mat('ToggleHold', Parms)
|
||||
|
||||
// Write fail packaging record in material log for first cassette ID
|
||||
LogDate = OCONV( Date(), 'D2/' )
|
||||
@ -296,7 +315,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
IF Get_Status(errCode) THEN Error_Services('Add', 'Error code ':errCode:' in ':Service:' service.')
|
||||
|
||||
// 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'
|
||||
Error_Services('Add', ErrorMessage)
|
||||
end
|
||||
@ -325,11 +344,11 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
end
|
||||
|
||||
Case ScanType EQ 'POLY'
|
||||
If ScanData[1, 5] EQ '1POLY' AND LEN(ScanData) EQ 5 then
|
||||
If ScanData[1, 5] EQ '1POLY' AND LEN(ScanData) EQ 6 And (ScanData[6,1] EQ 'L' OR ScanData[6,1] EQ 'R') then
|
||||
// Valid Poly scan - has to be exact match
|
||||
Response = ScanData[2, 999]
|
||||
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
|
||||
|
||||
Case ScanType EQ 'TRILAM'
|
||||
@ -337,7 +356,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
// Valid Trilam scan - has to be exact match
|
||||
Response = ScanData[2, 999]
|
||||
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
|
||||
|
||||
Case ScanType EQ 'CASSETTE_1'
|
||||
@ -388,7 +407,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
HoldStatus = Xlate('WO_MAT', CassetteID, 'HOLD', 'X')
|
||||
FQAComp = Signature_Services('FinalSigComp', CassetteID)
|
||||
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.'
|
||||
Error_Services('Add', ErrorMessage)
|
||||
end else If FQAComp NE True$ then
|
||||
@ -411,7 +430,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
FQAComp = Epipro_Services('GetFinalQAStatus', CassetteID)
|
||||
LblCheckComp = Signature_Services('CheckQALabelStatus', WOMatKey)
|
||||
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.'
|
||||
Error_Services('Add', ErrorMessage)
|
||||
end else If FQAComp NE True$ then
|
||||
@ -435,7 +454,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
WONo = Field(WOMatKey, '*', 1)
|
||||
CassNo = Field(WOMatKey, '*', 2)
|
||||
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.'
|
||||
Error_Services('Add', ErrorMessage)
|
||||
end else If FQAComp NE True$ then
|
||||
@ -569,8 +588,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
CtrlEntID = False$ ;* Control checked/unchecked
|
||||
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
||||
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
||||
* obj_WO_Mat('ToggleHold', Parms)
|
||||
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
|
||||
obj_WO_Mat('ToggleHold', Parms)
|
||||
|
||||
// Check if second cassette ID is a valid RDS or WM_OUT key
|
||||
Convert '.' to '*' in SecondCassID
|
||||
@ -628,8 +646,7 @@ Service ProcessScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3)
|
||||
CtrlEntID = False$ ;* Control checked/unchecked
|
||||
OriginFlag = 'P' ;* Flag to indicate a hold initiated from the packagaing form
|
||||
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
|
||||
//obj_WO_Mat('ToggleHold', Parms)
|
||||
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
|
||||
obj_WO_Mat('ToggleHold', Parms)
|
||||
end
|
||||
|
||||
// Send scan mismatch notification
|
||||
|
@ -100,10 +100,15 @@ End Service
|
||||
// Adds an EPP_COMMENT_NOTE, EPP_COMMENT_USER, and EPP_COMMENT_DATE
|
||||
// to a WM_OUT record.
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
Service AddComment(WMOutNo, Comment)
|
||||
Service AddComment(WMOutNo, Comment, UsernameOpt)
|
||||
|
||||
WMOutRow = Database_Services('ReadDataRow', 'WM_OUT', WMOutNo)
|
||||
UserName = @USER4
|
||||
If Assigned(UsernameOpt) then
|
||||
If UsernameOpt NE '' then
|
||||
Username = UsernameOpt
|
||||
end
|
||||
end
|
||||
CommentTime = Datetime()
|
||||
|
||||
OldDates = WMOutRow<WM_OUT_EPP_COMMENT_DATE$>
|
||||
@ -277,23 +282,12 @@ Service GetWMOData(WorkOrderNo, Columns, ShowGasGauge, WMOOverrideList)
|
||||
@RECORD = Database_Services('ReadDataRow', 'WM_OUT', @ID)
|
||||
If Error_Services('NoError') then
|
||||
For each Column in Columns using @VM setting vPos
|
||||
Begin Case
|
||||
Case Column EQ 'HOLD'
|
||||
HoldStatus = Calculate(Column)
|
||||
If HoldStatus EQ True$ then
|
||||
HoldStatus = 'On Hold'
|
||||
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
|
||||
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
|
||||
Next Column
|
||||
end else
|
||||
Error_Services('Add', 'Error reading WM_OUT Record ' : @ID : ' in the ' : Service : ' service.')
|
||||
@ -355,3 +349,4 @@ Service GetWaferMap(WMOKey)
|
||||
end service
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user