From c30bb969729018de24880d3d9c9ba91057f2040d Mon Sep 17 00:00:00 2001 From: "Ouellette Jonathan (CSC FI SPS MESLEO)" Date: Thu, 28 Aug 2025 18:08:06 +0000 Subject: [PATCH] Merged PR 24620: WO Hierarchy Record Gathering Created methods to get all record found in the hierarchy of WO's Related work items: #313450 --- LSL2/STPROC/ARCHIVE_SERVICES.txt | 346 ++++++++++++++++++++++------- LSL2/STPROC/WM_IN_SERVICES.txt | 27 ++- LSL2/STPROC/WM_OUT_SERVICES.txt | 28 ++- LSL2/STPROCINS/ARCHIVE_EQUATES.txt | 19 ++ 4 files changed, 333 insertions(+), 87 deletions(-) create mode 100644 LSL2/STPROCINS/ARCHIVE_EQUATES.txt diff --git a/LSL2/STPROC/ARCHIVE_SERVICES.txt b/LSL2/STPROC/ARCHIVE_SERVICES.txt index 5314e28..34833c4 100644 --- a/LSL2/STPROC/ARCHIVE_SERVICES.txt +++ b/LSL2/STPROC/ARCHIVE_SERVICES.txt @@ -1,85 +1,261 @@ -Compile function Archive_Services(@Service, @Params) -#pragma precomp SRP_PreCompiler -$insert LOGICAL -$insert APP_INSERTS -EQU COMMA$ To ',' - -Declare subroutine Change_Log_Services, Logging_Services -Declare function SRP_Datetime, Logging_Services, Environment_Services, Datetime - -LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Archive' -LogDate = Oconv(Date(), 'D4/') -LogTime = Oconv(Time(), 'MTS') -LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ArchiveService.csv' -Headers = 'Logging DTM' : @FM : 'Message' : @FM : 'Cutoff Date' -objLogArchiveService = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) -LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM - -GoToService - -Return Response or "" - -//----------------------------------------------------------------------------- -// SERVICES -//----------------------------------------------------------------------------- - -Service ArchiveRecords() - Errors = '' - StatusMessage = 'Starting Archive Script.' - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = StatusMessage - Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) - - //Archive Change Log Records - GoSub ChangeLogArchive - - //Finish - Locate True$ in Errors using @FM setting ePos then - StatusMessage = 'Archive script complete. Errors detected. Check individual archive logs for more info.' - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = StatusMessage - Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) - end else - StatusMessage = 'Archive script complete. No errors detected.' - LogData = '' - LogData<1> = LoggingDTM - LogData<2> = StatusMessage - Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) - end - -End Service - -Service DearchiveRecord(Table, ID) - -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 - - - - - +Compile function Archive_Services(@Service, @Params) +#pragma precomp SRP_PreCompiler +$insert LOGICAL +$insert APP_INSERTS +$Insert WO_LOG_EQUATES +$Insert RDS_EQUATES +$Insert REACT_RUN_EQUATES +$Insert RDS_LAYER_EQUATES +$Insert RDS_TEST_EQUATES +$Insert ARCHIVE_EQUATES + +EQU COMMA$ To ',' + +Declare subroutine Change_Log_Services, Logging_Services, Error_Services, Database_Services +Declare function SRP_Datetime, Logging_Services, Environment_Services, Datetime +Declare function Database_Services, Wo_Mat_Services, Error_Services, RDS_Services +Declare function WM_In_Services, WM_Out_Services + +LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Archive' +LogDate = Oconv(Date(), 'D4/') +LogTime = Oconv(Time(), 'MTS') +LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ArchiveService.csv' +Headers = 'Logging DTM' : @FM : 'Message' : @FM : 'Cutoff Date' +objLogArchiveService = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) +LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM + +GoToService + +Return Response or "" + +//----------------------------------------------------------------------------- +// SERVICES +//----------------------------------------------------------------------------- + +Service ArchiveRecords() + Errors = '' + StatusMessage = 'Starting Archive Script.' + LogData = '' + LogData<1> = LoggingDTM + LogData<2> = StatusMessage + Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) + + //Archive Change Log Records + GoSub ChangeLogArchive + + //Finish + Locate True$ in Errors using @FM setting ePos then + StatusMessage = 'Archive script complete. Errors detected. Check individual archive logs for more info.' + LogData = '' + LogData<1> = LoggingDTM + LogData<2> = StatusMessage + Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) + end else + StatusMessage = 'Archive script complete. No errors detected.' + LogData = '' + LogData<1> = LoggingDTM + LogData<2> = StatusMessage + Logging_Services('AppendLog', objLogArchiveService, LogData, @RM, @FM) + end + +End Service + +Service GetWORelatedRecord(WOLogId) + + ErrorMsg = '' + If WOLogId NE '' then + If RowExists('WO_LOG', WOLogId) then + WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WOLogId, True$, 0, False$) + If Error_Services('NoError') then + ArchiveRecordId = 'WO_LOG*' : WOLogId + ArchiveRecord = '' + WOMatKeys = Wo_Mat_Services('GetWOMatKeys', WOLogId) + If Error_Services('NoError') then + WOMatQAKeys = WOMatKeys + WOStepKey = WOLogRec + WMInKeys = Wm_In_Services('GetWMInKeys', WOLogId) + if Error_Services('NoError') then + WMOutKeys = Wm_Out_Services('GetWMOutKeys', WOLogId) + if Error_Services('NoError') then + 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 + RDSLayerKeys<1, -1> = ReactRunRec + 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 + 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 + end else + ErrorMsg = Error_Services('GetMessage') + end + Next RDSTestKey + end + If ErrorMsg EQ '' then + //ArchiveRecord + //WOLogId + ArchiveRecord = WOLogId + ArchiveRecord = 'WO_LOG' + ArchiveRecord = False$ + ArchiveRecord = False$ + //WOStepKey + ArchiveRecord = WOStepKey + ArchiveRecord = 'WO_STEP' + ArchiveRecord = False$ + ArchiveRecord = False$ + //WOMatKeys + for each WOMatKey in WOMatKeys using @VM + ArchiveRecord = WOMatKey + ArchiveRecord = 'WO_MAT' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next WOMatKey + //WOMatQAKeys + for each WOMatQAKey in WOMatQAKeys using @VM + ArchiveRecord = WOMatQAKey + ArchiveRecord = 'WO_MAT_QA' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next WOMatQAKey + //WMInKeys (EpiPro Specific) + for each WMInKey in WMInKeys using @VM + ArchiveRecord = WMInKey + ArchiveRecord = 'WM_IN' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next WMInKey + //WMOutKeys (EpiPro Specific) + for each WMOutKey in WMOutKeys using @VM + ArchiveRecord = WMOutKey + ArchiveRecord = 'WM_OUT' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next WMOutKey + //RDSKeys + for each RDSKey in RDSKeys using @VM + ArchiveRecord = RDSKey + ArchiveRecord = 'RDS' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next RDSKey + //ReactRunKeys + for each ReactRunKey in ReactRunKeys using @VM + ArchiveRecord = ReactRunKey + ArchiveRecord = 'REACT_RUN' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next ReactRunKey + //RDSLayerKeys + for each RDSLayerKey in RDSLayerKeys using @VM + ArchiveRecord = RDSLayerKey + ArchiveRecord = 'RDS_LAYER' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next RDSLayerKey + //CleanInspKeys + for each CleanInspKey in CleanInspKeys using @VM + ArchiveRecord = CleanInspKey + ArchiveRecord = 'CLEAN_INSP' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next CleanInspKey + //RDSTestKeys + for each RDSTestKey in RDSTestKeys using @VM + ArchiveRecord = RDSTestKey + ArchiveRecord = 'RDS_TEST' + ArchiveRecord = False$ + ArchiveRecord = False$ + Next RDSTestKey + //TWUseKeys + for each TWUseKey in TWUseKeys using @VM + if TWUseKey NE '' then + ArchiveRecord = TWUseKey + ArchiveRecord = 'TW_USE' + ArchiveRecord = False$ + ArchiveRecord = 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 + + + + + diff --git a/LSL2/STPROC/WM_IN_SERVICES.txt b/LSL2/STPROC/WM_IN_SERVICES.txt index 62d4a3d..6afdbc3 100644 --- a/LSL2/STPROC/WM_IN_SERVICES.txt +++ b/LSL2/STPROC/WM_IN_SERVICES.txt @@ -54,7 +54,7 @@ $Insert DICT_EQUATES $Insert WM_IN_EQUATES 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 @@ -368,3 +368,28 @@ Service VerifyWOMatWMIKeyIndex(WMIKey) 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 + diff --git a/LSL2/STPROC/WM_OUT_SERVICES.txt b/LSL2/STPROC/WM_OUT_SERVICES.txt index 3ba0fe0..dd5dbae 100644 --- a/LSL2/STPROC/WM_OUT_SERVICES.txt +++ b/LSL2/STPROC/WM_OUT_SERVICES.txt @@ -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 Logging_Services 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 @@ -645,3 +645,29 @@ Service VerifyWOMatWMOKeyIndex(WMOKey) 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 + + diff --git a/LSL2/STPROCINS/ARCHIVE_EQUATES.txt b/LSL2/STPROCINS/ARCHIVE_EQUATES.txt new file mode 100644 index 0000000..308c481 --- /dev/null +++ b/LSL2/STPROCINS/ARCHIVE_EQUATES.txt @@ -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