Merged PR 24620: WO Hierarchy Record Gathering

Created methods to get all record found in the hierarchy of WO's

Related work items: #313450
This commit is contained in:
Ouellette Jonathan (CSC FI SPS MESLEO)
2025-08-28 18:08:06 +00:00
parent a196bffd41
commit c30bb96972
4 changed files with 333 additions and 87 deletions

View File

@ -1,85 +1,261 @@
Compile function Archive_Services(@Service, @Params) Compile function Archive_Services(@Service, @Params)
#pragma precomp SRP_PreCompiler #pragma precomp SRP_PreCompiler
$insert LOGICAL $insert LOGICAL
$insert APP_INSERTS $insert APP_INSERTS
EQU COMMA$ To ',' $Insert WO_LOG_EQUATES
$Insert RDS_EQUATES
Declare subroutine Change_Log_Services, Logging_Services $Insert REACT_RUN_EQUATES
Declare function SRP_Datetime, Logging_Services, Environment_Services, Datetime $Insert RDS_LAYER_EQUATES
$Insert RDS_TEST_EQUATES
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Archive' $Insert ARCHIVE_EQUATES
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS') EQU COMMA$ To ','
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ArchiveService.csv'
Headers = 'Logging DTM' : @FM : 'Message' : @FM : 'Cutoff Date' Declare subroutine Change_Log_Services, Logging_Services, Error_Services, Database_Services
objLogArchiveService = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) Declare function SRP_Datetime, Logging_Services, Environment_Services, Datetime
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM Declare function Database_Services, Wo_Mat_Services, Error_Services, RDS_Services
Declare function WM_In_Services, WM_Out_Services
GoToService
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Archive'
Return Response or "" LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
//----------------------------------------------------------------------------- LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ArchiveService.csv'
// SERVICES Headers = 'Logging DTM' : @FM : 'Message' : @FM : 'Cutoff Date'
//----------------------------------------------------------------------------- objLogArchiveService = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
Service ArchiveRecords()
Errors = '' GoToService
StatusMessage = 'Starting Archive Script.'
LogData = '' Return Response or ""
LogData<1> = LoggingDTM
LogData<2> = StatusMessage //-----------------------------------------------------------------------------
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) // SERVICES
//-----------------------------------------------------------------------------
//Archive Change Log Records
GoSub ChangeLogArchive Service ArchiveRecords()
Errors = ''
//Finish StatusMessage = 'Starting Archive Script.'
Locate True$ in Errors using @FM setting ePos then LogData = ''
StatusMessage = 'Archive script complete. Errors detected. Check individual archive logs for more info.' LogData<1> = LoggingDTM
LogData = '' LogData<2> = StatusMessage
LogData<1> = LoggingDTM Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
LogData<2> = StatusMessage
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) //Archive Change Log Records
end else GoSub ChangeLogArchive
StatusMessage = 'Archive script complete. No errors detected.'
LogData = '' //Finish
LogData<1> = LoggingDTM Locate True$ in Errors using @FM setting ePos then
LogData<2> = StatusMessage StatusMessage = 'Archive script complete. Errors detected. Check individual archive logs for more info.'
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) LogData = ''
end LogData<1> = LoggingDTM
LogData<2> = StatusMessage
End Service Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
end else
Service DearchiveRecord(Table, ID) StatusMessage = 'Archive script complete. No errors detected.'
LogData = ''
end service LogData<1> = LoggingDTM
LogData<2> = StatusMessage
ChangeLogArchive: Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
StatusMessage = 'Starting Change_Log Archive Script.' end
LogData = ''
LogData<1> = LoggingDTM End Service
LogData<2> = StatusMessage
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) Service GetWORelatedRecord(WOLogId)
ChangeLogArchiveDate = SRP_Datetime('AddYears', Datetime(), -1)
Change_Log_Services('ArchiveChangeLogRecByDate', ChangeLogArchiveDate) ErrorMsg = ''
If Error_Services('NoError') then If WOLogId NE '' then
StatusMessage = 'Starting Change_Log Archive Script.' If RowExists('WO_LOG', WOLogId) then
LogData = '' WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WOLogId, True$, 0, False$)
LogData<1> = LoggingDTM If Error_Services('NoError') then
LogData<2> = StatusMessage ArchiveRecordId = 'WO_LOG*' : WOLogId
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) ArchiveRecord = ''
end else WOMatKeys = Wo_Mat_Services('GetWOMatKeys', WOLogId)
StatusMessage = 'Error in Change_Log Archive Script.' If Error_Services('NoError') then
LogData = '' WOMatQAKeys = WOMatKeys
LogData<1> = LoggingDTM WOStepKey = WOLogRec<WO_LOG_WO_STEP_KEY$>
LogData<2> = StatusMessage WMInKeys = Wm_In_Services('GetWMInKeys', WOLogId)
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) if Error_Services('NoError') then
Errors<-1> = True$ WMOutKeys = Wm_Out_Services('GetWMOutKeys', WOLogId)
end if Error_Services('NoError') then
return RDSKeys = RDS_Services('GetRDSKeys', WOLogId)
if Error_Services('NoError') then
ReactRunKeys = RDSKeys
RDSLayerKeys = ''
CleanInspKeys = ''
for each ReactRunKey in ReactRunKeys using @VM setting iPos
ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', ReactRunKey, True$, 0, False$)
If Error_Services('NoError') then
CleanInspKeys<1, -1> = ReactRunRec<REACT_RUN_CI_NO$>
RDSLayerKeys<1, -1> = ReactRunRec<REACT_RUN_RDS_LAYER_KEYS$>
end else
ErrorMsg = Error_Services('GetMessage')
end
Next ReactRunKey
RDSTestKeys = ''
If ErrorMsg EQ '' then
For each RDSLayerKey in RDSLayerKeys using @VM
RDSLayerRec = Database_Services('ReadDataRow', 'RDS_LAYER', RDSLayerKey, True$, 0, False$)
If Error_Services('NoError') then
RDSTestKeys<1, -1> = RDSLayerRec<RDS_LAYER_RDS_TEST_KEYS$>
end else
ErrorMsg = Error_Services('GetMessage')
end
Next RDSLayerKey
TWUseKeys = ''
end
TWUseKeys = ''
If ErrorMsg EQ '' then
for each RDSTestKey in RDSTestKeys using @VM
RDSTestRec = Database_Services('ReadDataRow', 'RDS_TEST', RDSTestKey, True$, 0, False$)
If Error_Services('NoError') then
TWUseKeys<1,-1> = RDSTestRec<RDS_TEST_TW_USE_ID$>
end else
ErrorMsg = Error_Services('GetMessage')
end
Next RDSTestKey
end
If ErrorMsg EQ '' then
//ArchiveRecord
//WOLogId
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = WOLogId
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'WO_LOG'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
//WOStepKey
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = WOStepKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'WO_STEP'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
//WOMatKeys
for each WOMatKey in WOMatKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = WOMatKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'WO_MAT'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next WOMatKey
//WOMatQAKeys
for each WOMatQAKey in WOMatQAKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = WOMatQAKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'WO_MAT_QA'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next WOMatQAKey
//WMInKeys (EpiPro Specific)
for each WMInKey in WMInKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = WMInKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'WM_IN'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next WMInKey
//WMOutKeys (EpiPro Specific)
for each WMOutKey in WMOutKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = WMOutKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'WM_OUT'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next WMOutKey
//RDSKeys
for each RDSKey in RDSKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = RDSKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'RDS'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next RDSKey
//ReactRunKeys
for each ReactRunKey in ReactRunKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = ReactRunKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'REACT_RUN'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next ReactRunKey
//RDSLayerKeys
for each RDSLayerKey in RDSLayerKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = RDSLayerKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'RDS_LAYER'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next RDSLayerKey
//CleanInspKeys
for each CleanInspKey in CleanInspKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = CleanInspKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'CLEAN_INSP'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next CleanInspKey
//RDSTestKeys
for each RDSTestKey in RDSTestKeys using @VM
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = RDSTestKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'RDS_TEST'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
Next RDSTestKey
//TWUseKeys
for each TWUseKey in TWUseKeys using @VM
if TWUseKey NE '' then
ArchiveRecord<ARCHIVE_CHILD_RECORD$, -1> = TWUseKey
ArchiveRecord<ARCHIVE_CHILD_TABLE$, -1> = 'TW_USE'
ArchiveRecord<ARCHIVE_CHILD_RECORD_ARCHIVED$, -1> = False$
ArchiveRecord<ARCHIVE_CHILD_RECORD_DELETED$, -1> = False$
end
Next TWUseKey
Database_Services('WriteDataRow', 'ARCHIVE', ArchiveRecordId, ArchiveRecord)
If Error_Services('HasError') then
ErrorMsg = Error_Services('GetMessage')
end
end
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = Error_Services('GetMessage')
end
end else
ErrorMsg = 'WO_LOG record not found in WO_LOG table.'
end
end else
ErrorMsg = 'WO_LOG ID was null.'
end
If ErrorMsg NE '' then
Error_Services('Add', ErrorMsg)
end
end service
ChangeLogArchive:
StatusMessage = 'Starting Change_Log Archive Script.'
LogData = ''
LogData<1> = LoggingDTM
LogData<2> = StatusMessage
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
ChangeLogArchiveDate = SRP_Datetime('AddYears', Datetime(), -1)
Change_Log_Services('ArchiveChangeLogRecByDate', ChangeLogArchiveDate)
If Error_Services('NoError') then
StatusMessage = 'Starting Change_Log Archive Script.'
LogData = ''
LogData<1> = LoggingDTM
LogData<2> = StatusMessage
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
end else
StatusMessage = 'Error in Change_Log Archive Script.'
LogData = ''
LogData<1> = LoggingDTM
LogData<2> = StatusMessage
Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM)
Errors<-1> = True$
end
return

