Create new services.
Commit to switch branches. Fix error text. Fixed CassetteID variable typo. Commit final changes.
This commit is contained in:
committed by
Ouellette Jonathan (CSC FI SPS MESLEO)
parent
adc247fd4c
commit
a636198128
@ -425,7 +425,7 @@ RejMat:
|
|||||||
Msg(@window, MsgUp) ;* take down the processing message
|
Msg(@window, MsgUp) ;* take down the processing message
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
IneligibleSlots = ''
|
IneligibleSlots = ''
|
||||||
AllSlotsPermitted = True$ ; // Assume that all slots are permitted to be NCR'd for now.
|
AllSlotsPermitted = True$ ; // Assume that all slots are permitted to be NCR'd for now.
|
||||||
For I = 1 TO SelCnt
|
For I = 1 TO SelCnt
|
||||||
@ -434,7 +434,7 @@ RejMat:
|
|||||||
WfrID = SlotList<SelectedRows<I>, COL$WAFER_ID>
|
WfrID = SlotList<SelectedRows<I>, COL$WAFER_ID>
|
||||||
PrevNCR = SlotList<SelectedRows<I>, COL$SLOT_NCR>
|
PrevNCR = SlotList<SelectedRows<I>, COL$SLOT_NCR>
|
||||||
MUWfrID = SlotList<SelectedRows<I>, COL$MU_WAFER_ID>
|
MUWfrID = SlotList<SelectedRows<I>, COL$MU_WAFER_ID>
|
||||||
If (WfrId EQ '') then
|
If ( (MetNo NE '') or (WfrID EQ '') or (PrevNCR NE '' and MUWfrID EQ '') ) then
|
||||||
AllSlotsPermitted = False$
|
AllSlotsPermitted = False$
|
||||||
IneligibleSlots<0, -1> = SlotNo
|
IneligibleSlots<0, -1> = SlotNo
|
||||||
end
|
end
|
||||||
@ -1233,3 +1233,6 @@ LogRecord:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ Equ MSG_WIDTH$ to 650
|
|||||||
Equ Comma$ to ','
|
Equ Comma$ to ','
|
||||||
|
|
||||||
Declare function MemberOf, Form_Services, Wafer_Counter_Services, SRP_Json, WO_Mat_Services, Wm_Out_Services, Datetime
|
Declare function MemberOf, Form_Services, Wafer_Counter_Services, SRP_Json, WO_Mat_Services, Wm_Out_Services, Datetime
|
||||||
Declare function Logging_Services, Environment_Services
|
Declare function Logging_Services, Environment_Services, Wo_Mat_Qa_Services, Return_To_Fab_Services
|
||||||
Declare subroutine SRP_Json, PlaceDialog, Wafer_Counter_Services, Logging_Services
|
Declare subroutine SRP_Json, PlaceDialog, Wafer_Counter_Services, Logging_Services
|
||||||
|
|
||||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WaferCounter'
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WaferCounter'
|
||||||
@ -97,13 +97,26 @@ Event WINDOW.CREATE(CreateParam)
|
|||||||
LogData<5> = ToolLoc
|
LogData<5> = ToolLoc
|
||||||
LogData<6> = @Window:'.CREATE'
|
LogData<6> = @Window:'.CREATE'
|
||||||
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
||||||
|
QAMetComplete = ''
|
||||||
|
|
||||||
|
If CassID NE '' then
|
||||||
|
If RowExists('WM_OUT', CassID) then
|
||||||
|
WOMatKey = Xlate('WM_OUT', CassID, 'WO_MAT_KEY', 'X')
|
||||||
|
end else
|
||||||
|
WOMatKey = Xlate('RDS', CassID, 'WO_MAT_KEY', 'X')
|
||||||
|
end
|
||||||
|
QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WOMatKey)
|
||||||
|
end
|
||||||
|
|
||||||
Convert '.' to '*' in CassID
|
Convert '.' to '*' in CassID
|
||||||
ExpectedQty = ''
|
ExpectedQty = ''
|
||||||
ExpectedWfrMap = ''
|
ExpectedWfrMap = ''
|
||||||
If WfrCntAdj EQ '' then WfrCntAdj = 0
|
If WfrCntAdj EQ '' then WfrCntAdj = 0
|
||||||
Set_Property(@Window:'.EDL_CASS_ID', 'TEXT', CassID)
|
Set_Property(@Window:'.EDL_CASS_ID', 'TEXT', CassID)
|
||||||
|
|
||||||
Begin Case
|
Begin Case
|
||||||
|
Case (CassID NE '' AND QAMetComplete EQ False$)
|
||||||
|
ErrorMsg = 'Wafer Counter Operation Not Allowed. QA Metrology Incomplete.'
|
||||||
Case ( (CassID EQ '') and (ToolLoc EQ '') )
|
Case ( (CassID EQ '') and (ToolLoc EQ '') )
|
||||||
// Alternate workflow
|
// Alternate workflow
|
||||||
Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass ID')
|
Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass ID')
|
||||||
@ -319,36 +332,49 @@ Event EDL_CASS_BARCODE.LOSTFOCUS(Flag, FocusID)
|
|||||||
Set_Property(@Window:'.EDL_CASS_ID', 'TEXT', CassetteID)
|
Set_Property(@Window:'.EDL_CASS_ID', 'TEXT', CassetteID)
|
||||||
Begin Case
|
Begin Case
|
||||||
Case RowExists('RDS', CassetteID)
|
Case RowExists('RDS', CassetteID)
|
||||||
ExpectedQty = Xlate('RDS', CassetteID, 'WFRS_OUT', 'X')
|
WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X')
|
||||||
Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty)
|
QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WOMatKey)
|
||||||
Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass RDS')
|
If QAMetComplete EQ True$ then
|
||||||
Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass RDS 2D')
|
ExpectedQty = Xlate('RDS', CassetteID, 'WFRS_OUT', 'X')
|
||||||
|
Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty)
|
||||||
WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X')
|
Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass RDS')
|
||||||
CurrWfrMap = WO_Mat_Services('GetWaferMap', WOMatKey)
|
Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass RDS 2D')
|
||||||
If Error_Services('NoError') then
|
|
||||||
ExpectedWfrMap = CurrWfrMap
|
WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X')
|
||||||
|
CurrWfrMap = WO_Mat_Services('GetWaferMap', WOMatKey)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
ExpectedWfrMap = CurrWfrMap
|
||||||
|
end else
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
end else
|
end else
|
||||||
ErrorMsg = Error_Services('GetMessage')
|
ErrorMsg = 'Wafer Counter Operation Not Allowed. QA Metrology Incomplete.'
|
||||||
end
|
end
|
||||||
|
|
||||||
Case RowExists('WM_OUT', CassetteID)
|
Case RowExists('WM_OUT', CassetteID)
|
||||||
ExpectedQty = Xlate('WM_OUT', CassetteID, 'WAFER_CNT', 'X')
|
WOMatKey = Xlate('WM_OUT', CassetteID, 'WO_MAT_KEY', 'X')
|
||||||
Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty)
|
QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WOMatKey)
|
||||||
Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass WMO')
|
If QAMetComplete EQ True$ then
|
||||||
Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass WMO 2D')
|
ExpectedQty = Xlate('WM_OUT', CassetteID, 'WAFER_CNT', 'X')
|
||||||
|
Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty)
|
||||||
CurrWfrMap = WM_Out_Services('GetWaferMap', CassetteID)
|
Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass WMO')
|
||||||
If Error_Services('NoError') then
|
Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass WMO 2D')
|
||||||
ExpectedWfrMap = CurrWfrMap
|
|
||||||
|
CurrWfrMap = WM_Out_Services('GetWaferMap', CassetteID)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
ExpectedWfrMap = CurrWfrMap
|
||||||
|
end else
|
||||||
|
ErrorMsg = Error_Services('GetMessage')
|
||||||
|
end
|
||||||
end else
|
end else
|
||||||
ErrorMsg = Error_Services('GetMessage')
|
ErrorMsg = 'Wafer Counter Operation Not Allowed. QA Metrology Incomplete.'
|
||||||
end
|
end
|
||||||
|
|
||||||
End Case
|
End Case
|
||||||
|
|
||||||
Convert @VM to '' in ExpectedWfrMap
|
If ErrorMsg EQ '' then
|
||||||
Set_Property(@Window, '@EXPECTED_WFR_MAP', ExpectedWfrMap)
|
Convert @VM to '' in ExpectedWfrMap
|
||||||
|
Set_Property(@Window, '@EXPECTED_WFR_MAP', ExpectedWfrMap)
|
||||||
|
end
|
||||||
end else
|
end else
|
||||||
If CassetteID NE VerifyCassID then
|
If CassetteID NE VerifyCassID then
|
||||||
ErrorMsg = 'Scanned cassette ID does not match cassette to verify!'
|
ErrorMsg = 'Scanned cassette ID does not match cassette to verify!'
|
||||||
@ -598,3 +624,7 @@ ClearForm:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1141,6 +1141,38 @@ Service OpenOIWizardReturnToFabInBrowser(RTFId)
|
|||||||
|
|
||||||
end service
|
end service
|
||||||
|
|
||||||
|
Service GetReturnedToFab(CassID)
|
||||||
|
If CassID NE '' then
|
||||||
|
RTFRecords = ''
|
||||||
|
ErrorMessage = ''
|
||||||
|
If CassId NE '' then
|
||||||
|
table = "RETURN_TO_FAB_LOTS"
|
||||||
|
Open "DICT ":table To @DICT Else
|
||||||
|
ErrorMessage = 'Error opening RETURN_TO_FAB_LOTS dictionary'
|
||||||
|
End
|
||||||
|
If ErrorMessage EQ '' then
|
||||||
|
srch_strng = "CASS_ID":@VM:CassId:@FM
|
||||||
|
option = ""
|
||||||
|
flag = ""
|
||||||
|
Btree.Extract(srch_strng, table, @DICT, RTFRecords, option, flag)
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Error getting return to fab record by cass. ID. Cassette ID was null'
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Missing CassID parameter.'
|
||||||
|
end
|
||||||
|
If ErrorMessage EQ '' then
|
||||||
|
If RTFRecords = '' then
|
||||||
|
Response = False$
|
||||||
|
end else
|
||||||
|
Response = True$
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
Error_Services('Add', ErrorMessage)
|
||||||
|
end
|
||||||
|
|
||||||
|
end service
|
||||||
Service InitializeReturnToFabLotOperations(LotId)
|
Service InitializeReturnToFabLotOperations(LotId)
|
||||||
|
|
||||||
ErrorMessage = ''
|
ErrorMessage = ''
|
||||||
|
@ -39,7 +39,7 @@ Function Wafercounter_API(@API)
|
|||||||
#pragma precomp SRP_PreCompiler
|
#pragma precomp SRP_PreCompiler
|
||||||
|
|
||||||
Declare function OI_Wizard_Services, Wafer_Counter_Services, Database_Services, Datetime, Wo_Mat_Services
|
Declare function OI_Wizard_Services, Wafer_Counter_Services, Database_Services, Datetime, Wo_Mat_Services
|
||||||
Declare function Logging_Services, Environment_Services
|
Declare function Logging_Services, Environment_Services, Wo_Mat_Qa_Services, Return_To_Fab_Services
|
||||||
Declare subroutine Logging_Services
|
Declare subroutine Logging_Services
|
||||||
|
|
||||||
|
|
||||||
@ -127,7 +127,12 @@ API wafercounter.startnewwafercount.POST
|
|||||||
CassNo = Field(CassId, '*', 3)
|
CassNo = Field(CassId, '*', 3)
|
||||||
WoMatKey = WONo : '*' : CassNo
|
WoMatKey = WONo : '*' : CassNo
|
||||||
End Case
|
End Case
|
||||||
|
ReturnedToFab = Return_To_Fab_Services('GetReturnedToFab', CassID)
|
||||||
|
QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WoMatKey)
|
||||||
ExpectedWfrMap = Wo_Mat_Services('GetWaferMap', WoMatKey)
|
ExpectedWfrMap = Wo_Mat_Services('GetWaferMap', WoMatKey)
|
||||||
|
If (ReturnedToFab EQ False$) AND (QAMetComplete EQ False$) then
|
||||||
|
Error_Services('Add', 'Wafer Counter Operation Not Allowed. QA Metrology Incomplete.')
|
||||||
|
end
|
||||||
ExpectedCassetteArray = ''
|
ExpectedCassetteArray = ''
|
||||||
for i = 25 to 1 step -1
|
for i = 25 to 1 step -1
|
||||||
Slot = i
|
Slot = i
|
||||||
@ -376,3 +381,73 @@ API wafercounter.ID.GET
|
|||||||
HTTP_Services('SetResponseStatus', ResponseCode, ErrorMessage)
|
HTTP_Services('SetResponseStatus', ResponseCode, ErrorMessage)
|
||||||
|
|
||||||
end api
|
end api
|
||||||
|
|
||||||
|
|
||||||
|
API wafercounter.ID.HEAD
|
||||||
|
API wafercounter.ID.GET
|
||||||
|
|
||||||
|
ErrorMessage = ''
|
||||||
|
ResponseCode = ''
|
||||||
|
WaferCounterId = EndPointSegment
|
||||||
|
CassId = ''
|
||||||
|
Body = ''
|
||||||
|
OIWizardID = ''
|
||||||
|
UserId = ''
|
||||||
|
Cookies = HTTP_Services('GetHTTPCookie')
|
||||||
|
For each Cookie in Cookies using ';'
|
||||||
|
Key = Field(Cookie, '=', 1)
|
||||||
|
If Key EQ 'sessionID' then
|
||||||
|
OIWizardID = Field(Cookie, '=', 2)
|
||||||
|
end
|
||||||
|
Next Cookie
|
||||||
|
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
|
||||||
|
CassBarcodeData = ''
|
||||||
|
UserId = Xlate('OI_WIZARD', OIWizardID, OI_WIZARD.EMPLOYEE_ID$, 'X')
|
||||||
|
StatusCode = ''
|
||||||
|
Body = HTTP_Services('GetHTTPPostString', True$)
|
||||||
|
DecodedJSON = HTTP_Services('DecodePercentString', Body)
|
||||||
|
|
||||||
|
//Log Entry into API -
|
||||||
|
LogData = ''
|
||||||
|
LogData<1> = LoggingDTM
|
||||||
|
LogData<2> = UserId
|
||||||
|
LogData<3> = OIWizardId
|
||||||
|
LogData<4> = 'Getting Wafer counter record. Record Id: ' : WaferCounterId
|
||||||
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||||
|
|
||||||
|
If WaferCounterId NE '' then
|
||||||
|
WaferCounterJson = Wafer_Counter_Services('ConvertWaferCounterRecToJson', WaferCounterId)
|
||||||
|
If Error_Services('NoError') then
|
||||||
|
HTTP_Services('SetResponseBody', WaferCounterJson)
|
||||||
|
ResponseCode = 200
|
||||||
|
end else
|
||||||
|
ErrorMessage = Error_Services('GetMessage')
|
||||||
|
ResponseCode = 500
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
ErrorMessage = 'Null wafer counter passed to endpoint.'
|
||||||
|
end
|
||||||
|
|
||||||
|
If ErrorMessage EQ '' then
|
||||||
|
//Log Success
|
||||||
|
LogData = ''
|
||||||
|
LogData<1> = LoggingDTM
|
||||||
|
LogData<2> = UserId
|
||||||
|
LogData<3> = OIWizardId
|
||||||
|
LogData<4> = 'Wafer Counter record successfully returned. Wafer Counter Id: ' : WaferCounterId
|
||||||
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||||
|
end else
|
||||||
|
//Log Failure
|
||||||
|
LogData = ''
|
||||||
|
LogData<1> = LoggingDTM
|
||||||
|
LogData<2> = UserId
|
||||||
|
LogData<3> = OIWizardId
|
||||||
|
LogData<4> = 'Error returning wafer counter record. Wafer Counter Id: ' : WaferCounterId : ' . Error Message: ' : ErrorMessage
|
||||||
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$)
|
||||||
|
end
|
||||||
|
|
||||||
|
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
|
||||||
|
HTTP_Services('SetResponseStatus', ResponseCode, ErrorMessage)
|
||||||
|
|
||||||
|
end api
|
||||||
|
|
||||||
|
@ -530,8 +530,8 @@ Service GetWaferCounterJSONTestData(WaferSize, ToolLocation, CassID)
|
|||||||
If SRP_JSON(objJson, 'New', 'Object') then
|
If SRP_JSON(objJson, 'New', 'Object') then
|
||||||
SRP_JSON(objJson, 'SetValue', 'dateTimeFormatted', Datetime(), 'String')
|
SRP_JSON(objJson, 'SetValue', 'dateTimeFormatted', Datetime(), 'String')
|
||||||
SRP_JSON(objJson, 'SetValue', 'equipmentId', 'WC8INCH1', 'String')
|
SRP_JSON(objJson, 'SetValue', 'equipmentId', 'WC8INCH1', 'String')
|
||||||
SRP_JSON(objJson, 'SetValue', 'total', 25, 'Number')
|
SRP_JSON(objJson, 'SetValue', 'total', 24, 'Number')
|
||||||
SRP_JSON(objJson, 'SetValue', 'slotMap', '1111111111111111111111111', 'String')
|
SRP_JSON(objJson, 'SetValue', 'slotMap', '1111111110111111111111111', 'String')
|
||||||
Response = SRP_Json(objJson, 'Stringify', 'Styled')
|
Response = SRP_Json(objJson, 'Stringify', 'Styled')
|
||||||
SRP_JSON(objJSON, 'Release')
|
SRP_JSON(objJSON, 'Release')
|
||||||
end
|
end
|
||||||
@ -744,4 +744,3 @@ return
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ $Insert PRS_STAGE_EQUATES
|
|||||||
$Insert PROD_VER_EQUATES
|
$Insert PROD_VER_EQUATES
|
||||||
$Insert QA_MET_EQUATES ;* Used in GetQAMet data structure return variable
|
$Insert QA_MET_EQUATES ;* Used in GetQAMet data structure return variable
|
||||||
|
|
||||||
Declare function Database_Services, SRP_JSON, Error_Services, obj_Prod_Spec
|
Declare function Database_Services, SRP_JSON, Error_Services, obj_Prod_Spec, Wo_Mat_Qa_Services
|
||||||
Declare subroutine Database_Services, SRP_JSON, Error_Services
|
Declare subroutine Database_Services, SRP_JSON, Error_Services
|
||||||
|
|
||||||
GoToService
|
GoToService
|
||||||
@ -419,3 +419,68 @@ Service AllWafersWereTested(WoMatQAKey, StageToInspect)
|
|||||||
end service
|
end service
|
||||||
|
|
||||||
|
|
||||||
|
Service GetQAMetComplete(WOMatKey)
|
||||||
|
|
||||||
|
If WOMatKey NE '' then
|
||||||
|
Response = ''
|
||||||
|
QAMetRec = Xlate('WO_MAT_QA', WOMatKey, '', 'X')
|
||||||
|
Stages = QAMetRec<WO_MAT_QA_STAGE$>
|
||||||
|
Results = QAMetRec<WO_MAT_QA_RESULT$>
|
||||||
|
StageCount = Count(Stages, @VM)
|
||||||
|
For I = 1 to StageCount
|
||||||
|
If Results<1,I> EQ '' then
|
||||||
|
Response = False$
|
||||||
|
end
|
||||||
|
Next I
|
||||||
|
|
||||||
|
MUQAComp = Wo_Mat_Qa_Services('GetMUWaferQAComplete', WOMatKey)
|
||||||
|
If (Response EQ '') AND (MUQAComp EQ True$) then
|
||||||
|
Response = True$
|
||||||
|
end
|
||||||
|
|
||||||
|
end else
|
||||||
|
Error_Services('Add', 'Missing WOMatKey parameter.')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end service
|
||||||
|
|
||||||
|
|
||||||
|
Service GetMUWaferQAComplete(WOMatKey)
|
||||||
|
|
||||||
|
Response = True$
|
||||||
|
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey, True$, 0, False$)
|
||||||
|
MUBoxes = ''
|
||||||
|
MUBoxesResults = ''
|
||||||
|
MUWafers = WOMatRec<WO_MAT_SLOT_MOVED_FROM$>
|
||||||
|
If Count(MUWafers, @VM) GT 0 then
|
||||||
|
for each BoxNumber in MUWafers using @VM setting OrigIndex
|
||||||
|
if BoxNumber NE '' then
|
||||||
|
MUCassId = FIELD(BoxNumber,'.',1,2)
|
||||||
|
Locate MUCassId in MUBoxesResults using @VM setting BoxIndex then
|
||||||
|
MUThkResult = WOMatRec<WO_MAT_MU_WAFER_THK_RESULT$, OrigIndex>
|
||||||
|
If MUThkResult NE '' then
|
||||||
|
MUBoxesResults<BoxIndex, 2> = True$
|
||||||
|
end
|
||||||
|
end else
|
||||||
|
MUBoxNewIndex = DCount(MUBoxesResults, @FM)
|
||||||
|
MUBoxesResults<MUBoxNewIndex> = MUCassID
|
||||||
|
MUThkResult = WOMatRec<WO_MAT_MU_WAFER_THK_RESULT$, OrigIndex>
|
||||||
|
If MUThkResult NE '' then
|
||||||
|
MUBoxesResults<MUBoxNewIndex, 2> = True$
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Next BoxNumber
|
||||||
|
|
||||||
|
for each Box in MUBoxesResults using @FM
|
||||||
|
if Box<1,2> EQ '' then
|
||||||
|
Response = False$
|
||||||
|
end
|
||||||
|
Until Response = False$
|
||||||
|
Next Box
|
||||||
|
end
|
||||||
|
|
||||||
|
end service
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user