Function NDW_PTO_MAT_SCAN_EVENTS(CtrlEntId, Event, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10, Param11, Param12, Param13, Param14, Param15) /*********************************************************************************************************************** This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written permission from SRP Computer Solutions, Inc. Name : NDW_PTO_MAT_SCAN_EVENTS Description : This function acts as a commuter module for all events related to this window. Notes : This procedure supports the same-named form. Form is single use, for moving lots with 1K*PTI location angd warehouse code. The form must Parameters : CtrlEntId [in] -- The fully qualified name of the control calling the promoted event Event [in] -- The event being executed. See the Notes section regarding "PRE" events Param1-15 [in] -- Additional event parameter holders EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in EVENT_SETUP insert History (Date, Initials, Notes) 08/23/21 DPC Original programmer. ***********************************************************************************************************************/ #pragma precomp SRP_PreCompiler #window NDW_PTO_MAT_SCAN $insert EVENT_SETUP $insert LOGICAL $insert MSG_EQUATES $insert POPUP_EQUATES $insert REACT_RUN_EQUATES $insert RDS_EQUATES $insert WO_MAT_EQUATES $insert APPCOLORS $insert MESSAGE_BOX_EQUATES $insert SRP_POPUP_EQUATES Equ CRLF$ to \0D0A\ Equ MSG_WIDTH$ to 600 Equ Label1$ to @Window:'.EDL_LABEL1_SCAN' Equ Label2$ to @Window:'.EDL_LABEL2_SCAN' Equ ClearBtn$ to @Window:'.PUB_CLEAR' Equ SaveBtn$ to @Window:'.PUB_SAVE' Equ Popup$ to @Window:".OLE_POPUP" Declare subroutine Set_Property, Send_Event, Post_Event, Send_Message, SendMessage, Error_Services, PlaceDialog Declare subroutine Obj_Wo_Mat_Log, Errmsg, Utility, SRP_Show_Window, Material_Movement_Services, Delay, Getengineversion Declare function Get_Property, Send_Message, SendMessage, Material_Movement_Services, Error_Services Declare function Popup, obj_WO_Mat, Database_Services, Utility, Rds_Services, Message_Box, SRP_Get_Window_Rect MsgStruct = '' MsgStruct = MSG_WIDTH$ 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 end GoToEvent Event for CtrlEntId else // Event not implemented end Return EventFlow or 1 *global ScanField = '' //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Events //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Event WINDOW.CREATE(CreateParam) GoSub SetupOLEControls GoSub ResetForm PlaceDialog(-2, -2) end event Event EDL_LABEL1_SCAN.LOSTFOCUS(Flag, FocusID) ScanField = 'Label1' If Flag EQ 1 then ScanData = Get_Property(CtrlEntID, 'TEXT') If ScanData NE '' then ScanData = Material_Movement_Services('ProcessPTOScanData', ScanData, 'LABEL1') If Error_Services('NoError') then Set_Property(CtrlEntID, 'TEXT', ScanData) Set_Property(Label2$, 'ENABLED', True$) Set_Property(Label2$, 'FOCUS', True$) Set_Property(CtrlEntID, 'ENABLED', False$) Gosub SetupForm end else GoSub ResetForm ErrorMessage = Error_Services('GetMessage') if ErrorMessage NE 'Scan Cancelled' then Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) end Set_Property(@Window:'.EDL_LABEL1_SCAN', 'FOCUS', True$) end end end end event Event EDL_LABEL2_SCAN.LOSTFOCUS(Flag, FocusID) ScanField = 'Label2' If Flag EQ 1 then ScanData = Get_Property(CtrlEntID, 'TEXT') Cass1 = Get_Property(Label1$, 'TEXT') If ScanData NE '' then ScanData = Material_Movement_Services('ProcessPTOScanData', ScanData, 'LABEL2', Cass1) If Error_Services('NoError') then Set_Property(CtrlEntID, 'TEXT', ScanData) Set_Property(CtrlEntID, 'ENABLED', False$) Set_Property(SaveBtn$, 'ENABLED', True$) Set_Property(SaveBtn$, 'FOCUS', True$) Gosub SetupForm end else ErrorMessage = Error_Services('GetMessage') If ErrorMessage[1,13] EQ 'Scan Mismatch' then Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) Gosub ResetForm Set_Property(Label1$, 'FOCUS', True$) end else Set_Property(Label2$, 'ENABLED', True$) Set_Property(Label2$, 'TEXT', '') Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) Set_Property(Label2$, 'FOCUS', True$) end end end end end event Event OLE_POPUP.OnItemClick(Item) gosub HidePopup end event Event PUB_CLEAR.CLICK() gosub HidePopup If Get_Property(Label1$, 'TEXT') NE '' AND Get_Property(Label2$, 'TEXT') NE '' then MsgHead = 'Record not saved' MsgText = 'Record has not been saved - are you sure you want to clear form?' OK = Msg(@WINDOW,'','YESNO','',MsgHead:@FM:MsgText) If OK then GoSub ResetForm end else Set_Property(ClearBtn$, 'ENABLED', True$) Set_Property(SaveBtn$, 'ENABLED', True$) end end else GoSub ResetForm end end event Event PUB_SAVE.CLICK() Cassette1 = Get_Property(Label1$, 'TEXT') Cassette2 = Get_Property(Label2$, 'TEXT') Warehouse = '1K' Location = 'PTO' Gosub SaveRecord end event //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Internal Gosubs //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SaveRecord: ErrorMessage = 'undefined' Material_Movement_Services('SaveRecord', Cassette1, '1K', 'PTO', @User4);//save PTO transaction Delay(1) Material_Movement_Services('SaveRecord', Cassette1, 'SR', 'VER', @User4);//save PSVER transaction popupTitle = 'Save Record' popupMsg = '' saveErr = 0 If Error_Services('NoError') then popupMsg = 'Record saved' end else ErrorMessage = Error_Services('GetMessages') saveErr = 1 popupMsg = 'Error saving record - ':ErrorMessage end Gosub ShowPopup Gosub ResetForm return ShowPopup: GoSub HidePopup BackColor = Get_Property(@Window, 'BACKCOLOR') ForeColor = Get_Property(@Window, 'FORECOLOR') FormSize = Get_Property(@Window, 'SIZE') FormXPos = FormSize<1> FormYPos = FormSize<2> FormWidth = FormSize<3> FormHeight = FormSize<4> PopupWidth = 0 PopupHeight = 0 XPadding = 10 YPadding = 10 XOffset = 10 YOffset = 55 Delay = 0 If saveErr EQ True$ then BackColor = 255 + (51*256) + (51*65536) end else Delay = 2500 BackColor = 153 + (255*256) + (153*65536) end ItemData = popupMsg NumLines = DCount(ItemData, @FM) ItemList = '' If ItemData NE '' then For Each Item in ItemData using @FM setting ItemCount ItemLength = Len(Item) PopupWidth += (20 * ItemLength) rows = INT(PopupWidth /300) if (PopupWidth) GE 300 then PopupWidth = 300 PopupHeight = (30 * rows) end else PopupHeight = 50 end ItemList = XPadding ; // X Position of item ItemList = (20 * (ItemCount - 1) ) ; // Y Position of item ItemList = PopupWidth - (2 * XPadding) ; // Width ItemList = PopupHeight - (2 * YPadding) ; // Height ItemList = Item ItemList = Forecolor ItemList = 'Tahoma' : @SVM : '16' : @SVM : '700' : @SVM : '0' : @SVM : '0' ItemList = 'Center' : @SVM : 'Center' Next Item end PopupXPos = FormXPos + FormWidth/2 - PopupWidth/2 PopupYPos = FormYPos + FormHeight/2 - PopupHeight/2 Set_Property(Popup$, 'OLE.Size', Size) Set_Property(Popup$, 'OLE.Opacity', 255) Set_Property(Popup$, 'OLE.ShowDelay', Delay) Set_Property(Popup$, 'OLE.Theme', 'Custom') Set_Property(Popup$, 'OLE.Background', 'Vertical(Gradient(' : Backcolor : ', ' : Backcolor : '), Border(' : Backcolor : ' L=20))' : @FM : 'None' : @FM : 'None') Set_Property(Popup$, 'OLE.ItemList', ItemList) Set_Property(Popup$, 'OLE.Size', 0 : @FM : 0 : @FM : PopupWidth : @FM : PopupHeight) Send_Message(Popup$, 'OLE.ShowAt', PopupXPos, PopupYPos) return HidePopup: PopupVisible = Get_Property(Popup$, 'OLE.Visible') If PopupVisible EQ True$ then Send_Message(Popup$, 'OLE.Close') end return SetupForm: Cassette1 = Get_Property(Label1$, 'TEXT') Cassette2 = Get_Property(Label2$, 'TEXT') If INDEX(Cassette1,'.',2) then RDSType = 'EPP' end else if INDEX(Cassette1,'.',1) then RDSType = 'GAN' end else RDSType = 'SIC' end Convert '.' to '*' in Cassette1 Begin Case Case RDSType EQ 'SIC' WOMatKey = XLATE('RDS',Cassette1, 'WO_MAT_KEY', '', '') Location = XLATE('WO_MAT', WOMatKey, 'CURR_LOCATION', '', '') Case RDSType EQ 'EPP' WOMatKey = FIELD(Cassette1,'*',1):'*':FIELD(Cassette1,'*',3) Location = XLATE('WO_MAT', WOMatKey, 'CURR_LOCATION', '', '') Case RDSType EQ 'GAN' WOMatKey = Cassette1 Location = XLATE('WO_MAT', WOMatKey, 'CURR_LOCATION', '', '') End Case return DisableFormControls: Set_Property(Label1$, 'TEXT', '') Set_Property(Label2$, 'TEXT', '') Set_Property(Label1$, 'ENABLED', False$) Set_Property(Label2$, 'ENABLED', False$) return SetupOLEControls: // Qualify OLE events that we want to intercept Qualifier = '' Qualifier<1> = 1 Qualifier<3> = '' Qualifier<4> = 0 ; * process synchronously Send_Message(Popup$, 'QUALIFY_EVENT', 'OLE.OnItemClick', Qualifier) return ResetForm: Set_Property(Label1$, 'ENABLED', True$) Set_Property(Label2$, 'ENABLED', True$) Set_Property(Label1$, 'TEXT', '') Set_Property(Label2$, 'TEXT', '') Set_Property(Label1$, 'ENABLED', True$) Set_Property(Label2$, 'ENABLED', False$) Set_Property(Label1$, 'FOCUS', True$) Set_Property(SaveBtn$, 'ENABLED', False$) return