View File

@ -54,7 +54,7 @@ $Insert DICT_EQUATES
$Insert WM_IN_EQUATES $Insert WM_IN_EQUATES
Declare function PSN_Services, SRP_Rotate_Array, Datetime, Database_Services, Environment_Services, Logging_Services Declare function PSN_Services, SRP_Rotate_Array, Datetime, Database_Services, Environment_Services, Logging_Services
Declare subroutine Database_Services, Set_Status, obj_Wo_Mat_Log, Logging_Services, Extract_Si_Keys Declare subroutine Database_Services, Set_Status, obj_Wo_Mat_Log, Logging_Services, Extract_Si_Keys, Btree.Extract
GoToService GoToService
@ -368,3 +368,28 @@ Service VerifyWOMatWMIKeyIndex(WMIKey)
end service end service
Service GetWMInKeys(WOLogId)
ErrorMsg = ''
WMInKeys = ''
If WOLogId NE '' then
Open 'DICT.WM_IN' to hWmInDict then
SearchString = ''
SearchString := 'WO_NO':@VM:WOLogId:@FM
Btree.Extract(SearchString, 'WM_IN', hWmInDict, WMInKeys, 0, 0)
end else
ErrorMsg = 'Error opening WM_IN dictionary.'
end
end else
ErrorMsg = 'WOLogId was null'
end
If ErrorMsg NE '' then
Error_Services('Add', ErrorMsg)
end
Response = WMInKeys
end service

