fixed barcode scanning focus issues

This commit is contained in:
Infineon\StieberD 2024-09-10 18:14:46 -07:00
parent 31f9796cff
commit 5fdcfdafb4
4 changed files with 150 additions and 136 deletions

View File

@ -597,8 +597,6 @@ ToggleLotHold:
WOMatKey = WONo:'*':CassNo
CtrlEntID = False$ ;* Control checked/unchecked
OriginFlag = 'PTO' ;* Flag to indicate a hold initiated from the packagaing form
//Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
//obj_WO_Mat('ToggleHold', Parms)
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
// Check if second cassette ID is a valid RDS or WM_OUT key
@ -625,9 +623,6 @@ ToggleLotHold:
End Case
* testCass2 = Cassette2
* Convert '*' to '.' in testCass2
// Write fail packaging record in material log for second cassette ID
If ValidCass EQ True$ then
LogFile = 'WO_MAT'
@ -662,7 +657,6 @@ ToggleLotHold:
CtrlEntID = False$ ;* Control checked/unchecked
OriginFlag = 'PTO' ;* Flag to indicate a hold initiated from the packaging form
Parms = WOMatKey:@RM:HoldEntity:@RM:HoldEntityID:@RM:CtrlEntID:@RM:OriginFlag:@RM:OperatorID
//obj_WO_Mat('ToggleHold', Parms)
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID)
end
@ -697,3 +691,4 @@ return

View File

@ -90,6 +90,7 @@ Event EDL_USER_ID_SCAN.LOSTFOCUS(Flag, FocusID)
MsgStruct = ""
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Set_Property(CtrlEntId, 'FOCUS', True$)
end
end
end
@ -114,7 +115,8 @@ Event EDL_CASS_SCAN_1.LOSTFOCUS(Flag, FocusID)
ErrorMessage = Error_Services('GetMessage')
MsgStruct = ""
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Set_Property(@Window:'.EDL_USER_ID_SCAN', 'FOCUS', True$)
end
end
end
@ -141,7 +143,8 @@ Event EDL_CASS_SCAN_2.LOSTFOCUS(Flag, FocusID)
ErrorMessage = Error_Services('GetMessage')
MsgStruct = ""
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Set_Property(@Window:'.EDL_USER_ID_SCAN', 'FOCUS', True$)
end
end
end
@ -229,7 +232,6 @@ Event EDL_PASSWORD_SCAN.LOSTFOCUS(Flag, FocusID)
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
Msg(@Window, MsgStruct, 'PROCESS_COMPLETE', '', SuccessMessage)
end else
* ErrorMessage = Error_Services('GetMessage')
ErrorMessage = 'An internal error occurred. Please retry the pack scan.'
MsgStruct = ""
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
@ -254,7 +256,9 @@ end event
Event PUB_CLEAR_FORM.CLICK()
GoSub ClearForm
end event
@ -263,6 +267,7 @@ end event
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ClearForm:
Set_Property(@Window:'.EDL_SEQUENCE1' , 'TEXT' , '')
Set_Property(@Window:'.EDL_USER_ID_SCAN' , 'TEXT' , '')
Set_Property(@Window:'.EDL_CASS_SCAN_1' , 'TEXT' , '')
@ -295,3 +300,4 @@ return

View File

