pre cutover push
This commit is contained in:
@ -12,18 +12,21 @@ COMPILE FUNCTION Clean_Insp(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
|
||||
and SignScan subroutines
|
||||
04/23/2021 - djs - Updated SIGN_ROTR_ACCEPTANCE.CLICK event to not block acceptance signatures when a 100%
|
||||
failure scan is required.
|
||||
05/13/2024 - djs - Replaced Ole Tab control (OLE_TAB_ROTR) with a groupbox control (ROTR_GROUP) to mitigate
|
||||
form behavior bugs in OI 10 post migration.
|
||||
06/13/2024 djm Add new stage-specific supplement system.
|
||||
*/
|
||||
|
||||
DECLARE SUBROUTINE Set_Property, End_Dialog, Send_Event, Set_Status, Center_Window, Post_Event, Comm_RDS
|
||||
DECLARE SUBROUTINE ErrMsg, Send_Message, Set_Property, Send_Event, Btree.Extract, obj_AppWindow, Signature_Services
|
||||
DECLARE SUBROUTINE obj_Notes, Security_Err_Msg, End_Window, Forward_Event, Start_Window, Create_Note
|
||||
DECLARE SUBROUTINE obj_WO_Mat_Log, obj_WO_Mat, obj_Clean_Insp, Unlock, Lock, Database_Services, Yield
|
||||
DECLARE SUBROUTINE Override_Log_Services, Dialog_Box, obj_WO_Wfr
|
||||
DECLARE SUBROUTINE Override_Log_Services, Dialog_Box, obj_WO_Wfr, Error_Services
|
||||
|
||||
DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Utility, Popup, Collect.Ixvals, Environment_Services
|
||||
DECLARE FUNCTION Send_Message, Msg, Security_Check, obj_React_Run_CI, Select_Into, MemberOf, Database_Services
|
||||
DECLARE FUNCTION Start_Window, Create_Dialog, Database_Services, Set_Property, Error_Services, SRP_DateTime
|
||||
DECLARE FUNCTION obj_NCR, SRP_Array
|
||||
DECLARE FUNCTION obj_NCR, SRP_Array, Supplement_Services
|
||||
|
||||
$INSERT LOGICAL
|
||||
$INSERT MSG_EQUATES
|
||||
@ -67,19 +70,19 @@ EQU COL$INSP_SPEC_SPOTS TO 9
|
||||
EQU COL$INSP_SPEC_FOV TO 10
|
||||
EQU COL$INSP_SPEC_BL_DEFECTS TO 11
|
||||
|
||||
EQU COL$INSP_TOOL TO 2 ;* Added INSP_TOOL column 10/29/2012 JCH
|
||||
EQU COL$INSP_LPD TO 3
|
||||
EQU COL$INSP_SCRATCHES TO 4
|
||||
EQU COL$INSP_SCRATCH_LEN TO 5
|
||||
EQU COL$INSP_PITS TO 6
|
||||
EQU COL$INSP_MOUNDS TO 7
|
||||
EQU COL$INSP_STACK_FAULTS TO 8
|
||||
EQU COL$INSP_SPIKES TO 9
|
||||
EQU COL$INSP_SPOTS TO 10
|
||||
EQU COL$INSP_FOV TO 11
|
||||
EQU COL$INSP_BL_DEFECTS TO 12
|
||||
EQU COL$INSP_SIG TO 13
|
||||
EQU COL$INSP_SIG_DTM TO 14
|
||||
EQU COL$INSP_TOOL TO 2 ;* Added INSP_TOOL column 10/29/2012 JCH
|
||||
EQU COL$INSP_LPD TO 3
|
||||
EQU COL$INSP_SCRATCHES TO 4
|
||||
EQU COL$INSP_SCRATCH_LEN TO 5
|
||||
EQU COL$INSP_PITS TO 6
|
||||
EQU COL$INSP_MOUNDS TO 7
|
||||
EQU COL$INSP_STACK_FAULTS TO 8
|
||||
EQU COL$INSP_SPIKES TO 9
|
||||
EQU COL$INSP_SPOTS TO 10
|
||||
EQU COL$INSP_FOV TO 11
|
||||
EQU COL$INSP_BL_DEFECTS TO 12
|
||||
EQU COL$INSP_SIG TO 13
|
||||
EQU COL$INSP_SIG_DTM TO 14
|
||||
|
||||
EQU COL$INSP_SPEC_BSIDE_SCRATCHES TO 1
|
||||
EQU COL$INSP_SPEC_BSIDE_SCRATCH_LEN TO 2
|
||||
@ -159,19 +162,18 @@ BEGIN CASE
|
||||
CASE Event[1,3] = 'QBF' ; GOSUB Refresh
|
||||
END CASE
|
||||
|
||||
CASE EntID = @WINDOW:'.SIGN_CLEAN' AND Event = 'CLICK' ; GOSUB SignClean
|
||||
CASE EntID = @WINDOW:'.SIGN_INSP' AND Event = 'CLICK' ; GOSUB SignInsp
|
||||
CASE EntID = @WINDOW:'.SIGN_SCAN' AND Event = 'CLICK' ; GOSUB SignScan
|
||||
CASE EntID = @WINDOW:'.SIGN_ROTR_ACCEPTANCE' AND Event = 'CLICK' ; GOSUB SIGN_ROTR_ACCEPTANCE.CLICK
|
||||
CASE EntID = @WINDOW:'.BTN_WAFER_DETAILS' AND Event = 'CLICK' ; GOSUB BTN_WAFER_DETAILS.CLICK
|
||||
CASE EntID = @WINDOW:'.SCAN_RESULTS' AND Event = 'CHAR' ; GOSUB SCAN_RESULTS.CHAR
|
||||
CASE EntID = @WINDOW:'.SCAN_RESULTS' AND Event = 'POSCHANGED'; GOSUB SCAN_RESULTS.POSCHANGED
|
||||
CASE EntID = @WINDOW:'.SPEC_BRIGHTLIGHT' AND Event = 'CLICK' ; GOSUB Refresh
|
||||
CASE EntID = @WINDOW:'.SPEC_MICROSCOPE' AND Event = 'CLICK' ; GOSUB Refresh
|
||||
CASE EntID = @WINDOW:'.CHK_EDGE' AND Event = 'CLICK' ; GOSUB Refresh
|
||||
CASE EntID = @WINDOW:'.REFRESH_SPEC' AND Event = 'CLICK' ; GOSUB RefreshSpec
|
||||
CASE EntID = @WINDOW:'.CI_TAB' AND Event = 'CLICK' ; GOSUB Page
|
||||
*CASE FIELD(EntID,'.',2) = 'ROTR_ACTION' AND Event = 'CLICK' ; GOSUB Refresh
|
||||
CASE EntID = @WINDOW:'.SIGN_CLEAN' AND Event = 'CLICK' ; GOSUB SignClean
|
||||
CASE EntID = @WINDOW:'.SIGN_INSP' AND Event = 'CLICK' ; GOSUB SignInsp
|
||||
CASE EntID = @WINDOW:'.SIGN_SCAN' AND Event = 'CLICK' ; GOSUB SignScan
|
||||
CASE EntID = @WINDOW:'.SIGN_ROTR_ACCEPTANCE' AND Event = 'CLICK' ; GOSUB SIGN_ROTR_ACCEPTANCE.CLICK
|
||||
CASE EntID = @WINDOW:'.BTN_WAFER_DETAILS' AND Event = 'CLICK' ; GOSUB BTN_WAFER_DETAILS.CLICK
|
||||
CASE EntID = @WINDOW:'.SCAN_RESULTS' AND Event = 'CHAR' ; GOSUB SCAN_RESULTS.CHAR
|
||||
CASE EntID = @WINDOW:'.SCAN_RESULTS' AND Event = 'POSCHANGED' ; GOSUB SCAN_RESULTS.POSCHANGED
|
||||
CASE EntID = @WINDOW:'.SPEC_BRIGHTLIGHT' AND Event = 'CLICK' ; GOSUB Refresh
|
||||
CASE EntID = @WINDOW:'.SPEC_MICROSCOPE' AND Event = 'CLICK' ; GOSUB Refresh
|
||||
CASE EntID = @WINDOW:'.CHK_EDGE' AND Event = 'CLICK' ; GOSUB Refresh
|
||||
CASE EntID = @WINDOW:'.REFRESH_SPEC' AND Event = 'CLICK' ; GOSUB RefreshSpec
|
||||
CASE EntID = @WINDOW:'.CI_TAB' AND Event = 'CLICK' ; GOSUB Page
|
||||
CASE EntID = @WINDOW:'.INSP_RESULTS' AND Event = 'POSCHANGED' ; GOSUB InspPC
|
||||
CASE EntID = @WINDOW:'.INSP_RESULTS_BSIDE' AND Event = 'POSCHANGED' ; GOSUB BSideInspPC
|
||||
|
||||
@ -218,7 +220,7 @@ Create:
|
||||
CleanStyles<COL$CLEAN_SRD_NO> = BitOr(CleanStyles<COL$CLEAN_SRD_NO>,DTCS_DROPDOWN$)
|
||||
|
||||
Send_Message(@WINDOW:'.CLEAN_RESULTS','COLSTYLE',0,CleanStyles) ;* Set Styles
|
||||
|
||||
|
||||
* Setup Inspection Section
|
||||
|
||||
InspStyles = Send_Message(@WINDOW:'.INSP_RESULTS','COLSTYLE',0,'')
|
||||
@ -227,9 +229,6 @@ Create:
|
||||
|
||||
Send_Message(@WINDOW:'.INSP_RESULTS','COLSTYLE',0,InspStyles)
|
||||
|
||||
* InspTools = XLATE('TOOL_CLASS','MICROSCOPE',TOOL_CLASS_TOOL$,'X') ;* Microscope class tools
|
||||
* InspTools := @VM:XLATE('TOOL_CLASS','BRIGHTLIGHT',TOOL_CLASS_TOOL$,'X') ;* Brightlight tools
|
||||
* InspTools := @VM:Xlate('TOOL_CLASS', 'FF/LIGHT', TOOL_CLASS_TOOL$, 'X') ;* Edge inspection tools
|
||||
InspTools = 'SCOPE':@VM:'FF EDGE INSP':@VM:'SCOPE/FF EDGE INSP'
|
||||
|
||||
Send_Message(@WINDOW:'.INSP_RESULTS','COLFORMAT',COL$INSP_TOOL,InspTools)
|
||||
@ -253,17 +252,11 @@ Create:
|
||||
Set_Property(@WINDOW:'.REFRESH_SPEC','VISIBLE',0)
|
||||
END
|
||||
|
||||
Ctrl = @Window : '.OLE_TAB_ROTR'
|
||||
Set_Property(Ctrl, 'OLE.AllowXPTheme', 0)
|
||||
|
||||
CIKey = Get_Property(@Window : '.CI_NO', 'TEXT')
|
||||
ReactorNo = Xlate('CLEAN_INSP', CIKey, 'REACT_NO', 'X')
|
||||
|
||||
// ROTR Development Code - 12/03/18 - djs --------------------------------------------------------------------------
|
||||
Stage = Get_Property(@Window : '.STAGE', 'TEXT')
|
||||
If Stage EQ 'LWI' then
|
||||
* ROTREnabled = Xlate('REACTOR', ReactorNo, 'ENABLE_ROTR', 'X')
|
||||
* If (ROTREnabled EQ True$) then
|
||||
CanEdit = Memberof(@USER4, 'ENGINEERING') or Memberof(@USER4, 'LEAD') or Memberof(@USER4, 'SUPERVISOR') |
|
||||
or Memberof(@USER4, 'FINAL_QA') or Memberof(@USER4, 'ROTR_OVERRIDE')
|
||||
// Check if manual entry lock is temporarily disabled for all users due to ROTR queue overflow.
|
||||
@ -281,11 +274,8 @@ Create:
|
||||
ScanStyles<COL$SCAN_TOOL> = BitAnd(ScanStyles<COL$SCAN_TOOL>, BitNot(DTCS_DROPDOWN$) )
|
||||
ScanStyles = Send_Message(@Window : '.SCAN_RESULTS', 'COLSTYLE', 0, ScanStyles)
|
||||
end
|
||||
* end
|
||||
end
|
||||
|
||||
* GOSUB Refresh
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
@ -319,9 +309,10 @@ Clear:
|
||||
Send_Event(@WINDOW,'PAGE',1)
|
||||
|
||||
|
||||
* * * * * * *
|
||||
* * * * * * *
|
||||
Refresh:
|
||||
* * * * * * *
|
||||
|
||||
CIKey = Get_Property(@WINDOW:'.CI_NO', 'TEXT')
|
||||
// Hide or show the Cass No label and edit line based on the whether the reactor is EpiPro or not. - 04/10/2018 - dmb
|
||||
WONo = Get_Property(@Window : '.WO_NO', 'TEXT')
|
||||
@ -337,27 +328,8 @@ Refresh:
|
||||
|
||||
Stage = Get_Property(@WINDOW:'.STAGE','TEXT')
|
||||
|
||||
Ctrls = @WINDOW:'.ROTR_GROUP':@RM ; Props = 'VISIBLE':@RM
|
||||
Ctrls := @WINDOW:'.ROTR_ACTION':@RM ; Props := 'VISIBLE':@RM
|
||||
*Ctrls := @WINDOW:'.ROTR_ACTION.NONE':@RM ; Props := 'VISIBLE':@RM
|
||||
*Ctrls := @WINDOW:'.ROTR_ACTION.PASS':@RM ; Props := 'VISIBLE':@RM
|
||||
*Ctrls := @WINDOW:'.ROTR_ACTION.FAIL':@RM ; Props := 'VISIBLE':@RM
|
||||
*Ctrls := @WINDOW:'.ROTR_ACTION.WAIVED':@RM ; Props := 'VISIBLE':@RM
|
||||
Ctrls := @WINDOW:'.SURF_SCAN_GROUP' ; Props := 'TEXT'
|
||||
|
||||
IF Stage = 'LWI' THEN
|
||||
Vals = STR('1':@RM,5)
|
||||
Vals := 'Surface Scan / ROTR'
|
||||
END ELSE
|
||||
Vals = STR('0':@RM,5)
|
||||
Vals := 'Surface Scan'
|
||||
END
|
||||
|
||||
* Set_Property(Ctrls,Props,Vals)
|
||||
|
||||
* * * * *
|
||||
|
||||
|
||||
Ctrls = @WINDOW:'.STAGE':@RM ; Props = 'TEXT':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_FWI_LWI':@RM ; Props := 'TEXT':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_CLEAN_TOOL_REP':@RM ; Props := 'DEFPROP':@RM
|
||||
@ -395,55 +367,6 @@ Refresh:
|
||||
SpecCleanTools[-1,1] = ''
|
||||
REPEAT
|
||||
|
||||
/*
|
||||
InspSpecStyles = Send_Message(@WINDOW:'.SPEC_INSP','COLSTYLE',0,'')
|
||||
InspStyles = Send_Message(@WINDOW:'.INSP_RESULTS','COLSTYLE',0,'')
|
||||
|
||||
IF SpecBrightlight = 1 THEN
|
||||
FOR Col = COL$INSP_SPEC_LPD TO COL$INSP_SPEC_SCRATCH_LEN
|
||||
InspSpecStyles<Col> = BitAnd(InspSpecStyles<Col>,BitNot(HIDDEN$)) ;* Show Specs
|
||||
NEXT Col
|
||||
FOR Col = COL$INSP_LPD TO COL$INSP_SCRATCH_LEN
|
||||
InspStyles<Col> = BitAnd(InspStyles<Col>, BitNot(HIDDEN$)) ;* Show Results
|
||||
NEXT Col
|
||||
|
||||
|
||||
END ELSE
|
||||
FOR Col = COL$INSP_SPEC_LPD TO COL$INSP_SPEC_SCRATCH_LEN
|
||||
InspSpecStyles<Col> = BitOr(InspSpecStyles<Col>,HIDDEN$) ;* Hide Specs
|
||||
NEXT Col
|
||||
FOR Col = COL$INSP_LPD TO COL$INSP_SCRATCH_LEN
|
||||
InspStyles<Col> = BitOr(InspStyles<Col>, HIDDEN$) ;* Hide Results
|
||||
NEXT Col
|
||||
END
|
||||
|
||||
IF SpecMicroscope = 1 THEN
|
||||
|
||||
FOR Col = COL$INSP_SPEC_PITS TO COL$INSP_SPEC_BL_DEFECTS
|
||||
InspSpecStyles<Col> = BitAnd(InspSpecStyles<Col>,BitNot(HIDDEN$))
|
||||
NEXT Col
|
||||
|
||||
FOR Col = COL$INSP_PITS TO COL$INSP_BL_DEFECTS
|
||||
InspStyles<Col> = BitAnd(InspStyles<Col>, BitNot(HIDDEN$))
|
||||
NEXT Col
|
||||
|
||||
END ELSE
|
||||
|
||||
FOR Col = COL$INSP_SPEC_PITS TO COL$INSP_SPEC_BL_DEFECTS
|
||||
InspSpecStyles<Col> = BitOr(InspSpecStyles<Col>,HIDDEN$)
|
||||
NEXT Col
|
||||
|
||||
FOR Col = COL$INSP_PITS TO COL$INSP_BL_DEFECTS
|
||||
InspStyles<Col> = BitOr(InspStyles<Col>, HIDDEN$)
|
||||
NEXT Col
|
||||
|
||||
END
|
||||
|
||||
|
||||
Send_Message(@WINDOW:'.SPEC_INSP','COLSTYLE',0,InspSpecStyles)
|
||||
Send_Message(@WINDOW:'.INSP_RESULTS','COLSTYLE',0,InspStyles)
|
||||
*/
|
||||
|
||||
ScanRecipes = Get_Property(@WINDOW:'.SPEC_SURFSCAN','ARRAY')<COL$SCAN_SPEC_SURF_RECIPE$> ;* 1/22/2013 JCH ***********
|
||||
Send_Message(@WINDOW:'.SCAN_RESULTS','COLFORMAT',COL$SCAN_RECIPE,ScanRecipes)
|
||||
|
||||
@ -469,9 +392,7 @@ Refresh:
|
||||
CASE 1 ; LabelText = 'Cleaning && Inspection'
|
||||
END CASE
|
||||
Set_Property(@WINDOW:'.WINDOW_LABEL_FIX','TEXT',LabelText)
|
||||
|
||||
|
||||
|
||||
|
||||
Ctrls = @WINDOW:'.SPEC_CLEAN_SUBOXIDE':@RM ; Props = 'CHECK':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_CLEAN_TOOL':@RM ; Props := 'TEXT':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_CLEAN_AKRION_RECIPE':@RM ; Props := 'TEXT':@RM
|
||||
@ -531,7 +452,6 @@ Refresh:
|
||||
InspReq = Xlate('CLEAN_INSP', CIKey, 'INSP_REQ', 'X')
|
||||
end
|
||||
|
||||
* InspReq = Xlate('CLEAN_INSP', CIKey, 'INSP_REQ', 'X')
|
||||
If InspReq EQ False$ then
|
||||
Set_Property(@WINDOW:'.INSP_RESULT_GROUP', 'TEXT', 'Visual Inspection Not Required')
|
||||
end
|
||||
@ -552,65 +472,23 @@ Refresh:
|
||||
|
||||
ReqBackColor = CI_GROUP_BLUE$
|
||||
|
||||
IF CleanSigReq THEN
|
||||
Vals = 1:@RM:STR(ReqBackColor:@RM,6)
|
||||
END ELSE
|
||||
Vals = 1:@RM:STR(DefBack:@RM,6)
|
||||
END
|
||||
|
||||
IF InspSigReq THEN
|
||||
Vals := 1:@RM:STR(ReqBackColor:@RM,5)
|
||||
END ELSE
|
||||
Vals := 1:@RM:STR(DefBack:@RM,5)
|
||||
END
|
||||
|
||||
IF SurfScanSigReq THEN
|
||||
Vals := 1:@RM:STR(ReqBackColor:@RM,2)
|
||||
END ELSE
|
||||
Vals := 1:@RM:STR(DefBack:@RM,2)
|
||||
END
|
||||
|
||||
IF Vals[-1,1] = @RM THEN Vals[-1,1] = ''
|
||||
|
||||
Ctrls = @WINDOW:'.CLEANS_GROUP':@RM ; Props = 'ENABLED':@RM
|
||||
Ctrls := @WINDOW:'.CLEANS_GROUP':@RM ; Props := 'BACKCOLOR':@RM
|
||||
Ctrls := @WINDOW:'.CLEAN_RESULTS_GROUP':@RM ; Props := 'BACKCOLOR':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_CLEAN_REQ':@RM ; Props := 'BACKCOLOR':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_CLEAN_SUBOXIDE':@RM ; Props := 'BACKCOLOR':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_CLEAN_TOOL_LABEL':@RM ; Props := 'BACKCOLOR':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_CLEAN_RECIPE_LABEL':@RM ; Props := 'BACKCOLOR':@RM
|
||||
|
||||
Ctrls := @WINDOW:'.INSP_RESULT_GROUP':@RM ; Props := 'ENABLED':@RM
|
||||
Ctrls := @WINDOW:'.INSP_RESULT_GROUP':@RM ; Props := 'BACKCOLOR':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_INSP_REQ':@RM ; Props := 'BACKCOLOR':@RM ;* Checkbox
|
||||
Ctrls := @WINDOW:'.SPEC_BRIGHTLIGHT':@RM ; Props := 'BACKCOLOR':@RM ;* Checkbox (currently hidden and not used)
|
||||
Ctrls := @WINDOW:'.SPEC_MICROSCOPE':@RM ; Props := 'BACKCOLOR':@RM ;* Checkbox
|
||||
Ctrls := @WINDOW:'.CHK_EDGE':@RM ; Props := 'BACKCOLOR':@RM ;* Checkbox
|
||||
Ctrls := @WINDOW:'.BACKSIDE_LABEL':@RM ; Props := 'BACKCOLOR':@RM ;* Backside Label
|
||||
|
||||
Ctrls := @WINDOW:'.SURF_SCAN_GROUP':@RM ; Props := 'ENABLED':@RM
|
||||
Ctrls := @WINDOW:'.SURF_SCAN_GROUP':@RM ; Props := 'BACKCOLOR':@RM
|
||||
Ctrls := @WINDOW:'.SPEC_SURFSCAN_REQ' ; Props := 'BACKCOLOR'
|
||||
|
||||
Set_Property(Ctrls,Props,Vals)
|
||||
|
||||
* ROTR 2/1/2012
|
||||
|
||||
RotrAction = Get_Property(@WINDOW:'.ROTR_ACTION','TEXT')
|
||||
|
||||
BEGIN CASE
|
||||
CASE RotrAction = 'Passed'
|
||||
RBackColor = GREEN$ ;*LS1_GREEN$
|
||||
BypassEnabled = False$
|
||||
RBackColor = GREEN$ ;*LS1_GREEN$
|
||||
BypassEnabled = False$
|
||||
CASE RotrAction = 'Failed'
|
||||
RBackColor = RED$
|
||||
BypassEnabled = MemberOf(@USER4, 'ENGINEERING') OR MemberOf(@USER4, 'LEAD') OR MemberOf(@USER4, 'SUPERVISOR') OR MemberOf(@USER4, 'OI_ADMIN') OR MemberOf(@USER4, 'ROTR_OVERRIDE')
|
||||
RBackColor = RED$
|
||||
BypassEnabled = MemberOf(@USER4, 'ENGINEERING') OR MemberOf(@USER4, 'LEAD') OR MemberOf(@USER4, 'SUPERVISOR') OR MemberOf(@USER4, 'OI_ADMIN') OR MemberOf(@USER4, 'ROTR_OVERRIDE')
|
||||
CASE RotrAction = 'Waived'
|
||||
RBackColor = YELLOW$ ;*CMB_YELLOW$
|
||||
BypassEnabled = False$
|
||||
RBackColor = YELLOW$ ;*CMB_YELLOW$
|
||||
BypassEnabled = False$
|
||||
CASE RotrAction = 'Accepted'
|
||||
RBackColor = ORANGE$
|
||||
BypassEnabled = False$
|
||||
RBackColor = ORANGE$
|
||||
BypassEnabled = False$
|
||||
CASE 1
|
||||
IF SurfScanSigReq THEN
|
||||
RBackColor = ReqBackColor
|
||||
@ -620,17 +498,15 @@ Refresh:
|
||||
BypassEnabled = False$
|
||||
END CASE
|
||||
|
||||
Ctrls = @WINDOW:'.ROTR_GROUP':@FM ; Props = 'BACKCOLOR':@FM ; Vals = RBackColor:@FM
|
||||
Ctrls = @WINDOW:'.OLE_TAB_ROTR':@FM ; Props = 'OLE.CustomPaneColor':@FM ; Vals = RBackColor:@FM
|
||||
* Ctrls := @WINDOW:'.ROTR_ACTION':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
* Ctrls := @WINDOW:'.ROTR_ACTION.NONE':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
* Ctrls := @WINDOW:'.ROTR_ACTION.PASS':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
* Ctrls := @WINDOW:'.ROTR_ACTION.FAIL':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
* Ctrls := @WINDOW:'.ROTR_ACTION.WAIVED':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
Ctrls := @WINDOW:'.ROTR_ACTION':@FM ; Props := 'ENABLED':@FM ; Vals := 0:@FM
|
||||
Ctrls := @WINDOW:'.EDL_ROTR_REASON':@FM ; Props := 'ENABLED':@FM ; Vals := 0:@FM
|
||||
Ctrls := @WINDOW:'.SIGN_ROTR_ACCEPTANCE':@FM ; Props := 'ENABLED':@FM ; Vals := BypassEnabled:@FM
|
||||
Ctrls := @WINDOW ; Props := 'REDRAW' ; Vals := 1
|
||||
Ctrls = @WINDOW:'.ROTR_STATUS_LABEL':@FM ; Props = 'BACKCOLOR':@FM ; Vals = RBackColor:@FM
|
||||
Ctrls := @WINDOW:'.ROTR_REASON_LABEL':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
Ctrls := @WINDOW:'.SIGN_ROTR_SIGNATURE_LABEL':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
Ctrls := @WINDOW:'.SIGN_ROTR_REASON_LABEL':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
Ctrls := @WINDOW:'.ROTR_GROUP':@FM ; Props := 'BACKCOLOR':@FM ; Vals := RBackColor:@FM
|
||||
Ctrls := @WINDOW:'.ROTR_ACTION':@FM ; Props := 'ENABLED':@FM ; Vals := 0:@FM
|
||||
Ctrls := @WINDOW:'.EDL_ROTR_REASON':@FM ; Props := 'ENABLED':@FM ; Vals := 0:@FM
|
||||
Ctrls := @WINDOW:'.SIGN_ROTR_ACCEPTANCE':@FM ; Props := 'ENABLED':@FM ; Vals := BypassEnabled:@FM
|
||||
Ctrls := @WINDOW ; Props := 'REDRAW' ; Vals := 1
|
||||
|
||||
Convert @FM to @RM in Ctrls
|
||||
Convert @FM to @RM in Props
|
||||
@ -638,8 +514,6 @@ Refresh:
|
||||
Set_Property(Ctrls,Props,Vals)
|
||||
Set_Property(@Window:'.OLE_PIC_ROTR', 'OLE.BackgroundColor', RBackColor)
|
||||
|
||||
*
|
||||
|
||||
IF Get_Property(@WINDOW:'.SPC_DTM','DEFPROP') = '' THEN
|
||||
Set_Property(@WINDOW:'.SEND_SPC','TEXT','Send to SPC')
|
||||
END ELSE
|
||||
@ -757,43 +631,6 @@ Refresh:
|
||||
SurfResults[COL1(),99] = ''
|
||||
REPEAT
|
||||
|
||||
/*
|
||||
OutOfSpec = 0 ;* Set Flag
|
||||
|
||||
|
||||
IF SSurfRecipes NE '' THEN
|
||||
ResCnt = COUNT(SurfResults,@FM) + (SurfResults NE '')
|
||||
|
||||
FOR I = 1 TO ResCnt
|
||||
ResRecipe = SurfResults<I,COL$SCAN_RECIPE>
|
||||
LOCATE ResRecipe IN SSurfRecipes USING @VM SETTING Pos THEN
|
||||
SSurfDefect = SSurfDefects<1,Pos>
|
||||
SSurfHaze = SSurfHazes<1,Pos>
|
||||
|
||||
* 8/9/2013 JCH - Added check for presence of Spec data before checking for out of spec condition
|
||||
|
||||
IF SSurfDefect NE '' THEN
|
||||
IF SurfResults<1,COL$SCAN_SUM_OF_DEF_AVG> > SSurfDefect THEN OutOfSpec = 1
|
||||
END
|
||||
|
||||
IF SSurfHaze NE '' THEN
|
||||
IF SurfResults<1,COL$SCAN_HAZE_AVG_AVG> > SSurfHaze THEN OutOfSpec = 1
|
||||
END
|
||||
END
|
||||
|
||||
NEXT I
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
IF OutOfSpec = 1 THEN
|
||||
Set_Property(@WINDOW:'.SCAN_RESULTS','BACKCOLOR',RED$)
|
||||
END ELSE
|
||||
Set_Property(@WINDOW:'.SCAN_RESULTS','BACKCOLOR',WHITE$)
|
||||
END
|
||||
*/
|
||||
|
||||
CurrRec = Get_Property(@Window, 'RECORD')
|
||||
ScanResults = CurrRec<CLEAN_INSP_SCAN_RESULT$>
|
||||
CtrlName = @WINDOW:'.SCAN_RESULTS'
|
||||
@ -830,8 +667,6 @@ Refresh:
|
||||
|
||||
Set_Property(Ctrls,Props,Vals)
|
||||
|
||||
|
||||
|
||||
* Turn edit table symbolic column backgrounds to green **************************************************
|
||||
|
||||
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
|
||||
@ -909,15 +744,6 @@ RETURN
|
||||
Delete:
|
||||
* * * * * * *
|
||||
|
||||
/*
|
||||
IF Security_Check('Order',Delete$) THEN
|
||||
Result = 1 ;* Proceed with delete
|
||||
END ELSE
|
||||
Security_Err_Msg('Order',Delete$)
|
||||
Result = 0 ;* Stop event chain
|
||||
END
|
||||
*/
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
@ -980,15 +806,25 @@ SignClean:
|
||||
|
||||
IF SigRow NE '' AND CtrlList<SelectedRow,COL$CLEAN_SIG> = '' THEN
|
||||
|
||||
If ( (SelectedRow EQ 1) and (ReactType NE 'EPP') ) then
|
||||
If SelectedRow EQ 1 then
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
Signature_Services('CheckSigOrder', WOMatKey, SigStage)
|
||||
Signature_Services('CheckSigOrder', WOMatKey, SigStage, RDSNo)
|
||||
If Error_Services('HasError') then
|
||||
ErrMsg(Error_Services('GetMessage'))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
// Add check for supplement signatures
|
||||
ValidStages = Supplement_Services('GetStagesForLot', 'RDS', RDSNo)
|
||||
If Count(ValidStages, SigStage) NE 0 then
|
||||
UnacknowledgedSupp = Supplement_Services('UnacknowledgedSupplementCheck', 'RDS', RDSNo, SigStage)
|
||||
If UnacknowledgedSupp NE FALSE$ then
|
||||
Response = Dialog_Box('NDW_RDS_SUPP_SIG', @Window, RDSNo :@FM: SigStage :@FM: FALSE$)
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
End
|
||||
|
||||
IF MemberOf(@USER4, 'OI_SUPERUSER') THEN
|
||||
Valid = 1
|
||||
END ELSE
|
||||
@ -1184,9 +1020,9 @@ SignInsp:
|
||||
|
||||
IF SigRow NE '' AND CtrlList<SelectedRow,COL$INSP_SIG> = '' THEN
|
||||
|
||||
If ( (SelectedRow EQ 1) and (ReactType NE 'EPP') ) then
|
||||
If SelectedRow EQ 1 then
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
Signature_Services('CheckSigOrder', WOMatKey, SigStage, False$)
|
||||
Signature_Services('CheckSigOrder', WOMatKey, SigStage, False$, RDSNo)
|
||||
If Error_Services('HasError') then
|
||||
ErrMsg(Error_Services('GetMessage'))
|
||||
return
|
||||
@ -1194,6 +1030,16 @@ SignInsp:
|
||||
|
||||
END ;* End of check for 1st Signature row
|
||||
|
||||
// Add check for supplement signatures
|
||||
ValidStages = Supplement_Services('GetStagesForLot', 'RDS', RDSNo)
|
||||
If Count(ValidStages, SigStage) NE 0 then
|
||||
UnacknowledgedSupp = Supplement_Services('UnacknowledgedSupplementCheck', 'RDS', RDSNo, SigStage)
|
||||
If UnacknowledgedSupp NE FALSE$ then
|
||||
Response = Dialog_Box('NDW_RDS_SUPP_SIG', @Window, RDSNo :@FM: SigStage :@FM: FALSE$)
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
End
|
||||
|
||||
// Check if edge inspection is prescribed. If so, prompt user whether or not edge defects are present.
|
||||
If EdgeInspReq then
|
||||
// If edge defects are present, present user with a wafer selection dialog and create an NCR for those wafers.
|
||||
@ -1674,8 +1520,6 @@ SignInsp:
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
SignScan:
|
||||
* * * * * * *
|
||||
@ -1738,15 +1582,25 @@ SignScan:
|
||||
|
||||
IF SigRow NE '' AND CtrlList<SelectedRow,COL$SCAN_SIG> = '' AND CtrlList<SelectedRow,COL$SCAN_SIG_DTM> = '' THEN
|
||||
|
||||
If ( (SelectedRow EQ 1) and (ReactType NE 'EPP') ) then
|
||||
If SelectedRow EQ 1 then
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
Signature_Services('CheckSigOrder', WOMatKey, SigStage, False$)
|
||||
Signature_Services('CheckSigOrder', WOMatKey, SigStage, False$, RDSNo)
|
||||
If Error_Services('HasError') then
|
||||
ErrMsg(Error_Services('GetMessage'))
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
// Add check for supplement signatures
|
||||
ValidStages = Supplement_Services('GetStagesForLot', 'RDS', RDSNo)
|
||||
If Count(ValidStages, SigStage) NE 0 then
|
||||
UnacknowledgedSupp = Supplement_Services('UnacknowledgedSupplementCheck', 'RDS', RDSNo, SigStage)
|
||||
If UnacknowledgedSupp NE FALSE$ then
|
||||
Response = Dialog_Box('NDW_RDS_SUPP_SIG', @Window, RDSNo :@FM: SigStage :@FM: FALSE$)
|
||||
If Response EQ False$ then return
|
||||
end
|
||||
End
|
||||
|
||||
// This checks to see if manually entered data is authorized to be signed.
|
||||
IF (SigRow NE '') AND (CtrlList<SelectedRow,COL$SCAN_TEST_RUN_DTM> = '') AND (Stage NE 'POST') THEN
|
||||
Authorized = MemberOf(@USER4, 'ENGINEERING') OR MemberOf(@USER4, 'LEAD') OR MemberOf(@USER4, 'SUPERVISOR') OR MemberOf(@USER4, 'ROTR_OVERRIDE')
|
||||
@ -1836,35 +1690,6 @@ RETURN
|
||||
|
||||
SIGN_ROTR_ACCEPTANCE.CLICK:
|
||||
|
||||
// ROTR Development Code - 11/21/18 - djs --------------------------------------------------------------------------
|
||||
* Stage = Get_Property(@Window : '.STAGE', 'TEXT')
|
||||
* If Stage EQ 'LWI' then
|
||||
* CIKey = Get_Property(@Window : '.CI_NO', 'TEXT')
|
||||
* ReactorNo = Xlate('CLEAN_INSP', CIKey, 'REACT_NO', 'X')
|
||||
* ROTREnabled = Xlate('REACTOR', ReactorNo, 'ENABLE_ROTR', 'X')
|
||||
* If (ROTREnabled EQ True$) then
|
||||
* ROTRReason = Get_Property(@Window : '.EDL_ROTR_REASON', 'TEXT')
|
||||
* ErrorMsg = ''
|
||||
* RDSNo = Get_Property(@Window : '.RDS_NO', 'TEXT')
|
||||
* PostCINo = Xlate('RDS', RDSNo, 'POST_CI_NO', 'X')
|
||||
* PostCleanSig = Xlate('CLEAN_INSP', PostCINo, 'CLEAN_SIG', 'X')
|
||||
* Begin Case
|
||||
* Case ( (ROTRReason EQ 'Wafer fail limit met - 100% scan required') and (PostCleanSig EQ '') )
|
||||
* ErrorMsg = 'A 100% scan must be run or a post clean must be completed in order to accept ROTR.'
|
||||
* Case ROTRReason EQ 'ROTR awaiting processing'
|
||||
* ErrorMsg = 'ROTR cannot be accepted until after ROTR data has finished processing.'
|
||||
* Case Otherwise$
|
||||
* Null
|
||||
* // Allow ROTR acceptance
|
||||
* End Case
|
||||
* If ErrorMsg NE '' then
|
||||
* Msg(@Window, '', 'OK', '', ROTRReason:@FM:ErrorMsg)
|
||||
* return
|
||||
* end
|
||||
* end
|
||||
* end
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Valid = Dialog_Box( 'QUOTE_SIG_PWD_ENTRY', @WINDOW, @USER4:@VM:XLATE( 'LSL_USERS', @USER4, LSL_USERS_PASSWORD$, 'X' ) )
|
||||
If Valid EQ True$ then
|
||||
OrigReason = Get_Property(@Window : '.SIGN_ROTR_REASON', 'DEFPROP')
|
||||
@ -1882,14 +1707,11 @@ return
|
||||
|
||||
SCAN_RESULTS.CHAR:
|
||||
|
||||
// ROTR Development Code - 11/21/18 - djs --------------------------------------------------------------------------
|
||||
Stage = Get_Property(@Window : '.STAGE', 'TEXT')
|
||||
If Stage EQ 'LWI' then
|
||||
CtrlEntID = 'SCAN_RESULTS'
|
||||
CIKey = Get_Property(@Window : '.CI_NO', 'TEXT')
|
||||
ReactorNo = Xlate('CLEAN_INSP', CIKey, 'REACT_NO', 'X')
|
||||
* ROTREnabled = Xlate('REACTOR', ReactorNo, 'ENABLE_ROTR', 'X')
|
||||
* If (ROTREnabled EQ True$) then
|
||||
CanEdit = Get_Property(@Window, '@CAN_EDIT')
|
||||
If Not(CanEdit) then
|
||||
PrevFocusID = Get_Property (@Window, "PREVFOCUS")
|
||||
@ -1934,21 +1756,19 @@ SCAN_RESULTS.CHAR:
|
||||
ScanStyles<COL$SCAN_TOOL> = BitOr(ScanStyles<COL$SCAN_TOOL>, DTCS_DROPDOWN$ )
|
||||
ScanStyles = Send_Message(@Window : '.SCAN_RESULTS', 'COLSTYLE', 0, ScanStyles)
|
||||
end
|
||||
* end
|
||||
end
|
||||
****************Logging Manual Data Entry********************
|
||||
TableContents = Get_Property(@Window:'.SCAN_RESULTS', 'ARRAY')
|
||||
ToolID = TableContents<COL$SCAN_TOOL, 1>
|
||||
IF ToolID NE '' then
|
||||
Date = SRP_DateTime('Now')
|
||||
EpochStart = 00732
|
||||
EpochTime = SRP_DateTime('SecondSpan',EpochStart, Date)
|
||||
RDSNo = Get_Property(@Window:'.RDS_NO', 'DEFPROP')
|
||||
PSNo = Get_Property(@Window:'.PS_NO', 'DEFPROP')
|
||||
//Tool = Get_Property(@Window:'.SPEC_THICK_MTOOL', 'DEFPROP')
|
||||
User = @User4
|
||||
Date = SRP_DateTime('Now')
|
||||
EpochStart = 00732
|
||||
EpochTime = SRP_DateTime('SecondSpan',EpochStart, Date)
|
||||
RDSNo = Get_Property(@Window:'.RDS_NO', 'DEFPROP')
|
||||
PSNo = Get_Property(@Window:'.PS_NO', 'DEFPROP')
|
||||
User = @User4
|
||||
Description = 'Manual SurfScan Data Entry detected for RDS #: ':RDSNo
|
||||
Reactor = XLATE('RDS', RDSNo, 2, 'X')
|
||||
Reactor = XLATE('RDS', RDSNo, 2, 'X')
|
||||
|
||||
FileName = Environment_Services('GetApplicationRootPath'): '\LogFiles\ManualDataEntry\PollPath\' : EpochTime :'.json'
|
||||
|
||||
@ -1957,7 +1777,6 @@ SCAN_RESULTS.CHAR:
|
||||
|
||||
OSWrite JSON to FileName
|
||||
end
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
return
|
||||
|
||||
@ -2015,7 +1834,6 @@ RefreshSpec:
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
InspPC:
|
||||
* * * * * * *
|
||||
@ -2056,9 +1874,6 @@ BSideInspPC:
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
SendSPC:
|
||||
* * * * * * *
|
||||
@ -2121,7 +1936,7 @@ SendSPC:
|
||||
|
||||
DOSFile = Environment_Services('GetSPCDataPath') : '\SPC_Surf.txt'
|
||||
|
||||
* * * * * * *
|
||||
* * * * * * *
|
||||
DosRead:
|
||||
* * * * * * *
|
||||
|
||||
@ -2148,3 +1963,5 @@ SetGroupBackground:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user