View File

@ -62,7 +62,7 @@ Declare function Database_Services, SRP_JSON, Error_Services, Clean_Insp_Servi
Declare function PSN_Services, SRP_Rotate_Array, Datetime, Return_To_Fab_Services, Environment_Services Declare function PSN_Services, SRP_Rotate_Array, Datetime, Return_To_Fab_Services, Environment_Services
Declare function Logging_Services Declare function Logging_Services
Declare subroutine Database_Services, SRP_JSON, Error_Services, Extract_Si_Keys, Set_Status, obj_wo_mat_log Declare subroutine Database_Services, SRP_JSON, Error_Services, Extract_Si_Keys, Set_Status, obj_wo_mat_log
Declare subroutine Logging_Services Declare subroutine Logging_Services, Btree.Extract
GoToService GoToService
@ -645,3 +645,29 @@ Service VerifyWOMatWMOKeyIndex(WMOKey)
end service end service
Service GetWMOutKeys(WOLogId)
ErrorMsg = ''
WMOutKeys = ''
If WOLogId NE '' then
Open 'DICT.WM_OUT' to hWmOutDict then
SearchString = ''
SearchString := 'WO_NO':@VM:WOLogId:@FM
Btree.Extract(SearchString, 'WM_OUT', hWmOutDict, WMOutKeys, 0, 0)
end else
ErrorMsg = 'Error opening WM_OUT dictionary.'
end
end else
ErrorMsg = 'WOLogId was null'
end
If ErrorMsg NE '' then
Error_Services('Add', ErrorMsg)
end
Response = WMOutKeys
end service

View File

@ -0,0 +1,19 @@
compile insert ARCHIVE_EQUATES
/*----------------------------------------
Author : Table Create Insert Routine
Written : 28/08/2025
Description : Insert for Table ARCHIVE
----------------------------------------*/
#ifndef __ARCHIVE_EQUATES__
#define __ARCHIVE_EQUATES__
equ ARCHIVE_ARCHIVE_DTM$ to 1
equ ARCHIVE_COMPLETE$ to 2
equ ARCHIVE_CHILD_RECORD$ to 3
equ ARCHIVE_CHILD_TABLE$ to 4
equ ARCHIVE_CHILD_RECORD_ARCHIVED$ to 5
equ ARCHIVE_CHILD_RECORD_DELETED$ to 6
equ ARCHIVE_CHILD_RECORD_ARCHIVE_DTM$ to 7
equ ARCHIVE_CHILD_RECORD_DELETE_DTM$ to 8
#endif