removed dead code
This commit is contained in:
@ -581,171 +581,131 @@ Refresh:
|
||||
// RDS_UNLOAD
|
||||
|
||||
If @WINDOW EQ 'RDS_UNLOAD' then
|
||||
|
||||
DevelopmentFlag = Xlate('DEVELOPMENT', 'HGCV', 'STATUS', 'X')
|
||||
|
||||
CtrlName = @WINDOW:'.EDT_QA_MET'
|
||||
Set_Property(@Window : '.MET_TEST', 'VISIBLE', False$)
|
||||
Set_Property(CtrlName, 'VISIBLE', True$)
|
||||
MetList = Get_Property(CtrlName,'LIST')
|
||||
ThickOutOfSpec = False$
|
||||
CresOutOfSpec = False$
|
||||
MLCnt = COUNT(MetList,@FM) + (MetList NE '')
|
||||
FOR Line = 1 TO MLCnt
|
||||
IF MetList<Line,COL$UL_MET_TEST> NE '' THEN
|
||||
MetResult = MetList<Line,COL$UL_MET_RESULT>
|
||||
MetMin = MetList<Line,COL$UL_MET_MIN>
|
||||
MetMax = MetList<Line,COL$UL_MET_MAX>
|
||||
PhaseMin = MetList<Line,COL$UL_MET_PHASE_MIN>
|
||||
PhaseResult = MetList<Line,COL$UL_MET_PHASE_RESULT>
|
||||
ScanRecipe = MetList<Line,COL$UL_MET_RECIPE>
|
||||
PSN = Get_Property(@Window : '.PSN', 'TEXT')
|
||||
PRSStageKey = PSN:'*UNLOAD'
|
||||
MetTest = MetList<Line,COL$UL_MET_TEST>
|
||||
PRSStageRec = Database_Services('ReadDataRow', 'PRS_STAGE', PRSStageKey)
|
||||
SpecTests = PRSStageRec<PRS_STAGE_MET_TEST$>
|
||||
SpecRecipe = ''
|
||||
RDSNo = Get_Property(@Window:'.RDS_NO', 'TEXT')
|
||||
QAMetKey = Xlate('RDS', RDSNo, 'WO_MAT_KEY', 'X')
|
||||
WOMatQARec = Database_Services('ReadDataRow', 'WO_MAT_QA', QAMetKey)
|
||||
DataPoints = WOMatQARec<WO_MAT_QA_DATA_POINTS$, Line>
|
||||
Begin Case
|
||||
Case MetTest EQ 'THICK_ONLY'
|
||||
// Check each point to see if any are out of spec
|
||||
For each DataPoint in DataPoints using @SVM setting ThickIndex
|
||||
Until DataPoint EQ ''
|
||||
Begin Case
|
||||
Case ThickIndex GT 10
|
||||
Null
|
||||
Case (DataPoint EQ '')
|
||||
ThickOutOfSpec = True$
|
||||
Case (DataPoint GT MetMax) OR (DataPoint LT MetMin)
|
||||
ThickOutOfSpec = True$
|
||||
End Case
|
||||
Next DataPoint
|
||||
|
||||
Case MetTest EQ 'CRES'
|
||||
// Check critical points to see if any are out of spec (both HgCV and Phase)
|
||||
CriticalPoints = '1,2,5,6,9'
|
||||
For each DataPoint in DataPoints using @SVM setting CresIndex
|
||||
Until DataPoint EQ ''
|
||||
HgCVDataPoint = DataPoint[1, 'F':@TM]
|
||||
PhaseDataPoint = DataPoint[-1, 'B':@TM]
|
||||
CriticalPoint = Index(CriticalPoints, CresIndex, 1)
|
||||
Begin Case
|
||||
Case (HgCVDataPoint EQ '') and CriticalPoint
|
||||
CresOutOfSpec = True$
|
||||
Case (PhaseDataPoint EQ '') and CriticalPoint
|
||||
CresOutOfSpec = True$
|
||||
Case (HgCVDataPoint GT MetMax) OR (HgCVDataPoint LT MetMin) and CriticalPoint
|
||||
CresOutOfSpec = True$
|
||||
Case (PhaseDataPoint LT PhaseMin) and CriticalPoint
|
||||
CresOutOfSpec = True$
|
||||
End Case
|
||||
Next DataPoint
|
||||
End Case
|
||||
QAMetOutofSpec = (ThickOutOfSpec or CresOutOfSpec)
|
||||
Locate MetTest in SpecTests using @VM setting vPos then
|
||||
SpecRecipe = PRSStageRec<PRS_STAGE_MET_RECIPE$, vPos>
|
||||
end
|
||||
NoError = True$
|
||||
|
||||
If (DevelopmentFlag EQ True$) then
|
||||
|
||||
CtrlName = @WINDOW:'.EDT_QA_MET'
|
||||
Set_Property(@Window : '.MET_TEST', 'VISIBLE', False$)
|
||||
Set_Property(CtrlName, 'VISIBLE', True$)
|
||||
MetList = Get_Property(CtrlName,'LIST')
|
||||
ThickOutOfSpec = False$
|
||||
CresOutOfSpec = False$
|
||||
MLCnt = COUNT(MetList,@FM) + (MetList NE '')
|
||||
FOR Line = 1 TO MLCnt
|
||||
IF MetList<Line,COL$UL_MET_TEST> NE '' THEN
|
||||
MetResult = MetList<Line,COL$UL_MET_RESULT>
|
||||
MetMin = MetList<Line,COL$UL_MET_MIN>
|
||||
MetMax = MetList<Line,COL$UL_MET_MAX>
|
||||
PhaseMin = MetList<Line,COL$UL_MET_PHASE_MIN>
|
||||
PhaseResult = MetList<Line,COL$UL_MET_PHASE_RESULT>
|
||||
ScanRecipe = MetList<Line,COL$UL_MET_RECIPE>
|
||||
PSN = Get_Property(@Window : '.PSN', 'TEXT')
|
||||
PRSStageKey = PSN:'*UNLOAD'
|
||||
MetTest = MetList<Line,COL$UL_MET_TEST>
|
||||
PRSStageRec = Database_Services('ReadDataRow', 'PRS_STAGE', PRSStageKey)
|
||||
SpecTests = PRSStageRec<PRS_STAGE_MET_TEST$>
|
||||
SpecRecipe = ''
|
||||
RDSNo = Get_Property(@Window:'.RDS_NO', 'TEXT')
|
||||
QAMetKey = Xlate('RDS', RDSNo, 'WO_MAT_KEY', 'X')
|
||||
WOMatQARec = Database_Services('ReadDataRow', 'WO_MAT_QA', QAMetKey)
|
||||
DataPoints = WOMatQARec<WO_MAT_QA_DATA_POINTS$, Line>
|
||||
Begin Case
|
||||
Case MetTest EQ 'THICK_ONLY'
|
||||
// Check each point to see if any are out of spec
|
||||
For each DataPoint in DataPoints using @SVM setting ThickIndex
|
||||
Until DataPoint EQ ''
|
||||
Begin Case
|
||||
Case ThickIndex GT 10
|
||||
Null
|
||||
Case (DataPoint EQ '')
|
||||
ThickOutOfSpec = True$
|
||||
Case (DataPoint GT MetMax) OR (DataPoint LT MetMin)
|
||||
ThickOutOfSpec = True$
|
||||
End Case
|
||||
Next DataPoint
|
||||
|
||||
Case MetTest EQ 'CRES'
|
||||
// Check critical points to see if any are out of spec (both HgCV and Phase)
|
||||
CriticalPoints = '1,2,5,6,9'
|
||||
For each DataPoint in DataPoints using @SVM setting CresIndex
|
||||
Until DataPoint EQ ''
|
||||
HgCVDataPoint = DataPoint[1, 'F':@TM]
|
||||
PhaseDataPoint = DataPoint[-1, 'B':@TM]
|
||||
CriticalPoint = Index(CriticalPoints, CresIndex, 1)
|
||||
Begin Case
|
||||
Case (HgCVDataPoint EQ '') and CriticalPoint
|
||||
CresOutOfSpec = True$
|
||||
Case (PhaseDataPoint EQ '') and CriticalPoint
|
||||
CresOutOfSpec = True$
|
||||
Case (HgCVDataPoint GT MetMax) OR (HgCVDataPoint LT MetMin) and CriticalPoint
|
||||
CresOutOfSpec = True$
|
||||
Case (PhaseDataPoint LT PhaseMin) and CriticalPoint
|
||||
CresOutOfSpec = True$
|
||||
End Case
|
||||
Next DataPoint
|
||||
End Case
|
||||
QAMetOutofSpec = (ThickOutOfSpec or CresOutOfSpec)
|
||||
Locate MetTest in SpecTests using @VM setting vPos then
|
||||
SpecRecipe = PRSStageRec<PRS_STAGE_MET_RECIPE$, vPos>
|
||||
end
|
||||
NoError = True$
|
||||
|
||||
If (MetList<Line,COL$UL_MET_RESULT> EQ '') then
|
||||
Color = YELLOW$
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If QAMetOutofSpec EQ True$ then
|
||||
Color = BYELLOW$:@FM:BLACK$:@FM:BYELLOW$:@FM:BLACK$
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If (MetResult LT MetMin) then
|
||||
Color = RED$:@FM:'':@FM:BRED$:@FM:''
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If (MetResult GT MetMax) then
|
||||
Color = RED$:@FM:'':@FM:BRED$:@FM:''
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If (PhaseResult LT PhaseMin) then
|
||||
Color = RED$:@FM:'':@FM:BRED$:@FM:''
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_PHASE_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
QAFailReason = WOMatQARec<WO_MAT_QA_FAIL_REASON$, Line>
|
||||
DetectedFail = Index(QAFailReason, 'Number of data points is less than the required amount', 1)
|
||||
If (ScanRecipe NE SpecRecipe) OR (DetectedFail) then
|
||||
Color = RED$:@FM:'':@FM:BRED$:@FM:''
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RECIPE, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If (NoError EQ True$) then
|
||||
Color = GREEN$
|
||||
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,Line,Color)
|
||||
end
|
||||
|
||||
END ELSE
|
||||
Color = GREEN$
|
||||
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,Line,Color)
|
||||
END
|
||||
|
||||
NEXT Line
|
||||
|
||||
Set_Property(@WINDOW:'.BUTTON_11','ENABLED',EnableUnloadButton)
|
||||
|
||||
IF MemberOf(@USER4, 'OI_ADMIN') THEN
|
||||
Set_Property(@WINDOW:'.CLEAR_EPI_UNLOAD','VISIBLE',1)
|
||||
END ELSE
|
||||
Set_Property(@WINDOW:'.CLEAR_EPI_UNLOAD','VISIBLE',0)
|
||||
END
|
||||
|
||||
|
||||
end else
|
||||
|
||||
CtrlName = @WINDOW:'.MET_TEST'
|
||||
Set_Property(@Window : '.EDT_QA_MET', 'VISIBLE', False$)
|
||||
Set_Property(CtrlName, 'VISIBLE', True$)
|
||||
MetList = Get_Property(CtrlName,'LIST')
|
||||
|
||||
MLCnt = COUNT(MetList,@FM) + (MetList NE '')
|
||||
FOR Line = 1 TO MLCnt
|
||||
IF MetList<Line,COL$MET_TEST> NE '' THEN
|
||||
BEGIN CASE
|
||||
CASE MetList<Line,COL$MET_RESULT> = ''
|
||||
Color = YELLOW$
|
||||
CASE MetList<Line,COL$MET_RESULT> < MetList<Line,COL$MET_MIN> OR MetList<Line,COL$MET_RESULT> > MetList<Line,COL$MET_MAX>
|
||||
Color = RED$
|
||||
CASE 1
|
||||
Color = GREEN$
|
||||
END CASE
|
||||
|
||||
END ELSE
|
||||
Color = GREEN$
|
||||
END;* End of check for Met Test on the current line
|
||||
|
||||
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,Line,Color)
|
||||
NEXT Line
|
||||
|
||||
Set_Property(@WINDOW:'.BUTTON_11','ENABLED',EnableUnloadButton)
|
||||
|
||||
IF MemberOf(@USER4, 'OI_ADMIN') THEN
|
||||
Set_Property(@WINDOW:'.CLEAR_EPI_UNLOAD','VISIBLE',1)
|
||||
END ELSE
|
||||
Set_Property(@WINDOW:'.CLEAR_EPI_UNLOAD','VISIBLE',0)
|
||||
END
|
||||
end
|
||||
end
|
||||
If (MetList<Line,COL$UL_MET_RESULT> EQ '') then
|
||||
Color = YELLOW$
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If QAMetOutofSpec EQ True$ then
|
||||
Color = BYELLOW$:@FM:BLACK$:@FM:BYELLOW$:@FM:BLACK$
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If (MetResult LT MetMin) then
|
||||
Color = RED$:@FM:'':@FM:BRED$:@FM:''
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If (MetResult GT MetMax) then
|
||||
Color = RED$:@FM:'':@FM:BRED$:@FM:''
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If (PhaseResult LT PhaseMin) then
|
||||
Color = RED$:@FM:'':@FM:BRED$:@FM:''
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_PHASE_RESULT, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
QAFailReason = WOMatQARec<WO_MAT_QA_FAIL_REASON$, Line>
|
||||
DetectedFail = Index(QAFailReason, 'Number of data points is less than the required amount', 1)
|
||||
If (ScanRecipe NE SpecRecipe) OR (DetectedFail) then
|
||||
Color = RED$:@FM:'':@FM:BRED$:@FM:''
|
||||
stat = Send_Message(CtrlName, 'COLOR_BY_POS', COL$UL_MET_RECIPE, Line, Color)
|
||||
NoError = False$
|
||||
end
|
||||
|
||||
If (NoError EQ True$) then
|
||||
Color = GREEN$
|
||||
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,Line,Color)
|
||||
end
|
||||
|
||||
END ELSE
|
||||
Color = GREEN$
|
||||
stat = Send_Message(CtrlName,'COLOR_BY_POS',0,Line,Color)
|
||||
END
|
||||
|
||||
NEXT Line
|
||||
|
||||
Set_Property(@WINDOW:'.BUTTON_11','ENABLED',EnableUnloadButton)
|
||||
|
||||
IF MemberOf(@USER4, 'OI_ADMIN') THEN
|
||||
Set_Property(@WINDOW:'.CLEAR_EPI_UNLOAD','VISIBLE',1)
|
||||
END ELSE
|
||||
Set_Property(@WINDOW:'.CLEAR_EPI_UNLOAD','VISIBLE',0)
|
||||
END
|
||||
end
|
||||
* End of check for Unload OR Post_Epi windows
|
||||
|
||||
****************************************************************************************************************************************
|
||||
@ -2669,9 +2629,8 @@ MetTestDC:
|
||||
Lines = Get_Property(@WINDOW:'.MET_TEST', 'LIST')
|
||||
TestLine = Lines<CurrRow>
|
||||
LWRHOTest = Indexc(TestLine, 'LW_RHO', 1)
|
||||
DevelopmentFlag = Xlate('DEVELOPMENT', 'HGCV', 'STATUS', 'X')
|
||||
|
||||
If (DevelopmentFlag EQ True$) and (@Window EQ 'RDS_UNLOAD') and (LWRHOTest EQ False$) then
|
||||
If (@Window EQ 'RDS_UNLOAD') and (LWRHOTest EQ False$) then
|
||||
Ctrls := @WINDOW:'.EDT_QA_MET':@RM ; Props := 'SELPOS':@RM
|
||||
Ctrls := @WINDOW:'.EDT_QA_MET' ; Props := 'LIST'
|
||||
end else
|
||||
@ -2708,8 +2667,7 @@ MetTestDC:
|
||||
BEGIN CASE
|
||||
CASE MetTest EQ ''
|
||||
Null
|
||||
|
||||
CASE (@WINDOW = 'RDS_UNLOAD') and (DevelopmentFlag EQ True$) and (LWRHOTest EQ False$)
|
||||
CASE (@WINDOW = 'RDS_UNLOAD') and (LWRHOTest EQ False$)
|
||||
ReturnVal = Dialog_Box('NDW_QA_MET_RESULT', @WINDOW, CassID)
|
||||
Send_Event(@Window, "READ")
|
||||
CASE Otherwise$
|
||||
@ -2863,57 +2821,47 @@ return
|
||||
|
||||
RefreshWaferCounterData:
|
||||
|
||||
WCCheckEnabled = Xlate('APP_INFO', 'WAFER_COUNTER_CHECK', '', 'X')
|
||||
If WCCheckEnabled then
|
||||
|
||||
Set_Property(@Window:'.LBL_WAFER_COUNTER_QTY', 'VISIBLE', True$)
|
||||
Set_Property(@Window:'.EDL_WAFER_COUNTER_QTY', 'VISIBLE', True$)
|
||||
QtyBackColor = GREEN$
|
||||
RDSNo = Get_Property(@Window : '.RDS_NO','DEFPROP')
|
||||
If RDSNo NE '' then
|
||||
FqaWcRec = Wafer_Counter_Services('GetLastScan', RDSNo, 'QA')
|
||||
WaferCounterQty = FqaWcRec<WAFER_COUNTER.SCAN_QTY$>
|
||||
Set_Property(@Window, '@ORIG_WFR_CTR_QTY', WaferCounterQty)
|
||||
WafersOut = Get_Property(@WINDOW:'.WAFERS_OUT','TEXT')
|
||||
Set_Property(@WINDOW:'.EDL_WAFER_COUNTER_QTY','DEFPROP', WaferCounterQty)
|
||||
Set_Property(@Window:'.LBL_WAFER_COUNTER_QTY', 'VISIBLE', True$)
|
||||
Set_Property(@Window:'.EDL_WAFER_COUNTER_QTY', 'VISIBLE', True$)
|
||||
QtyBackColor = GREEN$
|
||||
RDSNo = Get_Property(@Window : '.RDS_NO','DEFPROP')
|
||||
If RDSNo NE '' then
|
||||
FqaWcRec = Wafer_Counter_Services('GetLastScan', RDSNo, 'QA')
|
||||
WaferCounterQty = FqaWcRec<WAFER_COUNTER.SCAN_QTY$>
|
||||
Set_Property(@Window, '@ORIG_WFR_CTR_QTY', WaferCounterQty)
|
||||
WafersOut = Get_Property(@WINDOW:'.WAFERS_OUT','TEXT')
|
||||
Set_Property(@WINDOW:'.EDL_WAFER_COUNTER_QTY','DEFPROP', WaferCounterQty)
|
||||
|
||||
*****************************************
|
||||
* WaferCounter - Wafers Quantity Section *
|
||||
*****************************************
|
||||
If (WaferCounterQty NE '') then
|
||||
If (WaferCounterQty NE WafersOut) then QtyBackColor = RED$
|
||||
end else
|
||||
QtyBackColor = ORANGE$
|
||||
end
|
||||
|
||||
WaferSize = Xlate('RDS', RDSNo, 'WAFER_SIZE', 'X')
|
||||
WaferSize = Field(WaferSize, ' ', 3, 1)
|
||||
If ( (WaferSize EQ 6) or (WaferSize EQ 8) ) then
|
||||
WCToolId = Wafer_Counter_Services('GetWaferCounterToolID', WaferSize:'INCH', 'QA')
|
||||
If Error_Services('NoError') then
|
||||
WCCurrMode = ''
|
||||
If RowExists('TOOL', WCToolID) then
|
||||
WCCurrModeKey = Xlate('TOOL', WCToolID, 'CURR_MODE_KEY', 'X')
|
||||
WCCurrMode = Xlate('TOOL_LOG', WCCurrModeKey, 'TOOL_MODE', 'X')
|
||||
Set_Property(@WINDOW:'.EDL_WAFER_COUNTER_QTY', 'ENABLED', (WCCurrMode NE 'PROD'))
|
||||
end else
|
||||
ErrMsg('Verify wafer count error. Invalid wafer counter tool ID "':WCToolID:'".')
|
||||
end
|
||||
*****************************************
|
||||
* WaferCounter - Wafers Quantity Section *
|
||||
*****************************************
|
||||
If (WaferCounterQty NE '') then
|
||||
If (WaferCounterQty NE WafersOut) then QtyBackColor = RED$
|
||||
end else
|
||||
QtyBackColor = ORANGE$
|
||||
end
|
||||
|
||||
WaferSize = Xlate('RDS', RDSNo, 'WAFER_SIZE', 'X')
|
||||
WaferSize = Field(WaferSize, ' ', 3, 1)
|
||||
If ( (WaferSize EQ 6) or (WaferSize EQ 8) ) then
|
||||
WCToolId = Wafer_Counter_Services('GetWaferCounterToolID', WaferSize:'INCH', 'QA')
|
||||
If Error_Services('NoError') then
|
||||
WCCurrMode = ''
|
||||
If RowExists('TOOL', WCToolID) then
|
||||
WCCurrModeKey = Xlate('TOOL', WCToolID, 'CURR_MODE_KEY', 'X')
|
||||
WCCurrMode = Xlate('TOOL_LOG', WCCurrModeKey, 'TOOL_MODE', 'X')
|
||||
Set_Property(@WINDOW:'.EDL_WAFER_COUNTER_QTY', 'ENABLED', (WCCurrMode NE 'PROD'))
|
||||
end else
|
||||
ErrMsg(Error_Services('GetMessage'))
|
||||
ErrMsg('Verify wafer count error. Invalid wafer counter tool ID "':WCToolID:'".')
|
||||
end
|
||||
end else
|
||||
ErrMsg('Verify wafer count error. Invalid wafer size "':WaferSize:'" returned for RDS "':RDSNo:'".')
|
||||
end
|
||||
end
|
||||
Set_Property(@WINDOW:'.EDL_WAFER_COUNTER_QTY','BACKCOLOR', QtyBackColor)
|
||||
|
||||
end else
|
||||
Set_Property(@Window:'.EDL_WAFER_COUNTER_QTY', 'VISIBLE', False$)
|
||||
Set_Property(@Window:'.LBL_WAFER_COUNTER_QTY', 'VISIBLE', False$)
|
||||
end
|
||||
ErrMsg(Error_Services('GetMessage'))
|
||||
end
|
||||
end else
|
||||
ErrMsg('Verify wafer count error. Invalid wafer size "':WaferSize:'" returned for RDS "':RDSNo:'".')
|
||||
end
|
||||
end
|
||||
Set_Property(@WINDOW:'.EDL_WAFER_COUNTER_QTY','BACKCOLOR', QtyBackColor)
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user