added LSL2 stored procedures
This commit is contained in:
422
LSL2/STPROC/NDW_MATERIAL_TRACK_REPORT_EVENTS.txt
Normal file
422
LSL2/STPROC/NDW_MATERIAL_TRACK_REPORT_EVENTS.txt
Normal file
@ -0,0 +1,422 @@
|
||||
Compile function NDW_MATERIAL_TRACK_REPORT_EVENTS(CtrlEntId, Event, @PARAMS)
|
||||
/***********************************************************************************************************************
|
||||
|
||||
Name : NDW_MATERIAL_TRACK_EVENTS
|
||||
|
||||
Description : Commuter module for the NDW_MATERIAL_TRACK_EVENTS form.
|
||||
|
||||
Notes : Application errors should be logged using the Error Services module. There are a few methodological
|
||||
assumptions built into way errors are managed which are important to understand in order to properly
|
||||
work with Error Services:
|
||||
|
||||
- The term 'top' refers to the originating procedure of a call stack and the term 'bottom' refers to
|
||||
the last routine (or the current routine) within a call stack. Within the OpenInsight Debugger
|
||||
this will appear backwards since the originating procedure always appears at the bottom of the
|
||||
list and the current routine appears at the top of the list. We are using this orientation because
|
||||
it is common to refer to the process of calling other procedures as 'drilling down'.
|
||||
|
||||
- The reason for defining the orientation of the call stack is because Error_Services allows for
|
||||
multiple error conditions to be appended to an original error. In most cases this will happen when
|
||||
a procedure at the bottom of the stack generates an error condition and then returns to its
|
||||
calling procedure. This higher level procedure can optionally add more information relevant to
|
||||
itself. This continues as the call stack 'bubbles' its way back to the top to where the
|
||||
originating procedure is waiting.
|
||||
|
||||
- Native OpenInsight commands that handle errors (e.g., Set_Status, Set_FSError, Set_EventStatus)
|
||||
preserve their error state until explicitly cleared. This can hinder the normal execution of code
|
||||
since subsequent procedures (usually SSPs) will fail if a pre-existing error condition exists.
|
||||
Our philosophy is that error conditions should automatically be cleared before a new procedure
|
||||
is executed to avoid this problem. However, the nature of Basic+ does not make this easy to
|
||||
automate for any given stored procedure. Therefore, if a stored procedure wants to conform to our
|
||||
philosophy then it should include a call into the 'Clear' service request at the top of the
|
||||
program. Alternatively this can be done through a common insert (see SERVICE_SETUP for example.)
|
||||
|
||||
- Service modules will use the SERVICE_SETUP insert and therefore automatically clear out any
|
||||
error conditions that were set before.
|
||||
|
||||
Parameters :
|
||||
Service [in] -- Name of the service being requested
|
||||
Param1-10 [in/out] -- Additional request parameter holders
|
||||
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
|
||||
|
||||
Metadata :
|
||||
|
||||
History : (Date, Initials, Notes)
|
||||
10/29/20 djs Original programmer.
|
||||
|
||||
***********************************************************************************************************************/
|
||||
#pragma precomp SRP_PreCompiler
|
||||
#window NDW_MATERIAL_TRACK_REPORT
|
||||
|
||||
Declare function Form_Services, Database_Services, RTI_Task_Submit, RTI_Task_Status
|
||||
Declare subroutine SRP_Show_Window, Send_Message, Set_Property, Report_Services, Database_Services, Material_Track
|
||||
|
||||
$Insert EVENT_SETUP
|
||||
$Insert LOGICAL
|
||||
$Insert REPORT_CONFIG_EQUATES
|
||||
|
||||
SubclassInfo = Form_Services('FindSubclassControl')
|
||||
Subclass = SubclassInfo<1>
|
||||
|
||||
// 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
|
||||
end
|
||||
|
||||
GoToEvent Event for CtrlEntId else
|
||||
// Event not implemented
|
||||
end
|
||||
|
||||
Return EventFlow or 1
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// EVENT HANDLERS
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
Event WINDOW.CREATE(CreateParam)
|
||||
|
||||
RptConfigKey = 'MATERIAL_TRACK*':@User4
|
||||
If RowExists('REPORT_CONFIG', RptConfigKey) then
|
||||
UserSettings = Database_Services('ReadDataRow', 'REPORT_CONFIG', RptConfigKey)
|
||||
Set_Property(@Window:'.PUB_SAVE_SETTINGS', 'ENABLED', False$)
|
||||
end else
|
||||
UserSettings = ''
|
||||
Set_Property(@Window:'.PUB_SAVE_SETTINGS', 'ENABLED', True$)
|
||||
end
|
||||
GoSub Setup_OLE_Controls
|
||||
GoSub EnableGenerateReportButton
|
||||
FormSize = ''
|
||||
SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize)
|
||||
|
||||
End Event
|
||||
|
||||
|
||||
Event PUB_GEN_REPORT.CLICK()
|
||||
|
||||
// Gather settings from form
|
||||
ColFltrArray = Get_Property(@Window:'.OLE_EDT_COL_FILTER', 'OLE.ARRAY')
|
||||
LocFltrArray = Get_Property(@Window:'.OLE_EDT_LOC_FILTER', 'OLE.ARRAY')
|
||||
|
||||
RptColumns = ''
|
||||
RptLocations = ''
|
||||
|
||||
Columns = ColFltrArray<1>
|
||||
Flags = ColFltrArray<2>
|
||||
For each Column in Columns using @VM setting vPos
|
||||
ColumnEnabled = Flags<0, vPos>
|
||||
If ColumnEnabled then RptColumns<0, -1> = Column
|
||||
Next Column
|
||||
|
||||
Locations = LocFltrArray<1>
|
||||
Flags = LocFltrArray<3>
|
||||
For each Location in Locations using @VM setting vPos
|
||||
LocationEnabled = Flags<0, vPos>
|
||||
If LocationEnabled then RptLocations<0, -1> = Location
|
||||
Next Location
|
||||
|
||||
* If @User4 EQ 'DANIEL_ST' then
|
||||
* debug
|
||||
* Material_Track(RptColumns, RptLocations)
|
||||
* TaskID = RTI_TASK_SUBMIT('', 'MATERIAL_TRACK', RptColumns, RptLocations)
|
||||
* If TaskID NE 0 then
|
||||
* Done = False$
|
||||
* TaskResponse = ''
|
||||
* Loop
|
||||
* Status = RTI_Task_Status(TaskID, TaskResponse)
|
||||
* If (Status EQ 'COMPLETED') OR (Status EQ 'ERROR') then Done = True$
|
||||
* Until Done
|
||||
* Repeat
|
||||
* end else
|
||||
* // Track if task id wasn't created at all.
|
||||
* end
|
||||
* StatusError = Get_Status(errCode)
|
||||
* If (Index(errCode, 'SHELLEXECUTE', 1)) NE 0 then StatusError = 0
|
||||
* end else
|
||||
Report_Services('GetMaterialTrackReport', RptColumns, RptLocations)
|
||||
* end
|
||||
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event PUB_SAVE_SETTINGS.CLICK()
|
||||
|
||||
RptConfigKey = 'MATERIAL_TRACK*':@User4
|
||||
If RowExists('REPORT_CONFIG', RptConfigKey) then
|
||||
UserSettings = Database_Services('ReadDataRow', 'REPORT_CONFIG', RptConfigKey)
|
||||
end else
|
||||
UserSettings = ''
|
||||
end
|
||||
|
||||
// Gather settings from form
|
||||
ColFltrArray = Get_Property(@Window:'.OLE_EDT_COL_FILTER', 'OLE.ARRAY')
|
||||
LocFltrArray = Get_Property(@Window:'.OLE_EDT_LOC_FILTER', 'OLE.ARRAY')
|
||||
|
||||
RptColumns = ''
|
||||
RptLocations = ''
|
||||
|
||||
Columns = ColFltrArray<1>
|
||||
Flags = ColFltrArray<2>
|
||||
For each Column in Columns using @VM setting vPos
|
||||
ColumnEnabled = Flags<0, vPos>
|
||||
If ColumnEnabled then RptColumns<0, -1> = Column
|
||||
Next Column
|
||||
UserSettings<REPORT_CONFIG.REPORT_COLUMNS$> = Flags
|
||||
|
||||
Locations = LocFltrArray<1>
|
||||
Flags = LocFltrArray<3>
|
||||
For each Location in Locations using @VM setting vPos
|
||||
LocationEnabled = Flags<0, vPos>
|
||||
If LocationEnabled then RptLocations<0, -1> = Location
|
||||
Next Location
|
||||
UserSettings<REPORT_CONFIG.LOCATION_FILTER$> = Flags
|
||||
|
||||
Database_Services('WriteDataRow', 'REPORT_CONFIG', RptConfigKey, UserSettings, True$, False$, True$)
|
||||
Set_Property(CtrlEntID, 'ENABLED', False$)
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event OLE_EDT_COL_FILTER.OnCheckChanged(Cell, OldValue, NewValue)
|
||||
|
||||
GoSub EnableSaveButton
|
||||
GoSub EnableGenerateReportButton
|
||||
|
||||
end event
|
||||
|
||||
|
||||
Event OLE_EDT_LOC_FILTER.OnCheckChanged(Cell, OldValue, NewValue)
|
||||
|
||||
GoSub EnableReportColumns
|
||||
GoSub EnableSaveButton
|
||||
GoSub EnableGenerateReportButton
|
||||
|
||||
end event
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Internal GoSubs
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Setup_OLE_Controls:
|
||||
|
||||
// Report Columns
|
||||
RptCols = ''
|
||||
RptCols<1, 1> = 'React No'
|
||||
RptCols<1, 2> = 'React Type'
|
||||
RptCols<1, 3> = 'WO No'
|
||||
RptCols<1, 4> = 'SAP Prod No'
|
||||
RptCols<1, 5> = 'Sub Part No'
|
||||
RptCols<1, 6> = 'Epi Part No'
|
||||
RptCols<1, 7> = 'WO Qty'
|
||||
RptCols<1, 8> = 'RX Qty'
|
||||
RptCols<1, 9> = 'UnRel Qty'
|
||||
RptCols<1, 10> = 'Kit Location'
|
||||
RptCols<1, 11> = 'Kit Qty'
|
||||
RptCols<1, 12> = '+/-'
|
||||
RptCols<1, 13> = 'Kit RO'
|
||||
RptCols<1, 14> = 'PTI RO'
|
||||
RptCols<1, 15> = 'Load'
|
||||
RptCols<1, 16> = 'Comments'
|
||||
|
||||
RptColsEnabled = ''
|
||||
If UserSettings NE '' then
|
||||
RptColsEnabled = UserSettings<REPORT_CONFIG.REPORT_COLUMNS$>
|
||||
end else
|
||||
For each Col in RptCols using @VM setting vPos
|
||||
RptColsEnabled<0, -1> = True$
|
||||
Next Col
|
||||
end
|
||||
|
||||
RptColsArray = RptCols:@FM:RptColsEnabled
|
||||
|
||||
// Location Filters
|
||||
LocFilters = ''
|
||||
LocFilters<1, 1> = 'SR*KTR]'
|
||||
LocFilters<1, 2> = '1K*PTI'
|
||||
LocFilters<1, 3> = 'CR*BE'
|
||||
LocFilters<1, 4> = 'CR*BO'
|
||||
LocFilters<1, 5> = 'CR*TUN'
|
||||
LocFilters<1, 6> = 'CR*EPR'
|
||||
LocFilters<1, 7> = 'CR*FE'
|
||||
LocFilters<1, 8> = 'CR*FEH'
|
||||
LocFilters<1, 9> = 'CR*FO'
|
||||
LocFilters<1, 10> = 'CR*FOH'
|
||||
|
||||
LocDescriptions = ''
|
||||
LocsEnabled = ''
|
||||
If UserSettings NE '' then
|
||||
LocsEnabled = UserSettings<REPORT_CONFIG.LOCATION_FILTER$>
|
||||
For each Loc in LocFilters using @VM setting vPos
|
||||
If vPos GT 1 then
|
||||
LocDescriptions<0, -1> = Xlate('LOCATION', Loc, 'DESC', 'X')
|
||||
end else
|
||||
LocDescriptions<0, -1> = 'All Kit Racks'
|
||||
end
|
||||
Next Loc
|
||||
end else
|
||||
For each Loc in LocFilters using @VM setting vPos
|
||||
LocsEnabled<0, -1> = True$
|
||||
If vPos GT 1 then
|
||||
LocDescriptions<0, -1> = Xlate('LOCATION', Loc, 'DESC', 'X')
|
||||
end else
|
||||
LocDescriptions<0, -1> = 'All Kit Racks'
|
||||
end
|
||||
Next Loc
|
||||
end
|
||||
|
||||
LocFltrArray = LocFilters:@FM:LocDescriptions:@FM:LocsEnabled
|
||||
|
||||
ColFltrCtrl = @Window:'.OLE_EDT_COL_FILTER'
|
||||
LocFltrCtrl = @Window:'.OLE_EDT_LOC_FILTER'
|
||||
|
||||
// Qualify OLE events that we want to intercept
|
||||
Qualifier = ''
|
||||
Qualifier<1> = 1
|
||||
Qualifier<4> = 0 ; * process synchronously (i.e. immediately)
|
||||
Send_Message(ColFltrCtrl, 'QUALIFY_EVENT', 'OLE.OnCheckChanged', Qualifier)
|
||||
Send_Message(LocFltrCtrl, 'QUALIFY_EVENT', 'OLE.OnCheckChanged', Qualifier)
|
||||
|
||||
NumColFltrCols = 2
|
||||
NumColFltrRows = DCount(RptCols, @VM)
|
||||
NumLocFltrCols = 3
|
||||
NumLocFltrRows = DCount(LocFilters, @VM)
|
||||
|
||||
HeaderFontArray = 'Segoe UI':@SVM:8:@SVM:700
|
||||
ColFltrDimArray = NumColFltrCols : @FM : NumColFltrRows
|
||||
LocFltrDimArray = NumLocFltrCols : @FM : NumLocFltrRows
|
||||
DataColArray = ''
|
||||
DataColArray<4> = True$ ; // Autosize column
|
||||
|
||||
HeaderTitles = 'Column':@VM:'Enabled'
|
||||
Set_Property(ColFltrCtrl, "OLE.TitleList", HeaderTitles)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellFont[All; All]", 'Segoe UI':@SVM:8)
|
||||
Set_Property(ColFltrCtrl, "OLE.Dimension", ColFltrDimArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.HeaderFont[All; 1]", HeaderFontArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.HeaderColumn[1]", '':@FM:False$:@FM)
|
||||
Set_Property(ColFltrCtrl, "OLE.HeaderAlignment[All; 1]", "Top":@FM:"Center":@FM:"Center")
|
||||
Set_Property(ColFltrCtrl, "OLE.HeaderColors[All; 1]", @FM:"{200, 200, 200}")
|
||||
Set_Property(ColFltrCtrl, "OLE.CellType[2; All]", "Check Box")
|
||||
Set_Property(ColFltrCtrl, "OLE.CellAlignment[2; All]", "Top":@FM:"Center":@FM:"Center")
|
||||
Set_Property(ColFltrCtrl, "OLE.DataColumn[1]", DataColArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.ARRAY", RptColsArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheckEnabled[2; 1-3]", False)
|
||||
CellColorArray = 'None':@FM:"{240, 240, 240}"
|
||||
Set_Property(ColFltrCtrl, "OLE.CellColors[All; 1-3]", CellColorArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellProtection[All; 1-3]", 'FUL')
|
||||
|
||||
|
||||
HeaderTitles = 'Location':@VM:'Description':@VM:'Enabled'
|
||||
Set_Property(LocFltrCtrl, "OLE.TitleList", HeaderTitles)
|
||||
Set_Property(LocFltrCtrl, "OLE.CellFont[All; All]", 'Segoe UI':@SVM:8)
|
||||
Set_Property(LocFltrCtrl, "OLE.Dimension", LocFltrDimArray)
|
||||
Set_Property(LocFltrCtrl, "OLE.LIST", '')
|
||||
Set_Property(LocFltrCtrl, "OLE.HeaderFont[All; 1]", HeaderFontArray)
|
||||
Set_Property(LocFltrCtrl, "OLE.HeaderColumn[1]", '':@FM:False$:@FM)
|
||||
Set_Property(LocFltrCtrl, "OLE.HeaderAlignment[All; 1]", "Top":@FM:"Center":@FM:"Center")
|
||||
Set_Property(LocFltrCtrl, "OLE.HeaderColors[All; 1]", @FM:"{200, 200, 200}")
|
||||
Set_Property(LocFltrCtrl, "OLE.CellType[3; All]", "Check Box")
|
||||
Set_Property(LocFltrCtrl, "OLE.DataColumn[2]", DataColArray)
|
||||
Set_Property(LocFltrCtrl, "OLE.CellAlignment[3; All]", "Top":@FM:"Center":@FM:"Center")
|
||||
Set_Property(LocFltrCtrl, "OLE.ARRAY", LocFltrArray)
|
||||
|
||||
return
|
||||
|
||||
|
||||
EnableSaveButton:
|
||||
|
||||
// Enable save settings button if necessary
|
||||
RptConfigKey = 'MATERIAL_TRACK*':@User4
|
||||
If RowExists('REPORT_CONFIG', RptConfigKey) then
|
||||
UserSettings = Database_Services('ReadDataRow', 'REPORT_CONFIG', RptConfigKey)
|
||||
end else
|
||||
UserSettings = ''
|
||||
end
|
||||
|
||||
// Gather settings from form
|
||||
ColFltrArray = Get_Property(@Window:'.OLE_EDT_COL_FILTER', 'OLE.ARRAY')
|
||||
LocFltrArray = Get_Property(@Window:'.OLE_EDT_LOC_FILTER', 'OLE.ARRAY')
|
||||
|
||||
NewColFlags = ColFltrArray<2>
|
||||
CurrColFlags = UserSettings<REPORT_CONFIG.REPORT_COLUMNS$>
|
||||
|
||||
NewLocFlags = LocFltrArray<3>
|
||||
CurrLocFlags = UserSettings<REPORT_CONFIG.LOCATION_FILTER$>
|
||||
|
||||
ChangeDetected = ( (NewColFlags NE CurrColFlags) or (NewLocFlags NE CurrLocFlags) )
|
||||
Set_Property(@Window:'.PUB_SAVE_SETTINGS', 'ENABLED', ChangeDetected)
|
||||
|
||||
return
|
||||
|
||||
|
||||
EnableGenerateReportButton:
|
||||
|
||||
// Gather settings from form
|
||||
LocFltrArray = Get_Property(@Window:'.OLE_EDT_LOC_FILTER', 'OLE.ARRAY')
|
||||
LocFlags = LocFltrArray<3>
|
||||
ButtonEnabled = (Sum(LocFlags) GT 0)
|
||||
Set_Property(@Window:'.PUB_GEN_REPORT', 'ENABLED', ButtonEnabled)
|
||||
|
||||
return
|
||||
|
||||
|
||||
EnableReportColumns:
|
||||
|
||||
ColFltrCtrl = @Window:'.OLE_EDT_COL_FILTER'
|
||||
LocFltrCtrl = @Window:'.OLE_EDT_LOC_FILTER'
|
||||
|
||||
// Gather settings from form
|
||||
LocFltrArray = Get_Property(LocFltrCtrl, 'OLE.ARRAY')
|
||||
|
||||
LocFlags = LocFltrArray<3>
|
||||
KitRackFlag = LocFlags<0, 1>
|
||||
PTIRackFlag = LocFlags<0, 2>
|
||||
LoadedFlags = Field(LocFlags, @VM , 3, 8)
|
||||
LoadedColEnabled = (Sum(LoadedFlags) GT 0)
|
||||
EnabledCellColorArray = 'None':@FM:'None'
|
||||
DisabledCellColorArray = 'None':@FM:"{240, 240, 240}"
|
||||
If KitRackFlag EQ True$ then
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheck[2; 10-12]", True$)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellColors[All; 10-12]", EnabledCellColorArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellProtection[All; 10-12]", 'SEL')
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheckEnabled[2; 10-12]", True$)
|
||||
end else
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheck[2; 10-12]", False$)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellColors[All; 10-12]", DisabledCellColorArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellProtection[All; 10-12]", 'FUL')
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheckEnabled[2; 10-12]", False$)
|
||||
end
|
||||
If PTIRackFlag EQ True$ then
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheck[2; 13]", True$)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellColors[All; 13]", EnabledCellColorArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellProtection[All; 13]", 'SEL')
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheckEnabled[2; 13]", True$)
|
||||
end else
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheck[2; 13]", False$)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellColors[All; 13]", DisabledCellColorArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellProtection[All; 13]", 'FUL')
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheckEnabled[2; 13]", False$)
|
||||
end
|
||||
If LoadedColEnabled EQ True$ then
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheck[2; 14]", True$)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellColors[All; 14]", EnabledCellColorArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellProtection[All; 14]", 'SEL')
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheckEnabled[2; 14]", True$)
|
||||
end else
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheck[2; 14]", False$)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellColors[All; 14]", DisabledCellColorArray)
|
||||
Set_Property(ColFltrCtrl, "OLE.CellProtection[All; 14]", 'FUL')
|
||||
Set_Property(ColFltrCtrl, "OLE.CellCheckEnabled[2; 14]", False$)
|
||||
end
|
||||
|
||||
return
|
||||
|
||||
|
Reference in New Issue
Block a user