From d6d7c80a704dc8700aef5d50146fc8ae5a7dfeec Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Thu, 12 Mar 2026 16:36:27 +0000 Subject: [PATCH 1/2] Update daily settlement task, script, and tests Replaced DailySettlementProcessingTask.xml with new schedule, user, and script arguments. Updated Invoke-DailySettlementProcessing.ps1 to use new merchant endpoint, changed merchant ID property, and added verbose Write-Host output for debugging. Adjusted tests to match updated script and endpoint. --- .github/workflows/powershell_nightly.yml | 2 +- .github/workflows/pullrequest.yml | 2 +- .../DailySettlementProcessingTask.xml | Bin 0 -> 4098 bytes .../Invoke-DailySettlementProcessing.ps1 | 14 +++-- ...Invoke-DailySettlementProcessing.Tests.ps1 | 0 Scripts/DailySettlementProcessingTask.xml | 52 ------------------ 6 files changed, 10 insertions(+), 60 deletions(-) create mode 100644 ScheduledTasks/SettlementProcessing/DailySettlementProcessingTask.xml rename {Scripts => ScheduledTasks/SettlementProcessing}/Invoke-DailySettlementProcessing.ps1 (90%) rename {Scripts => ScheduledTasks/SettlementProcessing}/Tests/Invoke-DailySettlementProcessing.Tests.ps1 (100%) delete mode 100644 Scripts/DailySettlementProcessingTask.xml diff --git a/.github/workflows/powershell_nightly.yml b/.github/workflows/powershell_nightly.yml index 8a56f9b..f9887bd 100644 --- a/.github/workflows/powershell_nightly.yml +++ b/.github/workflows/powershell_nightly.yml @@ -24,4 +24,4 @@ jobs: - name: Run Pester Tests shell: pwsh run: | - Invoke-Pester -Path ./Scripts/Tests -CI + Invoke-Pester -Path ./ScheduledTasks/SettlementProcessing/Scripts/Tests -CI diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml index 0c82218..394506b 100644 --- a/.github/workflows/pullrequest.yml +++ b/.github/workflows/pullrequest.yml @@ -53,4 +53,4 @@ jobs: - name: Run Pester Tests shell: pwsh run: | - Invoke-Pester -Path ./Scripts/Tests -CI + Invoke-Pester -Path ./ScheduledTasks/SettlementProcessing/Tests -CI diff --git a/ScheduledTasks/SettlementProcessing/DailySettlementProcessingTask.xml b/ScheduledTasks/SettlementProcessing/DailySettlementProcessingTask.xml new file mode 100644 index 0000000000000000000000000000000000000000..13882de3134c6a77ef072e511fffad536d580ae0 GIT binary patch literal 4098 zcmbW4*=`z16o$|BNb?SedoYWG9g9hX?JP*nj1}X_jc*vh7#Xldx8wNbGxPnYXnG?I ziCVo?ojS{3XRCj|ckQixvxUvAVqa}yD~oJq54N;FtZGfGTZ4CnnWc>wA2YkOsn1^9 zz}{O8stz=7?T!6zzgd^jAzbc%$g$-dgVZIIl5}S=*Q1@-0at{qJ7g}LQ=RvWkrnbI z?prA9uFV44XV+-V_%pKy)V${1+#eV1_X^aeT)}^en4O`sWG?X@X`iRhQwNl<&`gxEor1^HX64Hc+*=^7oexjh zu!~D#Yl{CnqzvsJ*K~{=`NI=hi&Jr~y!vYGv18WA)>9DIPD|q=b?Qkk?5R90cI3W7 zKZm}#@ssWIMSj875HbHJU$pz~hiLPA6=kgH+NJNi^1_VBmG0U3U}c%60`=HqKI_5R zs7&|d8jkX*J}VRx$~86OC`6mSI^0cS>xhVNdo;H30mWa3NK||(PHW6Hxf=YpSWSoM-S!=~!NspU>`DcatMRme0>HJn|9Q>>u-R@biQ z#W4s^(4>fma%MW0mss|U1d$?_U6gsAU%=xYO$Nk!SXJb;jUvzE9sTx%?5J)p^qK?S z3&t+|J!4#zWk3yUVZHWpzcqO|p%SQ@6i4+TN6xD}o~)CkAA5^DWwg;bqMtkih0wcv zV_aSQu8Q8>Sdmtww9<>$BI9q5{6B+<&LgUc^3ghPVJAI{^ob2A#~y2^pe$sirD|D? z{PN&6Ql|)2*9mrn(a`gUnlW5ks@kmiGXB{rSMhF79gunf(ZApDuA=D)eRz!KOR9y= zFeCrhX+x)H^ldn9^t|Lv6kuclO2?8iS62R$<6Yu!#AS$ zsje*y8A$dkPAZJ6qf&>}!z(yS>VE`V#t8_w{X_ob~r?hDc*eqxpypa~dD`UfdHA{{hf0h=%|G literal 0 HcmV?d00001 diff --git a/Scripts/Invoke-DailySettlementProcessing.ps1 b/ScheduledTasks/SettlementProcessing/Invoke-DailySettlementProcessing.ps1 similarity index 90% rename from Scripts/Invoke-DailySettlementProcessing.ps1 rename to ScheduledTasks/SettlementProcessing/Invoke-DailySettlementProcessing.ps1 index 7a85871..29f0dfa 100644 --- a/Scripts/Invoke-DailySettlementProcessing.ps1 +++ b/ScheduledTasks/SettlementProcessing/Invoke-DailySettlementProcessing.ps1 @@ -53,6 +53,7 @@ function Get-AccessToken { if ($tokenResponse.ContainsKey($propertyName)) { $accessToken = [string]$tokenResponse[$propertyName] if (-not [string]::IsNullOrWhiteSpace($accessToken)) { + Write-Host "Got an access token 1" return $accessToken } } @@ -64,6 +65,7 @@ function Get-AccessToken { if ($null -ne $property) { $accessToken = [string]$property.Value if (-not [string]::IsNullOrWhiteSpace($accessToken)) { + Write-Host "Got an access token 2" return $accessToken } } @@ -126,7 +128,7 @@ function Get-MerchantId { } if ($Merchant -is [hashtable]) { - foreach ($propertyName in 'merchantId', 'MerchantId', 'id', 'Id') { + foreach ($propertyName in 'merchant_Id', 'MerchantId', 'id', 'Id') { if ($Merchant.ContainsKey($propertyName)) { $merchantId = [string]$Merchant[$propertyName] if (-not [string]::IsNullOrWhiteSpace($merchantId)) { @@ -136,7 +138,7 @@ function Get-MerchantId { } } else { - foreach ($propertyName in 'merchantId', 'MerchantId', 'id', 'Id') { + foreach ($propertyName in 'merchant_Id', 'MerchantId', 'id', 'Id') { $property = $Merchant.PSObject.Properties[$propertyName] if ($null -ne $property) { $merchantId = [string]$property.Value @@ -175,20 +177,20 @@ function Invoke-DailySettlementProcessing { } $normalizedBaseUrl = $BaseUrl.TrimEnd('/') - $merchantsEndpoint = '{0}/api/v2/estates/{1}/merchants' -f $normalizedBaseUrl, $EstateId - Write-Verbose "Requesting merchants from [$merchantsEndpoint]" + $merchantsEndpoint = '{0}/api/estates/{1}/merchants' -f $normalizedBaseUrl, $EstateId + Write-Host "Requesting merchants from [$merchantsEndpoint]" $merchantResponse = Invoke-RestMethod -Method Get -Uri $merchantsEndpoint -Headers $headers $merchantIds = @(Get-MerchantItems -MerchantResponse $merchantResponse | ForEach-Object { Get-MerchantId -Merchant $_ }) if ($merchantIds.Count -eq 0) { - Write-Verbose "No merchants were returned for estate [$EstateId]" + Write-Host "No merchants were returned for estate [$EstateId]" return } foreach ($merchantId in $merchantIds) { $settlementEndpoint = '{0}/api/estates/{1}/settlements/{2}/merchants/{3}' -f $normalizedBaseUrl, $EstateId, $settlementDate, $merchantId - Write-Verbose "Submitting settlement for merchant [$merchantId] using [$settlementEndpoint]" + Write-Host "Submitting settlement for merchant [$merchantId] using [$settlementEndpoint]" Invoke-RestMethod -Method Post -Uri $settlementEndpoint -Headers $headers } } diff --git a/Scripts/Tests/Invoke-DailySettlementProcessing.Tests.ps1 b/ScheduledTasks/SettlementProcessing/Tests/Invoke-DailySettlementProcessing.Tests.ps1 similarity index 100% rename from Scripts/Tests/Invoke-DailySettlementProcessing.Tests.ps1 rename to ScheduledTasks/SettlementProcessing/Tests/Invoke-DailySettlementProcessing.Tests.ps1 diff --git a/Scripts/DailySettlementProcessingTask.xml b/Scripts/DailySettlementProcessingTask.xml deleted file mode 100644 index b293b87..0000000 --- a/Scripts/DailySettlementProcessingTask.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - 2026-03-12T00:00:00 - TransactionProcessing - Runs the daily settlement processing PowerShell script once per day. - - - - 2026-03-13T01:00:00 - true - - 1 - - - - - - S-1-5-18 - ServiceAccount - HighestAvailable - - - - IgnoreNew - false - false - true - true - true - - false - false - - true - true - false - false - false - true - false - PT1H - 7 - - - - powershell.exe - -NoProfile -ExecutionPolicy Bypass -File "C:\SupportTools\Scripts\Invoke-DailySettlementProcessing.ps1" -EstateId "__ESTATE_ID__" -BaseUrl "__BASE_URL__" -SecurityServiceUrl "__SECURITY_SERVICE_URL__" -ClientId "__CLIENT_ID__" -ClientSecret "__CLIENT_SECRET__" - C:\SupportTools\Scripts - - - From cdd27b1096441e910610441d056e2689e88c993b Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Thu, 12 Mar 2026 16:39:20 +0000 Subject: [PATCH 2/2] :| --- .../Tests/Invoke-DailySettlementProcessing.Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ScheduledTasks/SettlementProcessing/Tests/Invoke-DailySettlementProcessing.Tests.ps1 b/ScheduledTasks/SettlementProcessing/Tests/Invoke-DailySettlementProcessing.Tests.ps1 index dd6ec1f..e00179c 100644 --- a/ScheduledTasks/SettlementProcessing/Tests/Invoke-DailySettlementProcessing.Tests.ps1 +++ b/ScheduledTasks/SettlementProcessing/Tests/Invoke-DailySettlementProcessing.Tests.ps1 @@ -26,7 +26,7 @@ Describe 'Invoke-DailySettlementProcessing.ps1' { } } -ParameterFilter { $Method -eq 'Get' -and - $Uri -eq 'https://api.example/api/v2/estates/estate-123/merchants' -and + $Uri -eq 'https://api.example/api/estates/estate-123/merchants' -and $Headers.Authorization -eq 'Bearer access-token' }