@ -52,19 +52,19 @@ Declare function Popup, obj_WO_Mat, Database_Services, Utility, Rds_Services, Me
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
If Event EQ 'OLE' then
Transfer Event to OIEvent
Transfer Param1 to Event
Transfer Param2 to Param1
Transfer Param3 to Param2
Transfer Param4 to Param3
Transfer Param5 to Param4
Transfer Param6 to Param5
Transfer Param7 to Param6
Transfer Param8 to Param7
Transfer Event to OIEvent
Transfer Param1 to Event
Transfer Param2 to Param1
Transfer Param3 to Param2
Transfer Param4 to Param3
Transfer Param5 to Param4
Transfer Param6 to Param5
Transfer Param7 to Param6
Transfer Param8 to Param7
end
GoToEvent Event for CtrlEntId else
// Event not implemented
// Event not implemented
end
Return EventFlow or 1
@ -77,28 +77,28 @@ ScanField = ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Event WINDOW.CREATE(CreateParam)
CurrVer = Xlate('APP_INFO', 'LSL2_VERSION', '', 'X')
UserVer = Xlate('LSL_USERS', @User4, 'LSL2_VERSION', 'X')
If UserVer NE CurrVer then
// Error message and close form
ErrMsg = 'OpenInsight Version Error':@FM:'You are running an outdated version of OpenInsight and cannot release material until you restart your session.'
Msg(@Window, '', 'OK', '', ErrMsg)
Post_Event(@Window, 'CLOSE')
end else
GoSub SetupOLEControls
GoSub ResetForm
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
MsgStruct = ''
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
end
CurrVer = Xlate('APP_INFO', 'LSL2_VERSION', '', 'X')
UserVer = Xlate('LSL_USERS', @User4, 'LSL2_VERSION', 'X')
If UserVer NE CurrVer then
// Error message and close form
ErrMsg = 'OpenInsight Version Error':@FM:'You are running an outdated version of OpenInsight and cannot release material until you restart your session.'
Msg(@Window, '', 'OK', '', ErrMsg)
Post_Event(@Window, 'CLOSE')
end else
GoSub SetupOLEControls
GoSub ResetForm
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
MsgStruct = ''
MsgStruct<MTEXTWIDTH$> = MSG_WIDTH$
end
end event
Event OLE_BTN_CLEAR.OnClick(Point, Button, Shift, Ctrl)
*get count of unprocessed records
*get count of unprocessed records
allCompleted = True$
resp = ''
Data = Get_Property(EditTable$, "OLE.ARRAY")
@ -120,90 +120,102 @@ Event OLE_BTN_CLEAR.OnClick(Point, Button, Shift, Ctrl)
GoSub ResetForm
end
end
end event
Event OLE_BTN_SAVE.OnClick(Point, Button, Shift, Ctrl)
*check for unfinished scan
F1 = Get_Property(Cassette1$, 'TEXT')
F2 = Get_Property(Cassette2$, 'TEXT')
F3 = Get_Property(Supplier$, 'TEXT')
resp = True$
If F1 NE '' OR F2 NE '' OR F3 NE '' then
If F1 NE '' OR F2 NE '' OR F3 NE '' then
resp = Message_Box(@Window, 'You have an unfinished scan (not in grid) - continue?', 'Confirm Save', MSG_BTN_OKCAN$ + MSG_DEFAULT2$)
end
if resp EQ True$ Then
end
if resp EQ True$ Then
Warehouse = '1K'
Location = 'PTI'
Gosub SaveRecords
end
end event
Event EDL_CASSETTE1_SCAN.LOSTFOCUS(Flag, FocusID)
ScanField = 'Cassette1'
If Flag EQ 1 then
ScanData = Get_Property(CtrlEntID, 'TEXT')
If ScanData NE '' then
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE1')
If Error_Services('NoError') then
Set_Property(CtrlEntID, 'TEXT', ScanData)
Set_Property(Cassette2$, 'ENABLED', True$)
Set_Property(Cassette2$, 'FOCUS', True$)
Set_Property(CtrlEntID, 'ENABLED', False$)
Gosub ValidateGrid
end else
GoSub ResetForm
ErrorMessage = Error_Services('GetMessage')
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
end
end
end
If Flag EQ 1 then
ScanData = Get_Property(CtrlEntID, 'TEXT')
If ScanData NE '' then
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE1')
If Error_Services('NoError') then
Set_Property(CtrlEntID, 'TEXT', ScanData)
Set_Property(Cassette2$, 'ENABLED', True$)
Set_Property(Cassette2$, 'FOCUS', True$)
Set_Property(CtrlEntID, 'ENABLED', False$)
Gosub ValidateGrid
end else
GoSub ResetForm
ErrorMessage = Error_Services('GetMessage')
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'FOCUS', True$)
end
end
end
end event
Event EDL_CASSETTE2_SCAN.LOSTFOCUS(Flag, FocusID)
ScanField = 'Cassette2'
If Flag EQ 1 then
ScanData = Get_Property(CtrlEntID, 'TEXT')
Cass1 = Get_Property(Cassette1$, 'TEXT')
If ScanData NE '' then
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE2', Cass1)
If Error_Services('NoError') then
Set_Property(CtrlEntID, 'TEXT', ScanData)
If Flag EQ 1 then
ScanData = Get_Property(CtrlEntID, 'TEXT')
Cass1 = Get_Property(Cassette1$, 'TEXT')
If ScanData NE '' then
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE2', Cass1)
If Error_Services('NoError') then
Set_Property(CtrlEntID, 'TEXT', ScanData)
Gosub ValidateGrid
Set_Property(Supplier$, 'ENABLED', True$)
Set_Property(Supplier$, 'FOCUS', True$)
Set_Property(CtrlEntID, 'ENABLED', False$)
Gosub ValidateGrid
end else
GoSub ResetForm
ErrorMessage = Error_Services('GetMessage')
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
end
end
end
Set_Property(Supplier$, 'ENABLED', True$)
Set_Property(Supplier$, 'FOCUS', True$)
Set_Property(CtrlEntID, 'ENABLED', False$)
Gosub ValidateGrid
end else
GoSub ResetForm
ErrorMessage = Error_Services('GetMessage')
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'FOCUS', True$)
end
end
end
end event
Event EDL_SUPPLIER_SCAN.LOSTFOCUS(Flag, FocusID)
ScanField = 'Lot'
If Flag EQ 1 then
Cassette1 = Get_Property(Cassette1$, 'TEXT')
ScanData = Get_Property(CtrlEntID, 'TEXT')
If ScanData NE '' then
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'SUPPLIER', Cassette1)
If Error_Services('NoError') then
Set_Property(CtrlEntID, 'TEXT', ScanData)
Set_Property(CtrlEntID, 'ENABLED', False$)
Gosub ValidateGrid
end else
GoSub ResetForm
ErrorMessage = Error_Services('GetMessage')
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
end
end
end
If Flag EQ 1 then
Cassette1 = Get_Property(Cassette1$, 'TEXT')
ScanData = Get_Property(CtrlEntID, 'TEXT')
If ScanData NE '' then
ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'SUPPLIER', Cassette1)
If Error_Services('NoError') then
Set_Property(CtrlEntID, 'TEXT', ScanData)
Set_Property(CtrlEntID, 'ENABLED', False$)
Gosub ValidateGrid
end else
GoSub ResetForm
ErrorMessage = Error_Services('GetMessage')
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'FOCUS', True$)
end
end
end
end event
@ -212,7 +224,8 @@ end event
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SaveRecords:
*iterate thround all records in the grid, saving them and updating the status and location
*iterate through all records in the grid, saving them and updating the status and location
Data = Get_Property(EditTable$, "OLE.ARRAY")
cnt = count(Data<1>, @VM) + (Data<1># '')
MsgStruct = ''
@ -228,12 +241,12 @@ SaveRecords:
Loc = '1K*PTI'
Set_Property(EditTable$, 'OLE.CellColors[ALL;':i:']', 'Auto':@FM:'Auto')
cntProc += 1
end else
Status = 'Error'
end else
Status = 'Error'
Set_Property(EditTable$, 'OLE.CellColors[ALL;':i:']', 'Auto':@FM:'Red')
end
Set_Property(EditTable$, 'OLE.CELLTEXT[4;':i:']', Status)
end
Set_Property(EditTable$, 'OLE.CELLTEXT[4;':i:']', Status)
Set_Property(EditTable$, 'OLE.CELLTEXT[5;':i:']', Loc)
end
Next i
@ -254,11 +267,12 @@ SaveRecords:
end
Gosub DisableFormControls
return
ValidateGrid:
F1 = Get_Property(Cassette1$, 'TEXT')
F2 = Get_Property(Cassette2$, 'TEXT')
F3 = Get_Property(Supplier$, 'TEXT')
@ -270,11 +284,6 @@ ValidateGrid:
result = 1
end
end
* if ScanField = 'Lot' then ; * do not look for duplicates
* result = 0
* end else
* result = InList(Data, ScanData, @VM) OR InList(Data, ScanData, @FM)
* end
If INDEX(F1,'.',2) then
RDSType = 'EPP'
@ -295,12 +304,12 @@ ValidateGrid:
Case RDSType EQ 'GAN'
WOMatKey = F1
Location = XLATE('WO_MAT', WOMatKey, 'CURR_LOCATION', '', '')
End Case
if result EQ 1 then
ErrorMessage = 'Value already exists in grid: ':ScanData
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Gosub ResetForm
end else if F1 NE '' AND F2 NE '' AND F3 NE '' then
Data = ''
@ -317,39 +326,41 @@ return
DisableFormControls:
Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'TEXT', '')
Set_Property(@Window:'.EDL_CASSETTE2_SCAN', 'TEXT', '')
Set_Property(@Window:'.EDL_SUPPLIER_SCAN', 'TEXT', '')
Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'ENABLED', False$)
Set_Property(@Window:'.EDL_CASSETTE2_SCAN', 'ENABLED', False$)
Set_Property(@Window:'.EDL_SUPPLIER_SCAN', 'ENABLED', False$)
return
SetupOLEControls:
// Qualify OLE events that we want to intercept
Qualifier = ''
Qualifier<1> = 1
Qualifier<3> = ''
Qualifier<4> = 0 ; * process synchronously
NumCols = 5
NumRows = 150
Ctrl = @Window:'.OLE_BTN_CLEAR'
Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier)
Ctrl = @Window:'.OLE_BTN_SAVE'
Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier)
DimensionArray = NumCols:@FM:NumRows
Set_Property(EditTable$, "OLE.Dimension", DimensionArray)
Titles = "Top Label":@VM:"Bottom Label":@VM:"Sub Lot":@VM:"Scan Status":@VM:"Curr Location"
Set_Property(EditTable$, "OLE.TitleList", Titles)
Set_Property(EditTable$, "OLE.DataColumn[1-2]", '85')
Set_Property(EditTable$, "OLE.DataColumn[3]", '80')
Set_Property(EditTable$, "OLE.DataColumn[4]", '90')
Set_Property(EditTable$, "OLE.DataColumn[5]", '115')
// Qualify OLE events that we want to intercept
Qualifier = ''
Qualifier<1> = 1
Qualifier<3> = ''
Qualifier<4> = 0 ; * process synchronously
NumCols = 5
NumRows = 150
Ctrl = @Window:'.OLE_BTN_CLEAR'
Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier)
Ctrl = @Window:'.OLE_BTN_SAVE'
Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier)
DimensionArray = NumCols:@FM:NumRows
Set_Property(EditTable$, "OLE.Dimension", DimensionArray)
Titles = "Top Label":@VM:"Bottom Label":@VM:"Sub Lot":@VM:"Scan Status":@VM:"Curr Location"
Set_Property(EditTable$, "OLE.TitleList", Titles)
Set_Property(EditTable$, "OLE.DataColumn[1-2]", '85')
Set_Property(EditTable$, "OLE.DataColumn[3]", '80')
Set_Property(EditTable$, "OLE.DataColumn[4]", '90')
Set_Property(EditTable$, "OLE.DataColumn[5]", '115')
AlignArray = 'C':@FM:'C':@FM:'L'
Set_Property(EditTable$, "OLE.CellAlignment[All; All]", AlignArray)
@ -363,15 +374,16 @@ SetupOLEControls:
AutoNumArray<1, 1> = 'I' ; // Integers
AutoNumArray<1, 2> = 1 ; // Starting integer
Set_Property(EditTable$, "OLE.AutoNumbers", AutoNumArray)
Set_Property(EditTable$, "OLE.CellProtection[All; All]", 'SEL')
SelStyleArray = 'Black' : @VM : OI_HOT_BLUE$ : ' L=70' : @FM : 'Black' : @VM : OI_HOT_BLUE$
Set_Property(EditTable$, 'OLE.SelectionStyle', SelStyleArray) ; // Automatically highlight the current row with one color and highlight the current row with another color.
return
ResetForm:
Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'ENABLED', True$)
Set_Property(@Window:'.EDL_CASSETTE2_SCAN', 'ENABLED', True$)
Set_Property(@Window:'.EDL_SUPPLIER_SCAN', 'ENABLED', True$)
@ -386,5 +398,6 @@ ResetForm:
cnt = count(Data<1>, @VM) + (Data<1># '')
Set_Property(@Window:'.OLE_BTN_SAVE', 'ENABLED', cnt GE 1)
Set_Property(EditTable$, 'OLE.CellColors[ALL;All]', 'Auto':@FM:'Auto')
return

View File

@ -120,6 +120,7 @@ end event
Event EDL_LABEL1_SCAN.LOSTFOCUS(Flag, FocusID)
Set_Property(SaveBtn$, 'FOCUS', True$)
ScanField = 'Label1'
If Flag EQ 1 then
@ -138,6 +139,7 @@ Event EDL_LABEL1_SCAN.LOSTFOCUS(Flag, FocusID)
if ErrorMessage NE 'Scan Cancelled' then
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
end
Set_Property(@Window:'.EDL_LABEL1_SCAN', 'FOCUS', True$)
end
end
end
@ -147,6 +149,7 @@ end event
Event EDL_LABEL2_SCAN.LOSTFOCUS(Flag, FocusID)
Set_Property(SaveBtn$, 'FOCUS', True$)
ScanField = 'Label2'
If Flag EQ 1 then
ScanData = Get_Property(CtrlEntID, 'TEXT')
@ -165,14 +168,13 @@ Event EDL_LABEL2_SCAN.LOSTFOCUS(Flag, FocusID)
if ErrorMessage[1,13] EQ 'Scan Mismatch' then
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Gosub ResetForm
Set_Property(@Window:'.EDL_LABEL1_SCAN', 'FOCUS', True$)
end else
Set_Property(@Window:'.EDL_LABEL2_SCAN', 'ENABLED', True$)
Set_Property(@Window:'.EDL_LABEL2_SCAN', 'TEXT', '')
Set_Property(@Window:'.EDL_LABEL2_SCAN', 'FOCUS', True$)
//ErrorMessage = Error_Services('GetMessage')
Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage)
Set_Property(@Window:'.EDL_LABEL2_SCAN', 'FOCUS', True$)
end
end
end
end
@ -225,7 +227,6 @@ ShowPopup:
ForeColor = Get_Property(@Window, 'FORECOLOR')
CursorXPos = Field(Point, ',', 1, 1)
CursorYPos = Field(Point, ',', 2, 1)
* FormSize = SRP_Get_Window_Rect(@Window)
FormSize = Get_Property(@Window, 'SIZE')
FormXPos = FormSize<1>
FormYPos = FormSize<2>
@ -366,4 +367,3 @@ ResetForm:
return