717 lines
23 KiB
Plaintext
717 lines
23 KiB
Plaintext
COMPILE FUNCTION Dialog_QA_Label_Check(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
|
|
#pragma precomp SRP_PreCompiler
|
|
|
|
/*
|
|
Commuter module for Dialog_QA_LabelCehck (QA Label CHeck - Barcode Scan) window
|
|
|
|
2/22/2016 John C. Henry, J.C. Henry & Co., Inc.
|
|
*/
|
|
|
|
DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, Dialog_Box, obj_WO_Mat_Log
|
|
DECLARE SUBROUTINE Btree.Extract, Send_Event, Security_Err_Msg, obj_Appwindow, End_Dialog, Post_Event
|
|
DECLARE SUBROUTINE Send_Message, Print_Cass_Ship_Label, Print_SAP_Cass_Ship_Label, obj_Notes
|
|
DECLARE FUNCTION Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box
|
|
DECLARE FUNCTION Dialog_Box, Utility, obj_WO_Mat, Signature_Services
|
|
|
|
$INSERT MSG_EQUATES
|
|
$INSERT APPCOLORS
|
|
$INSERT LSL_USERS_EQU
|
|
$INSERT SECURITY_RIGHTS_EQU
|
|
$Insert REACT_RUN_EQUATES
|
|
$Insert WM_IN_EQUATES
|
|
$Insert WM_OUT_EQUATES
|
|
$Insert WO_MAT_EQUATES
|
|
$Insert WO_LOG_EQUATES
|
|
$Insert RDS_EQUATES
|
|
$Insert NOTIFICATION_EQUATES
|
|
$Insert LOGICAL
|
|
|
|
EQU CRLF$ TO \0D0A\
|
|
|
|
EQU COL$TOP_LABEL TO 1
|
|
EQU COL$BOTTOM_LABEL TO 2
|
|
EQU COL$LOT_NO TO 3
|
|
EQU COL$IFX_LABEL TO 4
|
|
EQU COL$RESULT TO 5
|
|
EQU COL$WOLOGKEY TO 6
|
|
|
|
ErrTitle = 'Error in Dialog_QALabel_Check'
|
|
ErrorMsg = ''
|
|
|
|
Result = ''
|
|
|
|
BEGIN CASE
|
|
CASE EntID = @WINDOW
|
|
BEGIN CASE
|
|
CASE Event = 'CREATE' ; GOSUB Create
|
|
CASE Event = 'CLOSE' ; GOSUB Done
|
|
|
|
END CASE
|
|
|
|
CASE EntID = @WINDOW:'.DONE_BUTTON' AND Event = 'CLICK' ; GOSUB Done
|
|
|
|
CASE EntID = @WINDOW:'.CASS_IDS' AND Event = 'POSCHANGED' ; GOSUB CassIdPC
|
|
|
|
CASE 1
|
|
|
|
ErrorMsg = 'Unknown Parameters ':EntID:' - ':Event:' passed to commuter'
|
|
ErrMsg(ErrorMsg)
|
|
|
|
END CASE
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
ErrMsg(ErrTitle:@SVM:ErrorMsg)
|
|
END
|
|
|
|
RETURN Result
|
|
|
|
|
|
* * * * * * *
|
|
Create:
|
|
* * * * * * *
|
|
|
|
obj_Appwindow('Create',@WINDOW)
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Refresh:
|
|
* * * * * * *
|
|
|
|
WindowLabel = Get_Property(@WINDOW:'.WINDOW_LABEL','TEXT')
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * * *
|
|
Done:
|
|
* * * * * * * *
|
|
|
|
End_Dialog(@WINDOW,'')
|
|
|
|
RETURN
|
|
|
|
|
|
*********
|
|
CassIdPC:
|
|
*********
|
|
//IF @UserName = 'FRANCOIS_R' OR @UserName = 'DAN_CR' THEN debug
|
|
CtrlEntID = @WINDOW:'.CASS_IDS'
|
|
|
|
PrevSelPos = Get_Property(CtrlEntId,"PREVSELPOS")
|
|
PrevCol = PrevSelPos<1>
|
|
PrevRow = PrevSelPos<2>
|
|
|
|
CurrPos = Get_Property(CtrlEntId,"SELPOS")
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
ListData = Get_Property(CtrlEntId,'LIST')
|
|
ArrayData = Get_Property(CtrlEntId,'ARRAY')
|
|
|
|
MismatchDetected = False$ /* No mismatch */
|
|
|
|
CellValue = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", CurrCol, CurrRow))
|
|
IF (CellValue = '') THEN
|
|
|
|
ColPointer = CurrCol
|
|
LinePointer = CurrRow
|
|
ColCnt = 5
|
|
|
|
/* Find the first non-empty cell */
|
|
LOOP
|
|
Test = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", ColPointer, LinePointer))
|
|
UNTIL Test NE '' OR (LinePointer = 0 AND ColPointer = 1)
|
|
ColPointer = ColPointer - 1
|
|
IF ColPointer = 0 THEN
|
|
ColPointer = ColCnt
|
|
LinePointer = LinePointer - 1
|
|
END
|
|
REPEAT
|
|
|
|
/* Move to the next empty cell */
|
|
BEGIN CASE
|
|
CASE LinePointer = 0
|
|
* Empty Table
|
|
LinePointer = 1
|
|
ColPointer = 1
|
|
|
|
CASE ColPointer = ColCnt
|
|
LinePointer = LinePointer + 1
|
|
ColPointer = 1
|
|
|
|
CASE 1
|
|
ColPointer = ColPointer + 1
|
|
END CASE
|
|
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", True$)
|
|
Set_Property(CtrlEntId, "SELPOS", ColPointer:@FM:LinePointer)
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", False$)
|
|
END
|
|
|
|
*****************************
|
|
* Post Prompt for Top Label *
|
|
*****************************
|
|
|
|
TopLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$TOP_LABEL, PrevRow))
|
|
|
|
IF TopLabel[1,2] = '1T' THEN
|
|
TopLabel = TopLabel[3,99]
|
|
Set_Property(CtrlEntId,"CELLPOS",TopLabel,PrevSelPos)
|
|
END
|
|
|
|
IF ((TopLabel NE '') AND (PrevCol = COL$TOP_LABEL)) THEN
|
|
|
|
Set_Property(@WINDOW,'@EPIPRO_FLAG',0)
|
|
|
|
BEGIN CASE
|
|
CASE TopLabel[1,1] = 'I'
|
|
* WM_IN table
|
|
TopLabel = TopLabel[2,99]
|
|
WOMatKey = FIELD(TopLabel,'.',1):'*':FIELD(TopLabel,'.',3)
|
|
Set_Property(CtrlEntID, "CELLPOS", TopLabel, PrevSelPos)
|
|
Set_Property(@WINDOW,'@EPIPRO_FLAG',1)
|
|
|
|
CASE TopLabel[1,1] = 'O'
|
|
* EpiPro Silicon or GaN
|
|
TopLabel = TopLabel[2,99]
|
|
WONo = TopLabel[1, 'F.']
|
|
CassNo = TopLabel[-1, 'B.']
|
|
WOMatKey = WONo:'*':CassNo
|
|
Set_Property(CtrlEntID, "CELLPOS", TopLabel, PrevSelPos)
|
|
If (Count(TopLabel, '.') EQ 2) then
|
|
// EpiPro
|
|
Set_Property(@WINDOW,'@EPIPRO_FLAG',1)
|
|
end else
|
|
// GaN
|
|
Set_Property(@WINDOW,'@GAN_FLAG',1)
|
|
end
|
|
|
|
CASE INDEX(TopLabel,'.',1) AND NOT(INDEX(TopLabel,'.',2))
|
|
* This is a WO_MAT format label
|
|
WOMatKey = TopLabel
|
|
Convert '.' To '*' In WOMatKey
|
|
|
|
CASE INDEX(TopLabel,'.',2)
|
|
* EpiPRO material indeterminate direction
|
|
WOMatKey = FIELD(TopLabel,'.',1):'*':Field(TopLabel,'.',3)
|
|
Set_Property(@WINDOW,'@EPIPRO_FLAG',1)
|
|
|
|
CASE 1
|
|
ReactRunRec = XLATE('REACT_RUN', TopLabel, '', 'X')
|
|
IF ReactRunRec = '' THEN
|
|
RDSRec = XLATE('RDS',TopLabel,'','X')
|
|
TestWO = RDSRec<RDS_WO$>
|
|
CassNo = RDSRec<RDS_CASS_NO$>
|
|
END ELSE
|
|
TestWO = ReactRunRec<REACT_RUN_WO_NO$>
|
|
CassNo = ReactRunRec<REACT_RUN_CASS_NO$>
|
|
End
|
|
WOMatKey = TestWO:'*':CassNo
|
|
END CASE
|
|
|
|
WOMatRec = XLATE('WO_MAT', WOMatKey, '', 'X')
|
|
|
|
IF (WOMatRec = '') THEN
|
|
Set_Property(CtrlEntID, "CELLPOS", '', PrevSelPos) ;* No corresponding data record found for label scanned bad read or wrong thing scanned
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", True$)
|
|
Set_Property(CtrlEntID, "SELPOS", PrevSelPos)
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", False$)
|
|
RETURN
|
|
|
|
END ELSE
|
|
Set_Property(CtrlEntID, "CELLPOS", FIELD(WOMatKey,'*',1), COL$WOLOGKEY:@FM:PrevRow)
|
|
|
|
* * Check for FQA signature completed * *
|
|
FQASigned = ''
|
|
WorkOrdNo = Field(WOMatKey, '*', 1)
|
|
ReactorType = XLATE('WO_LOG', WorkOrdNo, 'REACT_TYPE', 'X')
|
|
QAStage = ''
|
|
|
|
Begin Case
|
|
Case ReactorType EQ 'EPP'
|
|
QAStage = 'MO_QA'
|
|
Case ReactorType EQ 'GAN'
|
|
QAStage = 'G_FQA'
|
|
Case Otherwise$
|
|
QAStage = 'QA'
|
|
End Case
|
|
|
|
FQASigned = Signature_Services('CheckSignature', WOMatKey, QAStage)
|
|
|
|
IF NOT(FQASigned) THEN
|
|
Msg(@WINDOW, '', 'UNSIGNED_CASSETTE')
|
|
Set_Property(CtrlEntID, "CELLPOS", '', PrevSelPos) ;* No corresponding data record found for label scanned bad read or wrong thing scanned
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", True$)
|
|
Set_Property(CtrlEntID, "SELPOS", PrevSelPos)
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", False$)
|
|
RETURN
|
|
END
|
|
|
|
Set_Property(@WINDOW,'@WO_MAT_KEY',WOMatKey)
|
|
Set_Property(@WINDOW,'@WO_MAT_LOT',WOMatRec<WO_MAT_LOT_NO$>)
|
|
END
|
|
END
|
|
|
|
********************************
|
|
* Post Prompt for Bottom Label *
|
|
********************************
|
|
|
|
TopLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$TOP_LABEL, PrevRow))
|
|
BottomLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$BOTTOM_LABEL, PrevRow))
|
|
|
|
IF BottomLabel[1,2] = '1T' THEN
|
|
BottomLabel = BottomLabel[3,99]
|
|
Set_Property(CtrlEntId,"CELLPOS",BottomLabel,PrevSelPos)
|
|
END
|
|
|
|
IF ((BottomLabel NE '') AND (PrevCol = COL$BOTTOM_LABEL)) Then
|
|
|
|
BEGIN CASE
|
|
CASE BottomLabel[1,1] = 'I'
|
|
* WM_IN table
|
|
BottomLabel = BottomLabel[2,99]
|
|
Set_Property(CtrlEntID, "CELLPOS", BottomLabel, PrevSelPos)
|
|
|
|
CASE BottomLabel[1,1] = 'O'
|
|
* WM_OUT table
|
|
BottomLabel = BottomLabel[2,99]
|
|
Set_Property(CtrlEntID, "CELLPOS", BottomLabel, PrevSelPos)
|
|
|
|
CASE INDEX(BottomLabel,'.',1) AND NOT(INDEX(BottomLabel,'.',2))
|
|
* This is a WO_MAT format label
|
|
NULL
|
|
|
|
CASE INDEX(BottomLabel,'.',2)
|
|
* EpiPRO material indeterminate direction
|
|
NULL
|
|
|
|
CASE 1
|
|
NULL
|
|
END CASE
|
|
|
|
************************************
|
|
* Validate the Top & Bottom Labels *
|
|
************************************
|
|
|
|
IF (TopLabel NE BottomLabel) THEN
|
|
|
|
MismatchDetected = True$ /* Mismatch Detected */
|
|
|
|
void = Utility('BEEP')
|
|
Set_Property(CtrlEntID, "CELLPOS", 'Mismatch', COL$RESULT:@FM:PrevRow) /* Load Current Location */
|
|
stat = Send_Message(CtrlEntID, 'COLOR_BY_POS', 0, PrevRow, RED$)
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", True$)
|
|
Set_Property(CtrlEntID, "SELPOS", COL$TOP_LABEL:@FM:PrevRow+1) /* Move to the next line ready to scan */
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", False$)
|
|
InsertedPosition = Send_Message(CtrlEntID, "INSERT", -1, '')
|
|
|
|
TypeOver = ''
|
|
TypeOver<MCAPTION$> = 'FQA Label Mismatch'
|
|
TypeOver<MTEXT$> = CRLF$:'Label ID Mismatch!':CRLF$
|
|
|
|
OK = Msg(@WINDOW,TypeOver,'LABEL_MISMATCH')
|
|
|
|
* Inform Quality Insurance that a mismatch has occurred *
|
|
|
|
Recipients = ''
|
|
OtherRecipients = XLATE('NOTIFICATION','LABEL_CHECK_FQA',NOTIFICATION_USER_ID$,'X') ;* Added 10/03/2005 JCH - J.C. Henry & Co., Inc Changed from LABEL_MISMATCH by dkk 11/6/15
|
|
|
|
FOR N = 1 TO COUNT(OtherRecipients,@VM) + (OtherRecipients NE '')
|
|
OtherRecip = OtherRecipients<1,N>
|
|
LOCATE OtherRecip IN Recipients USING @VM SETTING Pos ELSE
|
|
Recipients = INSERT(Recipients,1,Pos,0,OtherRecip)
|
|
END
|
|
NEXT N
|
|
|
|
SentFrom = @USER4
|
|
Subject = 'Final QA Label Check Mismatch'
|
|
Message = 'Cassette Top ID ':QUOTE(TopLabel):' has mismatched Bottom ID ':QUOTE(BottomLabel)'.'
|
|
AttachWindow = ''
|
|
AttachKey = ''
|
|
SendToGroup = ''
|
|
|
|
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
|
obj_Notes('Create',Parms)
|
|
|
|
IF Num(TopLabel) THEN
|
|
RDSNo = TopLabel
|
|
ReactRunRec = XLATE('REACT_RUN', RDSNo, '', 'X')
|
|
|
|
WONo = ReactRunRec<REACT_RUN_WO_NO$>
|
|
StepNo = ReactRunRec<REACT_RUN_WO_STEP$>
|
|
CassNo = ReactRunRec<REACT_RUN_CASS_NO$>
|
|
|
|
END ELSE
|
|
IF TopLabel[1,1] = 'O' THEN TopLabel[1,1] = ''
|
|
IF TopLabel[1,1] = 'I' THEN TopLabel[1,1] = ''
|
|
|
|
WONo = FIELD(TopLabel,'.',1)
|
|
StepNo = FIELD(TopLabel,'.',2)
|
|
CassNo = FIELD(TopLabel,'.',3)
|
|
RDSNo = ''
|
|
END
|
|
|
|
* Setup parameters to WO_Mat_Log method *
|
|
CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS')
|
|
UserID = @USER4
|
|
IF UserID = '' THEN UserID = @USERNAME
|
|
|
|
LogFile = 'WO_MAT' ;* Changed so all scans are logged in the WO_MAT table 12/3/2006
|
|
Action = 'LBLCHK' ;* Final label check for same top and bottom and correct Lot Number on WO_MAT record
|
|
WHCd = 'CR' ;* Clean room @ final QA
|
|
LocCd = 'QA' ;* MisMatch - keep the cassette location at Final QA
|
|
|
|
Set_Status(0)
|
|
obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONo:@RM:CassNo:@RM:UserID:@RM:'Mismatch')
|
|
|
|
IF Get_Status(errCode) THEN
|
|
Errmsg(errCode)
|
|
END
|
|
END /* End of check for top & bottom labels check */
|
|
END /* End of check for bottom label available */
|
|
|
|
**********************
|
|
* Process Lot Number *
|
|
**********************
|
|
|
|
IF (MismatchDetected = False$) THEN
|
|
|
|
LotNumber = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$LOT_NO, PrevRow))
|
|
|
|
IF ((TopLabel NE '') AND (BottomLabel NE '') AND (LotNumber = '')) THEN
|
|
|
|
EpiProFlag = Get_Property(@WINDOW, '@EPIPRO_FLAG')
|
|
GaNFlag = Get_Property(@WINDOW, '@GAN_FLAG')
|
|
Begin Case
|
|
Case EpiProFlag EQ True$
|
|
LotNumber = 'EpiPRO'
|
|
Set_Property(CtrlEntID, "CELLPOS", LotNumber, COL$LOT_NO:@FM:PrevRow)
|
|
Case GaNFlag EQ True$
|
|
LotNumber = 'GaN'
|
|
Set_Property(CtrlEntID, "CELLPOS", LotNumber, COL$LOT_NO:@FM:PrevRow)
|
|
End Case
|
|
END
|
|
|
|
IF ((LotNumber NE '') AND (PrevCol = COL$LOT_NO)) THEN
|
|
|
|
***************************
|
|
* Validate the Lot Number *
|
|
***************************
|
|
|
|
IF (LotNumber NE 'EpiPRO' and LotNumber NE 'GaN') THEN
|
|
|
|
IF ((LotNumber[1,2] = '1T') OR (LotNumber[1,2] = '2T')) THEN
|
|
/* Trim off field identifiers (1T) or (2T) if present - changed by dkk 12/13/16 */
|
|
LotNumber[1,2] = ''
|
|
Set_Property(CtrlEntID, "CELLPOS", LotNumber, COL$LOT_NO:@FM:PrevRow)
|
|
END
|
|
|
|
WOMatKey = Get_Property(@WINDOW,'@WO_MAT_KEY')
|
|
WONo = WOMatKey[1,'*']
|
|
CassNo = WOMatKey[COL2()+1,'*']
|
|
|
|
WOMatLot = Get_Property(@WINDOW,'@WO_MAT_LOT')
|
|
|
|
* * * Check for Wales added suffix "-BB" on implant wafers coming back * * *
|
|
|
|
IF (WOMatLot[-3,1] = '-') AND (WOMatLot[-2,1] = WOMatLot[-1,1]) And WOMatLot[-2,2] Matches "2A" THEN
|
|
IF LotNumber = WOMatLot[1,Len(WOMatLot) - 3] THEN
|
|
LotNumber := WOMatLot[-3,3]
|
|
END
|
|
END ;* End of check for "-AA" type lot suffix added by Wales
|
|
|
|
IF (LotNumber NE WOMatLot) THEN
|
|
|
|
MismatchDetected = True$ /* Mismatch Detected */
|
|
|
|
void = Utility('BEEP')
|
|
Set_Property(CtrlEntID, "CELLPOS", 'Mismatch',COL$RESULT:@FM:PrevRow) /* Load Current Location */
|
|
stat = Send_Message(CtrlEntID, 'COLOR_BY_POS', 0, PrevRow,RED$)
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", True$)
|
|
Set_Property(CtrlEntID, "SELPOS", COL$TOP_LABEL:@FM:PrevRow+1) /* Move to the next line ready to scan */
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", False$)
|
|
InsertedPosition = Send_Message(CtrlEntID, "INSERT", -1, '')
|
|
|
|
TypeOver = ''
|
|
TypeOver<MCAPTION$> = 'FQA Label Mismatch'
|
|
TypeOver<MTEXT$> = CRLF$:'Lot No. Mismatch!':CRLF$
|
|
|
|
OK = Msg(@WINDOW,TypeOver,'LABEL_MISMATCH')
|
|
|
|
/* Inform Quality Insurance that a mismatch has occurred */
|
|
|
|
Recipients = ''
|
|
OtherRecipients = XLATE('NOTIFICATION','LABEL_CHECK_FQA',NOTIFICATION_USER_ID$,'X') ;* Added 10/03/2005 JCH - J.C. Henry & Co., Inc Changed from LABEL_MISMATCH by dkk 11/6/15
|
|
|
|
FOR N = 1 TO COUNT(OtherRecipients,@VM) + (OtherRecipients NE '')
|
|
OtherRecip = OtherRecipients<1,N>
|
|
LOCATE OtherRecip IN Recipients USING @VM SETTING Pos ELSE
|
|
Recipients = INSERT(Recipients,1,Pos,0,OtherRecip)
|
|
END
|
|
NEXT N
|
|
|
|
SentFrom = @USER4
|
|
Subject = 'Final QA Label Check Mismatch'
|
|
Message = 'Cassette ':QUOTE(TopLabel):' has incorrect Lot No ':QUOTE(LotNumber)'.'
|
|
AttachWindow = ''
|
|
AttachKey = ''
|
|
SendToGroup = ''
|
|
|
|
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
|
obj_Notes('Create',Parms)
|
|
|
|
CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS')
|
|
UserID = @USER4
|
|
IF UserID = '' THEN UserID = @USERNAME
|
|
|
|
LogFile = 'WO_MAT' ;* Changed so all scans are logged in the WO_MAT table 12/3/2006
|
|
Action = 'LBLCHK' ;* Final label check for same top and bottom and correct Lot Number on WO_MAT record
|
|
WHCd = 'CR' ;* Clean room @ final QA
|
|
LocCd = 'QA' ;* MisMatch - keep the cassette location at Final QA
|
|
|
|
Set_Status(0)
|
|
obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONo:@RM:CassNo:@RM:UserID:@RM:'Mismatch')
|
|
|
|
IF Get_Status(errCode) THEN
|
|
Errmsg(errCode)
|
|
END
|
|
|
|
END ELSE
|
|
NULL
|
|
END /* End of check for LotNumber and WOMatLot matching */
|
|
|
|
END ELSE
|
|
NULL
|
|
END /* End of check for EpiPro lot */
|
|
|
|
END /* End of check for lot number validation */
|
|
|
|
END
|
|
|
|
|
|
*********************
|
|
* Process IFX Label *
|
|
*********************
|
|
|
|
* IF (MismatchDetected = False$) THEN
|
|
*
|
|
* IFXValid = 0
|
|
*
|
|
* /* Read scanned information from edit table */
|
|
* TopLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$TOP_LABEL, PrevRow))
|
|
* BottomLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$BOTTOM_LABEL, PrevRow))
|
|
* LotNumber = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$LOT_NO, PrevRow))
|
|
* WOLogKey = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$WOLOGKEY, PrevRow))
|
|
*
|
|
* IF ((TopLabel NE '') AND (BottomLabel NE '') AND (LotNumber NE '') AND (WOLogKey NE '')) THEN
|
|
*
|
|
* /* Get the Customer Information */
|
|
* WOLogRec = XLATE('WO_LOG', WOLogKey, '', 'X')
|
|
* IF (WOLogRec NE '') THEN
|
|
* CustomerNo = WOLogRec<WO_LOG_CUST_NO$>
|
|
* END ELSE
|
|
* CustomerNo = ''
|
|
* END
|
|
* GaNFlag = Get_Property(@Window, '@GAN_FLAG')
|
|
* IF (CustomerNo = '7112') |
|
|
* OR (CustomerNo = '7113') |
|
|
* OR (CustomerNo = '7114') |
|
|
* OR (CustomerNo = '7115') |
|
|
* OR (CustomerNo = '7116') |
|
|
* OR (CustomerNo = '7118') |
|
|
* OR (CustomerNo = '7121') |
|
|
* OR (CustomerNo = '7123') |
|
|
* AND (GaNFlag NE True$) THEN
|
|
*
|
|
* IFXLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$IFX_LABEL, PrevRow))
|
|
*
|
|
* IF ((IFXLabel NE '') AND (PrevCol = COL$IFX_LABEL)) THEN
|
|
*
|
|
* IF ((IFXLabel[1,2] = '1T') OR (IFXLabel[1,2] = '2T')) THEN
|
|
* /* Trim off field identifiers (1T) or (2T) if present - changed by dkk 12/13/16 */
|
|
* IFXLabel[1,2] = ''
|
|
* Set_Property(CtrlEntID, "CELLPOS", IFXLabel, COL$IFX_LABEL:@FM:PrevRow)
|
|
* END
|
|
*
|
|
* **********************
|
|
* * Validate IFX Label *
|
|
* **********************
|
|
*
|
|
* IF (IFXLabel NE TopLabel) THEN
|
|
*
|
|
* MismatchDetected = True$ /* Mismatch Detected */
|
|
*
|
|
* void = Utility('BEEP')
|
|
* Set_Property(CtrlEntID, "CELLPOS", 'Mismatch', COL$RESULT:@FM:PrevRow) /* Load Current Location */
|
|
* stat = Send_Message(CtrlEntID, 'COLOR_BY_POS', 0, PrevRow, RED$)
|
|
* Set_Property("SYSTEM", "BLOCK_EVENTS", True$)
|
|
* Set_Property(CtrlEntID, "SELPOS", COL$TOP_LABEL:@FM:PrevRow+1) /* Move to the next line ready to scan */
|
|
* Set_Property("SYSTEM", "BLOCK_EVENTS", False$)
|
|
* InsertedPosition = Send_Message(CtrlEntID, "INSERT", -1, '')
|
|
*
|
|
* TypeOver = ''
|
|
* TypeOver<MCAPTION$> = 'FQA Label Mismatch'
|
|
* TypeOver<MTEXT$> = CRLF$:'IFX Label Mismatch!':CRLF$
|
|
*
|
|
* OK = Msg(@WINDOW,TypeOver,'LABEL_MISMATCH')
|
|
*
|
|
* * Inform Quality Insurance that a mismatch has occurred *
|
|
*
|
|
* Recipients = ''
|
|
* OtherRecipients = XLATE('NOTIFICATION','LABEL_CHECK_FQA',NOTIFICATION_USER_ID$,'X') ;* Added 10/03/2005 JCH - J.C. Henry & Co., Inc Changed from LABEL_MISMATCH by dkk 11/6/15
|
|
*
|
|
* FOR N = 1 TO COUNT(OtherRecipients,@VM) + (OtherRecipients NE '')
|
|
* OtherRecip = OtherRecipients<1,N>
|
|
* LOCATE OtherRecip IN Recipients USING @VM SETTING Pos ELSE
|
|
* Recipients = INSERT(Recipients,1,Pos,0,OtherRecip)
|
|
* END
|
|
* NEXT N
|
|
*
|
|
* SentFrom = @USER4
|
|
* Subject = 'Final QA Label Check Mismatch'
|
|
* Message = 'Cassette IFX Label ':QUOTE(IFXLabel):' has mismatched Top Label ':QUOTE(TopLabel)'.'
|
|
* AttachWindow = ''
|
|
* AttachKey = ''
|
|
* SendToGroup = ''
|
|
*
|
|
* Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
|
* obj_Notes('Create',Parms)
|
|
*
|
|
* IF Num(TopLabel) THEN
|
|
* RDSNo = TopLabel
|
|
* ReactRunRec = XLATE('REACT_RUN', RDSNo, '', 'X')
|
|
*
|
|
* WONo = ReactRunRec<REACT_RUN_WO_NO$>
|
|
* StepNo = ReactRunRec<REACT_RUN_WO_STEP$>
|
|
* CassNo = ReactRunRec<REACT_RUN_CASS_NO$>
|
|
*
|
|
* END ELSE
|
|
* IF TopLabel[1,1] = 'O' THEN TopLabel[1,1] = ''
|
|
* IF TopLabel[1,1] = 'I' THEN TopLabel[1,1] = ''
|
|
*
|
|
* WONo = FIELD(TopLabel,'.',1)
|
|
* StepNo = FIELD(TopLabel,'.',2)
|
|
* CassNo = FIELD(TopLabel,'.',3)
|
|
* RDSNo = ''
|
|
* END
|
|
*
|
|
* * Setup parameters to WO_Mat_Log method *
|
|
* CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS')
|
|
* UserID = @USER4
|
|
* IF UserID = '' THEN UserID = @USERNAME
|
|
*
|
|
* LogFile = 'WO_MAT' ;* Changed so all scans are logged in the WO_MAT table 12/3/2006
|
|
* Action = 'LBLCHK' ;* Final label check for same top and bottom and correct Lot Number on WO_MAT record
|
|
* WHCd = 'CR' ;* Clean room @ final QA
|
|
* LocCd = 'QA' ;* MisMatch - keep the cassette location at Final QA
|
|
*
|
|
* Set_Status(0)
|
|
* obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONo:@RM:CassNo:@RM:UserID:@RM:'Mismatch')
|
|
*
|
|
* IF Get_Status(errCode) THEN
|
|
* Errmsg(errCode)
|
|
* END
|
|
*
|
|
* END ELSE
|
|
* /* IFX Lavel = Top Label */
|
|
* IFXValid = 1
|
|
*
|
|
* END /* End of check for IFX label check */
|
|
*
|
|
* END ELSE
|
|
* NULL /* No IFX Label scanned yet */
|
|
* END
|
|
*
|
|
* END ELSE
|
|
* Set_Property(CtrlEntID, "CELLPOS", 'N/A', COL$IFX_LABEL:@FM:PrevRow)
|
|
* IFXValid = 1
|
|
* END
|
|
* END
|
|
* END
|
|
|
|
********************************
|
|
* Validate Scanned Information *
|
|
********************************
|
|
|
|
IF (MismatchDetected = False$) THEN
|
|
|
|
/* Read scanned information from edit table */
|
|
TopLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$TOP_LABEL, PrevRow))
|
|
BottomLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$BOTTOM_LABEL, PrevRow))
|
|
LotNumber = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$LOT_NO, PrevRow))
|
|
//IFXLabel = TRIM(Send_Message(CtrlEntID, "TEXT_BY_POS", COL$IFX_LABEL, PrevRow))
|
|
|
|
IF ((TopLabel NE '') AND (BottomLabel NE '') AND (LotNumber NE '')) THEN ;//AND (IFXValid = 1) AND (IFXLabel NE '')) THEN
|
|
|
|
********************************
|
|
* FQA Labels Validation = GOOD *
|
|
********************************
|
|
|
|
Set_Property(CtrlEntID, "CELLPOS", 'OK', COL$RESULT:@FM:PrevRow)
|
|
stat = Send_Message(CtrlEntID, "COLOR_BY_POS", 0, PrevRow,GREEN$)
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", True$)
|
|
Set_Property(CtrlEntID, "SELPOS", COL$TOP_LABEL:@FM:PrevRow+1) /* Move to the next line ready to scan */
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", False$)
|
|
InsertedPosition = Send_Message(CtrlEntID, "INSERT", -1, '')
|
|
|
|
* Add transaction to Posting system to time-stamp WO_MAT record
|
|
! 10/28/2019 - DJS & Dan Crisp
|
|
! This transaction is moving to Packaging_Services and is triggered by
|
|
! the NDW_PACKAGING form upon a successful scan sequence.
|
|
|
|
IF Num(TopLabel) THEN
|
|
RDSNo = TopLabel
|
|
ReactRunRec = XLATE('REACT_RUN',RDSNo,'','X')
|
|
WONo = ReactRunRec<REACT_RUN_WO_NO$>
|
|
StepNo = ReactRunRec<REACT_RUN_WO_STEP$>
|
|
CassNo = ReactRunRec<REACT_RUN_CASS_NO$>
|
|
|
|
END ELSE
|
|
IF TopLabel[1,1] = 'O' THEN TopLabel[1,1] = ''
|
|
IF TopLabel[1,1] = 'I' THEN TopLabel[1,1] = ''
|
|
|
|
EpiProFlag = Get_Property(@Window, '@EPIPRO_FLAG')
|
|
GaNFlag = Get_Property(@Window, '@GAN_FLAG')
|
|
Begin Case
|
|
Case EpiProFlag EQ True$
|
|
WONo = FIELD(TopLabel,'.',1)
|
|
StepNo = FIELD(TopLabel,'.',2)
|
|
CassNo = FIELD(TopLabel,'.',3)
|
|
RDSNo = ''
|
|
Case GaNFlag EQ True$
|
|
WONo = Field(TopLabel, '*', 1)
|
|
CassNo = Field(TopLabel, '*', 2)
|
|
StepNo = 1
|
|
RDSNo = ''
|
|
End Case
|
|
|
|
END
|
|
|
|
CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS')
|
|
UserID = @USER4
|
|
IF UserID = '' THEN UserID = @USERNAME
|
|
|
|
LogFile = 'WO_MAT' ;* Changed so all scans are logged in the WO_MAT table 12/3/2006
|
|
Action = 'LBLCHK' ;* Final label check for same top and bottom and correct Lot Number on WO_MAT record
|
|
WHCd = 'CR' ;* Clean room @ final QA
|
|
LocCd = 'PKO' ;* QA wants this to "place" the cassette into the outbound passthrough
|
|
|
|
Set_Status(0)
|
|
obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONo:@RM:CassNo:@RM:UserID:@RM:'Match')
|
|
|
|
IF Get_Status(errCode) THEN
|
|
Errmsg(errCode)
|
|
END
|
|
|
|
END /* End of check for all information available to be checked*/
|
|
|
|
END
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|