pre cutover push

This commit is contained in:
Infineon\StieberD
2024-09-04 20:33:41 -07:00
parent 6ea6969f4b
commit 7762b129af
2072 changed files with 130000 additions and 95295 deletions

View File

@ -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: