diff --git a/build/projects/Test Apps AT/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps AT/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps AT/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps AU/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps AU/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps AU/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps BE/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps BE/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps BE/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps CA/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps CA/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps CA/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps CH/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps CH/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps CH/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps CZ/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps CZ/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps CZ/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps DE/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps DE/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps DE/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps DK/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps DK/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps DK/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps ES/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps ES/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps ES/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps FI/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps FI/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps FI/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps FR/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps FR/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps FR/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps GB/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps GB/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps GB/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps IN/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps IN/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps IN/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps IS/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps IS/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps IS/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps IT/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps IT/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps IT/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps MX/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps MX/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps MX/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps NL/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps NL/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps NL/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps NO/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps NO/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps NO/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps NZ/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps NZ/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps NZ/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps RU/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps RU/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps RU/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps SE/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps SE/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps SE/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps US/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps US/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps US/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/projects/Test Apps W1/.AL-Go/PipelineFinalize.ps1 b/build/projects/Test Apps W1/.AL-Go/PipelineFinalize.ps1
deleted file mode 100644
index a726947778c..00000000000
--- a/build/projects/Test Apps W1/.AL-Go/PipelineFinalize.ps1
+++ /dev/null
@@ -1 +0,0 @@
-. (Join-Path $PSScriptRoot '../../../scripts/PipelineFinalize.ps1' -Resolve)
diff --git a/build/scripts/ApiTestCredential.psm1 b/build/scripts/ApiTestCredential.psm1
deleted file mode 100644
index 5983d23d783..00000000000
--- a/build/scripts/ApiTestCredential.psm1
+++ /dev/null
@@ -1,117 +0,0 @@
-function New-ApiTestPasswordFileStream {
- param([Parameter(Mandatory = $true)][string]$FilePath)
-
- $ErrorActionPreference = 'Stop'
- $security = [System.Security.AccessControl.FileSecurity]::new()
- $security.SetAccessRuleProtection($true, $false)
- $writerSid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
- $entries = @(
- @{ Sid = 'S-1-5-18'; Rights = [System.Security.AccessControl.FileSystemRights]::FullControl }
- @{ Sid = 'S-1-5-20'; Rights = [System.Security.AccessControl.FileSystemRights]::Read }
- @{ Sid = 'S-1-5-32-544'; Rights = [System.Security.AccessControl.FileSystemRights]::FullControl }
- )
- if ($writerSid -notin @('S-1-5-18', 'S-1-5-32-544')) {
- # The host identity writes the credential and deletes it during cleanup; it needs
- # neither ReadData nor FullControl. Container service identities retain their access.
- $entries += @{
- Sid = $writerSid
- Rights = [System.Security.AccessControl.FileSystemRights]'Write, Delete'
- }
- }
- foreach ($entry in $entries) {
- $security.AddAccessRule([System.Security.AccessControl.FileSystemAccessRule]::new(
- [System.Security.Principal.SecurityIdentifier]::new($entry.Sid),
- $entry.Rights,
- [System.Security.AccessControl.AccessControlType]::Allow))
- }
-
- # Supply the protected DACL to CreateFile itself, not Set-Acl after creation.
- # CreateNew also refuses to follow or overwrite a pre-existing credential file.
- if ($PSVersionTable.PSEdition -eq 'Core') {
- return [System.IO.FileSystemAclExtensions]::Create(
- [System.IO.FileInfo]::new($FilePath), [System.IO.FileMode]::CreateNew,
- [System.Security.AccessControl.FileSystemRights]::Write, [System.IO.FileShare]::None,
- 4096, [System.IO.FileOptions]::None, $security)
- }
- return [System.IO.FileStream]::new(
- $FilePath, [System.IO.FileMode]::CreateNew,
- [System.Security.AccessControl.FileSystemRights]::Write, [System.IO.FileShare]::None,
- 4096, [System.IO.FileOptions]::None, $security)
-}
-
-<#
-.SYNOPSIS
- Creates the API test credential directly in the container's shared my mount.
-.DESCRIPTION
- Records cleanup identity before atomically creating a new file with a protected
- DACL. No plaintext staging copies are made. SYSTEM and Administrators retain full
- access, NetworkService can read, and the host writer can write and delete.
- An existing file or unresolved mount is an error, including outside CI. Successful
- pipelines finalize cleanup; failed/cancelled pipelines rely on container teardown.
-#>
-function Write-ApiTestPassword {
- param(
- [Parameter(Mandatory = $true)]
- [ValidatePattern('^[a-zA-Z0-9][a-zA-Z0-9_.-]*$')]
- [string]$ContainerName,
- [Parameter(Mandatory = $true)]
- [PSCredential]$Credential
- )
-
- $ErrorActionPreference = 'Stop'
- $myFolders = @((Get-BcContainerSharedFolders -containerName $ContainerName).GetEnumerator() |
- Where-Object { $_.Value.TrimEnd('\') -eq 'C:\Run\my' })
- if ($myFolders.Count -ne 1) {
- throw "Cannot resolve the API test credential's container mount."
- }
- $filePath = Join-Path $myFolders[0].Key 'ApiTestPassword'
- # PipelineFinalize runs in this process; GITHUB_ENV only affects later steps.
- $env:BCAppsApiTestPasswordPath = $filePath
- $env:BCAppsApiTestPasswordContainer = $ContainerName
- if ($env:GITHUB_ENV) {
- Add-Content -LiteralPath $env:GITHUB_ENV -Encoding UTF8 -Value @(
- "BCAppsApiTestPasswordPath=$filePath"
- "BCAppsApiTestPasswordContainer=$ContainerName"
- ) -ErrorAction Stop
- }
-
- $created = $false
- $bytes = $null
- $characters = $null
- $passwordBuffer = [IntPtr]::Zero
- try {
- # Write directly to the shared mount. Copy-FileToBcContainer would introduce
- # another host staging copy with inherited permissions.
- $stream = New-ApiTestPasswordFileStream -FilePath $filePath
- $created = $true
- try {
- $passwordBuffer = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Credential.Password)
- $characters = [char[]]::new($Credential.Password.Length)
- [System.Runtime.InteropServices.Marshal]::Copy($passwordBuffer, $characters, 0, $characters.Length)
- $bytes = [System.Text.UTF8Encoding]::new($false).GetBytes($characters)
- $stream.Write($bytes, 0, $bytes.Length)
- }
- finally {
- if ($null -ne $bytes) { [Array]::Clear($bytes, 0, $bytes.Length) }
- if ($null -ne $characters) { [Array]::Clear($characters, 0, $characters.Length) }
- if ($passwordBuffer -ne [IntPtr]::Zero) {
- [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($passwordBuffer)
- }
- $stream.Dispose()
- }
- }
- catch {
- $originalError = $_
- if ($created) {
- try {
- & (Join-Path $PSScriptRoot 'Remove-ApiTestPassword.ps1') -ContainerName $ContainerName -FilePath $filePath
- }
- catch {
- Write-Warning 'Could not clean up the API test credential after setup failed; container teardown is still required.'
- }
- }
- throw $originalError
- }
-}
-
-Export-ModuleMember -Function Write-ApiTestPassword
diff --git a/build/scripts/NewBcContainer.ps1 b/build/scripts/NewBcContainer.ps1
index 78871ab947b..674d6f1faa5 100644
--- a/build/scripts/NewBcContainer.ps1
+++ b/build/scripts/NewBcContainer.ps1
@@ -24,17 +24,10 @@ if ($platformVersion) {
New-BcContainer @parameters
-if ($parameters.auth -in @('UserPassword', 'NavUserPassword')) {
- if (-not $parameters.credential) {
- throw "The BCApps UserPassword test container requires a credential."
- }
-
- Import-Module (Join-Path $PSScriptRoot 'ApiTestCredential.psm1') -Force
- Write-ApiTestPassword -ContainerName $parameters.ContainerName -Credential $parameters.credential
-}
-
Set-BcContainerServerConfiguration -containerName $parameters.ContainerName -keyName "EnforceUserPathForAlFileOperations" -keyValue "false"
Set-BcContainerServerConfiguration -containerName $parameters.ContainerName -keyName "UsePermissionSetsFromExtensions" -keyValue "true"
+# API tests call the container's own web services through AL HttpClient, which anti-SSRF blocks for local addresses (same as NAV RunALTests.ps1).
+Set-BcContainerServerConfiguration -containerName $parameters.ContainerName -keyName "NavHttpClientAntiSSRFEnabled" -keyValue "false"
Restart-BcContainer -containerName $parameters.ContainerName
$installedApps = Get-BcContainerAppInfo -containerName $parameters.ContainerName -tenantSpecificProperties -sort DependenciesLast
diff --git a/build/scripts/PipelineFinalize.ps1 b/build/scripts/PipelineFinalize.ps1
deleted file mode 100644
index 006bdc54b80..00000000000
--- a/build/scripts/PipelineFinalize.ps1
+++ /dev/null
@@ -1,13 +0,0 @@
-$ErrorActionPreference = 'Stop'
-
-# This hook is success-only. Failures/cancellation rely on normal container teardown,
-# not guaranteed after runner loss. CI credentials are per-run; other callers may differ.
-if (-not $env:BCAppsApiTestPasswordPath) {
- return
-}
-
-Write-Host 'API test credential cleanup (PipelineFinalize).'
-& (Join-Path $PSScriptRoot 'Remove-ApiTestPassword.ps1') `
- -ContainerName $env:BCAppsApiTestPasswordContainer -FilePath $env:BCAppsApiTestPasswordPath
-$env:BCAppsApiTestPasswordPath = $null
-$env:BCAppsApiTestPasswordContainer = $null
diff --git a/build/scripts/Remove-ApiTestPassword.ps1 b/build/scripts/Remove-ApiTestPassword.ps1
deleted file mode 100644
index 4c49720fe99..00000000000
--- a/build/scripts/Remove-ApiTestPassword.ps1
+++ /dev/null
@@ -1,34 +0,0 @@
-Param(
- [Parameter(Mandatory = $true)]
- [ValidatePattern('^[a-zA-Z0-9][a-zA-Z0-9_.-]*$')]
- [string]$ContainerName,
- [Parameter(Mandatory = $true)]
- [string]$FilePath
-)
-
-$ErrorActionPreference = 'Stop'
-
-if ((Split-Path -Path $FilePath -Leaf) -ne 'ApiTestPassword') {
- throw 'API test credential cleanup requires the exact ApiTestPassword file.'
-}
-if (-not (Test-Path -LiteralPath $FilePath -PathType Leaf)) {
- return
-}
-
-# End any remaining test workers before deleting their shared credential.
-$containerIds = @(docker container ls --all --filter "name=^/$([regex]::Escape($ContainerName))$" --format '{{.ID}}')
-if ($LASTEXITCODE -ne 0) {
- throw 'Could not determine whether the API test container still exists.'
-}
-if ($containerIds.Count -gt 1) {
- throw 'API test credential cleanup matched more than one container.'
-}
-if ($containerIds.Count -eq 1) {
- docker stop --time 30 $containerIds[0] | Out-Null
- if ($LASTEXITCODE -ne 0) {
- throw 'Could not stop API test consumers; leaving credential removal to container teardown.'
- }
-}
-
-# The recorded mount path remains usable for stopped or already-removed containers.
-Remove-Item -LiteralPath $FilePath -Force -ErrorAction Stop
diff --git a/build/scripts/tests/ApiTestCredential.Test.ps1 b/build/scripts/tests/ApiTestCredential.Test.ps1
deleted file mode 100644
index f47051ac4e3..00000000000
--- a/build/scripts/tests/ApiTestCredential.Test.ps1
+++ /dev/null
@@ -1,249 +0,0 @@
-Describe 'API test credential materialization' {
- BeforeAll {
- Import-Module (Join-Path $PSScriptRoot '..\ApiTestCredential.psm1') -Force
- $script:previousGitHubEnv = $env:GITHUB_ENV
- $script:previousPasswordPath = $env:BCAppsApiTestPasswordPath
- $script:previousPasswordContainer = $env:BCAppsApiTestPasswordContainer
- $script:previousExitCode = Get-Variable LASTEXITCODE -Scope Global -ValueOnly -ErrorAction SilentlyContinue
- $script:createdMountStub = -not (Get-Command Get-BcContainerSharedFolders -ListImported -ErrorAction SilentlyContinue)
- if ($script:createdMountStub) {
- function global:Get-BcContainerSharedFolders {
- param([string]$containerName)
- $null = $containerName
- throw 'Container mount lookup must be mocked.'
- }
- }
- $script:createdDockerStub = -not (Get-Command docker -ErrorAction SilentlyContinue)
- if ($script:createdDockerStub) {
- function global:docker {
- param([Parameter(ValueFromRemainingArguments = $true)][string[]]$Arguments)
- $null = $Arguments
- throw 'Docker must be mocked.'
- }
- }
- $script:fixturePassword = [System.Security.SecureString]::new()
- foreach ($character in 'synthetic-fixture-only'.ToCharArray()) {
- $script:fixturePassword.AppendChar($character)
- }
- $script:fixturePassword.MakeReadOnly()
- $script:credential = [PSCredential]::new('unit-test', $script:fixturePassword)
- $script:mount = Join-Path $PSScriptRoot 'unused-mount'
- }
-
- AfterAll {
- $script:fixturePassword.Dispose()
- $env:GITHUB_ENV = $script:previousGitHubEnv
- $env:BCAppsApiTestPasswordPath = $script:previousPasswordPath
- $env:BCAppsApiTestPasswordContainer = $script:previousPasswordContainer
- $global:LASTEXITCODE = $script:previousExitCode
- if ($script:createdMountStub) { Remove-Item function:global:Get-BcContainerSharedFolders }
- if ($script:createdDockerStub) { Remove-Item function:global:docker }
- }
-
- BeforeEach {
- $env:GITHUB_ENV = Join-Path $PSScriptRoot 'unused-github-env'
- $env:BCAppsApiTestPasswordPath = $null
- $env:BCAppsApiTestPasswordContainer = $null
- $script:events = [System.Collections.Generic.List[string]]::new()
- $script:stream = [PSCustomObject]@{
- Events = $script:events
- Buffer = $null
- Written = $null
- FailWrite = $false
- FailDispose = $false
- }
- $script:stream | Add-Member ScriptMethod Write {
- param($buffer, $offset, $count)
- $this.Events.Add('write')
- $this.Buffer = $buffer
- $this.Written = [System.Text.Encoding]::UTF8.GetString($buffer, $offset, $count)
- if ($this.FailWrite) { throw 'Synthetic write failure' }
- }
- $script:stream | Add-Member ScriptMethod Dispose {
- $this.Events.Add('dispose')
- if ($this.FailDispose) { throw 'Synthetic flush failure' }
- }
- Mock -ModuleName ApiTestCredential Get-BcContainerSharedFolders { @{ $script:mount = 'c:\run\my\' } }
- Mock -ModuleName ApiTestCredential Add-Content { $script:events.Add('register') }
- Mock -ModuleName ApiTestCredential New-ApiTestPasswordFileStream {
- $env:BCAppsApiTestPasswordPath | Should -Be (Join-Path $script:mount 'ApiTestPassword')
- $env:BCAppsApiTestPasswordContainer | Should -Be 'unit-test'
- $script:events.Add('create')
- $script:stream
- }
- Mock -ModuleName ApiTestCredential Test-Path { $true }
- Mock -ModuleName ApiTestCredential docker {
- $global:LASTEXITCODE = 0
- if ($args[0] -eq 'container') { 'synthetic-container-id' }
- else { $script:events.Add('stop') }
- }
- Mock -ModuleName ApiTestCredential Remove-Item { $script:events.Add('delete') }
- }
-
- It 'registers cleanup and creates the secured backing file before the first secret write' {
- Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential
-
- ($script:events -join ',') | Should -Be 'register,create,write,dispose'
- $script:stream.Written | Should -Be 'synthetic-fixture-only'
- @($script:stream.Buffer | Where-Object { $_ -ne 0 }).Count | Should -Be 0
- Should -Invoke -ModuleName ApiTestCredential New-ApiTestPasswordFileStream -Times 1 -Exactly -ParameterFilter {
- $FilePath -eq (Join-Path $script:mount 'ApiTestPassword')
- }
- Should -Invoke -ModuleName ApiTestCredential Add-Content -Times 1 -Exactly -ParameterFilter {
- $LiteralPath -eq $env:GITHUB_ENV -and $ErrorAction -eq 'Stop' -and
- $Value.Count -eq 2 -and
- $Value -contains "BCAppsApiTestPasswordPath=$(Join-Path $script:mount 'ApiTestPassword')" -and
- $Value -contains 'BCAppsApiTestPasswordContainer=unit-test'
- }
- Should -Invoke -ModuleName ApiTestCredential docker -Times 0
- }
-
- It 'uses the same secured mount locally without workflow registration' {
- $env:GITHUB_ENV = ''
- Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential
-
- ($script:events -join ',') | Should -Be 'create,write,dispose'
- Should -Invoke -ModuleName ApiTestCredential Get-BcContainerSharedFolders -Times 1 -Exactly
- Should -Invoke -ModuleName ApiTestCredential Add-Content -Times 0
- }
-
- It 'preserves Unicode passwords while clearing the written byte buffer' {
- $characters = [char[]]@(0x0061, 0x00E9, 0xD83D, 0xDD10)
- $password = [System.Security.SecureString]::new()
- try {
- foreach ($character in $characters) { $password.AppendChar($character) }
- $password.MakeReadOnly()
- $credential = [PSCredential]::new('unit-test', $password)
-
- Write-ApiTestPassword -ContainerName 'unit-test' -Credential $credential
-
- $script:stream.Written | Should -Be (-join $characters)
- @($script:stream.Buffer | Where-Object { $_ -ne 0 }).Count | Should -Be 0
- }
- finally {
- $password.Dispose()
- }
- }
-
- It 'does not materialize an immutable plaintext password string in the writer' {
- $source = Get-Content (Join-Path $PSScriptRoot '..\ApiTestCredential.psm1') -Raw
- $source | Should -Not -Match 'GetNetworkCredential|PtrToString'
- $source | Should -Match 'SecureStringToBSTR'
- $source | Should -Match 'ZeroFreeBSTR'
- }
-
- It 'fails closed on an unresolved mount in CI and locally' {
- Mock -ModuleName ApiTestCredential Get-BcContainerSharedFolders { @{} }
- foreach ($environmentPath in @('unused-github-env', '')) {
- $env:GITHUB_ENV = $environmentPath
- { Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential } | Should -Throw '*Cannot resolve*'
- }
- Should -Invoke -ModuleName ApiTestCredential New-ApiTestPasswordFileStream -Times 0
- Should -Invoke -ModuleName ApiTestCredential Add-Content -Times 0
- }
-
- It 'fails closed on ambiguous mounts' {
- Mock -ModuleName ApiTestCredential Get-BcContainerSharedFolders { @{ 'C:\first' = 'C:\Run\my'; 'C:\second' = 'c:\run\my' } }
- { Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential } | Should -Throw '*Cannot resolve*'
- Should -Invoke -ModuleName ApiTestCredential New-ApiTestPasswordFileStream -Times 0
- }
-
- It 'does not materialize credentials if workflow cleanup registration fails' {
- Mock -ModuleName ApiTestCredential Add-Content { throw 'Synthetic registration failure' }
- { Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential } | Should -Throw '*Synthetic registration failure*'
- Should -Invoke -ModuleName ApiTestCredential New-ApiTestPasswordFileStream -Times 0
- }
-
- It 'does not write or delete an existing file when secured creation fails' {
- Mock -ModuleName ApiTestCredential New-ApiTestPasswordFileStream { throw 'Synthetic ACL or create failure' }
- { Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential } | Should -Throw '*Synthetic ACL or create failure*'
- ($script:events -join ',') | Should -Be 'register'
- Should -Invoke -ModuleName ApiTestCredential Remove-Item -Times 0
- }
-
- It 'closes the failed writer and stops consumers before deleting a partial file' {
- $script:stream.FailWrite = $true
- { Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential } | Should -Throw '*Synthetic write failure*'
-
- ($script:events -join ',') | Should -Be 'register,create,write,dispose,stop,delete'
- @($script:stream.Buffer | Where-Object { $_ -ne 0 }).Count | Should -Be 0
- }
-
- It 'also cleans up after a flush failure without reporting success' {
- $script:stream.FailDispose = $true
- { Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential } | Should -Throw '*Synthetic flush failure*'
- ($script:events -join ',') | Should -Be 'register,create,write,dispose,stop,delete'
- }
-
- It 'preserves the setup error and credential when consumers cannot be stopped' {
- $script:stream.FailWrite = $true
- Mock -ModuleName ApiTestCredential docker { $global:LASTEXITCODE = 1 } -ParameterFilter { $args[0] -eq 'stop' }
- Mock -ModuleName ApiTestCredential Write-Warning {}
-
- { Write-ApiTestPassword -ContainerName 'unit-test' -Credential $script:credential } | Should -Throw '*Synthetic write failure*'
- Should -Invoke -ModuleName ApiTestCredential Remove-Item -Times 0
- Should -Invoke -ModuleName ApiTestCredential Write-Warning -Times 1 -Exactly
- }
-}
-
-Describe 'API test credential atomic Windows ACL' {
- BeforeAll {
- Import-Module (Join-Path $PSScriptRoot '..\ApiTestCredential.psm1') -Force
- $script:aclRoot = Join-Path $PSScriptRoot ("acl-fixture-" + [guid]::NewGuid().ToString('N'))
- New-Item -ItemType Directory -Path $script:aclRoot | Out-Null
- }
-
- AfterAll {
- Remove-Item -LiteralPath $script:aclRoot -Recurse -Force
- }
-
- It 'has only required explicit SIDs on an empty file before writing synthetic bytes' {
- $path = Join-Path $script:aclRoot 'ApiTestPassword'
- $stream = $null
- try {
- $stream = & (Get-Module ApiTestCredential) { param($path) New-ApiTestPasswordFileStream -FilePath $path } $path
- $stream.Length | Should -Be 0
- $acl = Get-Acl -LiteralPath $path
- $acl.AreAccessRulesProtected | Should -BeTrue
- $rules = @($acl.GetAccessRules($true, $true, [System.Security.Principal.SecurityIdentifier]))
- @($rules | Where-Object IsInherited).Count | Should -Be 0
- $writerSid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
- $expectedSids = @('S-1-5-18', 'S-1-5-20', 'S-1-5-32-544', $writerSid) | Select-Object -Unique
- ($rules.IdentityReference.Value | Sort-Object) | Should -Be ($expectedSids | Sort-Object)
- foreach ($sid in @('S-1-5-18', 'S-1-5-32-544')) {
- ($rules | Where-Object { $_.IdentityReference.Value -eq $sid }).FileSystemRights |
- Should -Be ([System.Security.AccessControl.FileSystemRights]::FullControl)
- }
- $networkServiceRights = [System.Security.AccessControl.FileSystemRights]'Read, Synchronize'
- if ($writerSid -eq 'S-1-5-20') {
- $networkServiceRights = $networkServiceRights -bor [System.Security.AccessControl.FileSystemRights]'Write, Delete'
- }
- ($rules | Where-Object { $_.IdentityReference.Value -eq 'S-1-5-20' }).FileSystemRights |
- Should -Be $networkServiceRights
- if ($writerSid -notin @('S-1-5-18', 'S-1-5-20', 'S-1-5-32-544')) {
- ($rules | Where-Object { $_.IdentityReference.Value -eq $writerSid }).FileSystemRights |
- Should -Be ([System.Security.AccessControl.FileSystemRights]'Write, Delete, Synchronize')
- }
- $stream.WriteByte(65)
- $stream.Length | Should -Be 1
- }
- finally {
- if ($stream) { $stream.Dispose() }
- Remove-Item -LiteralPath $path -Force -ErrorAction SilentlyContinue
- }
- }
-
- It 'refuses to overwrite an existing file or change its ACL' {
- $path = Join-Path $script:aclRoot 'ApiTestPassword'
- [System.IO.File]::WriteAllText($path, 'synthetic-existing-fixture')
- $before = (Get-Acl -LiteralPath $path).Sddl
- try {
- { & (Get-Module ApiTestCredential) { param($path) New-ApiTestPasswordFileStream -FilePath $path } $path } | Should -Throw
- [System.IO.File]::ReadAllText($path) | Should -Be 'synthetic-existing-fixture'
- (Get-Acl -LiteralPath $path).Sddl | Should -Be $before
- }
- finally {
- Remove-Item -LiteralPath $path -Force
- }
- }
-}
diff --git a/build/scripts/tests/Remove-ApiTestPassword.Test.ps1 b/build/scripts/tests/Remove-ApiTestPassword.Test.ps1
deleted file mode 100644
index 72eab0f130c..00000000000
--- a/build/scripts/tests/Remove-ApiTestPassword.Test.ps1
+++ /dev/null
@@ -1,223 +0,0 @@
-Describe 'API test credential cleanup' {
- BeforeAll {
- $script:cleanupScript = Join-Path $PSScriptRoot '..\Remove-ApiTestPassword.ps1'
- $script:passwordPath = Join-Path $PSScriptRoot 'unused\ApiTestPassword'
- $script:previousExitCode = Get-Variable -Name LASTEXITCODE -Scope Global -ValueOnly -ErrorAction SilentlyContinue
- function docker {
- param([Parameter(ValueFromRemainingArguments = $true)][string[]]$Arguments)
- $null = $Arguments
- throw 'Docker must be mocked; these tests never contact a container.'
- }
- }
-
- AfterAll {
- $global:LASTEXITCODE = $script:previousExitCode
- }
-
- BeforeEach {
- $script:events = [System.Collections.Generic.List[string]]::new()
- Mock Test-Path { $true }
- Mock docker {
- $global:LASTEXITCODE = 0
- if ($Arguments[0] -eq 'container') {
- 'test-container-id'
- }
- else {
- $script:events.Add('stop')
- }
- }
- Mock Remove-Item { $script:events.Add('delete') }
- }
-
- It 'stops all consumers before deleting the exact backing file' {
- . $script:cleanupScript -ContainerName 'test-container' -FilePath $script:passwordPath
-
- ($script:events -join ',') | Should -Be 'stop,delete'
- Should -Invoke docker -Times 1 -Exactly -ParameterFilter {
- $Arguments[0] -eq 'container' -and $Arguments -contains '--all' -and
- $Arguments -contains 'name=^/test-container$'
- }
- Should -Invoke Remove-Item -Times 1 -Exactly -ParameterFilter {
- $LiteralPath -eq $script:passwordPath -and $Force -and $ErrorAction -eq 'Stop'
- }
- }
-
- It 'does nothing when the password file is missing' {
- Mock Test-Path { $false }
-
- . $script:cleanupScript -ContainerName 'test-container' -FilePath $script:passwordPath
-
- Should -Invoke docker -Times 0
- Should -Invoke Remove-Item -Times 0
- }
-
- It 'removes a leftover backing file when the container is already absent' {
- Mock docker { $global:LASTEXITCODE = 0 }
-
- . $script:cleanupScript -ContainerName 'test-container' -FilePath $script:passwordPath
-
- ($script:events -join ',') | Should -Be 'delete'
- Should -Invoke docker -Times 0 -ParameterFilter { $Arguments[0] -eq 'stop' }
- }
-
- It 'also stops an already-stopped container idempotently before deletion' {
- . $script:cleanupScript -ContainerName 'test-container' -FilePath $script:passwordPath
-
- Should -Invoke docker -Times 1 -Exactly -ParameterFilter {
- ($Arguments -join ' ') -eq 'stop --time 30 test-container-id'
- }
- Should -Invoke Remove-Item -Times 1 -Exactly
- }
-
- It 'fails without deleting when Docker cannot enumerate containers' {
- Mock docker { $global:LASTEXITCODE = 1 }
-
- { . $script:cleanupScript -ContainerName 'test-container' -FilePath $script:passwordPath } |
- Should -Throw '*Could not determine*'
- Should -Invoke Remove-Item -Times 0
- }
-
- It 'fails without deleting while consumers cannot be stopped' {
- Mock docker { $global:LASTEXITCODE = 1 } -ParameterFilter { $Arguments[0] -eq 'stop' }
-
- { . $script:cleanupScript -ContainerName 'test-container' -FilePath $script:passwordPath } |
- Should -Throw '*Could not stop API test consumers*'
- Should -Invoke Remove-Item -Times 0
- }
-
- It 'fails without stopping or deleting if container identity is ambiguous' {
- Mock docker {
- $global:LASTEXITCODE = 0
- 'first-id', 'second-id'
- }
-
- { . $script:cleanupScript -ContainerName 'test-container' -FilePath $script:passwordPath } |
- Should -Throw '*more than one container*'
- Should -Invoke docker -Times 0 -ParameterFilter { $Arguments[0] -eq 'stop' }
- Should -Invoke Remove-Item -Times 0
- }
-
- It 'surfaces deletion failure rather than reporting successful cleanup' {
- Mock Remove-Item { throw 'Access denied' }
-
- { . $script:cleanupScript -ContainerName 'test-container' -FilePath $script:passwordPath } |
- Should -Throw '*Access denied*'
- }
-
- It 'rejects a path that does not name the credential file' {
- { . $script:cleanupScript -ContainerName 'test-container' -FilePath (Join-Path $TestDrive 'other-file') } |
- Should -Throw '*exact ApiTestPassword file*'
- Should -Invoke docker -Times 0
- Should -Invoke Remove-Item -Times 0
- }
-}
-
-Describe 'API test credential workflow lifetime' {
- BeforeAll {
- $script:workflow = Get-Content -LiteralPath (Join-Path $PSScriptRoot '..\..\..\.github\workflows\_BuildALGoProject.yaml') -Raw
- $script:setup = Get-Content -LiteralPath (Join-Path $PSScriptRoot '..\NewBcContainer.ps1') -Raw
- }
-
- It 'delegates credential materialization without host or container staging copies' {
- $script:setup | Should -Match "Import-Module .*'ApiTestCredential.psm1'"
- $script:setup | Should -Match 'Write-ApiTestPassword -ContainerName \$parameters.ContainerName -Credential \$parameters.credential'
- $script:setup | Should -Not -Match 'Copy-FileToBcContainer|WriteAllText|GetNetworkCredential|GetTempPath'
- }
-
- It 'leaves generated workflow cleanup unmodified' {
- $script:workflow | Should -Not -Match '- name: Remove API test credential|Remove-ApiTestPassword.ps1'
- $script:workflow | Should -Match '(?s)- name: Cleanup\r?\n\s+if: always\(\).*?uses: microsoft/AL-Go/Actions/PipelineCleanup@'
- }
-}
-
-Describe 'API test credential pipeline finalizer' {
- BeforeAll {
- $script:finalizer = Join-Path $PSScriptRoot '..\PipelineFinalize.ps1'
- $script:previousPasswordPath = $env:BCAppsApiTestPasswordPath
- $script:previousPasswordContainer = $env:BCAppsApiTestPasswordContainer
- $script:previousExitCode = Get-Variable LASTEXITCODE -Scope Global -ValueOnly -ErrorAction SilentlyContinue
- function docker {
- param([Parameter(ValueFromRemainingArguments = $true)][string[]]$Arguments)
- $null = $Arguments
- throw 'Docker must be mocked.'
- }
- }
-
- BeforeEach {
- $env:BCAppsApiTestPasswordPath = Join-Path $TestDrive 'ApiTestPassword'
- $env:BCAppsApiTestPasswordContainer = 'recorded-container'
- Mock Test-Path { $true }
- Mock docker {
- $global:LASTEXITCODE = 0
- if ($Arguments[0] -eq 'container') { 'recorded-container-id' }
- }
- Mock Remove-Item {
- Should -Invoke docker -Times 1 -ParameterFilter { $Arguments[0] -eq 'stop' }
- }
- Mock Write-Host {}
- }
-
- AfterAll {
- $env:BCAppsApiTestPasswordPath = $script:previousPasswordPath
- $env:BCAppsApiTestPasswordContainer = $script:previousPasswordContainer
- $global:LASTEXITCODE = $script:previousExitCode
- }
-
- It 'accepts no arguments and stops the recorded consumers before deleting the backing file' {
- $path = $env:BCAppsApiTestPasswordPath
- . $script:finalizer
- Should -Invoke docker -Times 1 -Exactly -ParameterFilter {
- $Arguments -contains 'name=^/recorded-container$'
- }
- Should -Invoke Remove-Item -Times 1 -Exactly -ParameterFilter { $LiteralPath -eq $path }
- $env:BCAppsApiTestPasswordPath | Should -BeNullOrEmpty
- $env:BCAppsApiTestPasswordContainer | Should -BeNullOrEmpty
- }
-
- It 'does nothing when no credential was provisioned' {
- $env:BCAppsApiTestPasswordPath = $null
- . $script:finalizer
- Should -Invoke docker -Times 0
- Should -Invoke Remove-Item -Times 0
- }
-
- It 'is idempotent when standard teardown already removed the credential' {
- Mock Test-Path { $false }
- . $script:finalizer
- . $script:finalizer
- Should -Invoke docker -Times 0
- Should -Invoke Remove-Item -Times 0
- $env:BCAppsApiTestPasswordPath | Should -BeNullOrEmpty
- }
-
- It 'preserves cleanup identity and propagates a failure without deleting while consumers remain' {
- Mock docker { $global:LASTEXITCODE = 1 } -ParameterFilter { $Arguments[0] -eq 'stop' }
- { . $script:finalizer } | Should -Throw '*Could not stop API test consumers*'
- Should -Invoke Remove-Item -Times 0
- $env:BCAppsApiTestPasswordContainer | Should -Be 'recorded-container'
- $env:BCAppsApiTestPasswordPath | Should -Be (Join-Path $TestDrive 'ApiTestPassword')
- }
-
- It 'propagates deletion failure without forgetting the recorded path' {
- Mock Remove-Item { throw 'Synthetic deletion failure' }
- { . $script:finalizer } | Should -Throw '*Synthetic deletion failure*'
- $env:BCAppsApiTestPasswordPath | Should -Be (Join-Path $TestDrive 'ApiTestPassword')
- }
-
- It 'runs every registered project wrapper through the AL-Go scriptblock invocation contract' {
- $projects = Join-Path $PSScriptRoot '..\..\projects'
- $wrappers = @(Get-ChildItem -LiteralPath $projects -Directory | ForEach-Object {
- $setup = Join-Path $_.FullName '.AL-Go\NewBcContainer.ps1'
- if ([IO.File]::Exists($setup)) {
- Get-Item -LiteralPath (Join-Path $_.FullName '.AL-Go\PipelineFinalize.ps1')
- }
- })
- $wrappers.Count | Should -BeGreaterThan 0
- foreach ($wrapper in $wrappers) {
- $env:BCAppsApiTestPasswordPath = Join-Path $TestDrive 'ApiTestPassword'
- $env:BCAppsApiTestPasswordContainer = 'recorded-container'
- Invoke-Command -ScriptBlock (Get-Command $wrapper.FullName).ScriptBlock
- }
- Should -Invoke Remove-Item -Times $wrappers.Count -Exactly
- }
-}
diff --git a/src/Apps/US/IRSForms/test/src/IRS1099APITests.Codeunit.al b/src/Apps/US/IRSForms/test/src/IRS1099APITests.Codeunit.al
index 7495ec2d793..81da65ceff7 100644
--- a/src/Apps/US/IRSForms/test/src/IRS1099APITests.Codeunit.al
+++ b/src/Apps/US/IRSForms/test/src/IRS1099APITests.Codeunit.al
@@ -52,6 +52,7 @@ codeunit 148018 "IRS 1099 API Tests"
IRS1099FormDocHeader: Record "IRS 1099 Form Doc. Header";
IRSReportingPeriod: Record "IRS Reporting Period";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IRS1099FormDocHeader.DeleteAll(true);
IRSReportingPeriod.DeleteAll(true);
LibraryTestInitialize.OnTestInitialize(Codeunit::"IRS 1099 API Tests");
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AccountsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AccountsE2E.Codeunit.al
index 9e3ef6f5e64..be7c454da6c 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AccountsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AccountsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139701 "APIV1 - Accounts E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -19,6 +20,7 @@ codeunit 139701 "APIV1 - Accounts E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AgedAPE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AgedAPE2E.Codeunit.al
index 9c057dab240..973aeaaaf12 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AgedAPE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AgedAPE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139719 "APIV1 - Aged AP E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -60,6 +61,7 @@ codeunit 139719 "APIV1 - Aged AP E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AgedARE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AgedARE2E.Codeunit.al
index afdb729791c..ce212da59c5 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AgedARE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AgedARE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139720 "APIV1 - Aged AR E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -60,6 +61,7 @@ codeunit 139720 "APIV1 - Aged AR E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AttachmentsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AttachmentsE2E.Codeunit.al
index 5e03d6caccc..f4464adcbc6 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AttachmentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AttachmentsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139733 "APIV1 - Attachments E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -43,6 +44,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve all records from the Attachments API.
+ Initialize();
+
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateGenJournalLine(DocumentRecordRef);
CreateAttachments(DocumentRecordRef, AttachmentId);
@@ -65,6 +68,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve all records from the Attachments API.
+ Initialize();
+
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateGLEntry(DocumentRecordRef);
CreateAttachments(DocumentRecordRef, AttachmentId);
@@ -88,6 +93,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve all records from the Attachments API.
+ Initialize();
+
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
CreateAttachments(DocumentRecordRef, AttachmentId);
@@ -110,6 +117,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve all records from the Attachments API.
+ Initialize();
+
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateDraftSalesInvoice(DocumentRecordRef);
CreateAttachments(DocumentRecordRef, AttachmentId);
@@ -133,6 +142,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve all records from the Attachments API.
+ Initialize();
+
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
CreateAttachments(DocumentRecordRef, AttachmentId);
@@ -155,6 +166,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve all records from the Attachments API.
+ Initialize();
+
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateDraftPurchaseInvoice(DocumentRecordRef);
CreateAttachments(DocumentRecordRef, AttachmentId);
@@ -177,6 +190,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve all records from the Attachments API.
+ Initialize();
+
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateSalesQuote(DocumentRecordRef);
CreateAttachments(DocumentRecordRef, AttachmentId);
@@ -199,6 +214,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
+ Initialize();
+
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateGenJournalLine(DocumentRecordRef);
AttachmentId := CreateAttachment(DocumentRecordRef);
@@ -224,6 +241,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
+ Initialize();
+
// [GIVEN] Attachment exists in the Incoming Document Attachment table
JournalName := LibraryUtility.GenerateRandomCode(GenJournalBatch.FieldNo(Name), Database::"Gen. Journal Batch");
LibraryAPIGeneralJournal.EnsureGenJnlBatchExists(GraphMgtJournal.GetDefaultJournalLinesTemplateName(), JournalName);
@@ -249,6 +268,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
+ Initialize();
+
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateGLEntry(DocumentRecordRef);
AttachmentId := CreateAttachment(DocumentRecordRef);
@@ -273,6 +294,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
+ Initialize();
+
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
AttachmentId := CreateAttachment(DocumentRecordRef);
@@ -296,6 +319,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
+ Initialize();
+
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateDraftSalesInvoice(DocumentRecordRef);
AttachmentId := CreateAttachment(DocumentRecordRef);
@@ -319,6 +344,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
+ Initialize();
+
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateSalesQuote(DocumentRecordRef);
AttachmentId := CreateAttachment(DocumentRecordRef);
@@ -346,6 +373,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
ActualBase64Content: Text;
begin
// [SCENARIO] User can update linked attachment binary content through the Attachment API.
+ Initialize();
+
// [GIVEN] A linked attachment exists
CreateGenJournalLine(DocumentRecordRef);
AttachmentId := CreateAttachment(DocumentRecordRef);
@@ -380,6 +409,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
ActualBase64Content: Text;
begin
// [SCENARIO] User can update linked attachment binary content through the Attachment API.
+ Initialize();
+
// [GIVEN] A linked attachment exists
CreateGLEntry(DocumentRecordRef);
AttachmentId := CreateAttachment(DocumentRecordRef);
@@ -407,6 +438,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateGenJournalLine(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -416,6 +449,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateGLEntry(DocumentRecordRef);
TestCreateGLEAttachment(DocumentRecordRef);
end;
@@ -426,6 +461,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
TestCreateAttachment(DocumentRecordRef, DocumentId);
end;
@@ -435,6 +472,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftSalesInvoice(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -445,6 +484,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
TestCreateAttachment(DocumentRecordRef, DocumentId);
end;
@@ -454,10 +495,17 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseInvoice(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
local procedure TestCreateAttachment(var DocumentRecordRef: RecordRef)
var
DocumentId: Guid;
@@ -555,6 +603,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateSalesQuote(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -564,6 +614,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateGenJournalLine(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -573,6 +625,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateGLEntry(DocumentRecordRef);
TestDeleteGLEAttachment(DocumentRecordRef);
end;
@@ -583,6 +637,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
TestDeleteAttachment(DocumentRecordRef, DocumentId);
end;
@@ -592,6 +648,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftSalesInvoice(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -602,6 +660,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
TestDeleteAttachment(DocumentRecordRef, DocumentId);
end;
@@ -611,6 +671,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseInvoice(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -620,6 +682,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateSalesQuote(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -697,6 +761,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] The Attachment is transferred from a Draft Invoice the to Posted Invoice after posting.
+ Initialize();
+
// [GIVEN] A draft sales invoice exists.
CreateDraftSalesInvoice(DocumentRecordRef);
DocumentId := GetDocumentId(DocumentRecordRef);
@@ -737,6 +803,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
TargetURL: Text;
begin
// [SCENARIO] The Attachment is transferred from a Draft Invoice the to Posted Invoice after posting.
+ Initialize();
+
// [GIVEN] A draft sales invoice exists.
CreateDraftPurchaseInvoice(DocumentRecordRef);
DocumentId := GetDocumentId(DocumentRecordRef);
@@ -779,6 +847,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
NewBase64Content: Text;
begin
// [SCENARIO] Changing an attachment file name keeps other fields unchanged
+ Initialize();
+
// [GIVEN] A sales quote exists.
CreateSalesQuote(DocumentRecordRef);
DocumentId := GetDocumentId(DocumentRecordRef);
@@ -824,6 +894,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
NewFileName: Text;
begin
// [SCENARIO] Changing an attachment content keeps other fields unchanged
+ Initialize();
+
// [GIVEN] A draft sales invoice exists.
CreateDraftSalesInvoice(DocumentRecordRef);
DocumentId := GetDocumentId(DocumentRecordRef);
@@ -862,6 +934,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
JSONBody: Text;
begin
// [SCENARIO] User cannot change the linked attachment ID by making a PATCH request to the Attachments API
+ Initialize();
+
// [GIVEN] A sales quote exists.
CreateSalesQuote(DocumentRecordRef);
@@ -891,6 +965,8 @@ codeunit 139733 "APIV1 - Attachments E2E"
JSONBody: Text;
begin
// [SCENARIO] User cannot change the attachment ID by making a PATCH request to the Attachments API
+ Initialize();
+
// [GIVEN] Two documents exist.
CreateSalesQuote(DocumentRecordRef[1]);
CreateDraftSalesInvoice(DocumentRecordRef[2]);
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AutomationRSPackage.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AutomationRSPackage.Codeunit.al
index fba368ca1dc..f6154834cc2 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AutomationRSPackage.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AutomationRSPackage.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139731 "APIV1 - Automation RS Package"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -16,7 +17,6 @@ codeunit 139731 "APIV1 - Automation RS Package"
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryUtility: Codeunit "Library - Utility";
Assert: Codeunit "Assert";
- IsInitialized: Boolean;
SamplePackageFile: Text;
PackageCodeTxt: Label 'code', Locked = true;
ActionImportTxt: Label 'Microsoft.NAV.import';
@@ -29,13 +29,10 @@ codeunit 139731 "APIV1 - Automation RS Package"
var
TenantConfigPackageFile: Record "Tenant Config. Package File";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
TenantConfigPackageFile.DELETEALL(TRUE);
- IF IsInitialized THEN
- EXIT;
-
SamplePackageFile := GenerateSamplePackageFile();
- IsInitialized := TRUE;
end;
[Test]
@@ -142,11 +139,12 @@ codeunit 139731 "APIV1 - Automation RS Package"
StartTime := CURRENTDATETIME();
REPEAT
+ SelectLatestVersion();
ConfigPackage.FIND();
UNTIL (NOT IsImportPending(ConfigPackage)) OR
(CURRENTDATETIME() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Import Status", ConfigPackage."Import Status"::Completed, 'Import Status should be completed.');
+ Assert.AreEqual(ConfigPackage."Import Status"::Completed, ConfigPackage."Import Status", 'Import Status should be completed.');
// clean up after the test
LibraryRapidStart.CleanUp(ConfigPackage.Code);
@@ -190,11 +188,12 @@ codeunit 139731 "APIV1 - Automation RS Package"
StartTime := CURRENTDATETIME();
REPEAT
+ SelectLatestVersion();
ConfigPackage.FIND();
UNTIL (NOT IsImportPending(ConfigPackage)) OR
(CURRENTDATETIME() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Import Status", ConfigPackage."Import Status"::Error, 'Import Status should be error.');
+ Assert.AreEqual(ConfigPackage."Import Status"::Error, ConfigPackage."Import Status", 'Import Status should be error.');
// clean up after the test
LibraryRapidStart.CleanUp(ConfigPackage.Code);
@@ -240,11 +239,12 @@ codeunit 139731 "APIV1 - Automation RS Package"
StartTime := CURRENTDATETIME();
REPEAT
+ SelectLatestVersion();
ConfigPackage.FIND();
UNTIL (NOT IsApplyPending(ConfigPackage)) OR
(CURRENTDATETIME() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Apply Status", ConfigPackage."Apply Status"::Completed, 'Apply Status should be completed.');
+ Assert.AreEqual(ConfigPackage."Apply Status"::Completed, ConfigPackage."Apply Status", 'Apply Status should be completed.');
Assert.AreEqual(0, ConfigPackage."No. of Errors", 'There should be no errors.');
// clean up after the test
@@ -328,7 +328,7 @@ codeunit 139731 "APIV1 - Automation RS Package"
local procedure IsApplyPending(var ConfigPackage: Record "Config. Package"): Boolean
begin
- EXIT(ConfigPackage."Apply Status" IN [ConfigPackage."Import Status"::Scheduled, ConfigPackage."Apply Status"::InProgress]);
+ EXIT(ConfigPackage."Apply Status" IN [ConfigPackage."Apply Status"::Scheduled, ConfigPackage."Apply Status"::InProgress]);
end;
local procedure CreateTestPackage(var ConfigPackage: Record "Config. Package")
diff --git a/src/Apps/W1/APIV1/test/src/APIV1BalanceSheetE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1BalanceSheetE2E.Codeunit.al
index 9f700458c0e..ed78e39bcb8 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1BalanceSheetE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1BalanceSheetE2E.Codeunit.al
@@ -62,6 +62,7 @@ codeunit 139715 "APIV1 - Balance Sheet E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CashFlowStatementE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CashFlowStatementE2E.Codeunit.al
index 2478bfb256f..b1abc96bb41 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CashFlowStatementE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CashFlowStatementE2E.Codeunit.al
@@ -62,6 +62,7 @@ codeunit 139717 "APIV1 - CashFlow Statement E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CompanyInfoE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CompanyInfoE2E.Codeunit.al
index 6b3b4e66322..867b0763f84 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CompanyInfoE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CompanyInfoE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139706 "APIV1 - Company Info. E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = IntegrationTest;
TestPermissions = Disabled;
@@ -22,6 +23,7 @@ codeunit 139706 "APIV1 - Company Info. E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CurrenciesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CurrenciesE2E.Codeunit.al
index 5105b4c44bb..f69f74fee65 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CurrenciesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CurrenciesE2E.Codeunit.al
@@ -155,6 +155,7 @@ codeunit 139713 "APIV1 - Currencies E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CustomerPaymentsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CustomerPaymentsE2E.Codeunit.al
index 13e55ac2bb6..643570da46b 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CustomerPaymentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CustomerPaymentsE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139743 "APIV1 - Customer Payments E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -769,6 +770,7 @@ codeunit 139743 "APIV1 - Customer Payments E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryTestInitialize.OnTestInitialize(Codeunit::"APIV1 - Customer Payments E2E");
if not isInitialized then
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CustomersE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CustomersE2E.Codeunit.al
index be1fe579b35..55cf565b43d 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CustomersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CustomersE2E.Codeunit.al
@@ -34,6 +34,7 @@ codeunit 139702 "APIV1 - Customers E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1DefaultDimensionsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1DefaultDimensionsE2E.Codeunit.al
index 96621497106..491b8ea5b8a 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1DefaultDimensionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1DefaultDimensionsE2E.Codeunit.al
@@ -37,6 +37,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the customer
// [THEN] The default dimension has been added to the customer
@@ -50,6 +52,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the vendor
// [THEN] The default dimension has been added to the vendor
@@ -63,6 +67,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Item
// [THEN] The default dimension has been added to the Item
@@ -89,6 +95,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the customer
// [THEN] The default dimension has been added to the customer
@@ -102,6 +110,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Vendor
// [THEN] The default dimension has been added to the Vendor
@@ -115,6 +125,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Item
// [THEN] The default dimension has been added to the Item
@@ -141,6 +153,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] a user issues a http request to create a default dimension without dimension id
// [THEN] You get an error
@@ -154,6 +168,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] a user issues a http request to create a default dimension without dimension id
// [THEN] You get an error
@@ -167,6 +183,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] a user issues a http request to create a default dimension without dimension id
// [THEN] You get an error
@@ -193,6 +211,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the customer, with mismatching dimesnion and dimension value
// [THEN] You get an error
@@ -206,6 +226,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Vendor, with mismatching dimesnion and dimension value
// [THEN] You get an error
@@ -219,6 +241,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Item, with mismatching dimesnion and dimension value
// [THEN] You get an error
@@ -245,6 +269,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension on the customer
// [THEN] You get an error
@@ -258,6 +284,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension on the Vendor
// [THEN] You get an error
@@ -271,6 +299,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension on the Item
// [THEN] You get an error
@@ -297,6 +327,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension value on the customer
// [THEN] You get an error
@@ -310,6 +342,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension value on the Vendor
// [THEN] You get an error
@@ -323,6 +357,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension value on the Item
// [THEN] You get an error
@@ -349,6 +385,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to delete the default dimension on the customer
// [THEN] The default dimension has been deleted from the customer's default dimensions
@@ -362,6 +400,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor with a default dimension
// [WHEN] The user posts a http request to delete a default dimension on the Vendor
// [THEN] The default dimension has been deleted from the vendor's default dimensions
@@ -375,6 +415,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item with a default dimension
// [WHEN] The user posts a http request to delete a default dimension on the Item
// [THEN] The default dimension has been deleted from the item's default dimensions
@@ -401,6 +443,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to get the default dimension on the customer
// [THEN] The response contains the default dimension that has been added to the customer
@@ -414,6 +458,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor with a default dimension
// [WHEN] The user posts a http request to get a default dimension on the Vendor
// [THEN] The response contains the default dimension that has been added to the Vendor
@@ -427,6 +473,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item with a default dimension
// [WHEN] The user posts a http request to get a default dimension on the Item
// [THEN] The response contains the default dimension that has been added to the Item
@@ -453,6 +501,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to patch the default dimension on the customer
// [THEN] The default dimension has been updated for the customer
@@ -466,6 +516,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor with a default dimension
// [WHEN] The user posts a http request to patch a default dimension on the Vendor
// [THEN] The default dimension has been updated for the vendor
@@ -479,6 +531,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item with a default dimension
// [WHEN] The user posts a http request to patch a default dimension on the Item
// [THEN] The default dimension has been updated for the item
@@ -505,6 +559,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the customer
// [THEN] You get an error
@@ -518,6 +574,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a Vendor with a default dimension
// [WHEN] The user posts a http request to patch a default dimension with a blocked dimension value on the Vendor
// [THEN] You get an error
@@ -531,6 +589,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a Item with a default dimension
// [WHEN] The user posts a http request to patch a default dimension with a blocked dimension value on the Item
// [THEN] You get an error
@@ -557,6 +617,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Customer: Record "Customer";
begin
// [FEATURE] [Customer]
+ Initialize();
+
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the customer
// [THEN] You get an error
@@ -570,6 +632,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Vendor: Record "Vendor";
begin
// [FEATURE] [Vendor]
+ Initialize();
+
// [GIVEN] a vendor with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the vendor
// [THEN] You get an error
@@ -583,6 +647,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
Item: Record "Item";
begin
// [FEATURE] [Item]
+ Initialize();
+
// [GIVEN] a item with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the item
// [THEN] You get an error
@@ -603,6 +669,11 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
TestPatchDefaultDimensionFailsWhenChangingDimensionCode(DATABASE::Employee, Employee."No.", Employee.SystemId);
end;
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
local procedure TestCreateDefaultDimensionWithDimensionCode(TableNo: Integer; ParentNo: Code[20]; ParentId: Guid)
var
Dimension: Record "Dimension";
diff --git a/src/Apps/W1/APIV1/test/src/APIV1DimensionLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1DimensionLinesE2E.Codeunit.al
index a0f0993cf2a..6da34940c17 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1DimensionLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1DimensionLinesE2E.Codeunit.al
@@ -28,6 +28,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
[Test]
@@ -44,6 +45,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
ResponseText: Text;
begin
// [SCENARIO] Create a dimension line in a customer payment through a POST method and check if it was created
+ Initialize();
LibraryGraphJournalLines.Initialize();
// [GIVEN] a journal
@@ -88,6 +90,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
ResponseText: Text;
begin
// [SCENARIO] Creating a dimension line through a POST method without specifying a parent Id fails
+ Initialize();
LibraryGraphJournalLines.Initialize();
// [GIVEN] a dimension with a value
@@ -119,6 +122,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
TargetURL: Text;
begin
// [SCENARIO] Try to create a dimension line with an already existing code
+ Initialize();
LibraryGraphJournalLines.Initialize();
// [GIVEN] a journal
@@ -171,6 +175,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
TargetURL: Text;
begin
// [SCENARIO] Create dimension lines in a journal line and use a GET method to retrieve them
+ Initialize();
LibraryGraphJournalLines.Initialize();
// [GIVEN] a journal
@@ -227,6 +232,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
TargetURL: Text;
begin
// [SCENARIO] Create dimension lines in a journal line and use a GET method to retrieve them
+ Initialize();
// [GIVEN] a customer payment in the General Journal Table
LibraryGraphJournalLines.Initialize();
@@ -276,6 +282,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
TargetURL: Text;
begin
// [SCENARIO] Using a GET request to retrieve dimension lines without a filter fails
+ Initialize();
LibraryGraphJournalLines.Initialize();
AccountNo := LibraryGraphJournalLines.CreateAccount();
@@ -296,6 +303,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
TargetURL: Text;
begin
// [SCENARIO] Using a GET request to retrieve dimension lines with a random entity fails
+ Initialize();
LibraryGraphJournalLines.Initialize();
// [GIVEN] a Target URL without filters
@@ -323,6 +331,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
TargetURL: Text;
begin
// [SCENARIO] Create a dimension line, use a PATCH method to change it and then verify the changes
+ Initialize();
LibraryGraphJournalLines.Initialize();
// [GIVEN] a journal
@@ -386,6 +395,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
TargetURL: Text;
begin
// [SCENARIO] Try to change the code of an existing dimension line
+ Initialize();
LibraryGraphJournalLines.Initialize();
// [GIVEN] a journal
@@ -444,6 +454,7 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
TargetURL: Text;
begin
// [SCENARIO] Create a dimension line, use a DELETE method to remove it and then verify the deletion
+ Initialize();
LibraryGraphJournalLines.Initialize();
// [GIVEN] a journal
diff --git a/src/Apps/W1/APIV1/test/src/APIV1DimensionsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1DimensionsE2E.Codeunit.al
index f1aafb40161..78a25bb1b80 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1DimensionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1DimensionsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139724 "APIV1 - Dimensions E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -20,6 +21,7 @@ codeunit 139724 "APIV1 - Dimensions E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1EmployeesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1EmployeesE2E.Codeunit.al
index c2d3a8700fb..5da3e1d4573 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1EmployeesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1EmployeesE2E.Codeunit.al
@@ -25,6 +25,7 @@ codeunit 139722 "APIV1 - Employees E2E"
var
LibraryApplicationArea: Codeunit "Library - Application Area";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryApplicationArea.EnableBasicHRSetup();
// Lazy Setup.
diff --git a/src/Apps/W1/APIV1/test/src/APIV1GLEntriesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1GLEntriesE2E.Codeunit.al
index f405f7a3ad5..a084d685d4b 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1GLEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1GLEntriesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139730 "APIV1 - GLEntries E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -14,9 +15,9 @@ codeunit 139730 "APIV1 - GLEntries E2E"
var
Assert: Codeunit "Assert";
LibraryERM: Codeunit "Library - ERM";
- LibraryVariableStorage: Codeunit "Library - Variable Storage";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
IsInitialized: Boolean;
+ JournalTemplateName: Code[10];
ServiceNameTxt: Label 'generalLedgerEntries';
local procedure Initialize()
@@ -24,6 +25,7 @@ codeunit 139730 "APIV1 - GLEntries E2E"
LibraryERMCountryData: Codeunit "Library - ERM Country Data";
LibraryApplicationArea: Codeunit "Library - Application Area";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryApplicationArea.EnableFoundationSetup();
IF IsInitialized THEN
EXIT;
@@ -89,7 +91,7 @@ codeunit 139730 "APIV1 - GLEntries E2E"
CreateGeneralJournalBatch(GenJournalBatch);
// Create General Journal Line.
- LibraryVariableStorage.Enqueue(GenJournalBatch."Journal Template Name");
+ JournalTemplateName := GenJournalBatch."Journal Template Name";
GeneralJournal.TRAP();
GeneralJournal.OPENEDIT();
GeneralJournal."Account Type".SETVALUE(GenJournalLine."Account Type"::"G/L Account");
@@ -119,7 +121,6 @@ codeunit 139730 "APIV1 - GLEntries E2E"
local procedure UpdateAmountOnGenJournalLine(GenJournalBatch: Record "Gen. Journal Batch"; var GeneralJournal: TestPage "General Journal")
begin
- LibraryVariableStorage.Enqueue(GenJournalBatch."Journal Template Name");
LibraryERM.UpdateAmountOnGenJournalLine(GenJournalBatch, GeneralJournal);
end;
@@ -145,7 +146,7 @@ codeunit 139730 "APIV1 - GLEntries E2E"
[ModalPageHandler]
procedure GeneralJournalTemplateHandler(var GeneralJournalTemplateList: TestPage 250)
begin
- GeneralJournalTemplateList.FILTER.SETFILTER(Name, LibraryVariableStorage.DequeueText());
+ GeneralJournalTemplateList.FILTER.SETFILTER(Name, JournalTemplateName);
GeneralJournalTemplateList.OK().INVOKE();
end;
}
diff --git a/src/Apps/W1/APIV1/test/src/APIV1IncomeStatementE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1IncomeStatementE2E.Codeunit.al
index a49c2db7b8b..8063d4e2e8f 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1IncomeStatementE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1IncomeStatementE2E.Codeunit.al
@@ -62,6 +62,7 @@ codeunit 139716 "APIV1 - Income Statement E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1ItemCategoriesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1ItemCategoriesE2E.Codeunit.al
index 9035d86b098..ca8aed25a9a 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1ItemCategoriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1ItemCategoriesE2E.Codeunit.al
@@ -155,6 +155,7 @@ codeunit 139707 "APIV1 - Item Categories E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1ItemVariantsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1ItemVariantsE2E.Codeunit.al
index 7d404f44ee1..18dd7ce22f2 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1ItemVariantsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1ItemVariantsE2E.Codeunit.al
@@ -22,6 +22,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Create an item variant through a POST method and check if it was created
+ Initialize();
+
// [GIVEN] a JSON text with an item variant with itemId
CreateItem(Item);
Commit();
@@ -46,6 +48,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Cannot create an Item Variant with non-existing itemId
+ Initialize();
+
// [GIVEN] a JSON text with an item variant with non-existing itemId
ItemId := CreateGuid();
ItemVariantJSON := CreateItemVariantJsonWithItemId(ItemId, ItemVariantCode);
@@ -67,6 +71,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Create an item variant through a POST method and check if it was created
+ Initialize();
+
// [GIVEN] a JSON text with an item variant with itemNumber
CreateItem(Item);
Commit();
@@ -92,6 +98,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Cannot create an Item Variant with non-existing itemNumber
+ Initialize();
+
// [GIVEN] a JSON text with an item variant with non-existing itemNumber
ItemNo := LibraryUtility.GenerateRandomCode(ItemVariant.FieldNo(Code), Database::"Item Variant");
ItemVariantJSON := CreateItemVariantJsonWithItemNo(ItemNo, ItemVariantCode);
@@ -113,6 +121,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Create an item variant through a POST method and check if it was created
+ Initialize();
+
// [GIVEN] a JSON text with an item variant with itemNumber and itemId
CreateItem(Item);
Commit();
@@ -138,6 +148,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Cannot create an Item Variant with mismatching itemNumber and itemId
+ Initialize();
+
// [GIVEN] a JSON text with an item variant with mismatching itemNumber and itemId
CreateItem(Item1);
CreateItem(Item2);
@@ -161,6 +173,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Cannot create an Item Variant if there is an item variant with same itemNumber and code
+ Initialize();
+
// [GIVEN] a JSON text with an item variant with same itemNumber and code
CreateItem(Item);
LibraryInventory.CreateItemVariant(ItemVariant, Item."No.");
@@ -183,6 +197,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Get a simple customer with a GET request to the service.
+ Initialize();
+
// [GIVEN] An item variant exists in the system
CreateItem(Item);
LibraryInventory.CreateItemVariant(ItemVariant, Item."No.");
@@ -208,6 +224,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Create an item variant, use a PATCH method to change it and then verify the changes
+ Initialize();
+
// [GIVEN] an item variant exists in the system
CreateItem(Item);
LibraryInventory.CreateItemVariant(ItemVariant, Item."No.");
@@ -240,6 +258,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Create an item variant, use a PATCH method to change it and then verify the changes
+ Initialize();
+
// [GIVEN] an item variant exists in the system
CreateItem(Item1);
CreateItem(Item2);
@@ -273,6 +293,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Create an item variant, use a PATCH method to change it and then verify the changes
+ Initialize();
+
// [GIVEN] an item variant exists in the system
CreateItem(Item1);
CreateItem(Item2);
@@ -302,6 +324,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Create an item variant, use a DELETE method to remove it and then verify the deletion
+ Initialize();
+
// [GIVEN] an item variant in the system
CreateItem(Item);
LibraryInventory.CreateItemVariant(ItemVariant, Item."No.");
@@ -328,6 +352,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
TargetURL: Text;
begin
// [SCENARIO] Cannot delete an item variant in use
+ Initialize();
+
// [GIVEN] an item variant in the system and used in a sales order line
LibraryInventory.CreateItem(Item);
LibraryInventory.CreateItemVariant(ItemVariant, Item."No.");
@@ -343,6 +369,7 @@ codeunit 139739 "APIV1 - Item Variants E2E"
var
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
+ LibraryGraphDocumentTools: Codeunit "Library - Graph Document Tools";
LibraryUtility: Codeunit "Library - Utility";
LibraryRandom: Codeunit "Library - Random";
LibraryInventory: Codeunit "Library - Inventory";
@@ -350,6 +377,11 @@ codeunit 139739 "APIV1 - Item Variants E2E"
ServiceNameTxt: Label 'itemVariants';
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
local procedure CreateItem(var Item: Record Item)
begin
Item.Init();
@@ -426,6 +458,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
LibrarySales: Codeunit "Library - Sales";
begin
LibrarySales.CreateSalesOrder(SalesHeader);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesHeader."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
LibrarySales.CreateSalesLine(SalesLine, SalesHeader, SalesLine.Type::Item, Item."No.", 2);
SalesLine."Variant Code" := ItemVariant.Code;
SalesLine.Modify();
diff --git a/src/Apps/W1/APIV1/test/src/APIV1ItemsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1ItemsE2E.Codeunit.al
index 4cddfa7b2ec..f392568fb65 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1ItemsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1ItemsE2E.Codeunit.al
@@ -33,6 +33,7 @@ codeunit 139700 "APIV1 - Items E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1JournalLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1JournalLinesE2E.Codeunit.al
index c528b4c662a..03411a1acd8 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1JournalLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1JournalLinesE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139745 "APIV1 - Journal Lines E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = IntegrationTest;
TestPermissions = Disabled;
@@ -14,6 +15,7 @@ codeunit 139745 "APIV1 - Journal Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
if IsInitialized then
exit;
IsInitialized := true;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1JournalsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1JournalsE2E.Codeunit.al
index 6aab2759557..a27175641b4 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1JournalsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1JournalsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139727 "APIV1 - Journals E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -32,6 +33,7 @@ codeunit 139727 "APIV1 - Journals E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
@@ -190,6 +192,8 @@ codeunit 139727 "APIV1 - Journals E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [GIVEN] A general journal batch with a general journal line
BalAccountNo := LibraryERM.CreateGLAccountNoWithDirectPosting();
BalAccountType := GenJournalLine."Bal. Account Type"::"G/L Account";
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PDFDocumentE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PDFDocumentE2E.Codeunit.al
index 3f795d60e48..ed9ae0f5b0b 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PDFDocumentE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PDFDocumentE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139744 "APIV1 - PDF Document E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -24,7 +25,7 @@ codeunit 139744 "APIV1 - PDF Document E2E"
var
CompanyInformation: Record "Company Information";
begin
- WorkDate := Today;
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
CompanyInformation.Get();
if CompanyInformation."Giro No." = '' then
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PaymentTermsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PaymentTermsE2E.Codeunit.al
index 5c39f3bd02a..5acfb554143 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PaymentTermsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PaymentTermsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139704 "APIV1 - Payment Terms E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -19,6 +20,7 @@ codeunit 139704 "APIV1 - Payment Terms E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PicturesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PicturesE2E.Codeunit.al
index 3913b1537e6..7952bbda924 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PicturesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PicturesE2E.Codeunit.al
@@ -28,6 +28,7 @@ codeunit 139742 "APIV1 - Pictures E2E"
[Scope('OnPrem')]
procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
if IsInitialized then
exit;
@@ -46,6 +47,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Customer]
// [SCENARIO] Get value picture from Customer Record
+ Initialize();
+
// [GIVEN] a customer with image attached
CreateTestCustomerWithImage(Customer, TempBlobExpected);
Commit();
@@ -70,6 +73,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Customer]
// [SCENARIO] Get a picture metadata from Customer Record
+ Initialize();
+
// [GIVEN] a customer with image attached
CreateTestCustomerWithImage(Customer, TempBlobExpected);
Commit();
@@ -93,6 +98,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Customer]
// [SCENARIO] Get value picture from Customer Record when no image exist
+ Initialize();
+
// [GIVEN] a customer without image
LibrarySales.CreateCustomer(Customer);
Commit();
@@ -114,6 +121,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Customer]
// [SCENARIO] Get a picture metadata from Customer Record when no image is present
+ Initialize();
+
// [GIVEN] a customer with image attached
LibrarySales.CreateCustomer(Customer);
Commit();
@@ -139,6 +148,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Customer]
// [SCENARIO] Set Picture on a customer without picture
+ Initialize();
+
// [GIVEN] a customer with image attached
LibrarySales.CreateCustomer(Customer);
GetRedImageTempBlob(TempBlobExpected);
@@ -171,6 +182,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Customer]
// [SCENARIO] Replace the Picture on a customer
+ Initialize();
+
// [GIVEN] a customer with image attached
CreateTestCustomerWithImage(Customer, TempBlobOriginal);
GetBlueImageTempBlob(TempBlobExpected);
@@ -202,6 +215,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Customer]
// [SCENARIO] Replace the Picture on a customer
+ Initialize();
+
// [GIVEN] a customer with image attached
CreateTestCustomerWithImage(Customer, TempBlobOriginal);
GetBlueImageTempBlob(TempBlobExpected);
@@ -229,6 +244,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Vendor]
// [SCENARIO] Get value picture from Vendor Record
+ Initialize();
+
// [GIVEN] a Vendor with image attached
CreateTestVendorWithImage(Vendor, TempBlobExpected);
Commit();
@@ -253,6 +270,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Vendor]
// [SCENARIO] Get a picture metadata from Vendor Record
+ Initialize();
+
// [GIVEN] a Vendor with image attached
CreateTestVendorWithImage(Vendor, TempBlobExpected);
Commit();
@@ -276,6 +295,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Vendor]
// [SCENARIO] Get value picture from Vendor Record when no image exist
+ Initialize();
+
// [GIVEN] a Vendor without image
LibraryPurchase.CreateVendor(Vendor);
Commit();
@@ -297,6 +318,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Vendor]
// [SCENARIO] Get a picture metadata from Vendor Record when no image is present
+ Initialize();
+
// [GIVEN] a Vendor with image attached
LibraryPurchase.CreateVendor(Vendor);
Commit();
@@ -322,6 +345,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Vendor]
// [SCENARIO] Set Picture on a Vendor without picture
+ Initialize();
+
// [GIVEN] a Vendor with image attached
LibraryPurchase.CreateVendor(Vendor);
GetRedImageTempBlob(TempBlobExpected);
@@ -354,6 +379,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Vendor]
// [SCENARIO] Replace the Picture on a Vendor
+ Initialize();
+
// [GIVEN] a Vendor with image attached
CreateTestVendorWithImage(Vendor, TempBlobOriginal);
GetBlueImageTempBlob(TempBlobExpected);
@@ -385,6 +412,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Vendor]
// [SCENARIO] Replace the Picture on a Vendor
+ Initialize();
+
// [GIVEN] a Vendor with image attached
CreateTestVendorWithImage(Vendor, TempBlobOriginal);
GetBlueImageTempBlob(TempBlobExpected);
@@ -412,6 +441,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Employee]
// [SCENARIO] Get value picture from Employee Record
+ Initialize();
+
// [GIVEN] an Employee with image attached
CreateTestEmployeeWithImage(Employee, TempBlobExpected);
Commit();
@@ -436,6 +467,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Employee]
// [SCENARIO] Get a picture metadata from Employee Record
+ Initialize();
+
// [GIVEN] a Employee with image attached
CreateTestEmployeeWithImage(Employee, TempBlobExpected);
Commit();
@@ -459,6 +492,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Employee]
// [SCENARIO] Get value picture from Employee Record when no image exist
+ Initialize();
+
// [GIVEN] a Employee without image
LibraryHumanResource.CreateEmployee(Employee);
Commit();
@@ -480,6 +515,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Employee]
// [SCENARIO] Get a picture metadata from Employee Record when no image is present
+ Initialize();
+
// [GIVEN] a Employee with image attached
LibraryHumanResource.CreateEmployee(Employee);
Commit();
@@ -505,6 +542,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Employee]
// [SCENARIO] Set Picture on a Employee without picture
+ Initialize();
+
// [GIVEN] a Employee with image attached
LibraryHumanResource.CreateEmployee(Employee);
GetRedImageTempBlob(TempBlobExpected);
@@ -537,6 +576,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Employee]
// [SCENARIO] Replace the Picture on a Employee
+ Initialize();
+
// [GIVEN] a Employee with image attached
CreateTestEmployeeWithImage(Employee, TempBlobOriginal);
GetBlueImageTempBlob(TempBlobExpected);
@@ -568,6 +609,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Employee]
// [SCENARIO] Replace the Picture on a Employee
+ Initialize();
+
// [GIVEN] a Employee with image attached
CreateTestEmployeeWithImage(Employee, TempBlobOriginal);
GetBlueImageTempBlob(TempBlobExpected);
@@ -595,6 +638,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Item]
// [SCENARIO] Get value picture from Item Record
+ Initialize();
+
// [GIVEN] a Item with image attached
CreateTestItemWithImage(Item, TempBlobExpected);
Commit();
@@ -619,6 +664,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Item]
// [SCENARIO] Get a picture metadata from Item Record
+ Initialize();
+
// [GIVEN] a Item with image attached
CreateTestItemWithImage(Item, TempBlobExpected);
Commit();
@@ -642,6 +689,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Item]
// [SCENARIO] Get value picture from Item Record when no image exist
+ Initialize();
+
// [GIVEN] a Item without image
LibraryInventory.CreateItem(Item);
Commit();
@@ -663,6 +712,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Item]
// [SCENARIO] Get a picture metadata from Item Record when no image is present
+ Initialize();
+
// [GIVEN] a Item with image attached
LibraryInventory.CreateItem(Item);
Commit();
@@ -688,6 +739,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Item]
// [SCENARIO] Set Picture on a Item without picture
+ Initialize();
+
// [GIVEN] a Item with image attached
LibraryInventory.CreateItem(Item);
GetRedImageTempBlob(TempBlobExpected);
@@ -720,6 +773,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Item]
// [SCENARIO] Replace the Picture on a Item
+ Initialize();
+
// [GIVEN] a Item with image attached
CreateTestItemWithImage(Item, TempBlobOriginal);
GetBlueImageTempBlob(TempBlobExpected);
@@ -751,6 +806,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
// [FEATURE] [Item]
// [SCENARIO] Replace the Picture on a Item
+ Initialize();
+
// [GIVEN] a Item with image attached
CreateTestItemWithImage(Item, TempBlobOriginal);
GetBlueImageTempBlob(TempBlobExpected);
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvLinesE2E.Codeunit.al
index d3b95c6f61c..1c36dd9a2ca 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -31,6 +32,7 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
@@ -711,6 +713,7 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
TargetURL: Text;
ResponseText: Text;
InvoiceLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -719,7 +722,8 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
COMMIT();
- InvoiceLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ InvoiceLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -731,8 +735,10 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, InvoiceLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstPurchaseLine(PurchaseHeader, PurchaseLine);
- PurchaseLine.FINDLAST();
+ PurchaseLine.SETRANGE("Document Type", PurchaseHeader."Document Type");
+ PurchaseLine.SETRANGE("Document No.", PurchaseHeader."No.");
+ PurchaseLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(PurchaseLine.FINDFIRST(), 'Could not find the created purchase invoice line');
Assert.AreEqual('', PurchaseLine."No.", 'No should be blank');
Assert.AreEqual(PurchaseLine.Type, PurchaseLine.Type::Item, 'Wrong type is set');
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvoicesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvoicesE2E.Codeunit.al
index 8060fbf4d23..dd698a728b4 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvoicesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvoicesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -34,6 +35,7 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
[Test]
@@ -423,8 +425,9 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
Vendor.Validate("Payment Terms Code", PaymentTerms.Code);
Vendor.Modify(true);
- // [GIVEN] Create Invoice Json with Vendor No and Invoice Date
- InvoiceJSON := CreateInvoiceJSON('vendorNumber', VendorNo, 'invoiceDate', WorkDate());
+ // [GIVEN] Create Invoice Json with dates before the vendor defaults are applied
+ InvoiceJSON := CreateInvoiceJSON('invoiceDate', WorkDate(), 'postingDate', WorkDate());
+ InvoiceJSON := LibraryGraphMgt.AddPropertytoJSON(InvoiceJSON, 'vendorNumber', VendorNo);
COMMIT();
// [WHEN] We POST the JSON to the Web Service
@@ -441,7 +444,30 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
PurchaseHeader.SETRANGE("No.", InvoiceNumber);
PurchaseHeader.SETRANGE("Buy-from Vendor No.", VendorNo);
Assert.IsTrue(PurchaseHeader.FINDFIRST(), UnpostedInvoiceExistErr);
- Assert.IsTrue(PurchaseHeader."Payment Discount %" <> 0, PaymentDiscountErr);
+ if PurchaseHeader."Payment Discount %" = 0 then
+ Assert.IsTrue(HasLocalizedPaymentDiscount(PurchaseHeader."No."), PaymentDiscountErr);
+ end;
+
+ local procedure HasLocalizedPaymentDiscount(DocumentNo: Code[20]): Boolean
+ var
+ RecordField: Record Field;
+ PaymentLineRecordRef: RecordRef;
+ PaymentLineFieldRef: FieldRef;
+ begin
+ RecordField.SetRange(TableNo, 12170);
+ if RecordField.IsEmpty() then
+ exit(false);
+
+ PaymentLineRecordRef.Open(12170);
+ PaymentLineFieldRef := PaymentLineRecordRef.Field(10);
+ PaymentLineFieldRef.SetRange(2);
+ PaymentLineFieldRef := PaymentLineRecordRef.Field(1);
+ PaymentLineFieldRef.SetRange(2);
+ PaymentLineFieldRef := PaymentLineRecordRef.Field(2);
+ PaymentLineFieldRef.SetRange(DocumentNo);
+ PaymentLineFieldRef := PaymentLineRecordRef.Field(7);
+ PaymentLineFieldRef.SetFilter('>%1', 0);
+ exit(not PaymentLineRecordRef.IsEmpty());
end;
local procedure CreatePurchaseInvoices(var InvoiceID1: Text; var InvoiceID2: Text)
@@ -542,15 +568,7 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
end;
local procedure CreatePaymentTermsWithDiscount(var PaymentTerms: Record "Payment Terms")
- var
- DateCalculation: DateFormula;
begin
- LibraryERM.CreatePaymentTerms(PaymentTerms);
- Evaluate(DateCalculation, '1M');
- PaymentTerms.Validate("Due Date Calculation", DateCalculation);
- Evaluate(DateCalculation, '8D');
- PaymentTerms.Validate("Discount Date Calculation", DateCalculation);
- PaymentTerms.Validate("Discount %", 2);
- PaymentTerms.Modify(true);
+ LibraryERM.CreatePaymentTermsDiscount(PaymentTerms, true);
end;
}
diff --git a/src/Apps/W1/APIV1/test/src/APIV1RetEarningsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1RetEarningsE2E.Codeunit.al
index 2bc76f8cb32..ec6e7e8f2ae 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1RetEarningsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1RetEarningsE2E.Codeunit.al
@@ -62,6 +62,7 @@ codeunit 139721 "APIV1 - Ret. Earnings E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesCrMemoLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesCrMemoLinesE2E.Codeunit.al
index 1d5fc4dabe1..63eb6eb5ac0 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesCrMemoLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesCrMemoLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,7 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
@@ -698,6 +700,7 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
TargetURL: Text;
ResponseText: Text;
CreditMemoLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -706,7 +709,8 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
COMMIT();
- CreditMemoLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ CreditMemoLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -718,8 +722,10 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, CreditMemoLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstSalesLine(SalesHeader, SalesLine);
- SalesLine.FINDLAST();
+ SalesLine.SETRANGE("Document Type", SalesHeader."Document Type");
+ SalesLine.SETRANGE("Document No.", SalesHeader."No.");
+ SalesLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(SalesLine.FINDFIRST(), 'Could not find the created credit memo line');
Assert.AreEqual('', SalesLine."No.", 'No should be blank');
Assert.AreEqual(SalesLine.Type, SalesLine.Type::Item, 'Wrong type is set');
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesCreditMemosE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesCreditMemosE2E.Codeunit.al
index 8ab2dff2dbb..d8d7dda2046 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesCreditMemosE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesCreditMemosE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -35,6 +36,11 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
CreditMemoStatusErr: Label 'The credit memo status is incorrect.';
MailingJobErr: Label 'The mailing job is not created.', Locked = true;
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
local procedure InitializeForSending()
var
TempEmailAccount: Record "Email Account";
@@ -60,6 +66,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] Create posted and unposted sales credit memos and use a GET method to retrieve them
+ Initialize();
+
// [GIVEN] 2 credit memos, one posted and one unposted
CreateSalesCreditMemos(CreditMemoNo1, CreditMemoNo2);
COMMIT();
@@ -93,6 +101,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] Create posted and unposted Sales credit memos and use HTTP POST to delete them
+ Initialize();
+
// [GIVEN] 2 credit memos, one posted and one unposted
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(BillToCustomer);
@@ -138,6 +148,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] Create posted and unposted with specific currency set and use HTTP POST to create them
+ Initialize();
+
// [GIVEN] an CreditMemo with a non-LCY currencyCode set
LibrarySales.CreateCustomer(Customer);
CustomerNo := Customer."No.";
@@ -168,18 +180,24 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
[Test]
procedure TestModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(FALSE, FALSE);
end;
[Test]
procedure TestEmptyModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(TRUE, FALSE);
end;
[Test]
procedure TestPartialModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(FALSE, TRUE);
end;
@@ -263,6 +281,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] Create unposted sales credit memo and use HTTP DELETE to delete it
+ Initialize();
+
// [GIVEN] An unposted credit memo
CreateDraftSalesCreditMemo(SalesHeader);
CreditMemoNo := SalesHeader."No.";
@@ -296,6 +316,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
// [SCENARIO] Create an credit memo both through the client UI and through the API
// [SCENARIO] and compare them. They should be the same and have the same fields autocompleted wherever needed.
+ Initialize();
+
// [GIVEN] An unposted credit memo
LibraryGraphDocumentTools.InitializeUIPage();
@@ -329,6 +351,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] When an credit memo is created,the GET Method should update the credit memo and assign a total
+ Initialize();
+
// [GIVEN] 2 credit memos, one posted and one unposted without totals assigned
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
SalesHeader, DiscountPct, SalesHeader."Document Type"::"Credit Memo");
@@ -362,6 +386,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] When an credit memo is created, the GET Method should update the credit memo and assign a total
+ Initialize();
+
// [GIVEN] 2 credit memos, one posted and one unposted with discount amount that should be redistributed
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
SalesHeader, DiscountPct, SalesHeader."Document Type"::"Credit Memo");
@@ -401,6 +427,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
CreditMemoID: Text;
begin
// [SCENARIO 184721] Create Credit Memo, use a PATCH method to change it and then verify the changes
+ Initialize();
+
LibrarySales.CreateCustomerWithAddress(Customer);
// [GIVEN] an item with unit price and unit cost
@@ -448,6 +476,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO 184721] Clearing manually set discount
+ Initialize();
+
// [GIVEN] an item with unit price and unit cost
LibraryInventory.CreateItemWithUnitPriceAndUnitCost(
Item, LibraryRandom.RandDecInRange(1, 100, 2), LibraryRandom.RandDecInRange(1, 100, 2));
@@ -503,6 +533,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] User can post a sales credit memo through the API.
+ Initialize();
+
// [GIVEN] Draft sales credit memo exists
CreateDraftSalesCreditMemo(SalesHeader);
SetCustomerEmail(SalesHeader."Sell-to Customer No.");
@@ -549,6 +581,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
TargetURL: Text;
begin
// [SCENARIO] User can post and send a sales credit memo through the API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Draft sales credit memos exists
@@ -588,6 +622,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] User can cancel a posted sales credit memo through API.
+ Initialize();
+
// [GIVEN] Non-corrective sales credit memo exists
CreatePostedSalesCreditMemo(SalesCrMemoHeader);
SetCustomerEmail(SalesCrMemoHeader."Sell-to Customer No.");
@@ -617,6 +653,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
begin
// [SCENARIO] User can cancel a posted sales credit memo through API.
+ Initialize();
+
// [GIVEN] Corrective sales credit memo exists
CreateCorrectiveSalesCreditMemo(SalesCrMemoHeader);
SetCustomerEmail(SalesCrMemoHeader."Sell-to Customer No.");
@@ -649,6 +687,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
TargetURL: Text;
begin
// [SCENARIO] User can cancel a posted sales credit memo through API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Corrective sales credit memo exists
@@ -685,6 +725,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
TargetURL: Text;
begin
// [SCENARIO] User can send a posted sales credit memo through the API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Posted sales credit memo exists
@@ -717,6 +759,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
TargetURL: Text;
begin
// [SCENARIO] Sending a draft sales credit memo through the API throws an error
+ Initialize();
+
InitializeForSending();
// [GIVEN] Draft sales credit memo exists
@@ -746,6 +790,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
TargetURL: Text;
begin
// [SCENARIO] User can send a draft sales credit memo through the API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Cancelled sales credit memo exists
@@ -769,12 +815,17 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
local procedure CreateCorrectiveSalesCreditMemo(var SalesCrMemoHeader: Record "Sales Cr.Memo Header")
var
+ ReasonCode: Record "Reason Code";
SalesInvoiceHeader: Record "Sales Invoice Header";
SalesHeader: Record "Sales Header";
InvoiceCode: Code[20];
begin
LibrarySales.CreateSalesInvoice(SalesHeader);
ModifySalesHeaderPostingDate(SalesHeader, WORKDATE());
+ EnsureReasonCode();
+ ReasonCode.FindFirst();
+ SalesHeader.Validate("Reason Code", ReasonCode.Code);
+ SalesHeader.Modify(true);
InvoiceCode := LibrarySales.PostSalesDocument(SalesHeader, false, true);
SalesInvoiceHeader.Get(InvoiceCode);
Commit();
@@ -783,6 +834,16 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
SalesCrMemoHeader.FindFirst();
end;
+ local procedure EnsureReasonCode()
+ var
+ ReasonCode: Record "Reason Code";
+ begin
+ if not ReasonCode.IsEmpty() then
+ exit;
+
+ LibraryERM.CreateReasonCode(ReasonCode);
+ end;
+
local procedure CreateDraftSalesCreditMemo(var SalesHeader: Record "Sales Header")
begin
LibrarySales.CreateSalesCreditMemo(SalesHeader);
@@ -952,6 +1013,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
SalesHeader1RecordRef.GETTABLE(SalesHeader1);
SalesHeader2RecordRef.GETTABLE(SalesHeader2);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(
SalesHeader1RecordRef, SalesHeader2RecordRef, TempIgnoredFieldsForComparison, 'Credit Memos do not match');
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesInvLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesInvLinesE2E.Codeunit.al
index 86e95b3f302..ad4c4c6606e 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesInvLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesInvLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -33,6 +34,7 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
@@ -935,6 +937,7 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
TargetURL: Text;
ResponseText: Text;
InvoiceLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -943,7 +946,8 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
COMMIT();
- InvoiceLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ InvoiceLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -955,8 +959,10 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, InvoiceLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstSalesLine(SalesHeader, SalesLine);
- SalesLine.FINDLAST();
+ SalesLine.SETRANGE("Document Type", SalesHeader."Document Type");
+ SalesLine.SETRANGE("Document No.", SalesHeader."No.");
+ SalesLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(SalesLine.FINDFIRST(), 'Could not find the created invoice line');
Assert.AreEqual('', SalesLine."No.", 'No should be blank');
Assert.AreEqual(SalesLine.Type, SalesLine.Type::Item, 'Wrong type is set');
VerifyIdsAreBlank(ResponseText);
@@ -1070,6 +1076,8 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
Assert.AreNotEqual('', InvoiceLineID, 'ID should not be empty');
LineNo := SalesLine."Line No.";
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
InvoiceLineJSON := STRSUBSTNO('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Format(Item.SystemId)));
COMMIT();
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesOrderLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesOrderLinesE2E.Codeunit.al
index 2afa4cf7193..ac42809d6a9 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesOrderLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesOrderLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -31,6 +32,7 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
@@ -712,6 +714,7 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
TargetURL: Text;
ResponseText: Text;
OrderLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -720,7 +723,8 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
COMMIT();
- OrderLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ OrderLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -732,8 +736,10 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, OrderLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstSalesLine(SalesHeader, SalesLine);
- SalesLine.FINDLAST();
+ SalesLine.SETRANGE("Document Type", SalesHeader."Document Type");
+ SalesLine.SETRANGE("Document No.", SalesHeader."No.");
+ SalesLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(SalesLine.FINDFIRST(), 'Could not find the created order line');
Assert.AreEqual('', SalesLine."No.", 'No should be blank');
Assert.AreEqual(SalesLine.Type, SalesLine.Type::Item, 'Wrong type is set');
@@ -844,6 +850,8 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
Assert.AreNotEqual('', OrderId, 'ID should not be empty');
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
OrderLineJSON := STRSUBSTNO('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Format(Item.SystemId)));
COMMIT();
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesOrdersE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesOrdersE2E.Codeunit.al
index ec9fb22f169..37582fd28a5 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesOrdersE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -40,6 +41,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] Create Sales Orders and use a GET method to retrieve them
+ Initialize();
+
// [GIVEN] 2 orders in the table
LibrarySales.CreateSalesOrder(SalesHeader);
OrderNo[1] := SalesHeader."No.";
@@ -78,6 +81,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] Create sales orders JSON and use HTTP POST to create them
+ Initialize();
+
// [GIVEN] a customer
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(BillToCustomer);
@@ -127,6 +132,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] Create sales order for customer with location and use HTTP POST to create it
+ Initialize();
+
// [GIVEN] an order with customer with location code
LibrarySales.CreateCustomer(Customer);
LibraryWarehouse.CreateLocation(Location);
@@ -170,6 +177,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] Create sales order with specific currency set and use HTTP POST to create it
+ Initialize();
+
// [GIVEN] an order with a non-LCY currencyCode set
LibrarySales.CreateCustomer(Customer);
CustomerNo := Customer."No.";
@@ -203,21 +212,32 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
[Test]
procedure TestModifyOrders()
begin
+ Initialize();
+
TestMultipleModifyOrders(false, false);
end;
[Test]
procedure TestEmptyModifyOrders()
begin
+ Initialize();
+
TestMultipleModifyOrders(true, false);
end;
[Test]
procedure TestPartialModifyOrders()
begin
+ Initialize();
+
TestMultipleModifyOrders(false, true);
end;
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
local procedure TestMultipleModifyOrders(EmptyData: Boolean; PartiallyEmptyData: Boolean)
var
SellToCustomer: Record "Customer";
@@ -291,6 +311,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] Create sales orders and use HTTP DELETE to delete them
+ Initialize();
+
// [GIVEN] 2 orders in the table
LibrarySales.CreateSalesOrder(SalesHeader);
OrderNo[1] := SalesHeader."No.";
@@ -336,6 +358,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
OrderWithComplexJSON: Text;
begin
// [SCENARIO 184721] Create an order both through the client UI and through the API and compare them. They should be the same and have the same fields autocompleted wherever needed.
+ Initialize();
+
LibraryGraphDocumentTools.InitializeUIPage();
// [GIVEN] a customer
@@ -381,6 +405,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Order, SalesOrder."No.".VALUE());
ApiRecordRef.GetTable(ApiSalesHeader);
PageRecordRef.GetTable(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API order do not match');
@@ -396,6 +422,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] When an order is created, the GET Method should update the order and assign a total
+ Initialize();
+
// [GIVEN] an order without totals assigned
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(SalesHeader, DiscountPct, SalesHeader."Document Type"::Order);
SalesHeader.CalcFields("Recalculate Invoice Disc.");
@@ -426,6 +454,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] When an order is created, the GET Method should update the order and redistribute the discount amount
+ Initialize();
+
// [GIVEN] an order with discount amount that should be redistributed
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(SalesHeader, DiscountPct, SalesHeader."Document Type"::Order);
SalesHeader.CalcFields(Amount);
@@ -461,6 +491,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] Create Sales Order, use a PATCH method to change it and then verify the changes
+ Initialize();
+
// [GIVEN] an order with lines
CreateOrderWithLines(SalesHeader);
OrderId := SalesHeader.SystemId;
@@ -497,6 +529,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO 184721] Clearing manually set discount
+ Initialize();
+
// [GIVEN] an order
CreateOrderWithLines(SalesHeader);
OrderNo := SalesHeader."No.";
@@ -533,6 +567,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
begin
// [SCENARIO] User can ship and invoice a sales order through the API.
+ Initialize();
+
// [GIVEN] a sales order with lines
CreateOrderWithLines(SalesHeader);
OrderId := SalesHeader.SystemId;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesQuoteLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesQuoteLinesE2E.Codeunit.al
index b4e577f634b..d56aaf816a7 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesQuoteLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesQuoteLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -29,6 +30,7 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
@@ -614,6 +616,7 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
TargetURL: Text;
ResponseText: Text;
QuoteLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -622,7 +625,8 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
COMMIT();
- QuoteLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ QuoteLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -634,8 +638,10 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, QuoteLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstSalesLine(SalesHeader, SalesLine);
- SalesLine.FINDLAST();
+ SalesLine.SETRANGE("Document Type", SalesHeader."Document Type");
+ SalesLine.SETRANGE("Document No.", SalesHeader."No.");
+ SalesLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(SalesLine.FINDFIRST(), 'Could not find the created quote line');
Assert.AreEqual('', SalesLine."No.", 'No should be blank');
Assert.AreEqual(SalesLine.Type, SalesLine.Type::Item, 'Wrong type is set');
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesQuotesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesQuotesE2E.Codeunit.al
index b395b79b8e8..c11848db893 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesQuotesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesQuotesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -39,6 +40,11 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
InvoiceIdErr: Label 'The invoice ID should differ from the quote ID.', Locked = true;
MailingJobErr: Label 'The mailing job is not created.', Locked = true;
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
local procedure InitializeForSending()
var
TempEmailAccount: Record "Email Account";
@@ -64,6 +70,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO] Create Sales Quotes and use a GET method to retrieve them
+ Initialize();
+
// [GIVEN] 2 quotes in the table
CreateSalesQuoteWithLines(SalesHeader);
QuoteID[1] := SalesHeader."No.";
@@ -102,6 +110,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO] Create sales quotes JSON and use HTTP POST to create them
+ Initialize();
+
// [GIVEN] a customer
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(ShipToCustomer);
@@ -147,6 +157,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO] Create sales quote with specific currency set and use HTTP POST to create it
+ Initialize();
+
// [GIVEN] a quote with a non-LCY currencyCode set
LibrarySales.CreateCustomer(Customer);
CustomerNo := Customer."No.";
@@ -176,18 +188,24 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
[Test]
procedure TestModifyQuotes()
begin
+ Initialize();
+
TestMultipleModifyQuotes(false, false);
end;
[Test]
procedure TestEmptyModifyQuotes()
begin
+ Initialize();
+
TestMultipleModifyQuotes(true, false);
end;
[Test]
procedure TestPartialModifyQuotes()
begin
+ Initialize();
+
TestMultipleModifyQuotes(false, true);
end;
@@ -281,6 +299,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO] Create sales quotes and use HTTP DELETE to delete them
+ Initialize();
+
// [GIVEN] 2 quotes in the table
CreateSalesQuoteWithLines(SalesHeader);
QuoteID[1] := SalesHeader."No.";
@@ -326,6 +346,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
QuoteExists: Boolean;
begin
// [SCENARIO] Create a quote both through the client UI and through the API and compare them. They should be the same and have the same fields autocompleted wherever needed.
+ Initialize();
+
LibraryGraphDocumentTools.InitializeUIPage();
// [GIVEN] a customer
@@ -367,6 +389,11 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Quote, SalesQuote."No.".VALUE());
ApiRecordRef.GETTABLE(ApiSalesHeader);
PageRecordRef.GETTABLE(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'Operation Occurred Date');
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'VAT Reporting Date');
+
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API quote do not match');
end;
@@ -381,6 +408,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO] When a quote is created, the GET Method should update the quote and assign a total
+ Initialize();
+
// [GIVEN] a quote without totals assigned
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(SalesHeader, DiscountPct, SalesHeader."Document Type"::Quote);
SalesHeader.CalcFields("Recalculate Invoice Disc.");
@@ -411,6 +440,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO] When a quote is created, the GET Method should update the quote and redistribute the discount amount
+ Initialize();
+
// [GIVEN] a quote with discount amount that should be redistributed
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(SalesHeader, DiscountPct, SalesHeader."Document Type"::Quote);
SalesHeader.CalcFields(Amount);
@@ -447,6 +478,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
QuoteID: Text;
begin
// [SCENARIO 184721] Create Sales Quote, use a PATCH method to change it and then verify the changes
+ Initialize();
+
LibrarySales.CreateCustomerWithAddress(Customer);
// [GIVEN] an item with unit price and unit cost
@@ -494,6 +527,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO 184721] Clearing manually set discount
+ Initialize();
+
// [GIVEN] an item with unit price and unit cost
LibraryInventory.CreateItemWithUnitPriceAndUnitCost(
Item, LibraryRandom.RandDecInRange(1, 100, 2), LibraryRandom.RandDecInRange(1, 100, 2));
@@ -541,6 +576,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
TargetURL: Text;
begin
// [SCENARIO] User can send a sales quote through the API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Draft sales quote exists
@@ -585,6 +622,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO] User can convert a sales quote to a sales invoice through the API.
+ Initialize();
+
// [GIVEN] Sales quote exists
CreateSalesQuoteWithLines(SalesHeader);
CreateEmailParameters(SalesHeader);
@@ -643,6 +682,8 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
begin
// [SCENARIO] User can convert a sales quote to a sales order through the API.
+ Initialize();
+
// [GIVEN] Sales quote exists
CreateSalesQuoteWithLines(SalesHeader);
CreateEmailParameters(SalesHeader);
@@ -770,6 +811,9 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
LibrarySmallBusiness.CreateCustomer(Customer);
LibrarySmallBusiness.CreateItem(Item);
LibrarySmallBusiness.CreateSalesQuoteHeaderWithLines(SalesHeader, Customer, Item, 1, 1);
+ SalesHeader.Validate("Posting Date", WorkDate());
+ SalesHeader.Validate("Document Date", WorkDate());
+ SalesHeader.Modify(true);
end;
local procedure FindSalesHeader(var SalesHeader: Record "Sales Header"; CustomerNo: Text; QuoteNumber: Text): Boolean
diff --git a/src/Apps/W1/APIV1/test/src/APIV1ShipmentMethodsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1ShipmentMethodsE2E.Codeunit.al
index 09cf7ce2b3e..258e339c1c9 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1ShipmentMethodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1ShipmentMethodsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139705 "APIV1 - Shipment Methods E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -21,6 +22,7 @@ codeunit 139705 "APIV1 - Shipment Methods E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1TaxAreasE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1TaxAreasE2E.Codeunit.al
index bffc2b39d55..382b9e630c5 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1TaxAreasE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1TaxAreasE2E.Codeunit.al
@@ -24,6 +24,7 @@ codeunit 139726 "APIV1 - Tax Areas E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1TrialBalanceE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1TrialBalanceE2E.Codeunit.al
index c495bc2ddfc..3daeb9c1c0a 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1TrialBalanceE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1TrialBalanceE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139718 "APIV1 - Trial Balance E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -60,6 +61,7 @@ codeunit 139718 "APIV1 - Trial Balance E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1UofME2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1UofME2E.Codeunit.al
index b283bc61d9d..d4f8b661f30 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1UofME2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1UofME2E.Codeunit.al
@@ -26,6 +26,8 @@ codeunit 139712 "APIV1 - UofM E2E"
begin
// [SCENARIO] User can get the units of measure.
+ Initialize();
+
// [GIVEN] Units of measure.
GenerateUnitsOfMeasure(UnitOfMeasure, 5);
@@ -46,6 +48,8 @@ codeunit 139712 "APIV1 - UofM E2E"
begin
// [SCENARIO] User can update a unit of measure.
+ Initialize();
+
// [GIVEN] Units of measure.
GenerateUnitsOfMeasure(UnitOfMeasure, 5);
@@ -75,6 +79,8 @@ codeunit 139712 "APIV1 - UofM E2E"
begin
// [SCENARIO] User can delete a unit of measure.
+ Initialize();
+
// [GIVEN] Units of measure.
GenerateUnitsOfMeasure(UnitOfMeasure, 5);
@@ -96,6 +102,8 @@ codeunit 139712 "APIV1 - UofM E2E"
begin
// [SCENARIO] User can insert a unit of measure.
+ Initialize();
+
// [GIVEN] A new unit of measure.
GenerateUnitOfMeasure(UnitOfMeasure);
Request := CreateInsertUnitOfMeasureRequest(UnitOfMeasure);
@@ -111,6 +119,11 @@ codeunit 139712 "APIV1 - UofM E2E"
ValidateUnitOfMeasure(UnitOfMeasure, Response);
end;
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
local procedure GenerateUnitsOfMeasure(var UnitOfMeasure: Record "Unit of Measure"; "Count": Integer)
var
i: Integer;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1VendorsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1VendorsE2E.Codeunit.al
index 44570b29311..f21938f5859 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1VendorsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1VendorsE2E.Codeunit.al
@@ -25,6 +25,7 @@ codeunit 139703 "APIV1 - Vendors E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/CountriesRegionsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/CountriesRegionsE2E.Codeunit.al
index 1e4843ec39c..0948d98d400 100644
--- a/src/Apps/W1/APIV1/test/src/CountriesRegionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/CountriesRegionsE2E.Codeunit.al
@@ -155,6 +155,7 @@ codeunit 139710 "Countries/Regions E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/PaymentMethodsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/PaymentMethodsE2E.Codeunit.al
index 005c5f0add8..a0dedcde372 100644
--- a/src/Apps/W1/APIV1/test/src/PaymentMethodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/PaymentMethodsE2E.Codeunit.al
@@ -155,6 +155,7 @@ codeunit 139714 "Payment Methods E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV1/test/src/SalesInvoicesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/SalesInvoicesE2E.Codeunit.al
index dbf39f9a725..ff8ab0ede12 100644
--- a/src/Apps/W1/APIV1/test/src/SalesInvoicesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/SalesInvoicesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139709 "Sales Invoices E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -48,6 +49,11 @@ codeunit 139709 "Sales Invoices E2E"
NotEmptyParameterErr: Label 'Email parameter %1 is not empty.', Locked = true;
MailingJobErr: Label 'The mailing job is not created.', Locked = true;
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
local procedure InitializeForSending()
var
TempEmailAccount: Record "Email Account";
@@ -73,6 +79,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] Create posted and unposted Sales invoices and use a GET method to retrieve them
+ Initialize();
+
// [GIVEN] 2 invoices, one posted and one unposted
CreateSalesInvoices(InvoiceID1, InvoiceID2);
COMMIT();
@@ -106,6 +114,8 @@ codeunit 139709 "Sales Invoices E2E"
InvoiceWithComplexJSON: Text;
begin
// [SCENARIO 184721] Create posted and unposted Sales invoices and use HTTP POST to delete them
+ Initialize();
+
// [GIVEN] 2 invoices, one posted and one unposted
LibrarySales.CreateCustomer(SellToCustomer);
@@ -157,6 +167,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] Create posted and unposted with specific currency set and use HTTP POST to create them
+ Initialize();
+
// [GIVEN] an Invoice with a non-LCY currencyCode set
LibrarySales.CreateCustomer(Customer);
CustomerNo := Customer."No.";
@@ -203,6 +215,8 @@ codeunit 139709 "Sales Invoices E2E"
CurrencyCode: Code[10];
begin
// [SCENARIO 285872] Create posted and unposted with specific email set and use HTTP POST to create them
+ Initialize();
+
Email := 'test@microsoft.com';
// [GIVEN] an Customer with no email set
@@ -256,6 +270,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] Create unposted with specific document and due date set and use HTTP POST to create them
+ Initialize();
+
// [GIVEN] an Invoice with a document and due date set
LibrarySales.CreateCustomer(Customer);
CustomerNo := Customer."No.";
@@ -294,18 +310,24 @@ codeunit 139709 "Sales Invoices E2E"
[Test]
procedure TestModifyInvoices()
begin
+ Initialize();
+
TestMultipleModifyInvoices(FALSE, FALSE);
end;
[Test]
procedure TestEmptyModifyInvoices()
begin
+ Initialize();
+
TestMultipleModifyInvoices(TRUE, FALSE);
end;
[Test]
procedure TestPartialModifyInvoices()
begin
+ Initialize();
+
TestMultipleModifyInvoices(FALSE, TRUE);
end;
@@ -405,6 +427,8 @@ codeunit 139709 "Sales Invoices E2E"
InvoiceWithBlanksJSON: Text;
begin
// [SCENARIO 184721] Create Sales Invoice with all the Ids filled, use a PATCH method to blank the Ids and the Codes
+ Initialize();
+
LibrarySales.CreateCustomerWithAddress(Customer);
// [GIVEN] a currency
@@ -470,6 +494,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] Create draft invoice and issue a patch request to change the number
+ Initialize();
+
// [GIVEN] 1 draft invoice and a json with a new number
LibrarySales.CreateSalesInvoice(SalesHeader);
NewInvoiceNumber := COPYSTR(CREATEGUID(), 1, MAXSTRLEN(SalesHeader."No."));
@@ -493,6 +519,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] Create unposted Sales invoice and use HTTP DELETE to delete it
+ Initialize();
+
// [GIVEN] An unposted invoice
CreateDraftSalesInvoice(SalesHeader);
InvoiceID := SalesHeader."No.";
@@ -532,6 +560,8 @@ codeunit 139709 "Sales Invoices E2E"
// [SCENARIO 184721] Create an invoice both through the client UI and through the API
// [SCENARIO] and compare them. They should be the same and have the same fields autocompleted wherever needed.
+ Initialize();
+
// [GIVEN] An unposted invoice
LibraryGraphDocumentTools.InitializeUIPage();
LibraryApplicationArea.DisableApplicationAreaSetup();
@@ -577,6 +607,9 @@ codeunit 139709 "Sales Invoices E2E"
PageSalesHeader.GET(PageSalesHeader."Document Type"::Invoice, SalesInvoice."No.".VALUE());
ApiRecordRef.GETTABLE(ApiSalesHeader);
PageRecordRef.GETTABLE(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'Operation Occurred Date');
+
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API Invoice do not match');
@@ -594,7 +627,10 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] When an invoice is created,the GET Method should update the invoice and assign a total
+ Initialize();
+
// [GIVEN] 2 invoices, one posted and one unposted without totals assigned
+ LibraryApplicationArea.EnableFoundationSetup();
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
SalesHeader, DiscountPct, SalesHeader."Document Type"::Invoice);
SalesHeader.CALCFIELDS("Recalculate Invoice Disc.");
@@ -627,6 +663,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] When an invoice is created, the GET Method should update the invoice and assign a total
+ Initialize();
+
// [GIVEN] 2 invoices, one posted and one unposted with discount amount that should be redistributed
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
SalesHeader, DiscountPct, SalesHeader."Document Type"::Invoice);
@@ -663,6 +701,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] Create an invoice wihtout Customer throws an error
+ Initialize();
+
// [GIVEN] a sales invoice JSON with currency only
Currency.SETFILTER(Code, '<>%1', '');
Currency.FINDFIRST();
@@ -690,6 +730,8 @@ codeunit 139709 "Sales Invoices E2E"
InvoiceID: Text;
begin
// [SCENARIO 184721] Create Sales Invoice, use a PATCH method to change it and then verify the changes
+ Initialize();
+
LibrarySales.CreateCustomerWithAddress(Customer);
// [GIVEN] an item with unit price and unit cost
@@ -737,6 +779,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO 184721] Clearing manually set discount
+ Initialize();
+
// [GIVEN] an item with unit price and unit cost
LibraryInventory.CreateItemWithUnitPriceAndUnitCost(
Item, LibraryRandom.RandDecInRange(1, 100, 2), LibraryRandom.RandDecInRange(1, 100, 2));
@@ -793,6 +837,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO] User can post a sales invoice through the API.
+ Initialize();
+
// [GIVEN] Draft sales invoice exists
CreateDraftSalesInvoice(SalesHeader);
DraftInvoiceRecordRef.GetTable(SalesHeader);
@@ -838,6 +884,8 @@ codeunit 139709 "Sales Invoices E2E"
TargetURL: Text;
begin
// [SCENARIO] User can post and send a sales invoice through the API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Draft sales invoice exists
@@ -877,12 +925,15 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO] User can cancel a posted sales invoice through API.
+ Initialize();
+
// [GIVEN] Posted sales invoice exists
CreatePostedSalesInvoice(SalesInvoiceHeader);
SetCustomerEmail(SalesInvoiceHeader."Sell-to Customer No.");
DocumentId := SalesInvoiceHeader."Draft Invoice SystemId";
// Special case for AU
+ EnsureReasonCode();
LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
Commit();
@@ -912,6 +963,8 @@ codeunit 139709 "Sales Invoices E2E"
TargetURL: Text;
begin
// [SCENARIO] User can cancel a posted sales invoice through API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Posted sales invoice exists
@@ -920,6 +973,7 @@ codeunit 139709 "Sales Invoices E2E"
DocumentId := SalesInvoiceHeader."Draft Invoice SystemId";
// Special case for AU
+ EnsureReasonCode();
LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
Commit();
@@ -952,6 +1006,8 @@ codeunit 139709 "Sales Invoices E2E"
TargetURL: Text;
begin
// [SCENARIO] User can send a posted sales invoice through the API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Posted sales invoice exists
@@ -984,6 +1040,8 @@ codeunit 139709 "Sales Invoices E2E"
TargetURL: Text;
begin
// [SCENARIO] User can send a draft sales invoice through the API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Draft sales invoice exists
@@ -1016,6 +1074,8 @@ codeunit 139709 "Sales Invoices E2E"
TargetURL: Text;
begin
// [SCENARIO] User can send a draft sales invoice through the API.
+ Initialize();
+
InitializeForSending();
// [GIVEN] Cancelled sales invoice exists
@@ -1057,6 +1117,8 @@ codeunit 139709 "Sales Invoices E2E"
begin
// [SCENARIO] User can create a corrective credit memo for the posted sales invoice through the API.
+ Initialize();
+
// [GIVEN] A posted sales invoice exists
CreatePostedSalesInvoice(SalesInvoiceHeader);
PostedInvoiceRecordRef.GetTable(SalesInvoiceHeader);
@@ -1235,9 +1297,22 @@ codeunit 139709 "Sales Invoices E2E"
local procedure CreateCancelledSalesInvoice(var SalesInvoiceHeader: Record "Sales Invoice Header")
begin
CreatePostedSalesInvoice(SalesInvoiceHeader);
+ EnsureReasonCode();
+ LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
+ Commit();
CODEUNIT.Run(CODEUNIT::"Correct Posted Sales Invoice", SalesInvoiceHeader);
end;
+ local procedure EnsureReasonCode()
+ var
+ ReasonCode: Record "Reason Code";
+ begin
+ if not ReasonCode.IsEmpty() then
+ exit;
+
+ LibraryERM.CreateReasonCode(ReasonCode);
+ end;
+
local procedure CreateSalesInvoices(var InvoiceID1: Text; var InvoiceID2: Text)
var
SalesInvoiceHeader: Record "Sales Invoice Header";
diff --git a/src/Apps/W1/APIV1/test/src/TaxGroupsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/TaxGroupsE2E.Codeunit.al
index 15b2166d131..fd6bea2c96d 100644
--- a/src/Apps/W1/APIV1/test/src/TaxGroupsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/TaxGroupsE2E.Codeunit.al
@@ -23,6 +23,7 @@ codeunit 139708 "Tax Groups E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
IF IsInitialized THEN
EXIT;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AccountingPeriodsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AccountingPeriodsE2E.Codeunit.al
index c578df54f2d..8bc2d4bca55 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AccountingPeriodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AccountingPeriodsE2E.Codeunit.al
@@ -16,6 +16,8 @@ codeunit 139859 "APIV2 - Accounting Periods E2E"
TargetURL: Text;
i: Integer;
begin
+ Initialize();
+
// [SCENARIO] Use a GET method to retrieve all accounting periods
// [GIVEN] Accounting Periods
for i := 1 to 10 do
@@ -74,4 +76,9 @@ codeunit 139859 "APIV2 - Accounting Periods E2E"
AccountingPeriod.Insert(true);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AccountsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AccountsE2E.Codeunit.al
index 9389de358ba..24d16b0a4b5 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AccountsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AccountsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139801 "APIV2 - Accounts E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -19,6 +20,8 @@ codeunit 139801 "APIV2 - Accounts E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AgedAPE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AgedAPE2E.Codeunit.al
index 2418082ad5b..24ac1afa38f 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AgedAPE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AgedAPE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139819 "APIV2 - Aged AP E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -60,6 +61,8 @@ codeunit 139819 "APIV2 - Aged AP E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AgedARE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AgedARE2E.Codeunit.al
index 2a280d83eb5..61d4be50aa0 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AgedARE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AgedARE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139820 "APIV2 - Aged AR E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -60,6 +61,8 @@ codeunit 139820 "APIV2 - Aged AR E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ApplyVendorEntE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ApplyVendorEntE2E.Codeunit.al
index 4b30e2db6ef..443610ddb83 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ApplyVendorEntE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ApplyVendorEntE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139867 "APIV2 - Apply Vendor Ent. E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -170,6 +171,8 @@ codeunit 139867 "APIV2 - Apply Vendor Ent. E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
LibraryTestInitialize.OnTestInitialize(Codeunit::"APIV2 - Apply Vendor Ent. E2E");
if not isInitialized then
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AssemblyOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AssemblyOrdersE2E.Codeunit.al
index 9de9e6343ae..82a0c779309 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AssemblyOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AssemblyOrdersE2E.Codeunit.al
@@ -26,6 +26,8 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an assembly order and use GET to retrieve it
// [GIVEN] An assembly order
LibraryInventory.CreateItem(Item);
@@ -48,6 +50,8 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an assembly order and GET it by SystemId
// [GIVEN] An assembly order
LibraryInventory.CreateItem(Item);
@@ -72,6 +76,8 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
TargetURL: Text;
DimensionSetValue: Text;
begin
+ Initialize();
+
// [SCENARIO] GET an assembly order with $expand=dimensionSetLines
// [GIVEN] An assembly order
if not AssemblyHeader.FindFirst() then begin
@@ -99,6 +105,8 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
TargetURL: Text;
AttachmentsValue: Text;
begin
+ Initialize();
+
// [SCENARIO] GET an assembly order with $expand=attachments
// [GIVEN] An assembly order
if not AssemblyHeader.FindFirst() then begin
@@ -126,6 +134,8 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
TargetURL: Text;
DocumentAttachmentsValue: Text;
begin
+ Initialize();
+
// [SCENARIO] GET an assembly order with $expand=documentAttachments
// [GIVEN] An assembly order
if not AssemblyHeader.FindFirst() then begin
@@ -153,6 +163,8 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
TargetURL: Text;
PdfDocumentValue: Text;
begin
+ Initialize();
+
// [SCENARIO] GET an assembly order with $expand=pdfDocument
// [GIVEN] An assembly order
if not AssemblyHeader.FindFirst() then begin
@@ -180,6 +192,8 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
TargetURL: Text;
LinesValue: Text;
begin
+ Initialize();
+
// [SCENARIO] GET an assembly order with $expand=assemblyOrderLines
// [GIVEN] An assembly order
if not AssemblyHeader.FindFirst() then begin
@@ -204,4 +218,9 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
exit(TargetURL + '&$expand=' + ExpandValue);
exit(TargetURL + '?$expand=' + ExpandValue);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AttachmentsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AttachmentsE2E.Codeunit.al
index 0ba1716ac2d..7894a37e349 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AttachmentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AttachmentsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139833 "APIV2 - Attachments E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -42,6 +43,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateGenJournalLine(DocumentRecordRef);
@@ -65,6 +68,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
GLEntryGuid := CreateGLEntry(DocumentRecordRef);
@@ -88,6 +93,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
@@ -110,6 +117,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateDraftSalesInvoice(DocumentRecordRef);
@@ -132,6 +141,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateDraftSalesOrder(DocumentRecordRef);
@@ -156,6 +167,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
@@ -178,6 +191,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateDraftPurchaseInvoice(DocumentRecordRef);
@@ -200,6 +215,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateSalesQuote(DocumentRecordRef);
@@ -222,6 +239,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateGenJournalLine(DocumentRecordRef);
@@ -246,6 +265,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Incoming Document Attachment table
JournalName := LibraryUtility.GenerateRandomCode(GenJournalBatch.FieldNo(Name), Database::"Gen. Journal Batch");
@@ -272,6 +293,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateGLEntry(DocumentRecordRef);
@@ -295,6 +318,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
@@ -317,6 +342,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateDraftSalesInvoice(DocumentRecordRef);
@@ -339,6 +366,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateDraftSalesOrder(DocumentRecordRef);
@@ -361,6 +390,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Incoming Document Attachment table
CreateSalesQuote(DocumentRecordRef);
@@ -383,6 +414,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateDraftPurchaseOrder(DocumentRecordRef);
@@ -409,6 +442,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ExpectedBase64Content: Text;
ActualBase64Content: Text;
begin
+ Initialize();
+
// [SCENARIO] User can update linked attachment binary content through the Attachment API.
// [GIVEN] A linked attachment exists
CreateGenJournalLine(DocumentRecordRef);
@@ -442,6 +477,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ExpectedBase64Content: Text;
ActualBase64Content: Text;
begin
+ Initialize();
+
// [SCENARIO] User can update linked attachment binary content through the Attachment API.
// [GIVEN] A linked attachment exists
CreateGLEntry(DocumentRecordRef);
@@ -468,6 +505,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateGenJournalLine(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -477,6 +516,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateGLEntry(DocumentRecordRef);
TestCreateGLEAttachment(DocumentRecordRef);
end;
@@ -487,6 +528,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -496,6 +539,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftSalesInvoice(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -505,6 +550,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftSalesOrder(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -515,6 +562,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -524,6 +573,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseInvoice(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -533,6 +584,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseOrder(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -634,6 +687,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateSalesQuote(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -643,6 +698,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateGenJournalLine(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -652,6 +709,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateGLEntry(DocumentRecordRef);
TestDeleteGLEAttachment(DocumentRecordRef);
end;
@@ -662,6 +721,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
TestDeleteAttachment2(DocumentRecordRef);
end;
@@ -671,6 +732,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftSalesInvoice(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -681,6 +744,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
TestDeleteAttachment2(DocumentRecordRef);
end;
@@ -690,6 +755,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseInvoice(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -699,6 +766,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateSalesQuote(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -773,6 +842,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] The Attachment is transferred from a Draft Invoice the to Posted Invoice after posting.
// [GIVEN] A draft sales invoice exists.
CreateDraftSalesInvoice(DocumentRecordRef);
@@ -813,6 +884,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] The Attachment is transferred from a Draft Invoice the to Posted Invoice after posting.
// [GIVEN] A draft sales invoice exists.
CreateDraftPurchaseInvoice(DocumentRecordRef);
@@ -855,6 +928,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
OldBase64Content: Text;
NewBase64Content: Text;
begin
+ Initialize();
+
// [SCENARIO] Changing an attachment file name keeps other fields unchanged
// [GIVEN] A sales quote exists.
CreateSalesQuote(DocumentRecordRef);
@@ -899,6 +974,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
OldFileName: Text;
NewFileName: Text;
begin
+ Initialize();
+
// [SCENARIO] Changing an attachment content keeps other fields unchanged
// [GIVEN] A draft sales invoice exists.
CreateDraftSalesInvoice(DocumentRecordRef);
@@ -937,6 +1014,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
TargetURL: Text;
JSONBody: Text;
begin
+ Initialize();
+
// [SCENARIO] User cannot change the attachment ID by making a PATCH request to the Attachments API
// [GIVEN] Two documents exist.
CreateSalesQuote(DocumentRecordRef[1]);
@@ -967,6 +1046,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreatePostedPurchaseCreditMemo(DocumentRecordRef, DocumentId);
@@ -989,6 +1070,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Incoming Document Attachment table
CreateDraftPurchaseCreditMemo(DocumentRecordRef);
@@ -1009,6 +1092,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedPurchaseCreditMemo(DocumentRecordRef, DocumentId);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -1018,6 +1103,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseCreditMemo(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -1028,6 +1115,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedPurchaseCreditMemo(DocumentRecordRef, DocumentId);
TestDeleteAttachment2(DocumentRecordRef);
end;
@@ -1037,6 +1126,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseCreditMemo(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -1054,6 +1145,8 @@ codeunit 139833 "APIV2 - Attachments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] The Attachment is transferred from a Draft Credit Memo the to Posted Credit Memo after posting.
// [GIVEN] A draft purchase credit memo exists.
LibraryERMCountryData.UpdatePurchasesPayablesSetup();
@@ -1592,4 +1685,9 @@ codeunit 139833 "APIV2 - Attachments E2E"
exit(StrSubstNo('%1.%2', Name, Extension));
exit(Name);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AutomationRSPackage.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AutomationRSPackage.Codeunit.al
index 31c14c5d3ab..ad93e1a429b 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AutomationRSPackage.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AutomationRSPackage.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139831 "APIV2 - Automation RS Package"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -28,6 +29,7 @@ codeunit 139831 "APIV2 - Automation RS Package"
var
TenantConfigPackageFile: Record "Tenant Config. Package File";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
TenantConfigPackageFile.DELETEALL(true);
diff --git a/src/Apps/W1/APIV2/test/src/APIV2BalanceSheetE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2BalanceSheetE2E.Codeunit.al
index f99099da896..428d880f5da 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2BalanceSheetE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2BalanceSheetE2E.Codeunit.al
@@ -62,6 +62,8 @@ codeunit 139815 "APIV2 - Balance Sheet E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al
index 25dbc2bfd72..1a7f55abf19 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139908 "APIV2 - Bl. Purch. Orders E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -140,17 +141,16 @@ codeunit 139908 "APIV2 - Bl. Purch. Orders E2E"
procedure TestExpandPdfDocument()
var
PurchaseHeader: Record "Purchase Header";
+ PurchaseLine: Record "Purchase Line";
ResponseText: Text;
TargetURL: Text;
PdfDocumentValue: Text;
begin
// [SCENARIO] GET a blanket purchase order with $expand=pdfDocument
- // [GIVEN] A blanket purchase order
- PurchaseHeader.SetRange("Document Type", PurchaseHeader."Document Type"::"Blanket Order");
- if not PurchaseHeader.FindFirst() then begin
- LibraryPurchase.CreatePurchHeader(PurchaseHeader, PurchaseHeader."Document Type"::"Blanket Order", '');
- Commit();
- end;
+ // [GIVEN] A blanket purchase order with a line
+ LibraryPurchase.CreatePurchHeader(PurchaseHeader, PurchaseHeader."Document Type"::"Blanket Order", '');
+ LibraryPurchase.CreatePurchaseLine(PurchaseLine, PurchaseHeader, PurchaseLine.Type::Item, '', 1);
+ Commit();
// [WHEN] we GET with expanded pdfDocument
TargetURL := LibraryGraphMgt.CreateTargetURL(PurchaseHeader.SystemId, Page::"APIV2 - Bl. Purch. Orders", ServiceNameTxt);
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CashFlowStatementE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CashFlowStatementE2E.Codeunit.al
index 9ff2fa17758..4925ed99d3b 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CashFlowStatementE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CashFlowStatementE2E.Codeunit.al
@@ -62,6 +62,8 @@ codeunit 139817 "APIV2 - CashFlow Statement E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
index 9f13dd998bb..9b62669a928 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
@@ -26,6 +26,8 @@ codeunit 139806 "APIV2 - Company Info. E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ContactsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ContactsE2E.Codeunit.al
index 431c3a98b1c..52049df0d76 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ContactsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ContactsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139866 "APIV2 - Contacts E2E"
// version Test,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -22,6 +23,8 @@ codeunit 139866 "APIV2 - Contacts E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ContactsInfE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ContactsInfE2E.Codeunit.al
index 5612f0eb26c..d7c36c41da9 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ContactsInfE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ContactsInfE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
// version Test,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,8 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Get all contact information for a customer
@@ -60,6 +63,8 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Get all contact information for a customer
@@ -92,6 +97,8 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Get all contact information for a vendor
@@ -122,6 +129,8 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Get all contact information for a Vendor
@@ -177,4 +186,9 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
Contact.Validate("Company No.", CompanyNo);
Contact.Modify(true);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CountriesRegionsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CountriesRegionsE2E.Codeunit.al
index 0bd63f98d47..2f243eeb8d4 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CountriesRegionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CountriesRegionsE2E.Codeunit.al
@@ -155,6 +155,8 @@ codeunit 139810 "APIV2 - Countries/Regions E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CurrenciesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CurrenciesE2E.Codeunit.al
index 5e8bfb987bc..2f7b1a955b9 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CurrenciesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CurrenciesE2E.Codeunit.al
@@ -155,6 +155,8 @@ codeunit 139813 "APIV2 - Currencies E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CurrencyExchRateE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CurrencyExchRateE2E.Codeunit.al
index 36e62a1b344..6fbdb548a34 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CurrencyExchRateE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CurrencyExchRateE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139858 "APIV2 Currency Exch. Rate E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
var
LibraryERM: Codeunit "Library - ERM";
@@ -107,6 +108,7 @@ codeunit 139858 "APIV2 Currency Exch. Rate E2E"
Currency: Record Currency;
CurrencyExchangeRate: Record "Currency Exchange Rate";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
Currency.DeleteAll();
CurrencyExchangeRate.DeleteAll();
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CustRetReasonsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CustRetReasonsE2E.Codeunit.al
index 5749e8a0fb7..3b82b54ce42 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CustRetReasonsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CustRetReasonsE2E.Codeunit.al
@@ -22,6 +22,8 @@ codeunit 139869 "APIV2 - Cust. Ret. Reasons E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CustomerPaymentsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CustomerPaymentsE2E.Codeunit.al
index b2e150e30af..65be021c723 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CustomerPaymentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CustomerPaymentsE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139840 "APIV2 - Customer Payments E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -769,6 +770,7 @@ codeunit 139840 "APIV2 - Customer Payments E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryTestInitialize.OnTestInitialize(Codeunit::"APIV2 - Customer Payments E2E");
if not isInitialized then
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CustomersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CustomersE2E.Codeunit.al
index 567d0166f0a..8e4df1d6f9e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CustomersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CustomersE2E.Codeunit.al
@@ -34,6 +34,8 @@ codeunit 139802 "APIV2 - Customers E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2DefaultDimensionsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2DefaultDimensionsE2E.Codeunit.al
index 5a72973f69d..3822cca9f75 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2DefaultDimensionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2DefaultDimensionsE2E.Codeunit.al
@@ -35,6 +35,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the customer
@@ -48,6 +49,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the vendor
@@ -61,6 +63,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Item
@@ -74,6 +77,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Employee
@@ -87,6 +91,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the customer
@@ -100,6 +105,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Vendor
@@ -113,6 +119,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Item
@@ -126,6 +133,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Employee
@@ -139,6 +147,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the customer, with mismatching dimesnion and dimension value
@@ -152,6 +161,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Vendor, with mismatching dimesnion and dimension value
@@ -165,6 +175,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Item, with mismatching dimesnion and dimension value
@@ -178,6 +189,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension on the Employee, with mismatching dimesnion and dimension value
@@ -191,6 +203,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension on the customer
@@ -204,6 +217,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension on the Vendor
@@ -217,6 +231,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension on the Item
@@ -230,6 +245,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension on the Employee
@@ -243,6 +259,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension value on the customer
@@ -256,6 +273,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a Vendor, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension value on the Vendor
@@ -269,6 +287,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension value on the Item
@@ -282,6 +301,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee, a dimension and a dimension value
// [WHEN] The user posts a http request to create a default dimension with a blocked dimension value on the Employee
@@ -295,6 +315,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to delete the default dimension on the customer
@@ -308,6 +329,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a Vendor with a default dimension
// [WHEN] The user posts a http request to delete a default dimension on the Vendor
@@ -321,6 +343,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item with a default dimension
// [WHEN] The user posts a http request to delete a default dimension on the Item
@@ -334,6 +357,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee with a default dimension
// [WHEN] The user posts a http request to delete a default dimension on the Employee
@@ -347,6 +371,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to get the default dimension on the customer
@@ -360,6 +385,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a Vendor with a default dimension
// [WHEN] The user posts a http request to get a default dimension on the Vendor
@@ -373,6 +399,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item with a default dimension
// [WHEN] The user posts a http request to get a default dimension on the Item
@@ -386,6 +413,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee with a default dimension
// [WHEN] The user posts a http request to get a default dimension on the Employee
@@ -399,6 +427,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to patch the default dimension on the customer
@@ -412,6 +441,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a Vendor with a default dimension
// [WHEN] The user posts a http request to patch a default dimension on the Vendor
@@ -425,6 +455,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item with a default dimension
// [WHEN] The user posts a http request to patch a default dimension on the Item
@@ -438,6 +469,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee with a default dimension
// [WHEN] The user posts a http request to patch a default dimension on the Employee
@@ -451,6 +483,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the customer
@@ -464,6 +497,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a Vendor with a default dimension
// [WHEN] The user posts a http request to patch a default dimension with a blocked dimension value on the Vendor
@@ -477,6 +511,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a Item with a default dimension
// [WHEN] The user posts a http request to patch a default dimension with a blocked dimension value on the Item
@@ -490,6 +525,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a Employee with a default dimension
// [WHEN] The user posts a http request to patch a default dimension with a blocked dimension value on the Employee
@@ -503,6 +539,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Customer: Record "Customer";
begin
+ Initialize();
// [FEATURE] [Customer]
// [GIVEN] a customer with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the customer
@@ -516,6 +553,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Vendor: Record "Vendor";
begin
+ Initialize();
// [FEATURE] [Vendor]
// [GIVEN] a vendor with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the vendor
@@ -529,6 +567,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Item: Record "Item";
begin
+ Initialize();
// [FEATURE] [Item]
// [GIVEN] a item with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the item
@@ -542,6 +581,7 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
var
Employee: Record "Employee";
begin
+ Initialize();
// [FEATURE] [Employee]
// [GIVEN] a employee with a default dimension
// [WHEN] The user posts a http request to patch the default dimension with a blocked dimension value on the employee
@@ -561,6 +601,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
DimensionValueId: Text;
ParentIdAsText: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
ParentIdAsText := LowerCase(Format(ParentId));
@@ -592,6 +634,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
DimensionId: Text;
DimensionValueId: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
ParentIdAsText := LowerCase(Format(ParentId));
@@ -624,6 +668,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
DimensionId: Text;
DimensionValue2Id: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
LibraryDimension.CreateDimension(Dimension2);
@@ -653,6 +699,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
DimensionId: Text;
DimensionValueId: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
Dimension.Validate(Blocked, true);
@@ -682,6 +730,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
DimensionId: Text;
DimensionValueId: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
DimensionValue.Validate(Blocked, true);
@@ -711,6 +761,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
ParentIdAsText: Text;
DimensionId: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
DefaultDimension.Validate("Table ID", TableNo);
@@ -748,6 +800,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
DimensionId: Text;
DimensionValueId: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
DefaultDimension.Validate("Table ID", TableNo);
@@ -785,6 +839,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
DimensionId: Text;
DimensionValue2Id: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
LibraryDimension.CreateDimensionValue(DimensionValue2, Dimension.Code);
@@ -826,6 +882,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
DimensionId: Text;
DimensionValue2Id: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
LibraryDimension.CreateDimensionValue(DimensionValue2, Dimension.Code);
@@ -866,6 +924,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
ParentIdAsText: Text;
DimensionId: Text;
begin
+ Initialize();
+
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimension(Dimension2);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
@@ -975,4 +1035,9 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
end;
exit(DefaultDimensionParentType::" ");
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2DimSetLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2DimSetLinesE2E.Codeunit.al
index 503e68355db..0a36e614155 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2DimSetLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2DimSetLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -28,6 +29,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
[Test]
@@ -38,6 +40,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
JournalName: Code[10];
JournalLineGUID: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in journal through a POST method and check if it was created
LibraryGraphJournalLines.Initialize();
@@ -62,6 +65,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales order and a sales order line through a POST method and check if it was created
// [GIVEN] A sales order
LibrarySales.CreateSalesOrder(SalesHeader);
@@ -90,6 +94,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineId: Guid;
CustomerNo: Code[20];
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales quote and sales quote line through a POST method and check if it was created
// [GIVEN] A sales quote
LibrarySales.CreateCustomer(Customer);
@@ -118,6 +123,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales credit memo and a sales cr memo line through a POST method and check if it was created
// [GIVEN] A sales credit memo
LibrarySales.CreateSalesCreditMemo(SalesHeader);
@@ -144,6 +150,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales invoice and a sales invoice line through a POST method and check if it was created
// [GIVEN] A sales invoice
LibrarySales.CreateSalesInvoice(SalesHeader);
@@ -170,6 +177,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase invoice and a purchase invoice line through a POST method and check if it was created
// [GIVEN] A purchase invoice
LibraryPurchase.CreatePurchaseInvoice(PurchaseHeader);
@@ -196,6 +204,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase order and a purchase order line through a POST method and check if it was created
// [GIVEN] A purchase order
LibraryPurchase.CreatePurchaseOrder(PurchaseHeader);
@@ -222,6 +231,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
DocumentRecordRef: RecordRef;
TimeSheetDetailId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a time registration entry through a POST method and check if it was created
// [GIVEN] A Time registration entry
UserSetup.DeleteAll();
@@ -242,6 +252,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [SCENARIO] Creating a dimension line through a POST method without specifying a parent Id fails
LibraryGraphJournalLines.Initialize();
@@ -273,6 +285,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Try to create a dimension line with an already existing code
LibraryGraphJournalLines.Initialize();
@@ -318,6 +332,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
JournalName: Code[10];
JournalLineGUID: Guid;
begin
+ Initialize();
// [SCENARIO] Create dimension lines in a journal line and use a GET method to retrieve them
// [GIVEN] a journal in the General Journal Table
LibraryGraphJournalLines.Initialize();
@@ -335,6 +350,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
SalesLine: Record "Sales Line";
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create dimension lines in a sales order and sales order line and use a GET method to retrieve them
// [GIVEN] a sales order with lines
LibrarySales.CreateSalesOrder(SalesHeader);
@@ -358,6 +374,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
CustomerNo: Code[20];
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create dimension lines in a sales quote and sales quote line and use a GET method to retrieve them
// [GIVEN] a sales quote with lines
LibrarySales.CreateCustomer(Customer);
@@ -381,6 +398,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
SalesLine: Record "Sales Line";
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create dimension lines in a sales cr memo and sales cr memo line and use a GET method to retrieve them
// [GIVEN] a sales cr memo with lines
LibrarySales.CreateSalesCreditMemo(SalesHeader);
@@ -402,6 +420,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
SalesLine: Record "Sales Line";
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create dimension lines in a sales invoice and sales invoice line and use a GET method to retrieve them
// [GIVEN] a sales invoice with lines
LibrarySales.CreateSalesInvoice(SalesHeader);
@@ -423,6 +442,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
PurchaseLine: Record "Purchase Line";
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create dimension lines in a pucrhase invoice and purchase invoice line and use a GET method to retrieve them
// [GIVEN] a purchase invoice with lines
LibraryPurchase.CreatePurchaseInvoice(PurchaseHeader);
@@ -444,6 +464,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
PurchaseLine: Record "Purchase Line";
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create dimension lines in a pucrhase order and purchase order line and use a GET method to retrieve them
// [GIVEN] a purchase order with lines
LibraryPurchase.CreatePurchaseOrder(PurchaseHeader);
@@ -467,6 +488,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
DocumentRecordRef: RecordRef;
TimeSheetDetailId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a time registration entry through a POST method and and use a GET method to retrieve them
// [GIVEN] A Time registration entry
UserSetup.DeleteAll();
@@ -491,6 +513,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
TargetURL: Text;
DimensionSetValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Create a G/L Entry with dimenions after Posting Sales Invoice and use a GET method to retreive them
// [GIVEN] Create Customer, Items and Sales Invoice for different Items.
@@ -522,6 +546,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Using a GET request to retrieve dimension lines without a filter fails
LibraryGraphJournalLines.Initialize();
@@ -544,6 +570,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
JournalName: Code[10];
JournalLineGUID: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line, use a PATCH method to change it and then verify the changes
LibraryGraphJournalLines.Initialize();
@@ -565,6 +592,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales order and a sales order line, use a PATCH method to change it and then verify the changes
// [GIVEN] A sales order
LibrarySales.CreateSalesOrder(SalesHeader);
@@ -593,6 +621,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineId: Guid;
CustomerNo: Code[20];
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales quote and a sales quote line, use a PATCH method to change it and then verify the changes
// [GIVEN] A sales quote
LibrarySales.CreateCustomer(Customer);
@@ -621,6 +650,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales credit memo and a sales cr memo line, use a PATCH method to change it and then verify the changes
// [GIVEN] A sales credit memo
LibrarySales.CreateSalesCreditMemo(SalesHeader);
@@ -647,6 +677,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales invoice and a sales invoice line, use a PATCH method to change it and then verify the changes
// [GIVEN] A sales invoice
LibrarySales.CreateSalesInvoice(SalesHeader);
@@ -673,6 +704,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase invoice and a purchase invoice line, use a PATCH method to change it and then verify the changes
// [GIVEN] A purchase invoice
LibraryPurchase.CreatePurchaseInvoice(PurchaseHeader);
@@ -699,6 +731,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase order and a purchase order line, use a PATCH method to change it and then verify the changes
// [GIVEN] A purchase order
LibraryPurchase.CreatePurchaseOrder(PurchaseHeader);
@@ -725,6 +758,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
DocumentRecordRef: RecordRef;
TimeSheetDetailId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a time registration entry, use a PATCH method to change it and then verify the changes
// [GIVEN] A Time registration entry
UserSetup.DeleteAll();
@@ -745,6 +779,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase credit memo and a purchase cr memo line through a POST method and check if it was created
// [GIVEN] A purchase credit memo
LibraryPurchase.CreatePurchaseCreditMemo(PurchaseHeader);
@@ -769,6 +804,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
PurchaseLine: Record "Purchase Line";
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create dimension lines in a purchase cr memo and purchase cr memo line and use a GET method to retrieve them
// [GIVEN] a purchase cr memo with lines
LibraryPurchase.CreatePurchaseCreditMemo(PurchaseHeader);
@@ -792,6 +828,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase credit memo and a purchase cr memo line, use a PATCH method to change it and then verify the changes
// [GIVEN] A purchase credit memo
LibraryPurchase.CreatePurchaseCreditMemo(PurchaseHeader);
@@ -818,6 +855,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase credit memo and a purchase cr memo line, use a DELETE method to remove it and then verify the deletion
// [GIVEN] A purchase credit memo
LibraryPurchase.CreatePurchaseCreditMemo(PurchaseHeader);
@@ -851,6 +889,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
TargetURL: Text;
DimensionSetID: Integer;
begin
+ Initialize();
+
// [GIVEN] 2 dimension json texts
LibraryDimension.CreateDimension(Dimension);
DimensionCode := Dimension.Code;
@@ -928,6 +968,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Try to change the code of an existing dimension line
LibraryGraphJournalLines.Initialize();
@@ -978,6 +1020,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
JournalName: Code[10];
JournalLineGUID: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line, use a DELETE method to remove it and then verify the deletion
LibraryGraphJournalLines.Initialize();
@@ -1000,6 +1043,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales order and a sales order, use a DELETE method to remove it and then verify the deletion
// [GIVEN] A sales order
LibrarySales.CreateSalesOrder(SalesHeader);
@@ -1028,6 +1072,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineId: Guid;
CustomerNo: Code[20];
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales quote and sales quote line, use a DELETE method to remove it and then verify the deletion
// [GIVEN] A sales quote
LibrarySales.CreateCustomer(Customer);
@@ -1056,6 +1101,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales credit memo and a sales cr memo line, use a DELETE method to remove it and then verify the deletion
// [GIVEN] A sales credit memo
LibrarySales.CreateSalesCreditMemo(SalesHeader);
@@ -1082,6 +1128,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a sales invoice and a sales invoice line, use a DELETE method to remove it and then verify the deletion
// [GIVEN] A sales invoice
LibrarySales.CreateSalesInvoice(SalesHeader);
@@ -1108,6 +1155,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase invoice and a purchase invoice line, use a DELETE method to remove it and then verify the deletion
LibraryPurchase.CreatePurchaseInvoice(PurchaseHeader);
DocumentRecordRef.GetTable(PurchaseHeader);
@@ -1133,6 +1181,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LineRecordRef: RecordRef;
LineId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a purchase order and a purchase order, use a DELETE method to remove it and then verify the deletion
// [GIVEN] A purchase order
LibraryPurchase.CreatePurchaseOrder(PurchaseHeader);
@@ -1157,6 +1206,7 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
DocumentRecordRef: RecordRef;
TimeSheetDetailId: Guid;
begin
+ Initialize();
// [SCENARIO] Create a dimension line in a time registration entry, use a DELETE method to remove it and then verify the deletion
// [GIVEN] A Time registration entry
TimeSheetDetailId := CreateTimeSheet();
@@ -1179,6 +1229,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [GIVEN] a dimension line in the journal line
LibraryDimension.CreateDimension(Dimension);
DimensionValue.Reset();
@@ -1240,6 +1292,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [GIVEN] a dimension line in the journal line
LibraryDimension.CreateDimension(Dimension);
DimensionValue.Reset();
@@ -1296,6 +1350,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [GIVEN] a dimension with a value
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
@@ -1357,6 +1413,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [GIVEN] a dimension with a value
LibraryDimension.CreateDimension(Dimension);
LibraryDimension.CreateDimensionValue(DimensionValue, Dimension.Code);
@@ -1406,6 +1464,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [GIVEN] 2 dimensions with dimension values
LibraryDimension.CreateDimension(Dimension);
DimensionCode[2] := Dimension.Code;
@@ -1450,6 +1510,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [GIVEN] 2 dimensions with dimension values
LibraryDimension.CreateDimension(Dimension);
DimensionCode[2] := Dimension.Code;
@@ -1501,6 +1563,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
TargetURL: Text;
DimensionSetID: Integer;
begin
+ Initialize();
+
// [GIVEN] 2 dimension json texts
LibraryDimension.CreateDimension(Dimension);
DimensionCode := Dimension.Code;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2DimensionsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2DimensionsE2E.Codeunit.al
index 9b14ca531ea..3e0abf8ad5c 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2DimensionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2DimensionsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139824 "APIV2 - Dimensions E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -20,6 +21,8 @@ codeunit 139824 "APIV2 - Dimensions E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2DocumentAttachE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2DocumentAttachE2E.Codeunit.al
index d38126db6a0..81f6deb7db2 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2DocumentAttachE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2DocumentAttachE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -32,6 +33,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
LibrarySales.CreateCustomer(Customer);
@@ -56,6 +59,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
LibrarySmallBusiness.CreateItem(Item);
@@ -80,6 +85,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
LibraryHumanResources.CreateEmployee(Employee);
@@ -104,6 +111,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
LibraryJob.CreateJob(Job);
@@ -128,6 +137,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
LibrarySmallBusiness.CreateVendor(Vendor);
@@ -152,6 +163,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
@@ -174,6 +187,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
CreateDraftSalesInvoice(DocumentRecordRef);
@@ -197,6 +212,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
@@ -219,6 +236,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
CreateDraftPurchaseInvoice(DocumentRecordRef);
@@ -241,6 +260,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
CreateSalesQuote(DocumentRecordRef);
@@ -264,6 +285,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Document Attachment table
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
@@ -286,6 +309,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Document Attachment table
CreateDraftSalesInvoice(DocumentRecordRef);
@@ -308,6 +333,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Document Attachment table
CreateDraftSalesOrder(DocumentRecordRef);
@@ -330,6 +357,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve the Attachment record from the Attachment API.
// [GIVEN] Attachment exists in the Document Attachment table
CreateSalesQuote(DocumentRecordRef);
@@ -352,6 +381,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
CreateDraftPurchaseOrder(DocumentRecordRef);
@@ -379,6 +410,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ExpectedBase64Content: Text;
ActualBase64Content: Text;
begin
+ Initialize();
+
// [SCENARIO] User can update linked attachment binary content through the Attachment API.
// [GIVEN] A linked attachment exists
LibrarySmallBusiness.CreateCustomer(Customer);
@@ -407,6 +440,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
Customer: Record Customer;
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
LibrarySmallBusiness.CreateCustomer(Customer);
DocumentRecordRef.GetTable(Customer);
TestCreateAttachment(DocumentRecordRef);
@@ -418,6 +453,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
Vendor: Record Vendor;
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
LibrarySmallBusiness.CreateVendor(Vendor);
DocumentRecordRef.GetTable(Vendor);
TestCreateAttachment(DocumentRecordRef);
@@ -430,6 +467,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
DocumentId: Guid;
DocumentType: Text;
begin
+ Initialize();
+
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
DocumentType := GetDocumentType(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef, DocumentId, DocumentType);
@@ -440,6 +479,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftSalesInvoice(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -449,6 +490,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftSalesOrder(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -460,6 +503,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
DocumentId: Guid;
DocumentType: Text;
begin
+ Initialize();
+
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
DocumentType := GetDocumentType(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef, DocumentId, DocumentType);
@@ -470,6 +515,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseInvoice(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -479,6 +526,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseOrder(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -530,6 +579,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateSalesQuote(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -540,6 +591,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
Vendor: Record Vendor;
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
LibrarySmallBusiness.CreateVendor(Vendor);
DocumentRecordRef.GetTable(Vendor);
CreateAttachment(DocumentRecordRef);
@@ -552,6 +605,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
Employee: Record Employee;
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
LibraryHumanResources.CreateEmployee(Employee);
DocumentRecordRef.GetTable(Employee);
CreateAttachment(DocumentRecordRef);
@@ -564,6 +619,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
Job: Record Job;
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
LibraryJob.CreateJob(Job);
DocumentRecordRef.GetTable(Job);
CreateAttachment(DocumentRecordRef);
@@ -576,6 +633,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedSalesInvoice(DocumentRecordRef, DocumentId);
TestDeleteAttachment2(DocumentRecordRef);
end;
@@ -585,6 +644,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftSalesInvoice(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -595,6 +656,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedPurchaseInvoice(DocumentRecordRef, DocumentId);
TestDeleteAttachment2(DocumentRecordRef);
end;
@@ -604,6 +667,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseInvoice(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -613,6 +678,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateSalesQuote(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -625,6 +692,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
CreateDraftPurchaseCreditMemo(DocumentRecordRef);
@@ -648,6 +717,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can retrieve all records from the Attachments API.
// [GIVEN] 2 Attachments in the Document Attachment table
CreatePostedPurchaseCreditMemo(DocumentRecordRef, DocumentId);
@@ -667,6 +738,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseCreditMemo(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef);
end;
@@ -678,6 +751,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
DocumentId: Guid;
DocumentType: Text;
begin
+ Initialize();
+
CreatePostedPurchaseCreditMemo(DocumentRecordRef, DocumentId);
DocumentType := GetDocumentType(DocumentRecordRef);
TestCreateAttachment(DocumentRecordRef, DocumentId, DocumentType);
@@ -688,6 +763,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
var
DocumentRecordRef: RecordRef;
begin
+ Initialize();
+
CreateDraftPurchaseCreditMemo(DocumentRecordRef);
TestDeleteAttachment(DocumentRecordRef);
end;
@@ -698,6 +775,8 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
DocumentRecordRef: RecordRef;
DocumentId: Guid;
begin
+ Initialize();
+
CreatePostedPurchaseCreditMemo(DocumentRecordRef, DocumentId);
TestDeleteAttachment2(DocumentRecordRef);
end;
@@ -1035,4 +1114,9 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
exit(StrSubstNo('%1.%2', Name, Extension));
exit(Name);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2EmployeesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2EmployeesE2E.Codeunit.al
index 9dca78748ec..5725c9d69ab 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2EmployeesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2EmployeesE2E.Codeunit.al
@@ -25,6 +25,8 @@ codeunit 139822 "APIV2 - Employees E2E"
var
LibraryApplicationArea: Codeunit "Library - Application Area";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
LibraryApplicationArea.EnableBasicHRSetup();
// Lazy Setup.
diff --git a/src/Apps/W1/APIV2/test/src/APIV2FALocationsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2FALocationsE2E.Codeunit.al
index 9a23cb8f5c7..33d9fd7564b 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2FALocationsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2FALocationsE2E.Codeunit.al
@@ -21,6 +21,8 @@ codeunit 139906 "APIV2 - FA Locations E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2FixedAssetsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2FixedAssetsE2E.Codeunit.al
index 3efd9d6a789..e6ecd5097e4 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2FixedAssetsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2FixedAssetsE2E.Codeunit.al
@@ -23,6 +23,8 @@ codeunit 139907 "APIV2 - Fixed Assets E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2GLEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2GLEntriesE2E.Codeunit.al
index bb7b691b29f..78991d41858 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2GLEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2GLEntriesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139830 "APIV2 - GLEntries E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -24,6 +25,8 @@ codeunit 139830 "APIV2 - GLEntries E2E"
LibraryERMCountryData: Codeunit "Library - ERM Country Data";
LibraryApplicationArea: Codeunit "Library - Application Area";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
LibraryApplicationArea.EnableFoundationSetup();
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2GLSetupE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2GLSetupE2E.Codeunit.al
index 187cb7f3af7..810fbb556c7 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2GLSetupE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2GLSetupE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139860 "APIV2 - G/L Setup E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
var
Assert: Codeunit "Assert";
@@ -13,6 +14,8 @@ codeunit 139860 "APIV2 - G/L Setup E2E"
GeneralLedgerSetup: Record "General Ledger Setup";
Response, TargetURL : Text;
begin
+ Initialize();
+
GeneralLedgerSetup.Get();
TargetURL := LibraryGraphMgt.CreateTargetURL('', Page::"APIV2 - G/L Setup", ServiceNameTxt);
LibraryGraphMgt.GetFromWebService(Response, TargetURL);
@@ -60,4 +63,9 @@ codeunit 139860 "APIV2 - G/L Setup E2E"
Assert.AreEqual(GeneralLedgerSetup."Shortcut Dimension 8 Code", PropertyJsonToken.AsValue().AsText(), 'Expected the same shortcutDimension8Code for generalLedgerSetup');
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
\ No newline at end of file
diff --git a/src/Apps/W1/APIV2/test/src/APIV2GenProdPostGroupE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2GenProdPostGroupE2E.Codeunit.al
index 6120bf37cdd..97777f186af 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2GenProdPostGroupE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2GenProdPostGroupE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139856 "APIV2 - GenProdPostGroup E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -21,6 +22,8 @@ codeunit 139856 "APIV2 - GenProdPostGroup E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [SCENARIO] Create a General Product Posting Group and use a GET method to retrieve it
// [GIVEN] A Gen. Prod. Post. Group
ERMVATToolHelper.CreateGenProdPostingGroup(GenProductPostingGroup, true);
@@ -41,4 +44,9 @@ codeunit 139856 "APIV2 - GenProdPostGroup E2E"
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
\ No newline at end of file
diff --git a/src/Apps/W1/APIV2/test/src/APIV2IncomeStatementE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2IncomeStatementE2E.Codeunit.al
index 94109479bc6..237e157912a 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2IncomeStatementE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2IncomeStatementE2E.Codeunit.al
@@ -62,6 +62,8 @@ codeunit 139816 "APIV2 - Income Statement E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2InventoryPostGroupE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2InventoryPostGroupE2E.Codeunit.al
index 3f357b613b8..57e07cbc48b 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2InventoryPostGroupE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2InventoryPostGroupE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139857 "APIV2 - InventoryPostGroup E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
@@ -21,6 +22,8 @@ codeunit 139857 "APIV2 - InventoryPostGroup E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an Inventory Posting Group and use a GET to retrieve it
// [GIVEN] An Inventory Posting Group
LibraryInventory.CreateInventoryPostingGroup(InventoryPostingGroup);
@@ -40,4 +43,9 @@ codeunit 139857 "APIV2 - InventoryPostGroup E2E"
'Could not find created Inventory Posting Group on the response');
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
\ No newline at end of file
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ItemCategoriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ItemCategoriesE2E.Codeunit.al
index 48a2175efe0..cd38beeb5f4 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ItemCategoriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ItemCategoriesE2E.Codeunit.al
@@ -155,6 +155,8 @@ codeunit 139807 "APIV2 - Item Categories E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ItemVariantsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ItemVariantsE2E.Codeunit.al
index 2850134d790..7892406ba53 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ItemVariantsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ItemVariantsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139839 "APIV2 - Item Variants E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -20,6 +21,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an item variant through a POST method and check if it was created
// [GIVEN] a JSON text with an item variant with itemId
CreateItem(Item);
@@ -44,6 +47,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Cannot create an Item Variant with non-existing itemId
// [GIVEN] a JSON text with an item variant with non-existing itemId
ItemId := CreateGuid();
@@ -65,6 +70,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an item variant through a POST method and check if it was created
// [GIVEN] a JSON text with an item variant with itemNumber
CreateItem(Item);
@@ -90,6 +97,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Cannot create an Item Variant with non-existing itemNumber
// [GIVEN] a JSON text with an item variant with non-existing itemNumber
ItemNo := LibraryUtility.GenerateRandomCode(ItemVariant.FieldNo(Code), Database::"Item Variant");
@@ -111,6 +120,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an item variant through a POST method and check if it was created
// [GIVEN] a JSON text with an item variant with itemNumber and itemId
CreateItem(Item);
@@ -136,6 +147,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Cannot create an Item Variant with mismatching itemNumber and itemId
// [GIVEN] a JSON text with an item variant with mismatching itemNumber and itemId
CreateItem(Item1);
@@ -159,6 +172,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Cannot create an Item Variant if there is an item variant with same itemNumber and code
// [GIVEN] a JSON text with an item variant with same itemNumber and code
CreateItem(Item);
@@ -181,6 +196,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Get a simple customer with a GET request to the service.
// [GIVEN] An item variant exists in the system
CreateItem(Item);
@@ -206,6 +223,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an item variant, use a PATCH method to change it and then verify the changes
// [GIVEN] an item variant exists in the system
CreateItem(Item);
@@ -238,6 +257,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an item variant, use a PATCH method to change it and then verify the changes
// [GIVEN] an item variant exists in the system
CreateItem(Item1);
@@ -271,6 +292,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an item variant, use a PATCH method to change it and then verify the changes
// [GIVEN] an item variant exists in the system
CreateItem(Item1);
@@ -300,6 +323,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an item variant, use a DELETE method to remove it and then verify the deletion
// [GIVEN] an item variant in the system
CreateItem(Item);
@@ -326,6 +351,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Cannot delete an item variant in use
// [GIVEN] an item variant in the system and used in a sales order line
LibraryInventory.CreateItem(Item);
@@ -342,6 +369,7 @@ codeunit 139839 "APIV2 - Item Variants E2E"
var
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
+ LibraryGraphDocumentTools: Codeunit "Library - Graph Document Tools";
LibraryUtility: Codeunit "Library - Utility";
LibraryRandom: Codeunit "Library - Random";
LibraryInventory: Codeunit "Library - Inventory";
@@ -425,6 +453,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
LibrarySales: Codeunit "Library - Sales";
begin
LibrarySales.CreateSalesOrder(SalesHeader);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesHeader."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
LibrarySales.CreateSalesLine(SalesLine, SalesHeader, SalesLine.Type::Item, Item."No.", 2);
SalesLine."Variant Code" := ItemVariant.Code;
SalesLine.Modify();
@@ -440,4 +470,9 @@ codeunit 139839 "APIV2 - Item Variants E2E"
exit(CopyStr('GRAPHITEM' + '00001', 1, 20));
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ItemsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ItemsE2E.Codeunit.al
index 98f53fcb285..84299a840ef 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ItemsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ItemsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139800 "APIV2 - Items E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,8 @@ codeunit 139800 "APIV2 - Items E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2JobQueueEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2JobQueueEntriesE2E.Codeunit.al
index fd33be96961..8311d92ab03 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2JobQueueEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2JobQueueEntriesE2E.Codeunit.al
@@ -25,6 +25,8 @@ codeunit 139862 "APIV2JobQueueEntriesE2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [SCENARIO] Create 1 JobQueueEntry and use a GET method to retrieve it·
// [GIVEN] Clean Job Queue Entries and create a new JobQueueEntry
JobQueueEntry.DeleteAll();
@@ -51,6 +53,8 @@ codeunit 139862 "APIV2JobQueueEntriesE2E"
ResponseText: Text;
JobQueueEntryJSON: Text;
begin
+ Initialize();
+
// [SCENARIO] Create 1 JobQueueEntry and use a GET method to retrieve it.
// [GIVEN] Clean Job Queue Entries and create a new JobQueueEntry and one corresponding JobQueueLogEntry
JobQueueEntry.DeleteAll();
@@ -79,6 +83,8 @@ codeunit 139862 "APIV2JobQueueEntriesE2E"
ResponseText: Text;
JobQueueLogEntryJSON: Text;
begin
+ Initialize();
+
// [SCENARIO] Create 1 JobQueueEntry with 2 corresponding JobQueueLogEntries and use a GET method to retrieve it.
// [GIVEN] Clean Job Queue Entries and create a new JobQueueEntry and 3 corresponding JobQueueLogEntries
JobQueueEntry.DeleteAll();
@@ -105,6 +111,8 @@ codeunit 139862 "APIV2JobQueueEntriesE2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [SCENARIO] Create 1 JobQueueEntry with status error. Use an action to reschedule the JobQueueEntry
// [GIVEN] Clean Job Queue Entries and create a new JobQueueEntry with status error
JobQueueEntry.DeleteAll();
@@ -201,4 +209,9 @@ codeunit 139862 "APIV2JobQueueEntriesE2E"
until (Index = LibraryGraphMgt.GetCollectionCountFromJSON(JobQueueLogEntryJSON));
Assert.AreEqual(Count, Index, 'The number of Job Queue Log Entries is wrong.');
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2JobQueueLogEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2JobQueueLogEntriesE2E.Codeunit.al
index 85e8931992b..4eedd7aed15 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2JobQueueLogEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2JobQueueLogEntriesE2E.Codeunit.al
@@ -21,6 +21,8 @@ codeunit 139861 "APIV2JobQueueLogEntriesE2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [SCENARIO] Use a GET method to retrieve Job Queue Log Entries
// [GIVEN] A new Job Queue Log Entry created
JobQueueLogEntry.DeleteAll();
@@ -63,4 +65,9 @@ codeunit 139861 "APIV2JobQueueLogEntriesE2E"
JobQueueLogEntry.Insert();
exit(JobQueueLogEntry);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2JournalsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2JournalsE2E.Codeunit.al
index 5d6b35a0891..e9dc85bcead 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2JournalsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2JournalsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139827 "APIV2 - Journals E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -32,6 +33,8 @@ codeunit 139827 "APIV2 - Journals E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
@@ -190,6 +193,8 @@ codeunit 139827 "APIV2 - Journals E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [GIVEN] A general journal batch with a general journal line
BalAccountNo := LibraryERM.CreateGLAccountNoWithDirectPosting();
BalAccountType := GenJournalLine."Bal. Account Type"::"G/L Account";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2LocationsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2LocationsE2E.Codeunit.al
index 667ae62e2f1..a75ccee71fc 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2LocationsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2LocationsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139868 "APIV2 - Locations E2E"
// version Test,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -24,6 +25,8 @@ codeunit 139868 "APIV2 - Locations E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2OpportunitiesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2OpportunitiesE2E.Codeunit.al
index 50b6a4c45dd..0f968135abf 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2OpportunitiesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2OpportunitiesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139855 "APIV2 - Opportunities E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -31,6 +32,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
ResponseText: Text;
OpportunityId: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an opportunity and use a GET method to retrieve them
// [GIVEN] An opportunity
ContactNo := LibraryMarketing.CreateCompanyContactNo();
@@ -60,6 +63,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create an opportunity through a POST method and check if it was created
// [GIVEN] a JSON text with an Opportunity only with a Description property
OpportunityJSON := CreateMinimalOpportunityJSON(OpportunityDescription);
@@ -85,6 +90,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create an opportunity through a POST method and check if it was created
// [GIVEN] a JSON text with an Opportunity only with a contact no
ContactNo := LibraryMarketing.CreateCompanyContactNo();
@@ -125,6 +132,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create an opportunity through a POST method
// [GIVEN] a JSON text with an Opportunity only with a contact number that does not exist
ContactNo := 'wrongContNo';
@@ -146,6 +155,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
TargetURL: Text;
ResponseText: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create an opportunity through a POST method
// [GIVEN] a JSON text with an Opportunity only with a salesperson number that does not exist
SalespersonNo := 'wrongSPNo';
@@ -169,6 +180,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
ResponseText: Text;
OpportunityId: Guid;
begin
+ Initialize();
+
// [SCENARIO] Use a PATCH method to change the description of an opportunity
// [GIVEN] An opportunity
ContactNo := LibraryMarketing.CreateCompanyContactNo();
@@ -199,6 +212,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
ResponseText: Text;
OpportunityId: Guid;
begin
+ Initialize();
+
// [SCENARIO] Use a PATCH method to change the contact no of a Won opportunity
// [GIVEN] An won opportunity
CompanyContactNo := LibraryMarketing.CreateCompanyContactNo();
@@ -228,6 +243,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
ResponseText: Text;
OpportunityId: Guid;
begin
+ Initialize();
+
// [SCENARIO] Use a PATCH method to change the salesperson code of a Won opportunity
// [GIVEN] An won opportunity
SalesPersonCode := CreateSalesperson(SalespersonPurchaser);
@@ -256,6 +273,8 @@ codeunit 139855 "APIV2 - Opportunities E2E"
ResponseText: Text;
OpportunityId: Guid;
begin
+ Initialize();
+
// [SCENARIO] Use a PATCH method to change the contact no of an opportunity in progress to a contact of a different company
// [GIVEN] An won opportunity
CompanyContactNo1 := LibraryMarketing.CreateCompanyContactNo();
@@ -408,4 +427,9 @@ codeunit 139855 "APIV2 - Opportunities E2E"
Opportunity.SetRange(Description, DescriptionValue);
Assert.IsFalse(Opportunity.IsEmpty(), 'Opportunity does not exist');
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PDFDocumentE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PDFDocumentE2E.Codeunit.al
index 63c5aabb741..f0e9b60587f 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PDFDocumentE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PDFDocumentE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139841 "APIV2 - PDF Document E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -26,6 +27,7 @@ codeunit 139841 "APIV2 - PDF Document E2E"
var
CompanyInformation: Record "Company Information";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
CompanyInformation.Get();
if CompanyInformation."Giro No." = '' then
CompanyInformation."Giro No." := '1234567';
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PaymentMethodsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PaymentMethodsE2E.Codeunit.al
index ca63c08260f..ec4cfe1fb01 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PaymentMethodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PaymentMethodsE2E.Codeunit.al
@@ -155,6 +155,8 @@ codeunit 139814 "APIV2 - Payment Methods E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PaymentTermsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PaymentTermsE2E.Codeunit.al
index 0e56cd7e8dc..dac5487ee0d 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PaymentTermsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PaymentTermsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139804 "APIV2 - Payment Terms E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -19,6 +20,8 @@ codeunit 139804 "APIV2 - Payment Terms E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PicturesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PicturesE2E.Codeunit.al
index 317006420bd..03e045c8153 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PicturesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PicturesE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139842 "APIV2 - Pictures E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -29,6 +30,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
[Scope('OnPrem')]
procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
@@ -44,6 +47,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobExpected: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Get value picture from Customer Record
@@ -68,6 +73,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Get a picture metadata from Customer Record
@@ -91,6 +98,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobResponse: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Get value picture from Customer Record when no image exist
@@ -112,6 +121,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Get a picture metadata from Customer Record when no image is present
@@ -137,6 +148,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Set Picture on a customer without picture
@@ -169,6 +182,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Replace the Picture on a customer
@@ -200,6 +215,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Customer]
// [SCENARIO] Replace the Picture on a customer
@@ -227,6 +244,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobExpected: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Get value picture from Vendor Record
@@ -251,6 +270,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Get a picture metadata from Vendor Record
@@ -274,6 +295,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobResponse: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Get value picture from Vendor Record when no image exist
@@ -295,6 +318,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Get a picture metadata from Vendor Record when no image is present
@@ -320,6 +345,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Set Picture on a Vendor without picture
@@ -352,6 +379,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Replace the Picture on a Vendor
@@ -383,6 +412,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Vendor]
// [SCENARIO] Replace the Picture on a Vendor
@@ -410,6 +441,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobExpected: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Employee]
// [SCENARIO] Get value picture from Employee Record
@@ -434,6 +467,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Employee]
// [SCENARIO] Get a picture metadata from Employee Record
@@ -457,6 +492,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobResponse: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Employee]
// [SCENARIO] Get value picture from Employee Record when no image exist
@@ -478,6 +515,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Employee]
// [SCENARIO] Get a picture metadata from Employee Record when no image is present
@@ -503,6 +542,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Employee]
// [SCENARIO] Set Picture on a Employee without picture
@@ -535,6 +576,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Employee]
// [SCENARIO] Replace the Picture on a Employee
@@ -566,6 +609,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Employee]
// [SCENARIO] Replace the Picture on a Employee
@@ -593,6 +638,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobExpected: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Item]
// [SCENARIO] Get value picture from Item Record
@@ -617,6 +664,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Item]
// [SCENARIO] Get a picture metadata from Item Record
@@ -640,6 +689,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobResponse: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Item]
// [SCENARIO] Get value picture from Item Record when no image exist
@@ -661,6 +712,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Item]
// [SCENARIO] Get a picture metadata from Item Record when no image is present
@@ -686,6 +739,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Item]
// [SCENARIO] Set Picture on a Item without picture
@@ -718,6 +773,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Item]
// [SCENARIO] Replace the Picture on a Item
@@ -749,6 +806,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Item]
// [SCENARIO] Replace the Picture on a Item
@@ -776,6 +835,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobExpected: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Contact]
// [SCENARIO] Get value picture from Contact Record
@@ -800,6 +861,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Contact]
// [SCENARIO] Get a picture metadata from Contact Record
@@ -823,6 +886,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TempBlobResponse: Codeunit "Temp Blob";
TargetURL: Text;
begin
+ Initialize();
+
// [FEATURE] [Contact]
// [SCENARIO] Get value picture from Contact Record when no image exist
@@ -844,6 +909,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Contact]
// [SCENARIO] Get a picture metadata from Contact Record when no image is present
@@ -869,6 +936,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Contact]
// [SCENARIO] Set Picture on a contact without picture
@@ -901,6 +970,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Contact]
// [SCENARIO] Replace the Picture on a contact
@@ -932,6 +1003,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
TargetURL: Text;
Response: Text;
begin
+ Initialize();
+
// [FEATURE] [Contact]
// [SCENARIO] Replace the Picture on a contact
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchCrMLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchCrMLinesE2E.Codeunit.al
index 71212c1efab..980ea545d06 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchCrMLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchCrMLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the lines without providing a parent Credit Memo ID.
// [GIVEN] the credit memo API exposedSetAutoCalcFields
@@ -56,6 +59,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
LineNo: Integer;
SequenceValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Line of a credit memo
// [GIVEN] a credit memo with a line.SetAutoCalcFields
CreditMemoId := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -86,6 +91,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
LineNo1: Text;
LineNo2: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Lines of a unposted Credit Memo
// [GIVEN] An credit memo with lines.SetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -115,6 +122,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
LineNo1: Text;
LineNo2: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Lines of a credit memo
// [GIVEN] a credit memo with lines.SetAutoCalcFields
CreditMemoId := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -144,6 +153,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
LineNo1: Text;
LineNo2: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Lines of a posted Credit Memo
// [GIVEN] A posted credit memo with lines.SetAutoCalcFields
CreditMemoID := CreatePostedPurchaseCreditMemoWithLines(PurchCrMemoHdr);
@@ -172,6 +183,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoID: Text;
LineNo: Integer;
begin
+ Initialize();
+
// [SCENARIO] POST a new line to an unposted Credit Memo
// [GIVEN] An existing unposted credit memo and a valid JSON describing the new credit memo lineSetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -203,6 +216,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoID: Text;
LineNo: Integer;
begin
+ Initialize();
+
// [SCENARIO] POST a new line to an unposted Credit Memo with a sequence number
// [GIVEN] An existing unposted credit memo and a valid JSON describing the new credit memo lineSetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -241,6 +256,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
PurchaseQuantity: Integer;
PurchaseQuantityFromJSON: Text;
begin
+ Initialize();
+
// [SCENARIO] PATCH a line of an unposted Credit Memo
// [GIVEN] An unposted credit memo with lines and a valid JSON describing the fields that we want to changeSetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -278,6 +295,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoId: Text;
NewSequence: Integer;
begin
+ Initialize();
+
// [SCENARIO] PATCH a line of a credit memo will fail if sequence is modified
// [GIVEN] A credit memo with lines and a valid JSON describing the fields that we want to changeSetAutoCalcFields
CreditMemoId := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -318,6 +337,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoID: Text;
LineNo: Integer;
begin
+ Initialize();
+
// [SCENARIO] DELETE a line from an unposted Credit Memo
// [GIVEN] An unposted credit memo with linesSetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -348,6 +369,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoID: Text;
LineNo: Integer;
begin
+ Initialize();
+
// [SCENARIO] Call DELETE on a line of a posted Credit Memo
// [GIVEN] A posted credit memo with linesSetAutoCalcFields
CreditMemoID := CreatePostedPurchaseCreditMemoWithLines(PurchCrMemoHdr);
@@ -384,6 +407,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
ItemNo: Code[20];
VendorNo: Code[20];
begin
+ Initialize();
+
// [SCENARIO] Create an credit memo both through the client UI and through the API and compare their final values.
// [GIVEN] An unposted credit memo and a JSON describing the line we want to create
LibraryPurchase.CreateVendor(Vendor);
@@ -422,6 +447,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
ResponseText: Text;
LinesJSON: Text;
begin
+ Initialize();
+
// [SCENARIO] Getting a line through API lists all possible types
// [GIVEN] An credit memo with lines of different typesSetAutoCalcFields
CreateCreditMemoWithDifferentLineTypes(PurchaseHeader, ExpectedNumberOfLines);
@@ -447,6 +474,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
ResponseText: Text;
CreditMemoLineJSON: Text;
begin
+ Initialize();
+
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description onlySetAutoCalcFields
CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -482,6 +511,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
ResponseText: Text;
CreditMemoLineJSON: Text;
begin
+ Initialize();
+
// [FEATURE] [Comment]
// [SCENARIO] Posting a line with Type Comment and description will make a comment line
// [GIVEN] A post request with type and descriptionSetAutoCalcFields
@@ -520,6 +551,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoLineJSON: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO] PATCH a Type on a line of an unposted Credit Memo
// [GIVEN] An unposted credit memo with lines and a valid JSON describing the fields that we want to changeSetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -551,6 +584,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoLineJSON: Text;
CreditMemoLineID: Text;
begin
+ Initialize();
+
// [SCENARIO] PATCH a Type on a line of an unposted Credit Memo
// [GIVEN] An unposted credit memo with lines and a valid JSON describing the fields that we want to changeSetAutoCalcFields
CreateCreditMemoWithDifferentLineTypes(PurchaseHeader, ExpectedNumberOfLines);
@@ -588,6 +623,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoLineJSON: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO] PATCH a Type on a line of an unposted Credit Memo
// [GIVEN] An unposted credit memo with lines and a valid JSON describing the fields that we want to changeSetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -622,6 +659,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoID: Text;
LineNo: Integer;
begin
+ Initialize();
+
// [SCENARIO] POST a new line to an unposted Credit Memo with item variant
// [GIVEN] An existing unposted credit memo and a valid JSON describing the new credit memo line with item variantSetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -658,6 +697,8 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
CreditMemoLineJSON: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO] POST a new line to an unposted Credit Memo with wrong item variant
// [GIVEN] An existing unposted credit memo and a valid JSON describing the new credit memo line with item variantSetAutoCalcFields
CreditMemoID := CreatePurchaseCreditMemoWithLines(PurchaseHeader);
@@ -950,4 +991,9 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
PurchaseLineComment.Description := 'Thank you for your business!';
PurchaseLineComment.Modify();
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchCrMemosE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchCrMemosE2E.Codeunit.al
index 99bf5468337..a8fe4df07e9 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchCrMemosE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchCrMemosE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -39,6 +40,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create posted and unposted purchase credit memos and use a GET method to retrieve them
// [GIVEN] 2 credit memos, one posted and one unposted
CreatePurchaseCreditMemos(CreditMemoNo1, CreditMemoNo2);
@@ -71,8 +74,11 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
TargetURL: Text;
CreditMemo: Text;
begin
+ Initialize();
+
// [SCENARIO] Create posted and unposted Purchase credit memos and use HTTP POST to delete them
// [GIVEN] 2 credit memos, one posted and one unposted
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryPurchase.CreateVendorWithAddress(BuyFromVendor);
LibraryPurchase.CreateVendorWithAddress(PayToVendor);
VendorNo := BuyFromVendor."No.";
@@ -115,6 +121,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
CreditMemoJSON: Text;
CurrencyCode: Code[10];
begin
+ Initialize();
+
// [SCENARIO] Create posted and unposted with specific currency set and use HTTP POST to create them
// [GIVEN] an CreditMemo with a non-LCY currencyCode set
@@ -156,6 +164,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
CreditMemoJSON: Text;
VendorCreditMemoNumber: Text;
begin
+ Initialize();
+
// [SCENARIO] Create posted and unposted with specific vendor credit memo number set and use HTTP POST to create them
// [GIVEN] A credit memo with vendor credit memo number set
@@ -186,18 +196,24 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
[Test]
procedure TestModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(false, false);
end;
[Test]
procedure TestEmptyModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(true, false);
end;
[Test]
procedure TestPartialModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(false, true);
end;
@@ -274,6 +290,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
CreditMemoNo: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO] Create unposted purchase credit memo and use HTTP DELETE to delete it
// [GIVEN] An unposted credit memo
CreateDraftPurchaseCreditMemo(PurchaseHeader);
@@ -305,9 +323,12 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
CreditMemoPostingDate: Date;
CreditMemoJSON: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an credit memo both through the client UI and through the API
// [SCENARIO] and compare them. They should be the same and have the same fields autocompleted wherever needed.
// [GIVEN] An unposted credit memo
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
LibraryPurchase.CreateVendor(BuyFromVendor);
@@ -343,6 +364,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
ResponseText: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create Credit Memo, use a PATCH method to change it and then verify the changes
LibraryPurchase.CreateVendorWithAddress(Vendor);
@@ -389,6 +412,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
ResponseText: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Clearing manually set discount
// [GIVEN] an item with unit price and unit cost
@@ -439,6 +464,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can post a purchase credit memo through the API.
LibraryERMCountryData.UpdatePurchasesPayablesSetup();
// [GIVEN] Draft purchase credit memo exists
@@ -472,6 +499,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can cancel a posted purchase credit memo through API.
// [GIVEN] Non-corrective purchase credit memo exists
@@ -500,6 +529,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can cancel a posted purchase credit memo through API.
// [GIVEN] Corrective purchase credit memo exists
@@ -669,6 +700,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
PurchaseHeader1RecordRef.GetTable(PurchaseHeader1);
PurchaseHeader2RecordRef.GetTable(PurchaseHeader2);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Purchase Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(
PurchaseHeader1RecordRef, PurchaseHeader2RecordRef, TempIgnoredFieldsForComparison, 'Credit Memos do not match');
@@ -714,5 +747,10 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
Assert.IsTrue(PurchCrMemoEntityBuffer.FindFirst(), CannotFindPostedCreditMemoErr);
Assert.AreEqual(Status, PurchCrMemoEntityBuffer.Status, CreditMemoStatusErr);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchOrderLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchOrderLinesE2E.Codeunit.al
index 10c1f29cd26..f475dff691c 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchOrderLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchOrderLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139852 "APIV2 - Purch. Order Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,8 @@ codeunit 139852 "APIV2 - Purch. Order Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
@@ -866,6 +869,8 @@ codeunit 139852 "APIV2 - Purch. Order Lines E2E"
Assert.AreNotEqual('', OrderId, 'ID should not be empty');
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ PurchaseLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
OrderLineJSON := StrSubstNo('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Item.SystemId));
Commit();
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al
index fff9ebbec3e..51e1a9981a2 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139922 "APIV2 - Purch. Quotes E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -140,17 +141,16 @@ codeunit 139922 "APIV2 - Purch. Quotes E2E"
procedure TestExpandPdfDocument()
var
PurchaseHeader: Record "Purchase Header";
+ PurchaseLine: Record "Purchase Line";
ResponseText: Text;
TargetURL: Text;
PdfDocumentValue: Text;
begin
// [SCENARIO] GET a purchase quote with $expand=pdfDocument
- // [GIVEN] A purchase quote
- PurchaseHeader.SetRange("Document Type", PurchaseHeader."Document Type"::Quote);
- if not PurchaseHeader.FindFirst() then begin
- LibraryPurchase.CreatePurchHeader(PurchaseHeader, PurchaseHeader."Document Type"::Quote, '');
- Commit();
- end;
+ // [GIVEN] A purchase quote with a line
+ LibraryPurchase.CreatePurchHeader(PurchaseHeader, PurchaseHeader."Document Type"::Quote, '');
+ LibraryPurchase.CreatePurchaseLine(PurchaseLine, PurchaseHeader, PurchaseLine.Type::Item, '', 1);
+ Commit();
// [WHEN] we GET with expanded pdfDocument
TargetURL := LibraryGraphMgt.CreateTargetURL(PurchaseHeader.SystemId, Page::"APIV2 - Purch. Quotes", ServiceNameTxt);
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchRcptLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchRcptLinesE2E.Codeunit.al
index c3c96805fb3..1483cd26db8 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchRcptLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchRcptLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139850 "APIV2 - Purch. Rcpt. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -29,6 +30,8 @@ codeunit 139850 "APIV2 - Purch. Rcpt. Lines E2E"
LineNo: Integer;
SequenceValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Line of a purchase receipt
// [GIVEN] A receipt with a line.
LibraryPurchase.CreatePurchaseOrder(PurchaseHeader);
@@ -62,6 +65,8 @@ codeunit 139850 "APIV2 - Purch. Rcpt. Lines E2E"
LineNo1: Text;
LineNo2: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Lines of a Purchase Receipt
// [GIVEN] A purchase receipt with lines.
CreatePurchaseOrderMultipleLines(PurchaseHeader);
@@ -103,6 +108,8 @@ codeunit 139850 "APIV2 - Purch. Rcpt. Lines E2E"
LineNo1: Text;
LineNo2: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Lines of a purchase receipt
// [GIVEN] A purchase receipt with lines.
CreatePurchaseOrderMultipleLines(PurchaseHeader);
@@ -136,6 +143,8 @@ codeunit 139850 "APIV2 - Purch. Rcpt. Lines E2E"
LineIdTxt: Text;
DimensionSetValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Line of a purchase receipt and expand the dimension set lines
// [GIVEN] A receipt with a line.
PurchRcptHeader.FindFirst();
@@ -250,4 +259,9 @@ codeunit 139850 "APIV2 - Purch. Rcpt. Lines E2E"
exit(TargetURL);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al
index 7df56e4842f..e599860803e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139928 "APIV2 - Purch. Ret. Shpts. E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvLinesE2E.Codeunit.al
index 0dbd34f7443..0d0010fae51 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139838 "APIV2 - Purchase Inv Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,8 @@ codeunit 139838 "APIV2 - Purchase Inv Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvoicesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvoicesE2E.Codeunit.al
index 2477d02b2ad..33d86a7d3a3 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvoicesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvoicesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139829 "APIV2 - Purchase Invoices E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,7 @@ codeunit 139829 "APIV2 - Purchase Invoices E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
[Test]
@@ -75,6 +77,8 @@ codeunit 139829 "APIV2 - Purchase Invoices E2E"
OrderIdValue: Text;
OrderNoValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Create a Purchase Invoice from a Purchase Order and use GET method to retrieve them and check the orderId and orderNumber
// [GIVEN] A purchase invoice created by posting a purchase order
LibraryPurchase.CreatePurchaseOrder(PurchaseHeader);
@@ -444,6 +448,8 @@ codeunit 139829 "APIV2 - Purchase Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can map systemId with Draft Invoice SystemId
// [GIVEN] Posted purchase invoice exists
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchaseOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchaseOrdersE2E.Codeunit.al
index 1b799612203..26896be9f07 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchaseOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchaseOrdersE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -31,7 +32,7 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
local procedure Initialize()
begin
- WorkDate := Today();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
[Test]
@@ -92,8 +93,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
ShipToVendor.Modify(true);
Commit();
VendorNo := BuyFromVendor."No.";
- OrderDate := Today();
- PostingDate := Today();
+ OrderDate := WorkDate();
+ PostingDate := WorkDate();
// [GIVEN] a JSON text with an order that contains the vendor and an address
OrderJSON := CreateOrderJSONWithAddress(BuyFromVendor, PayToVendor, ShipToVendor, OrderDate, PostingDate);
@@ -143,8 +144,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
LibraryPurchase.CreateVendorWithAddress(BuyFromVendor);
LibraryPurchase.CreateVendorWithAddress(PayToVendor);
VendorNo := BuyFromVendor."No.";
- OrderDate := Today();
- PostingDate := Today();
+ OrderDate := WorkDate();
+ PostingDate := WorkDate();
// [GIVEN] a JSON text with an order that contains the vendor and an address
OrderJSON := CreateOrderJSONWithoutShipTo(BuyFromVendor, PayToVendor, OrderDate, PostingDate);
@@ -402,8 +403,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
// [GIVEN] a customer
LibraryPurchase.CreateVendor(Vendor);
VendorNo := Vendor."No.";
- OrderDate := Today();
- PostingDate := Today();
+ OrderDate := WorkDate();
+ PostingDate := WorkDate();
// [GIVEN] a json describing our new order
OrderJSON := CreateOrderJSONWithAddress(Vendor, Vendor, Vendor, OrderDate, PostingDate);
@@ -427,6 +428,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("No."), Database::"Purchase Header");
LibraryUtility.AddTempField(
TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Posting Description"), Database::"Purchase Header");
+ LibraryUtility.AddTempField(
+ TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Order Date"), Database::"Purchase Header");
// Special ignore case for GB
LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Invoice Received Date"), Database::"Purchase Header");
// Special ignore case for ES
@@ -441,14 +444,14 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, RecordField."No.", Database::"Purchase Header");
// Time zone will impact how the date from the page vs WebService is saved. If removed this will fail in snap between 12:00 - 1 AM
- if Time() < 020000T then begin
- LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Order Date"), Database::"Purchase Header");
+ if Time() < 020000T then
LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Posting Date"), Database::"Purchase Header");
- end;
PagePurchaseHeader.Get(PagePurchaseHeader."Document Type"::Order, PurchaseOrder."No.".Value());
ApiRecordRef.GetTable(ApiPurchaseHeader);
PageRecordRef.GetTable(PagePurchaseHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Purchase Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API order do not match');
@@ -603,6 +606,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can recieve and invoice a purchase order through the API.
// [GIVEN] Create vendors and a Purchase order with lines
@@ -667,6 +672,7 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
PurchaseOrder."Buy-from Vendor No.".SetValue(Vendor."No.");
PurchaseOrder."Document Date".SetValue(DocumentDate);
PurchaseOrder."Posting Date".SetValue(PostingDate);
+ PurchaseOrder."Order Date".SetValue(DocumentDate);
end;
local procedure CheckShippingDetailsNotEmpty(var PurchaseHeader: Record "Purchase Header")
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchaseReceiptsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchaseReceiptsE2E.Codeunit.al
index da2b96c946c..b6a4b065805 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchaseReceiptsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchaseReceiptsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139849 "APIV2 - Purchase Receipts E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -26,6 +27,8 @@ codeunit 139849 "APIV2 - Purchase Receipts E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create 2 purchase receipts (post sales order) and use a GET method to retrieve them
// [GIVEN] 2 posted purchase receipts
LibraryPurchase.CreatePurchaseOrder(PurchaseHeader);
@@ -56,6 +59,8 @@ codeunit 139849 "APIV2 - Purchase Receipts E2E"
ReceiptIdTxt: Text;
DimensionSetValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on purchase receipt and expand the dimension set lines
// [GIVEN] A purchase receipt.
@@ -106,4 +111,9 @@ codeunit 139849 "APIV2 - Purchase Receipts E2E"
exit(TargetURL);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2RetEarningsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2RetEarningsE2E.Codeunit.al
index 771bc75dd2f..fbf34e68500 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2RetEarningsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2RetEarningsE2E.Codeunit.al
@@ -62,6 +62,8 @@ codeunit 139821 "APIV2 - Ret. Earnings E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesCrMemoLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesCrMemoLinesE2E.Codeunit.al
index 203a1e04eb3..78f3ae9dca1 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesCrMemoLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesCrMemoLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139837 "APIV2 - Sales CrMemo Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,8 @@ codeunit 139837 "APIV2 - Sales CrMemo Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesCreditMemosE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesCreditMemosE2E.Codeunit.al
index 91631a22534..f4cd36a908a 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesCreditMemosE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesCreditMemosE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -56,6 +57,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create posted and unposted sales credit memos and use a GET method to retrieve them
// [GIVEN] 2 credit memos, one posted and one unposted
CreateSalesCreditMemos(CreditMemoNo1, CreditMemoNo2);
@@ -88,9 +91,12 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
TargetURL: Text;
CreditMemo: Text;
begin
+ Initialize();
+
// [SCENARIO] Create posted and unposted Sales credit memos and use HTTP POST to delete them
// [GIVEN] 2 credit memos, one posted and one unposted
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(BillToCustomer);
CustomerNo := SellToCustomer."No.";
@@ -133,6 +139,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
CreditMemoJSON: Text;
CurrencyCode: Code[10];
begin
+ Initialize();
+
// [SCENARIO] Create posted and unposted with specific currency set and use HTTP POST to create them
// [GIVEN] an CreditMemo with a non-LCY currencyCode set
@@ -165,18 +173,24 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
[Test]
procedure TestModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(false, false);
end;
[Test]
procedure TestEmptyModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(true, false);
end;
[Test]
procedure TestPartialModifyCreditMemos()
begin
+ Initialize();
+
TestMultipleModifyCreditMemos(false, true);
end;
@@ -252,6 +266,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
CreditMemoNo: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO] Create unposted sales credit memo and use HTTP DELETE to delete it
// [GIVEN] An unposted credit memo
CreateDraftSalesCreditMemo(SalesHeader);
@@ -283,9 +299,12 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
CreditMemoPostingDate: Date;
CreditMemoJSON: Text;
begin
+ Initialize();
+
// [SCENARIO] Create an credit memo both through the client UI and through the API
// [SCENARIO] and compare them. They should be the same and have the same fields autocompleted wherever needed.
// [GIVEN] An unposted credit memo
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
LibrarySales.CreateCustomer(SellToCustomer);
@@ -316,6 +335,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
TargetURL: Text;
DiscountPct: Decimal;
begin
+ Initialize();
+
// [SCENARIO] When an credit memo is created,the GET Method should update the credit memo and assign a total
// [GIVEN] 2 credit memos, one posted and one unposted without totals assigned
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
@@ -348,6 +369,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
DiscountAmt: Decimal;
InvDiscAmount: Decimal;
begin
+ Initialize();
+
// [SCENARIO] When an credit memo is created, the GET Method should update the credit memo and assign a total
// [GIVEN] 2 credit memos, one posted and one unposted with discount amount that should be redistributed
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
@@ -387,6 +410,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create Credit Memo, use a PATCH method to change it and then verify the changes
LibrarySales.CreateCustomerWithAddress(Customer);
@@ -433,6 +458,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
CreditMemoID: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Clearing manually set discount
// [GIVEN] an item with unit price and unit cost
@@ -488,6 +515,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
PostedCreditMemoEmailAddress: Text;
PostedCreditMemoEmailSubject: Text;
begin
+ Initialize();
+
// [SCENARIO] User can post a sales credit memo through the API.
// [GIVEN] Draft sales credit memo exists
@@ -535,6 +564,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can post and send a sales credit memo through the API.
InitializeForSending();
@@ -573,6 +604,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can cancel a posted sales credit memo through API.
// [GIVEN] Non-corrective sales credit memo exists
@@ -601,6 +634,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can cancel a posted sales credit memo through API.
// [GIVEN] Corrective sales credit memo exists
@@ -633,6 +668,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can cancel a posted sales credit memo through API.
InitializeForSending();
@@ -669,6 +706,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can send a posted sales credit memo through the API.
InitializeForSending();
@@ -701,6 +740,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Sending a draft sales credit memo through the API throws an error
InitializeForSending();
@@ -730,6 +771,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can send a draft sales credit memo through the API.
InitializeForSending();
@@ -754,11 +797,16 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
local procedure CreateCorrectiveSalesCreditMemo(var SalesCrMemoHeader: Record "Sales Cr.Memo Header")
var
+ ReasonCode: Record "Reason Code";
SalesInvoiceHeader: Record "Sales Invoice Header";
SalesHeader: Record "Sales Header";
InvoiceCode: Code[20];
begin
LibrarySales.CreateSalesInvoice(SalesHeader);
+ EnsureReasonCode();
+ ReasonCode.FindFirst();
+ SalesHeader.Validate("Reason Code", ReasonCode.Code);
+ SalesHeader.Modify(true);
InvoiceCode := LibrarySales.PostSalesDocument(SalesHeader, false, true);
SalesInvoiceHeader.Get(InvoiceCode);
Commit();
@@ -767,6 +815,16 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
SalesCrMemoHeader.FindFirst();
end;
+ local procedure EnsureReasonCode()
+ var
+ ReasonCode: Record "Reason Code";
+ begin
+ if not ReasonCode.IsEmpty() then
+ exit;
+
+ LibraryERM.CreateReasonCode(ReasonCode);
+ end;
+
local procedure CreateDraftSalesCreditMemo(var SalesHeader: Record "Sales Header")
begin
LibrarySales.CreateSalesCreditMemo(SalesHeader);
@@ -925,6 +983,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
SalesHeader1RecordRef.GetTable(SalesHeader1);
SalesHeader2RecordRef.GetTable(SalesHeader2);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(
SalesHeader1RecordRef, SalesHeader2RecordRef, TempIgnoredFieldsForComparison, 'Credit Memos do not match');
@@ -1043,5 +1103,10 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
while JobQueueEntry.FindJobQueueEntry(JobQueueEntry."Object Type to Run"::Codeunit, CodeunitID) do
JobQueueEntry.Cancel();
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesInvLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesInvLinesE2E.Codeunit.al
index 3a88184d347..746d7a2365f 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesInvLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesInvLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139834 "APIV2 - Sales Inv. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -31,6 +32,8 @@ codeunit 139834 "APIV2 - Sales Inv. Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
@@ -1079,6 +1082,8 @@ codeunit 139834 "APIV2 - Sales Inv. Lines E2E"
Assert.AreNotEqual('', InvoiceLineID, 'ID should not be empty');
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
InvoiceLineJSON := StrSubstNo('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Item.SystemId));
Commit();
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesInvoicesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesInvoicesE2E.Codeunit.al
index 9438dd8d7fc..b48cd7ca5a6 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesInvoicesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesInvoicesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -70,6 +71,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create posted and unposted Sales invoices and use a GET method to retrieve them
// [GIVEN] 2 invoices, one posted and one unposted
CreateSalesInvoices(InvoiceID1, InvoiceID2);
@@ -102,6 +105,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
OrderIdValue: Text;
OrderNoValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Create a Sales Invoice from a Sales Order and use GET method to retrieve them and check the orderId and orderNumber
// [GIVEN] A sales invoice created by posting a sales order
LibrarySales.CreateSalesOrder(SalesHeader);
@@ -145,9 +150,12 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
TargetURL: Text;
InvoiceJSON: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create posted and unposted Sales invoices and use HTTP POST to delete them
// [GIVEN] 2 invoices, one posted and one unposted
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibrarySales.CreateCustomer(SellToCustomer);
LibrarySales.CreateCustomer(BillToCustomer);
LibrarySales.CreateCustomer(ShipToCustomer);
@@ -195,6 +203,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
InvoiceJSON: Text;
CurrencyCode: Code[10];
begin
+ Initialize();
+
// [SCENARIO 184721] Create posted and unposted with specific currency set and use HTTP POST to create them
// [GIVEN] an Invoice with a non-LCY currencyCode set
@@ -242,6 +252,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
Email: Text;
CurrencyCode: Code[10];
begin
+ Initialize();
+
// [SCENARIO 285872] Create posted and unposted with specific email set and use HTTP POST to create them
Email := 'test@microsoft.com';
// [GIVEN] an Customer with no email set
@@ -293,8 +305,12 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
TargetURL: Text;
InvoiceJSON: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create unposted with specific document and due date set and use HTTP POST to create them
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
// [GIVEN] an Invoice with a document and due date set
LibrarySales.CreateCustomer(Customer);
CustomerNo := Customer."No.";
@@ -333,18 +349,24 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
[Test]
procedure TestModifyInvoices()
begin
+ Initialize();
+
TestMultipleModifyInvoices(false, false);
end;
[Test]
procedure TestEmptyModifyInvoices()
begin
+ Initialize();
+
TestMultipleModifyInvoices(true, false);
end;
[Test]
procedure TestPartialModifyInvoices()
begin
+ Initialize();
+
TestMultipleModifyInvoices(false, true);
end;
@@ -436,6 +458,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
TargetURL: Text;
InvoiceWithBlanksJSON: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create Sales Invoice with all the Ids filled, use a PATCH method to blank the Ids and the Codes
LibrarySales.CreateCustomerWithAddress(Customer);
@@ -500,6 +524,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
NewInvoiceNumber: Text;
NewInvoiceNumberJSON: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create draft invoice and issue a patch request to change the number
// [GIVEN] 1 draft invoice and a json with a new number
LibrarySales.CreateSalesInvoice(SalesHeader);
@@ -522,6 +548,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create unposted Sales invoice and use HTTP DELETE to delete it
// [GIVEN] An unposted invoice
CreateDraftSalesInvoice(SalesHeader);
@@ -559,9 +587,12 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
TargetURL: Text;
InvoiceJSON: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create an invoice both through the client UI and through the API
// [SCENARIO] and compare them. They should be the same and have the same fields autocompleted wherever needed.
// [GIVEN] An unposted invoice
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
LibraryApplicationArea.DisableApplicationAreaSetup();
@@ -606,6 +637,9 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Invoice, SalesInvoice."No.".Value());
ApiRecordRef.GetTable(ApiSalesHeader);
PageRecordRef.GetTable(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'Operation Occurred Date');
+
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API Invoice do not match');
@@ -621,6 +655,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
TargetURL: Text;
DiscountPct: Decimal;
begin
+ Initialize();
+
// [SCENARIO 184721] When an invoice is created,the GET Method should update the invoice and assign a total
// [GIVEN] 2 invoices, one posted and one unposted without totals assigned
LibraryApplicationArea.EnableFoundationSetup();
@@ -654,6 +690,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
DiscountAmt: Decimal;
InvDiscAmount: Decimal;
begin
+ Initialize();
+
// [SCENARIO 184721] When an invoice is created, the GET Method should update the invoice and assign a total
// [GIVEN] 2 invoices, one posted and one unposted with discount amount that should be redistributed
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
@@ -689,6 +727,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
InvoiceJSON: Text;
CurrencyCode: Code[10];
begin
+ Initialize();
+
// [SCENARIO 184721] Create an invoice wihtout Customer throws an error
// [GIVEN] a sales invoice JSON with currency only
@@ -717,6 +757,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
InvoiceID: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create Sales Invoice, use a PATCH method to change it and then verify the changes
LibrarySales.CreateCustomerWithAddress(Customer);
@@ -763,6 +805,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
InvoiceID: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Clearing manually set discount
// [GIVEN] an item with unit price and unit cost
@@ -819,6 +863,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
PostedInvoiceEmailAddress: Text;
PostedInvoiceEmailSubject: Text;
begin
+ Initialize();
+
// [SCENARIO] User can post a sales invoice through the API.
// [GIVEN] Draft sales invoice exists
@@ -865,6 +911,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can post and send a sales invoice through the API.
InitializeForSending();
@@ -903,6 +951,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can cancel a posted sales invoice through API.
// [GIVEN] Posted sales invoice exists
@@ -911,6 +961,7 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
DocumentId := SalesInvoiceHeader."Draft Invoice SystemId";
// Special case for AU
+ EnsureReasonCode();
LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
Commit();
@@ -939,6 +990,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can cancel a posted sales invoice through API.
InitializeForSending();
@@ -948,6 +1001,7 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
DocumentId := SalesInvoiceHeader."Draft Invoice SystemId";
// Special case for AU
+ EnsureReasonCode();
LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
Commit();
@@ -979,6 +1033,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can send a posted sales invoice through the API.
InitializeForSending();
@@ -1011,6 +1067,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can send a draft sales invoice through the API.
InitializeForSending();
@@ -1043,6 +1101,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can send a draft sales invoice through the API.
InitializeForSending();
@@ -1083,6 +1143,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
CreditMemoEmailAddress: Text;
CreditMemoEmailSubject: Text;
begin
+ Initialize();
+
// [SCENARIO] User can create a corrective credit memo for the posted sales invoice through the API.
// [GIVEN] A posted sales invoice exists
@@ -1127,6 +1189,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can map systemId with Draft Invoice SystemId
// [GIVEN] Posted sales invoice exists
@@ -1299,9 +1363,22 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
local procedure CreateCancelledSalesInvoice(var SalesInvoiceHeader: Record "Sales Invoice Header")
begin
CreatePostedSalesInvoice(SalesInvoiceHeader);
+ EnsureReasonCode();
+ LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
+ Commit();
CODEUNIT.Run(CODEUNIT::"Correct Posted Sales Invoice", SalesInvoiceHeader);
end;
+ local procedure EnsureReasonCode()
+ var
+ ReasonCode: Record "Reason Code";
+ begin
+ if not ReasonCode.IsEmpty() then
+ exit;
+
+ LibraryERM.CreateReasonCode(ReasonCode);
+ end;
+
local procedure CreateSalesInvoices(var InvoiceID1: Text; var InvoiceID2: Text)
var
SalesInvoiceHeader: Record "Sales Invoice Header";
@@ -1380,4 +1457,9 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
LibraryGraphMgt.VerifyIDInJson(ResponseText);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesOrderLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesOrderLinesE2E.Codeunit.al
index 280882e872d..ac87f9ab0ca 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesOrderLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesOrderLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139835 "APIV2 - Sales Order Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -30,6 +31,8 @@ codeunit 139835 "APIV2 - Sales Order Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
@@ -863,6 +866,8 @@ codeunit 139835 "APIV2 - Sales Order Lines E2E"
Assert.AreNotEqual('', OrderId, 'ID should not be empty');
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
OrderLineJSON := StrSubstNo('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Item.SystemId));
Commit();
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesOrdersE2E.Codeunit.al
index 16759bdf1b6..eb240d05feb 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesOrdersE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -38,6 +39,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create Sales Orders and use a GET method to retrieve them
// [GIVEN] 2 orders in the table
@@ -76,8 +79,12 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
TargetURL: Text;
OrderJSON: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create sales orders JSON and use HTTP POST to create them
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
// [GIVEN] a customer
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(BillToCustomer);
@@ -125,6 +132,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
TargetURL: Text;
OrderJSON: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create sales order for customer with location and use HTTP POST to create it
// [GIVEN] an order with customer with location code
@@ -168,6 +177,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
OrderJSON: Text;
CurrencyCode: Code[10];
begin
+ Initialize();
+
// [SCENARIO 184721] Create sales order with specific currency set and use HTTP POST to create it
// [GIVEN] an order with a non-LCY currencyCode set
@@ -203,18 +214,24 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
[Test]
procedure TestModifyOrders()
begin
+ Initialize();
+
TestMultipleModifyOrders(false, false);
end;
[Test]
procedure TestEmptyModifyOrders()
begin
+ Initialize();
+
TestMultipleModifyOrders(true, false);
end;
[Test]
procedure TestPartialModifyOrders()
begin
+ Initialize();
+
TestMultipleModifyOrders(false, true);
end;
@@ -283,6 +300,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create sales orders and use HTTP DELETE to delete them
// [GIVEN] 2 orders in the table
@@ -329,7 +348,10 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
TargetURL: Text;
OrderJSON: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create an order both through the client UI and through the API and compare them. They should be the same and have the same fields autocompleted wherever needed.
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
// [GIVEN] a customer
@@ -375,6 +397,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Order, SalesOrder."No.".Value());
ApiRecordRef.GetTable(ApiSalesHeader);
PageRecordRef.GetTable(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API order do not match');
@@ -388,6 +412,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
TargetURL: Text;
DiscountPct: Decimal;
begin
+ Initialize();
+
// [SCENARIO 184721] When an order is created, the GET Method should update the order and assign a total
// [GIVEN] an order without totals assigned
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(SalesHeader, DiscountPct, SalesHeader."Document Type"::Order);
@@ -417,6 +443,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
DiscountAmt: Decimal;
InvDiscAmount: Decimal;
begin
+ Initialize();
+
// [SCENARIO 184721] When an order is created, the GET Method should update the order and redistribute the discount amount
// [GIVEN] an order with discount amount that should be redistributed
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(SalesHeader, DiscountPct, SalesHeader."Document Type"::Order);
@@ -451,6 +479,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
OrderNo: Text;
OrderId: Guid;
begin
+ Initialize();
+
// [SCENARIO 184721] Create Sales Order, use a PATCH method to change it and then verify the changes
// [GIVEN] an order with lines
@@ -487,6 +517,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
ResponseText: Text;
OrderNo: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Clearing manually set discount
// [GIVEN] an order
@@ -523,6 +555,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can ship and invoice a sales order through the API.
// [GIVEN] a sales order with lines
@@ -644,4 +678,9 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
LibraryGraphMgt.VerifyIDInJson(ResponseText);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesQuoteLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesQuoteLinesE2E.Codeunit.al
index 803ae25520c..4c254eb1aa8 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesQuoteLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesQuoteLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139836 "APIV2 - Sales Quote Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -28,6 +29,8 @@ codeunit 139836 "APIV2 - Sales Quote Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesQuotesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesQuotesE2E.Codeunit.al
index e934a55669a..26c7c2d55bc 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesQuotesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesQuotesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -60,6 +61,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create Sales Quotes and use a GET method to retrieve them
// [GIVEN] 2 quotes in the table
@@ -98,8 +101,12 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
QuoteJSON: Text;
QuoteExists: Boolean;
begin
+ Initialize();
+
// [SCENARIO] Create sales quotes JSON and use HTTP POST to create them
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
// [GIVEN] a customer
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(ShipToCustomer);
@@ -143,6 +150,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
CurrencyCode: Code[10];
QuoteExists: Boolean;
begin
+ Initialize();
+
// [SCENARIO] Create sales quote with specific currency set and use HTTP POST to create it
// [GIVEN] a quote with a non-LCY currencyCode set
@@ -174,18 +183,24 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
[Test]
procedure TestModifyQuotes()
begin
+ Initialize();
+
TestMultipleModifyQuotes(false, false);
end;
[Test]
procedure TestEmptyModifyQuotes()
begin
+ Initialize();
+
TestMultipleModifyQuotes(true, false);
end;
[Test]
procedure TestPartialModifyQuotes()
begin
+ Initialize();
+
TestMultipleModifyQuotes(false, true);
end;
@@ -269,6 +284,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create sales quotes and use HTTP DELETE to delete them
// [GIVEN] 2 quotes in the table
@@ -315,7 +332,10 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
QuoteJSON: Text;
QuoteExists: Boolean;
begin
+ Initialize();
+
// [SCENARIO] Create a quote both through the client UI and through the API and compare them. They should be the same and have the same fields autocompleted wherever needed.
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
// [GIVEN] a customer
@@ -357,6 +377,11 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Quote, SalesQuote."No.".Value());
ApiRecordRef.GetTable(ApiSalesHeader);
PageRecordRef.GetTable(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'Operation Occurred Date');
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'VAT Reporting Date');
+
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API quote do not match');
end;
@@ -369,6 +394,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
TargetURL: Text;
DiscountPct: Decimal;
begin
+ Initialize();
+
// [SCENARIO] When a quote is created, the GET Method should update the quote and assign a total
// [GIVEN] a quote without totals assigned
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(SalesHeader, DiscountPct, SalesHeader."Document Type"::Quote);
@@ -398,6 +425,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
DiscountAmt: Decimal;
InvDiscAmount: Decimal;
begin
+ Initialize();
+
// [SCENARIO] When a quote is created, the GET Method should update the quote and redistribute the discount amount
// [GIVEN] a quote with discount amount that should be redistributed
@@ -435,6 +464,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
ResponseText: Text;
QuoteID: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Create Sales Quote, use a PATCH method to change it and then verify the changes
LibrarySales.CreateCustomerWithAddress(Customer);
@@ -481,6 +512,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
ResponseText: Text;
QuoteID: Text;
begin
+ Initialize();
+
// [SCENARIO 184721] Clearing manually set discount
// [GIVEN] an item with unit price and unit cost
@@ -529,6 +562,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] User can send a sales quote through the API.
InitializeForSending();
@@ -572,6 +607,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
InvoiceEmailAddress: Text;
InvoiceEmailSubject: Text;
begin
+ Initialize();
+
// [SCENARIO] User can convert a sales quote to a sales invoice through the API.
// [GIVEN] Sales quote exists
@@ -630,6 +667,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
OrderEmailAddress: Text;
OrderEmailSubject: Text;
begin
+ Initialize();
+
// [SCENARIO] User can convert a sales quote to a sales order through the API.
// [GIVEN] Sales quote exists
@@ -751,6 +790,9 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
LibrarySmallBusiness.CreateCustomer(Customer);
LibrarySmallBusiness.CreateItem(Item);
LibrarySmallBusiness.CreateSalesQuoteHeaderWithLines(SalesHeader, Customer, Item, 1, 1);
+ SalesHeader.Validate("Posting Date", WorkDate());
+ SalesHeader.Validate("Document Date", WorkDate());
+ SalesHeader.Modify(true);
end;
local procedure FindSalesHeader(var SalesHeader: Record "Sales Header"; CustomerNo: Text; QuoteNumber: Text): Boolean
@@ -847,4 +889,9 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesShipLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesShipLinesE2E.Codeunit.al
index 3081e6c6df6..9832b0b0f0e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesShipLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesShipLinesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139848 "APIV2 - Sales Ship. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -29,6 +30,8 @@ codeunit 139848 "APIV2 - Sales Ship. Lines E2E"
LineNo: Integer;
SequenceValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Line of a sales shipment
// [GIVEN] A shipment with a line.
@@ -63,6 +66,8 @@ codeunit 139848 "APIV2 - Sales Ship. Lines E2E"
LineNo1: Text;
LineNo2: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Lines of Sales Shipment
// [GIVEN] An sales shipment with lines.
@@ -105,6 +110,8 @@ codeunit 139848 "APIV2 - Sales Ship. Lines E2E"
LineNo1: Text;
LineNo2: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Lines of a sales shipment
// [GIVEN] An sales shipment with lines.
@@ -139,6 +146,8 @@ codeunit 139848 "APIV2 - Sales Ship. Lines E2E"
LineIdTxt: Text;
DimensionSetValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on the Line of a sales shipment and expand the dimension set lines
// [GIVEN] A shipment with a line.
@@ -255,4 +264,9 @@ codeunit 139848 "APIV2 - Sales Ship. Lines E2E"
exit(TargetURL);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesShipmentsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesShipmentsE2E.Codeunit.al
index 230e2af2a5b..bff9ce03db6 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesShipmentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesShipmentsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139847 "APIV2 - Sales Shipments E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -26,6 +27,8 @@ codeunit 139847 "APIV2 - Sales Shipments E2E"
ResponseText: Text;
TargetURL: Text;
begin
+ Initialize();
+
// [SCENARIO] Create 2 sales shipments (post sales order) and use a GET method to retrieve them
// [GIVEN] 2 posted sales shipments
@@ -57,6 +60,8 @@ codeunit 139847 "APIV2 - Sales Shipments E2E"
ShipmentIdTxt: Text;
DimensionSetValue: Text;
begin
+ Initialize();
+
// [SCENARIO] Call GET on a sales shipment and expand the dimension set lines
// [GIVEN] A sales shipment.
@@ -108,4 +113,9 @@ codeunit 139847 "APIV2 - Sales Shipments E2E"
exit(TargetURL);
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalespersonPurchE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalespersonPurchE2E.Codeunit.al
index 00b9b57cfd8..a2e955e7662 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalespersonPurchE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalespersonPurchE2E.Codeunit.al
@@ -14,6 +14,8 @@ codeunit 139882 "APIV2 - Salesperson/Purch E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ShipmentMethodsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ShipmentMethodsE2E.Codeunit.al
index b7f25bf36dd..9cf63b6d4c8 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ShipmentMethodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ShipmentMethodsE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139805 "APIV2 - Shipment Methods E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -21,6 +22,8 @@ codeunit 139805 "APIV2 - Shipment Methods E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2TaxAreasE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2TaxAreasE2E.Codeunit.al
index 3e579576ff6..576f11f9a0f 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2TaxAreasE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2TaxAreasE2E.Codeunit.al
@@ -24,6 +24,8 @@ codeunit 139826 "APIV2 - Tax Areas E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2TaxGroupsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2TaxGroupsE2E.Codeunit.al
index 71058576f58..ec4ef384d27 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2TaxGroupsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2TaxGroupsE2E.Codeunit.al
@@ -23,6 +23,8 @@ codeunit 139808 "APIV2 - Tax Groups E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2TrialBalanceE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2TrialBalanceE2E.Codeunit.al
index f94f316fc30..e4893482e79 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2TrialBalanceE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2TrialBalanceE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139818 "APIV2 - Trial Balance E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -60,6 +61,8 @@ codeunit 139818 "APIV2 - Trial Balance E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2UofME2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2UofME2E.Codeunit.al
index 496d746235c..1548329638f 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2UofME2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2UofME2E.Codeunit.al
@@ -24,6 +24,8 @@ codeunit 139812 "APIV2 - UofM E2E"
UnitOfMeasure: Record "Unit of Measure";
Response: Text;
begin
+ Initialize();
+
// [SCENARIO] User can get the units of measure.
// [GIVEN] Units of measure.
@@ -44,6 +46,8 @@ codeunit 139812 "APIV2 - UofM E2E"
Response: Text;
OldDescription: Text;
begin
+ Initialize();
+
// [SCENARIO] User can update a unit of measure.
// [GIVEN] Units of measure.
@@ -73,6 +77,8 @@ codeunit 139812 "APIV2 - UofM E2E"
UnitOfMeasure: Record "Unit of Measure";
Response: Text;
begin
+ Initialize();
+
// [SCENARIO] User can delete a unit of measure.
// [GIVEN] Units of measure.
@@ -94,6 +100,8 @@ codeunit 139812 "APIV2 - UofM E2E"
Request: Text;
"Code": Text;
begin
+ Initialize();
+
// [SCENARIO] User can insert a unit of measure.
// [GIVEN] A new unit of measure.
@@ -186,6 +194,11 @@ codeunit 139812 "APIV2 - UofM E2E"
Format(UnitOfMeasure."International Standard Code"), InternationalStandardCode,
StrSubstNo(WrongPropertyValueErr, 'internationalStandardCode'));
end;
+
+ local procedure Initialize()
+ begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
}
diff --git a/src/Apps/W1/APIV2/test/src/APIV2VendorPaymentsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2VendorPaymentsE2E.Codeunit.al
index 0fc02556e63..ac23a7d45c1 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2VendorPaymentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2VendorPaymentsE2E.Codeunit.al
@@ -1,6 +1,7 @@
codeunit 139843 "APIV2 - Vendor Payments E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
@@ -884,6 +885,7 @@ codeunit 139843 "APIV2 - Vendor Payments E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryTestInitialize.OnTestInitialize(Codeunit::"APIV2 - Vendor Payments E2E");
if not isInitialized then
diff --git a/src/Apps/W1/APIV2/test/src/APIV2VendorsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2VendorsE2E.Codeunit.al
index fe84521cbd5..85031db1df5 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2VendorsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2VendorsE2E.Codeunit.al
@@ -25,6 +25,8 @@ codeunit 139803 "APIV2 - Vendors E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2itemLedgEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2itemLedgEntriesE2E.Codeunit.al
index f8f1374ccec..5de13ef6b08 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2itemLedgEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2itemLedgEntriesE2E.Codeunit.al
@@ -3,6 +3,7 @@ codeunit 139854 "APIV2 - Item Ledg. Entries E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = IntegrationTest;
TestPermissions = Disabled;
@@ -25,6 +26,8 @@ codeunit 139854 "APIV2 - Item Ledg. Entries E2E"
LibraryERMCountryData: Codeunit "Library - ERM Country Data";
LibraryApplicationArea: Codeunit "Library - Application Area";
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
LibraryApplicationArea.EnableFoundationSetup();
if IsInitialized then
exit;
diff --git a/src/Apps/W1/ExpenseAgent/app/src/Travel Request/Codeunits/TravelRequestApproval.Codeunit.al b/src/Apps/W1/ExpenseAgent/app/src/Travel Request/Codeunits/TravelRequestApproval.Codeunit.al
index b8ee5762dc7..8b290df2331 100644
--- a/src/Apps/W1/ExpenseAgent/app/src/Travel Request/Codeunits/TravelRequestApproval.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/app/src/Travel Request/Codeunits/TravelRequestApproval.Codeunit.al
@@ -6,7 +6,6 @@ namespace Microsoft.ExpenseAgent;
using Microsoft.Finance.SpendRequest;
using System.Telemetry;
-using System.Text;
codeunit 7133 "Travel Request Approval"
{
@@ -318,13 +317,17 @@ codeunit 7133 "Travel Request Approval"
var
ExpenseApprovalSetup: Record "Expense Approval Setup";
ExpenseAgentSetup: Record "Expense Agent Setup";
- SelectionFilterManagement: Codeunit SelectionFilterManagement;
- RecRef: RecordRef;
+ AssignedFilter: TextBuilder;
begin
ExpenseApprovalSetup.SetCurrentKey("Approver No.");
ExpenseApprovalSetup.SetRange("Approver No.", ApproverExpenseUserNo);
- RecRef.GetTable(ExpenseApprovalSetup);
- RequestedForFilter := SelectionFilterManagement.GetSelectionFilter(RecRef, ExpenseApprovalSetup.FieldNo("Expense User No."));
+ ExpenseApprovalSetup.SetLoadFields("Expense User No.");
+ // Ranges between setup rows could include expense users without any approval setup.
+ if ExpenseApprovalSetup.FindSet() then
+ repeat
+ AppendSubmitterFilter(AssignedFilter, ExpenseApprovalSetup."Expense User No.");
+ until ExpenseApprovalSetup.Next() = 0;
+ RequestedForFilter := AssignedFilter.ToText();
ExpenseAgentSetup.GetRecordOnce();
if ExpenseAgentSetup."Default Approver No." = ApproverExpenseUserNo then
@@ -337,7 +340,6 @@ codeunit 7133 "Travel Request Approval"
local procedure AppendDefaultSubmitters(var RequestedForFilter: Text)
var
ExpenseUser: Record "Expense User";
- SelectionFilterManagement: Codeunit SelectionFilterManagement;
DefaultFilter: TextBuilder;
begin
if RequestedForFilter <> '' then
@@ -348,14 +350,23 @@ codeunit 7133 "Travel Request Approval"
ExpenseUser.SetLoadFields("No.");
if ExpenseUser.FindSet() then
repeat
- if DefaultFilter.Length > 0 then
- DefaultFilter.Append('|');
- DefaultFilter.Append(SelectionFilterManagement.AddQuotes(ExpenseUser."No."));
+ AppendSubmitterFilter(DefaultFilter, ExpenseUser."No.");
until ExpenseUser.Next() = 0;
RequestedForFilter := DefaultFilter.ToText();
end;
+ local procedure AppendSubmitterFilter(var SubmitterFilter: TextBuilder; ExpenseUserNo: Code[20])
+ var
+ ExpenseUserFilter: Record "Expense User";
+ begin
+ // Serialize an exact value so filter operators in user numbers remain literal.
+ ExpenseUserFilter.SetRange("No.", ExpenseUserNo);
+ if SubmitterFilter.Length > 0 then
+ SubmitterFilter.Append('|');
+ SubmitterFilter.Append(ExpenseUserFilter.GetFilter("No."));
+ end;
+
var
FeatureTelemetry: Codeunit "Feature Telemetry";
ExpenseActivityLogMgt: Codeunit "Expense Activity Log Mgt.";
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseActivityLogAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseActivityLogAPITest.Codeunit.al
index 90781c7634d..c88171be4d8 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseActivityLogAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseActivityLogAPITest.Codeunit.al
@@ -22,7 +22,6 @@ codeunit 148343 "Expense Activity Log API Test"
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
LibrarySetupStorage: Codeunit "Library - Setup Storage";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expenseActivityLogEntries', Locked = true;
ExpenseReportsServiceNameTok: Label 'expenseReports', Locked = true;
@@ -476,11 +475,14 @@ codeunit 148343 "Expense Activity Log API Test"
RequestBody.WriteTo(RequestText);
ReportURL := LibraryGraphMgt.CreateTargetURLWithSubpage(
Format(SubmitterExpenseUser.SystemId), Page::"Expense Users API", ExpenseUsersServiceNameTok, ExpenseReportsServiceNameTok);
- ReportURL += '(' + LibraryGraphMgt.StripBrackets(Format(ExpenseReportHeader.SystemId)) + ')';
+ ReportURL := LibraryGraphMgt.AppendPathToTargetURL(
+ ReportURL, '(' + LibraryGraphMgt.StripBrackets(Format(ExpenseReportHeader.SystemId)) + ')');
Commit();
// [WHEN] The standard submission action is requested through the submitting user.
- LibraryGraphMgt.PostToWebServiceAndCheckResponseCode(ReportURL + '/' + SubmitWithCommentActionTok, RequestText, ResponseText, 200);
+ Clear(ResponseText);
+ LibraryGraphMgt.PostToWebServiceAndCheckResponseCode(
+ LibraryGraphMgt.AppendPathToTargetURL(ReportURL, '/' + SubmitWithCommentActionTok), RequestText, ResponseText, 200);
// [THEN] Exactly one structured snapshot is visible without a new callback or capability.
ExpenseActivityLogEntry.SetRange("Subject System ID", ExpenseReportHeader.SystemId);
@@ -488,7 +490,8 @@ codeunit 148343 "Expense Activity Log API Test"
Assert.RecordCount(ExpenseActivityLogEntry, 1);
ExpenseActivityLogEntry.FindFirst();
Clear(ResponseText);
- LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, ReportURL + '/' + ServiceNameTok, 200);
+ LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(
+ ResponseText, LibraryGraphMgt.AppendPathToTargetURL(ReportURL, '/' + ServiceNameTok), 200);
VerifyPolicyCategoryCode(ResponseText, ExpenseCategory.Code);
ResponseText := LowerCase(ResponseText);
Assert.AreNotEqual(0, StrPos(ResponseText, '"eventtype":"policyevaluated"'), 'The event type must identify the policy snapshot.');
@@ -502,7 +505,8 @@ codeunit 148343 "Expense Activity Log API Test"
HistoryURL := LibraryGraphMgt.CreateTargetURLWithSubpage(
Format(SubmitterExpenseUser.SystemId), Page::"Expense Users API", ExpenseUsersServiceNameTok, ServiceNameTok);
Clear(ResponseText);
- LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, HistoryURL + '?$filter=historyActorRole eq ''Submitter''', 200);
+ LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(
+ ResponseText, LibraryGraphMgt.AppendQueryParameterToTargetURL(HistoryURL, '$filter=historyActorRole eq ''Submitter'''), 200);
// [THEN] The real submitter sees the agent snapshot in the complete timeline.
Assert.AreNotEqual(0, StrPos(LowerCase(ResponseText), LowerCase(LibraryGraphMgt.StripBrackets(Format(ExpenseActivityLogEntry.SystemId)))), 'The submitter timeline must contain the snapshot.');
@@ -511,7 +515,8 @@ codeunit 148343 "Expense Activity Log API Test"
HistoryURL := LibraryGraphMgt.CreateTargetURLWithSubpage(
Format(ApproverExpenseUser.SystemId), Page::"Expense Users API", ExpenseUsersServiceNameTok, ServiceNameTok);
Clear(ResponseText);
- LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, HistoryURL + '?$filter=historyActorRole eq ''Approver''', 200);
+ LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(
+ ResponseText, LibraryGraphMgt.AppendQueryParameterToTargetURL(HistoryURL, '$filter=historyActorRole eq ''Approver'''), 200);
// [THEN] The agent event must not grant approver participation.
Assert.AreEqual(0, StrPos(LowerCase(ResponseText), LowerCase(LibraryGraphMgt.StripBrackets(Format(ExpenseReportHeader.SystemId)))), 'The agent snapshot must not grant approver history access.');
@@ -803,7 +808,6 @@ codeunit 148343 "Expense Activity Log API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense Activity Log API Test");
LibraryERMCountryData.UpdateGeneralLedgerSetup();
if not ExpenseAgentSetup.Get() then begin
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseCapabilitiesAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseCapabilitiesAPITest.Codeunit.al
index 4436c873d54..056859c9f9c 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseCapabilitiesAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseCapabilitiesAPITest.Codeunit.al
@@ -18,7 +18,6 @@ codeunit 148318 "Expense Capabilities API Test"
LibraryExpenseAgent: Codeunit "Library - Expense Agent";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expenseCapabilities', Locked = true;
ActivityLogCapabilityNameTok: Label 'activityLog', Locked = true;
@@ -104,8 +103,6 @@ codeunit 148318 "Expense Capabilities API Test"
TargetURL: Text;
ResponseText: Text;
begin
- // Excluded in BCApps CI until authenticated OData execution in a dedicated test company
- // with disabled isolation is available; then remove this method's DisabledTest.json entry.
// [SCENARIO] Travel requests are advertised when the supporting APIs are installed.
Initialize();
@@ -248,7 +245,6 @@ codeunit 148318 "Expense Capabilities API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense Capabilities API Test");
IsInitialized := true;
Commit();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpensePerDiemLocationsTest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpensePerDiemLocationsTest.Codeunit.al
index 40fdf025b82..17ff4df8cfe 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpensePerDiemLocationsTest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpensePerDiemLocationsTest.Codeunit.al
@@ -17,7 +17,6 @@ codeunit 148349 "Expense PerDiem Locations Test"
LibraryUtility: Codeunit "Library - Utility";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
[Test]
@@ -82,11 +81,11 @@ codeunit 148349 "Expense PerDiem Locations Test"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryTestInitialize.OnTestInitialize(Codeunit::"Expense PerDiem Locations Test");
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense PerDiem Locations Test");
IsInitialized := true;
Commit();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseProjectsAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseProjectsAPITest.Codeunit.al
index 45ed9ae6d25..b7387da12b6 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseProjectsAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseProjectsAPITest.Codeunit.al
@@ -24,7 +24,6 @@ codeunit 148331 "Expense Projects API Test"
LibraryHumanResource: Codeunit "Library - Human Resource";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ExpenseUsersServiceNameTok: Label 'expenseUsers', Locked = true;
ProjectsServiceNameTok: Label 'expenseProjects', Locked = true;
@@ -723,7 +722,6 @@ codeunit 148331 "Expense Projects API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense Projects API Test");
if not ExpenseAgentSetup.Get() then begin
ExpenseAgentSetup.Init();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseUsersAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseUsersAPITest.Codeunit.al
index f80c8eb6e80..f048ed31877 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseUsersAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseUsersAPITest.Codeunit.al
@@ -21,7 +21,6 @@ codeunit 148315 "Expense Users API Test"
LibraryUtility: Codeunit "Library - Utility";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expenseUsers', Locked = true;
EmployeesServiceNameTok: Label 'employees', Locked = true;
@@ -125,7 +124,6 @@ codeunit 148315 "Expense Users API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense Users API Test");
if not ExpenseAgentSetup.Get() then begin
ExpenseAgentSetup.Init();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseVATSpecAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseVATSpecAPITest.Codeunit.al
index 7c30f7723fa..99bad8bb916 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseVATSpecAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseVATSpecAPITest.Codeunit.al
@@ -11,6 +11,7 @@ codeunit 148348 "Expense VAT Spec. API Test"
{
Subtype = Test;
TestType = IntegrationTest;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
var
@@ -19,7 +20,6 @@ codeunit 148348 "Expense VAT Spec. API Test"
LibraryERM: Codeunit "Library - ERM";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expenseVATSpecifications', Locked = true;
@@ -89,7 +89,6 @@ codeunit 148348 "Expense VAT Spec. API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense VAT Spec. API Test");
LibraryExpense.SetupNumberSeriesInExpenseMgmt();
LibraryERM.CreateVATBusinessPostingGroup(VATBusinessPostingGroup);
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/PoliciesToEvaluateAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/PoliciesToEvaluateAPITest.Codeunit.al
index ef512122f3d..156bc8b877c 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/PoliciesToEvaluateAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/PoliciesToEvaluateAPITest.Codeunit.al
@@ -18,7 +18,6 @@ codeunit 148345 "Policies To Evaluate API Test"
LibraryExpense: Codeunit "Library - Expense";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ExpenseReportLinesServiceNameTok: Label 'expenseReportLines', Locked = true;
@@ -117,7 +116,6 @@ codeunit 148345 "Policies To Evaluate API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Policies To Evaluate API Test");
LibraryERMCountryData.CreateVATData();
LibraryERMCountryData.UpdateGeneralPostingSetup();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/PolicyEvaluationsAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/PolicyEvaluationsAPITest.Codeunit.al
index 97488f4294c..208a39d76dc 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/PolicyEvaluationsAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/PolicyEvaluationsAPITest.Codeunit.al
@@ -18,7 +18,6 @@ codeunit 148344 "Policy Evaluations API Test"
LibraryExpense: Codeunit "Library - Expense";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expensePolicyEvaluations', Locked = true;
BadRequestResponseErr: Label 'Response code is 400', Locked = true;
@@ -121,7 +120,6 @@ codeunit 148344 "Policy Evaluations API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Policy Evaluations API Test");
LibraryERMCountryData.CreateVATData();
LibraryERMCountryData.UpdateGeneralPostingSetup();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/TravelRequestsAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/TravelRequestsAPITest.Codeunit.al
index 2134bd14296..7657306c31b 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/TravelRequestsAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/TravelRequestsAPITest.Codeunit.al
@@ -10,12 +10,6 @@ using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.SpendRequest;
using Microsoft.HumanResources.Employee;
-// These HTTP tests remain excluded in Expense_Agent_Tests.DisabledTest.json until the
-// authentication prerequisite provides an authenticated OData endpoint and a dedicated
-// test company with committed fixtures and disabled test isolation.
-// In-process employee filtering, traveler mapping/navigation, lifecycle, date, and scope coverage
-// in "Spend Request Test", and restrictive role coverage in "Expense Permissions Test", remain enabled.
-// Only the HTTP scenarios are excluded.
codeunit 148347 "Travel Requests API Test"
{
Subtype = Test;
@@ -31,7 +25,6 @@ codeunit 148347 "Travel Requests API Test"
LibraryHumanResource: Codeunit "Library - Human Resource";
LibraryRandom: Codeunit "Library - Random";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ExpenseUsersServiceNameTok: Label 'expenseUsers', Locked = true;
#if not CLEAN30
@@ -1291,7 +1284,6 @@ codeunit 148347 "Travel Requests API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Travel Requests API Test");
if not ExpenseAgentSetup.Get() then begin
ExpenseAgentSetup.Init();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/ExpensePermissionsTest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/ExpensePermissionsTest.Codeunit.al
index aa05633221e..89ecec0c706 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/ExpensePermissionsTest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/ExpensePermissionsTest.Codeunit.al
@@ -32,6 +32,9 @@ codeunit 148338 "Expense Permissions Test"
AutomationPermissionSetTok: Label 'Exp. Auto Test', Locked = true;
D365BasicPermissionSetTok: Label 'D365 BASIC', Locked = true;
ExpenseAgentPermissionSetTok: Label 'Expense Agent', Locked = true;
+ DetailOnlyPermissionSetTok: Label 'Exp. Detail Test', Locked = true;
+ HeaderModifyPermissionErr: Label 'TableData %1 %2 IndirectModify', Comment = '%1 = Spend Request table ID, %2 = Spend Request table caption', Locked = true;
+ RequestMustBeOpenErr: Label 'The %1 %2 must have the status %3.', Comment = '%1 = document type description, %2 = document number, %3 = Open status';
ExpenseAgentAppIdTok: Label '66efe10c-8033-403b-a86d-77c0887178ba', Locked = true;
ExpenseMgmtAdminPermissionSetTok: Label 'Expense Mgmt. Admin', Locked = true;
SecurityPermissionSetTok: Label 'SECURITY', Locked = true;
@@ -63,15 +66,100 @@ codeunit 148338 "Expense Permissions Test"
[Test]
procedure D365BasicCanUpdateTravelRequestDetailsIndirectly()
begin
+ // [SCENARIO 646383] D365 BASIC applies successive detail amount deltas without direct header or detail writes.
+ Initialize();
VerifyTravelRequestDetailUpdateIndirectly(D365BasicPermissionSetTok);
end;
[Test]
procedure ExpenseAgentCanUpdateTravelRequestDetailsIndirectly()
begin
+ // [SCENARIO 646383] Expense Agent applies successive detail amount deltas without direct header or detail writes.
+ Initialize();
VerifyTravelRequestDetailUpdateIndirectly(ExpenseAgentPermissionSetTok);
end;
+ [Test]
+ procedure DetailAmountUpdateFailsWithoutHeaderModifyPermission()
+ var
+ SpendRequest: Record "Spend Request";
+ SpendRequestDetail: Record "Spend Request Detail";
+ TravelRequestSubform: TestPage "Travel Request Subform";
+ SpendRequestCanWrite: Boolean;
+ SpendRequestDetailCanWrite: Boolean;
+ PermissionErrorCode: Text;
+ PermissionErrorText: Text;
+ begin
+ // [SCENARIO 646383] A caller with only header read and indirect detail modify cannot update the header through an amount change.
+ Initialize();
+
+ // [GIVEN] An open request "R" with a committed detail "D" worth 10.
+ LibraryExpense.CreateSpendRequest(SpendRequest);
+ LibraryExpense.CreateSpendRequestDetail(SpendRequestDetail, SpendRequest."No.", 10);
+ VerifyTravelRequestAmounts(SpendRequest, SpendRequestDetail, 10);
+ Commit();
+ LibraryLowerPermissions.StartLoggingNAVPermissions();
+ LibraryLowerPermissions.SetExactPermissionSet(DetailOnlyPermissionSetTok);
+ SpendRequestCanWrite := SpendRequest.WritePermission();
+ SpendRequestDetailCanWrite := SpendRequestDetail.WritePermission();
+ TravelRequestSubform.OpenEdit();
+ TravelRequestSubform.GoToRecord(SpendRequestDetail);
+
+ // [WHEN] The caller changes the amount through the public page.
+ asserterror TravelRequestSubform.Amount.SetValue(20);
+ PermissionErrorCode := GetLastErrorCode();
+ PermissionErrorText := GetLastErrorText();
+ TravelRequestSubform.Close();
+ RestoreFullPermissions();
+ LibraryLowerPermissions.StopLoggingNAVPermissions();
+
+ // [THEN] The page reports the specific header modify denial and neither record changes.
+ VerifyCapturedPageError(PermissionErrorCode, PermissionErrorText,
+ StrSubstNo(HeaderModifyPermissionErr, Database::"Spend Request", SpendRequest.TableCaption()));
+ Assert.IsFalse(SpendRequestCanWrite, 'The caller must not have direct request write permission.');
+ Assert.IsFalse(SpendRequestDetailCanWrite, 'The caller must not have direct detail write permission.');
+ VerifyTravelRequestAmounts(SpendRequest, SpendRequestDetail, 10);
+ end;
+
+ [Test]
+ procedure ReleasedTravelRequestDetailAmountCannotBeUpdatedIndirectly()
+ var
+ SpendRequest: Record "Spend Request";
+ SpendRequestDetail: Record "Spend Request Detail";
+ TravelRequestSubform: TestPage "Travel Request Subform";
+ ValidationErrorCode: Text;
+ ValidationErrorText: Text;
+ begin
+ // [SCENARIO 646383] Indirect header modification does not bypass the Open status guard.
+ Initialize();
+
+ // [GIVEN] A released request "R" with a committed detail "D" worth 10.
+ LibraryExpense.CreateSpendRequest(SpendRequest);
+ LibraryExpense.CreateSpendRequestDetail(SpendRequestDetail, SpendRequest."No.", 10);
+ VerifyTravelRequestAmounts(SpendRequest, SpendRequestDetail, 10);
+ LibraryExpense.SetSpendRequestStatus(SpendRequest, SpendRequest.Status::Released);
+ Commit();
+ LibraryLowerPermissions.StartLoggingNAVPermissions();
+ LibraryLowerPermissions.SetExactPermissionSet(ExpenseAgentPermissionSetTok);
+ TravelRequestSubform.OpenEdit();
+ TravelRequestSubform.GoToRecord(SpendRequestDetail);
+
+ // [WHEN] The caller changes the amount through the public page.
+ asserterror TravelRequestSubform.Amount.SetValue(20);
+ ValidationErrorCode := GetLastErrorCode();
+ ValidationErrorText := GetLastErrorText();
+ TravelRequestSubform.Close();
+ RestoreFullPermissions();
+ LibraryLowerPermissions.StopLoggingNAVPermissions();
+
+ // [THEN] The status guard rejects the change and the released request retains both amounts.
+ VerifyCapturedPageError(ValidationErrorCode, ValidationErrorText,
+ StrSubstNo(RequestMustBeOpenErr, SpendRequest.GetDocumentTypeDescription(), SpendRequest."No.", SpendRequest.Status::Open));
+ VerifyTravelRequestAmounts(SpendRequest, SpendRequestDetail, 10);
+ SpendRequest.Get(SpendRequest."No.");
+ Assert.AreEqual(SpendRequest.Status::Released, SpendRequest.Status, 'The denied amount change must preserve the Released status.');
+ end;
+
[Test]
procedure D365BasicCanInsertActivityIndirectly()
begin
@@ -139,20 +227,29 @@ codeunit 148338 "Expense Permissions Test"
ExpenseUser: Record "Expense User";
Approver: Record "Expense User";
TravelRequestApproval: Codeunit "Travel Request Approval";
+ ExpenseUserCanRead: Boolean;
+ PermissionErrorCode: Text;
+ PermissionErrorText: Text;
begin
// [SCENARIO] An employee-only caller cannot approve requests without access to Expense User data.
Initialize();
CreateTravelRequestApprovalScenario(SpendRequest, ExpenseUser, Approver);
+ // Preserve the fixture for the post-denial checks when asserterror rolls back.
Commit();
LibraryLowerPermissions.StartLoggingNAVPermissions();
- SetCallerPermissions(EmployeeOnlyPermissionSetTok, ExpenseUser);
+ LibraryLowerPermissions.SetExactPermissionSet(EmployeeOnlyPermissionSetTok);
+ ExpenseUserCanRead := ExpenseUser.ReadPermission();
asserterror TravelRequestApproval.Approve(SpendRequest, Approver."No.");
- Assert.ExpectedErrorCode('DB:ClientReadDenied');
- Assert.ExpectedError(ExpenseUser.TableCaption());
+ // Capture the denial before permission cleanup can change the last-error state.
+ PermissionErrorCode := GetLastErrorCode();
+ PermissionErrorText := GetLastErrorText();
RestoreFullPermissions();
LibraryLowerPermissions.StopLoggingNAVPermissions();
+ Assert.AreEqual('DB:ClientReadDenied', PermissionErrorCode, 'Approval must fail because Expense User read access is denied.');
+ Assert.ExpectedMessage(ExpenseUser.TableCaption(), PermissionErrorText);
+ Assert.IsFalse(ExpenseUserCanRead, 'The caller must not have direct access to Expense User.');
SpendRequest.Get(SpendRequest."No.");
Assert.AreEqual(SpendRequest.Status::Released, SpendRequest.Status, 'A denied approval must preserve the request status.');
ExpenseReportHeader.SetRange("Spend Request No.", SpendRequest."No.");
@@ -563,8 +660,7 @@ codeunit 148338 "Expense Permissions Test"
SpendRequestDetail: Record "Spend Request Detail";
TravelRequestSubform: TestPage "Travel Request Subform";
begin
- // [SCENARIO] Editing a detail through its page can update both the line and its header total.
- Initialize();
+ // [GIVEN] An open request "R" with a detail "D" worth 10.
LibraryExpense.CreateSpendRequest(SpendRequest);
LibraryExpense.CreateSpendRequestDetail(SpendRequestDetail, SpendRequest."No.", 10);
@@ -583,10 +679,41 @@ codeunit 148338 "Expense Permissions Test"
LibraryLowerPermissions.StopLoggingNAVPermissions();
// [THEN] Both the line change and the base table's header update are persisted.
+ VerifyTravelRequestAmounts(SpendRequest, SpendRequestDetail, 20);
+
+ // [GIVEN] The same exact role still has no direct writes after the first update.
+ LibraryLowerPermissions.StartLoggingNAVPermissions();
+ LibraryLowerPermissions.SetExactPermissionSet(PermissionSetId);
+ Assert.IsFalse(SpendRequest.WritePermission(), 'The caller must not have direct request write permission.');
+ Assert.IsFalse(SpendRequestDetail.WritePermission(), 'The caller must not have direct detail write permission.');
+
+ // [WHEN] The persisted detail amount is increased again from 20 to 30.
+ Clear(TravelRequestSubform);
+ TravelRequestSubform.OpenEdit();
+ TravelRequestSubform.GoToRecord(SpendRequestDetail);
+ TravelRequestSubform.Amount.SetValue(30);
+ TravelRequestSubform.Close();
+ RestoreFullPermissions();
+ LibraryLowerPermissions.StopLoggingNAVPermissions();
+
+ // [THEN] The second update applies only its delta, not the entire new amount.
+ VerifyTravelRequestAmounts(SpendRequest, SpendRequestDetail, 30);
+ end;
+
+ local procedure VerifyTravelRequestAmounts(var SpendRequest: Record "Spend Request"; var SpendRequestDetail: Record "Spend Request Detail"; ExpectedAmount: Decimal)
+ begin
SpendRequestDetail.Get(SpendRequestDetail."Spend Request No.", SpendRequestDetail."Line No.");
SpendRequest.Get(SpendRequest."No.");
- Assert.AreEqual(20, SpendRequestDetail."Expected Amount", 'The detail amount must be updated through indirect permissions.');
- Assert.AreEqual(20, SpendRequest."Total Expected Amount (LCY)", 'The detail update must also update the header total.');
+ Assert.AreEqual(ExpectedAmount, SpendRequestDetail."Expected Amount", 'The detail amount must match the page operation.');
+ Assert.AreEqual(ExpectedAmount, SpendRequestDetail."Expected Amount (LCY)", 'The LCY detail amount must match the page operation.');
+ Assert.AreEqual(ExpectedAmount, SpendRequest."Total Expected Amount", 'The request amount must reflect the detail delta exactly once.');
+ Assert.AreEqual(ExpectedAmount, SpendRequest."Total Expected Amount (LCY)", 'The LCY request amount must reflect the detail delta exactly once.');
+ end;
+
+ local procedure VerifyCapturedPageError(ErrorCode: Text; ErrorText: Text; ExpectedErrorText: Text)
+ begin
+ Assert.AreEqual('TestValidation', ErrorCode, 'The amount field must fail through the TestPage validation wrapper.');
+ Assert.ExpectedMessage(ExpectedErrorText, ErrorText);
end;
local procedure VerifyCompanyEmailSynchronization(PermissionSetId: Code[20])
diff --git a/src/Apps/W1/ExpenseAgent/test/src/Helper/ExpenseAPITestAuthHelper.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/Helper/ExpenseAPITestAuthHelper.Codeunit.al
deleted file mode 100644
index 22caab107b3..00000000000
--- a/src/Apps/W1/ExpenseAgent/test/src/Helper/ExpenseAPITestAuthHelper.Codeunit.al
+++ /dev/null
@@ -1,66 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Test.ExpenseAgent;
-
-using System.Azure.KeyVault;
-using System.Environment;
-using System.Security.AccessControl;
-using System.Text;
-
-///
-/// Test-only authentication helper for the API test codeunits in this app.
-///
-codeunit 148332 "Expense API Test Auth Helper"
-{
- Access = Internal;
- EventSubscriberInstance = Manual;
-
- var
- NavServerUserPasswordKeyTok: Label 'NavServerUserPassword', Locked = true;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Library - Graph Mgt", OnAfterInitializeWebRequestWithURL, '', false, false)]
- local procedure OnAfterInitializeWebRequest(var HttpRequestMessage: HttpRequestMessage)
- var
- Base64Convert: Codeunit "Base64 Convert";
- RequestHeaders: HttpHeaders;
- Password: SecretText;
- begin
- if not ShouldInjectBasicAuth() then
- exit;
- if not TryGetPassword(Password) then
- exit;
- HttpRequestMessage.GetHeaders(RequestHeaders);
- if RequestHeaders.Contains('Authorization') or RequestHeaders.ContainsSecret('Authorization') then
- RequestHeaders.Remove('Authorization');
- RequestHeaders.Add('Authorization', SecretStrSubstNo('Basic %1', Base64Convert.ToBase64(SecretStrSubstNo('%1:%2', UserId(), Password))));
- end;
-
- local procedure ShouldInjectBasicAuth(): Boolean
- var
- User: Record User;
- EnvironmentInfo: Codeunit "Environment Information";
- begin
- if EnvironmentInfo.IsSaaSInfrastructure() then
- exit(false);
-
- // If the current user authenticates via Windows
- if not User.Get(UserSecurityId()) then
- exit(false);
- if User."Windows Security ID" <> '' then
- exit(false);
-
- // Inject Basic auth when using username password authentication.
- exit(true);
- end;
-
- [TryFunction]
- local procedure TryGetPassword(var Password: SecretText)
- var
- AzureKeyVault: Codeunit "Azure Key Vault";
- begin
- AzureKeyVault.GetAzureKeyVaultSecret(NavServerUserPasswordKeyTok, Password);
- end;
-}
-
diff --git a/src/Apps/W1/ExpenseAgent/test/src/Permissions/ExpDetailTest.PermissionSet.al b/src/Apps/W1/ExpenseAgent/test/src/Permissions/ExpDetailTest.PermissionSet.al
new file mode 100644
index 00000000000..9b2f1c33517
--- /dev/null
+++ b/src/Apps/W1/ExpenseAgent/test/src/Permissions/ExpDetailTest.PermissionSet.al
@@ -0,0 +1,20 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+namespace Microsoft.Test.ExpenseAgent;
+
+using Microsoft.Finance.SpendRequest;
+using System.Security.AccessControl;
+
+permissionset 148303 "Exp. Detail Test"
+{
+ Access = Internal;
+ Assignable = false;
+ IncludedPermissionSets = "D365 READ";
+
+ // Keep the header read-only, while allowing the page to modify a detail indirectly.
+ Permissions = tabledata "Spend Request Detail" = m,
+ codeunit Assert = X,
+ codeunit "Library - Lower Permissions" = X;
+}
diff --git a/src/Apps/W1/ExpenseAgent/test/src/SpendRequestTest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/SpendRequestTest.Codeunit.al
index b18c4701d05..c93fa9338d1 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/SpendRequestTest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/SpendRequestTest.Codeunit.al
@@ -62,6 +62,8 @@ codeunit 148339 "Spend Request Test"
UnassignedTravelRequestHiddenMsg: Label 'The approver should not see a travel request assigned to another approver.';
DefaultTravelRequestVisibleMsg: Label 'The default approver should see travel requests without an assigned approver.';
ApproverWithoutRequestsMsg: Label 'An approver without assigned travel requests should receive an empty result.';
+ ApproverFilterExpectedRequestErr: Label '%1 Requested For filter: %2. Expected request: %3.', Comment = '%1 = assertion message, %2 = Requested For filter, %3 = expected request number';
+ ApproverFilterUnexpectedRequestErr: Label '%1 Requested For filter: %2. Expected request: %3. Unauthorized request: %4.', Comment = '%1 = assertion message, %2 = Requested For filter, %3 = expected request number, %4 = unauthorized request number';
SpendReqNoSetMsg: Label 'The Spend Request No. should be assigned to the expense report line.';
HeaderSpendReqNoSetMsg: Label 'The Spend Request No. should be assigned to the expense report header.';
HeaderCloseFlagMsg: Label 'The header should store the confirmed close flag.';
@@ -1877,21 +1879,108 @@ codeunit 148339 "Spend Request Test"
procedure ApproverFilterReturnsDefaultApproverTravelRequests()
begin
// [SCENARIO] The default approver sees requests without an explicit approval assignment.
- VerifyDefaultApproverFilter('', '');
+ Initialize();
+
+ VerifyDefaultApproverFilter('', '', true);
end;
[Test]
procedure DefaultApproverFilterQuotesWildcardUserNo()
begin
// [SCENARIO] A literal wildcard user number must not expose another approver's requests.
- VerifyDefaultApproverFilter('*', 'TR-OTHER');
+ Initialize();
+
+ VerifyDefaultApproverFilter('*', 'TR-OTHER', true);
end;
[Test]
procedure DefaultApproverFilterQuotesPipeUserNo()
begin
// [SCENARIO] A pipe in a user number must not become an OR filter for other users.
- VerifyDefaultApproverFilter('TR-A|TR-B', 'TR-A');
+ Initialize();
+
+ VerifyDefaultApproverFilter('TR-A|TR-B', 'TR-A', true);
+ end;
+
+ [Test]
+ procedure ApproverFilterQuotesExplicitWildcardUserNo()
+ begin
+ // [SCENARIO] An explicitly assigned literal wildcard user must not expose another approver's requests.
+ Initialize();
+
+ VerifyDefaultApproverFilter('*', 'TR-OTHER', false);
+ end;
+
+ [Test]
+ procedure ApproverFilterQuotesExplicitPipeUserNo()
+ begin
+ // [SCENARIO] An explicitly assigned user with a pipe in its number must not expose another approver's requests.
+ Initialize();
+
+ VerifyDefaultApproverFilter('TR-A|TR-B', 'TR-A', false);
+ end;
+
+ [Test]
+ procedure ApproverFilterDoesNotIncludeUnassignedUserBetweenAssignedUsers()
+ var
+ FirstTravelRequest: Record "Spend Request";
+ LastTravelRequest: Record "Spend Request";
+ UnassignedTravelRequest: Record "Spend Request";
+ FilteredTravelRequest: Record "Spend Request";
+ FirstExpenseUser: Record "Expense User";
+ LastExpenseUser: Record "Expense User";
+ UnassignedExpenseUser: Record "Expense User";
+ AssignedApprover: Record "Expense User";
+ DefaultApprover: Record "Expense User";
+ ExpenseApprovalSetup: Record "Expense Approval Setup";
+ TravelRequestApproval: Codeunit "Travel Request Approval";
+ begin
+ // [SCENARIO] Adjacent approval setups must not expose a user between them who belongs to another default approver.
+ Initialize();
+
+ // [GIVEN] Approver "A" and default approver "B", with their user numbers outside the tested range.
+ ExpenseApprovalSetup.DeleteAll();
+ LibraryExpense.UpdateEnableAgentInAgentSetup(true);
+ CreateApprover(AssignedApprover);
+ AssignedApprover.Rename('FILTER-APP-A');
+ CreateApprover(DefaultApprover);
+ DefaultApprover.Rename('FILTER-APP-B');
+ SetDefaultApprover(DefaultApprover."No.");
+
+ // [GIVEN] Released requests for "TR-A" and "TR-C" explicitly assigned to "A".
+ CreateReleasableSpendRequest(FirstTravelRequest, FirstExpenseUser);
+ FirstExpenseUser.Rename('TR-A');
+ FirstTravelRequest.Get(FirstTravelRequest."No.");
+ LibraryExpense.SetSpendRequestStatus(FirstTravelRequest, FirstTravelRequest.Status::Released);
+ ExpenseApprovalSetup.Get(FirstExpenseUser."No.");
+ ExpenseApprovalSetup.Validate("Approver No.", AssignedApprover."No.");
+ ExpenseApprovalSetup.Modify(true);
+ CreateReleasableSpendRequest(LastTravelRequest, LastExpenseUser);
+ LastExpenseUser.Rename('TR-C');
+ LastTravelRequest.Get(LastTravelRequest."No.");
+ LibraryExpense.SetSpendRequestStatus(LastTravelRequest, LastTravelRequest.Status::Released);
+ ExpenseApprovalSetup.Get(LastExpenseUser."No.");
+ ExpenseApprovalSetup.Validate("Approver No.", AssignedApprover."No.");
+ ExpenseApprovalSetup.Modify(true);
+
+ // [GIVEN] A released request for "TR-B" with no setup, so it belongs to default approver "B".
+ CreateReleasableSpendRequest(UnassignedTravelRequest, UnassignedExpenseUser);
+ UnassignedExpenseUser.Rename('TR-B');
+ UnassignedTravelRequest.Get(UnassignedTravelRequest."No.");
+ LibraryExpense.SetSpendRequestStatus(UnassignedTravelRequest, UnassignedTravelRequest.Status::Released);
+ ExpenseApprovalSetup.Get(UnassignedExpenseUser."No.");
+ ExpenseApprovalSetup.Delete(true);
+ VerifyApproverFilterRangeGapSetup(
+ FirstTravelRequest, LastTravelRequest, UnassignedTravelRequest, AssignedApprover."No.", DefaultApprover."No.");
+
+ // [WHEN] "A"'s filter is applied to pending travel requests.
+ FilteredTravelRequest.SetRange("Document Type", FilteredTravelRequest."Document Type"::"Travel Request");
+ FilteredTravelRequest.SetRange(Status, FilteredTravelRequest.Status::Released);
+ TravelRequestApproval.ApplyApproverFilter(FilteredTravelRequest, AssignedApprover.SystemId);
+
+ // [THEN] The requests for "TR-A" and "TR-C" are visible, but the request for "TR-B" is hidden.
+ VerifyApproverFilterRangeGapResults(
+ FilteredTravelRequest, FirstTravelRequest."No.", LastTravelRequest."No.", UnassignedTravelRequest."No.");
end;
[Test]
@@ -3173,7 +3262,7 @@ codeunit 148339 "Spend Request Test"
ExpenseAgentSetup.Modify(true);
end;
- local procedure VerifyDefaultApproverFilter(DefaultExpenseUserNo: Code[20]; OtherExpenseUserNo: Code[20])
+ local procedure VerifyDefaultApproverFilter(DefaultExpenseUserNo: Code[20]; OtherExpenseUserNo: Code[20]; UseDefaultFallback: Boolean)
var
DefaultTravelRequest: Record "Spend Request";
OtherTravelRequest: Record "Spend Request";
@@ -3182,11 +3271,13 @@ codeunit 148339 "Spend Request Test"
OtherExpenseUser: Record "Expense User";
DefaultApprover: Record "Expense User";
OtherApprover: Record "Expense User";
+ ExpenseApprovalSetup: Record "Expense Approval Setup";
TravelRequestApproval: Codeunit "Travel Request Approval";
+ ExpectedApproverNo: Code[20];
begin
- Initialize();
-
- // [GIVEN] A default approver, an unassigned request, and a request assigned to another approver.
+ // [GIVEN] Default approver "A", a request for "U", and another request assigned to approver "B".
+ // Initialize deletes expense users without their OnDelete trigger, leaving approval setups behind.
+ ExpenseApprovalSetup.DeleteAll();
LibraryExpense.UpdateEnableAgentInAgentSetup(true);
CreateApprover(DefaultApprover);
SetDefaultApprover(DefaultApprover."No.");
@@ -3194,28 +3285,93 @@ codeunit 148339 "Spend Request Test"
if DefaultExpenseUserNo <> '' then begin
DefaultExpenseUser.Rename(DefaultExpenseUserNo);
DefaultTravelRequest.Get(DefaultTravelRequest."No.");
- DefaultTravelRequest.TestField("Requested For", DefaultExpenseUserNo);
+ Assert.AreEqual(DefaultExpenseUserNo, DefaultTravelRequest."Requested For", 'The request must retain the literal renamed user number.');
end;
LibraryExpense.SetSpendRequestStatus(DefaultTravelRequest, DefaultTravelRequest.Status::Released);
CreateReleasableSpendRequest(OtherTravelRequest, OtherExpenseUser);
if OtherExpenseUserNo <> '' then begin
OtherExpenseUser.Rename(OtherExpenseUserNo);
OtherTravelRequest.Get(OtherTravelRequest."No.");
- OtherTravelRequest.TestField("Requested For", OtherExpenseUserNo);
+ Assert.AreEqual(OtherExpenseUserNo, OtherTravelRequest."Requested For", 'The other request must retain the literal renamed user number.');
end;
CreateApproverForExpenseUser(OtherApprover, OtherExpenseUser);
LibraryExpense.SetSpendRequestStatus(OtherTravelRequest, OtherTravelRequest.Status::Released);
+ // [GIVEN] "U" is either explicitly assigned to "A" or has no setup and must use the default fallback.
+ // Both setting the default approver and inserting expense users create explicit assignments.
+ ExpenseApprovalSetup.Get(DefaultExpenseUser."No.");
+ Assert.AreEqual(DefaultApprover."No.", ExpenseApprovalSetup."Approver No.", 'The initial fixture must exercise the explicit-assignment path.');
+ ExpectedApproverNo := DefaultApprover."No.";
+ if UseDefaultFallback then begin
+ ExpenseApprovalSetup.Delete(true);
+ ExpectedApproverNo := '';
+ end;
+ DefaultExpenseUser.CalcFields("Approver No.");
+ Assert.AreEqual(ExpectedApproverNo, DefaultExpenseUser."Approver No.", 'The fixture must select the intended explicit-assignment or default-fallback path.');
+ ExpenseApprovalSetup.Get(OtherExpenseUser."No.");
+ Assert.AreEqual(OtherApprover."No.", ExpenseApprovalSetup."Approver No.", 'The other request must remain explicitly assigned to another approver.');
+
// [WHEN] The default approver's filter is applied to pending travel requests.
FilteredTravelRequest.SetRange("Document Type", FilteredTravelRequest."Document Type"::"Travel Request");
FilteredTravelRequest.SetRange(Status, FilteredTravelRequest.Status::Released);
TravelRequestApproval.ApplyApproverFilter(FilteredTravelRequest, DefaultApprover.SystemId);
- // [THEN] Only the literal unassigned user's request is visible, not the other approver's request.
+ // [THEN] Only "U"'s literal request is visible, not the request assigned to "B".
FilteredTravelRequest.SetRange("No.", DefaultTravelRequest."No.");
- Assert.IsFalse(FilteredTravelRequest.IsEmpty(), DefaultTravelRequestVisibleMsg);
+ Assert.IsFalse(
+ FilteredTravelRequest.IsEmpty(),
+ StrSubstNo(ApproverFilterExpectedRequestErr,
+ DefaultTravelRequestVisibleMsg, FilteredTravelRequest.GetFilter("Requested For"), DefaultTravelRequest."No."));
FilteredTravelRequest.SetRange("No.", OtherTravelRequest."No.");
- Assert.IsTrue(FilteredTravelRequest.IsEmpty(), UnassignedTravelRequestHiddenMsg);
+ Assert.IsTrue(
+ FilteredTravelRequest.IsEmpty(),
+ StrSubstNo(ApproverFilterUnexpectedRequestErr,
+ UnassignedTravelRequestHiddenMsg, FilteredTravelRequest.GetFilter("Requested For"),
+ DefaultTravelRequest."No.", OtherTravelRequest."No."));
+ end;
+
+ local procedure VerifyApproverFilterRangeGapSetup(FirstTravelRequest: Record "Spend Request"; LastTravelRequest: Record "Spend Request"; UnassignedTravelRequest: Record "Spend Request"; AssignedApproverNo: Code[20]; DefaultApproverNo: Code[20])
+ var
+ ExpenseApprovalSetup: Record "Expense Approval Setup";
+ ExpenseAgentSetup: Record "Expense Agent Setup";
+ ExpenseUser: Record "Expense User";
+ begin
+ Assert.AreEqual('TR-A', FirstTravelRequest."Requested For", 'The first request must use the lower range endpoint.');
+ Assert.AreEqual('TR-C', LastTravelRequest."Requested For", 'The last request must use the upper range endpoint.');
+ Assert.AreEqual('TR-B', UnassignedTravelRequest."Requested For", 'The unassigned request must lie between the assigned users.');
+ ExpenseApprovalSetup.Get(FirstTravelRequest."Requested For");
+ Assert.AreEqual(AssignedApproverNo, ExpenseApprovalSetup."Approver No.", 'The first user must be explicitly assigned.');
+ ExpenseApprovalSetup.Get(LastTravelRequest."Requested For");
+ Assert.AreEqual(AssignedApproverNo, ExpenseApprovalSetup."Approver No.", 'The last user must have the same explicit approver.');
+ Assert.IsFalse(ExpenseApprovalSetup.Get(UnassignedTravelRequest."Requested For"), 'The middle user must have no approval setup row.');
+ ExpenseUser.Get(UnassignedTravelRequest."Requested For");
+ ExpenseUser.CalcFields("Approver No.");
+ Assert.AreEqual('', ExpenseUser."Approver No.", 'The middle user must use the default approver fallback.');
+ ExpenseAgentSetup.Get();
+ Assert.AreEqual(DefaultApproverNo, ExpenseAgentSetup."Default Approver No.", 'The middle user must belong to the other default approver.');
+ Assert.AreNotEqual(AssignedApproverNo, DefaultApproverNo, 'The explicit and default approvers must differ.');
+ ExpenseApprovalSetup.SetRange("Expense User No.", FirstTravelRequest."Requested For", LastTravelRequest."Requested For");
+ Assert.AreEqual(2, ExpenseApprovalSetup.Count(), 'Only the two assigned setup rows may exist in the tested range.');
+ end;
+
+ local procedure VerifyApproverFilterRangeGapResults(var FilteredTravelRequest: Record "Spend Request"; FirstTravelRequestNo: Code[20]; LastTravelRequestNo: Code[20]; UnassignedTravelRequestNo: Code[20])
+ begin
+ FilteredTravelRequest.SetRange("No.", FirstTravelRequestNo);
+ Assert.IsFalse(
+ FilteredTravelRequest.IsEmpty(),
+ StrSubstNo(ApproverFilterExpectedRequestErr,
+ AssignedTravelRequestVisibleMsg, FilteredTravelRequest.GetFilter("Requested For"), FirstTravelRequestNo));
+ FilteredTravelRequest.SetRange("No.", LastTravelRequestNo);
+ Assert.IsFalse(
+ FilteredTravelRequest.IsEmpty(),
+ StrSubstNo(ApproverFilterExpectedRequestErr,
+ AssignedTravelRequestVisibleMsg, FilteredTravelRequest.GetFilter("Requested For"), LastTravelRequestNo));
+ FilteredTravelRequest.SetRange("No.", UnassignedTravelRequestNo);
+ Assert.IsTrue(
+ FilteredTravelRequest.IsEmpty(),
+ StrSubstNo(ApproverFilterUnexpectedRequestErr,
+ UnassignedTravelRequestHiddenMsg, FilteredTravelRequest.GetFilter("Requested For"),
+ FirstTravelRequestNo, UnassignedTravelRequestNo));
end;
local procedure VerifyPostedTravelRequestHistory(SpendRequest: Record "Spend Request"; ExpectedPostedExpenseReportHeader: Record "Posted Expense Report Header")
diff --git a/src/DisabledTests/E-Document_Core_Tests/E-Document Core Tests.DisabledTest.json b/src/DisabledTests/E-Document_Core_Tests/E-Document Core Tests.DisabledTest.json
index 2a0b6b498c3..1db9a8feddd 100644
--- a/src/DisabledTests/E-Document_Core_Tests/E-Document Core Tests.DisabledTest.json
+++ b/src/DisabledTests/E-Document_Core_Tests/E-Document Core Tests.DisabledTest.json
@@ -314,11 +314,6 @@
"codeunitName": "EDocCopilotPOGeneralHarms",
"method": "*"
},
- {
- "codeunitId": 135575,
- "codeunitName": "E-Doc. API Test",
- "method": "*"
- },
{
"codeunitId": 139235,
"codeunitName": "PEPPOL30 Management Tests",
diff --git a/src/DisabledTests/Expense_Agent_Tests/Expense_Agent_Tests.DisabledTest.json b/src/DisabledTests/Expense_Agent_Tests/Expense_Agent_Tests.DisabledTest.json
index b23129476de..27a0e065b84 100644
--- a/src/DisabledTests/Expense_Agent_Tests/Expense_Agent_Tests.DisabledTest.json
+++ b/src/DisabledTests/Expense_Agent_Tests/Expense_Agent_Tests.DisabledTest.json
@@ -1,254 +1,14 @@
[
- {
- "codeunitId": 148315,
- "codeunitName": "Expense Users API Test",
- "method": "EmployeesAPICanFilterExpenseUsers"
- },
- {
- "codeunitId": 148315,
- "codeunitName": "Expense Users API Test",
- "method": "UnlinkedExpenseUserIsHiddenFromAPI"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelersAPIMapsEmployeeNumberToExpenseUser"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelersAPIRejectsEmployeeWithoutExpenseUser"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "CreateExpenseReportActionRecreatesDeletedReport"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "ApproveTravelRequestActionCreatesExpenseReport"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelRequestsAPINormalizesCurrency"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelRequestDetailsAPINormalizesCurrency"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelRequestsAPIPreservesAndUpdatesDates"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelRequestsAreScopedByEmployeeNumber"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "ExpenseReportAPIExposesLinkedTravelRequest"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelRequestDetailsAPIExposesTypeAndCategory"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "ApproverViewReturnsOnlyAssignedTravelRequests"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelRequestsAPIAllowsOwnerOnInsertAndUnchangedPatch"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelRequestsAPIRejectsLifecycleFieldChanges"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "TravelRequestsAPIRejectsRequestedForChange"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "LegacySpendRequestsAPIAllowsUnchangedOwner"
- },
- {
- "codeunitId": 148347,
- "codeunitName": "Travel Requests API Test",
- "method": "LegacySpendRequestsAPIRejectsTravelRequestOwnerChange"
- },
{
"codeunitId": 148318,
"codeunitName": "Expense Capabilities API Test",
"method": "CapabilitiesProjectsEnabledViaAPI"
},
- {
- "codeunitId": 148318,
- "codeunitName": "Expense Capabilities API Test",
- "method": "CapabilitiesProjectsDisabledViaAPI"
- },
{
"codeunitId": 148318,
"codeunitName": "Expense Capabilities API Test",
"method": "CapabilitiesConsolidatedProjectsFollowsProjectFieldsViaAPI"
},
- {
- "codeunitId": 148318,
- "codeunitName": "Expense Capabilities API Test",
- "method": "ActivityLogCapabilityEnabledViaAPI"
- },
- {
- "codeunitId": 148318,
- "codeunitName": "Expense Capabilities API Test",
- "method": "TravelRequestCapabilityEnabledViaAPI"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "ActivityLogEntryIsExposedThroughReadOnlyAPI"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "ActivityLogAPIRejectsWrites"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "NonSnapshotActivityDoesNotExposeCurrencies"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "UnscopedActivityAPIHidesEntries"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "SubmitterHistoryReturnsCompleteTimelinesForSubmittedReports"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "ApproverHistoryReturnsCompleteTimelinesForActedOnReports"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "E2EActivityLogScenario"
- },
- {
- "codeunitId": 148333,
- "codeunitName": "Expense Agent Setup API Test",
- "method": "EmailAddressFieldIsExposedThroughAPI"
- },
- {
- "codeunitId": 148349,
- "codeunitName": "Expense PerDiem Locations Test",
- "method": "PerDiemLocationsReturnsLinkedLocationViaAPI"
- },
- {
- "codeunitId": 148349,
- "codeunitName": "Expense PerDiem Locations Test",
- "method": "PerDiemLocationsExcludesNonPerDiemCategoryViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByPersonResponsibleReturnsWholeProjectViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByProjectManagerReturnsWholeProjectViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByProjectLevelResourceReturnsWholeProjectViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByTaskLevelResourceReturnsOnlyThatTaskViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByPlanningLineReturnsOnlyThatTaskViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "WholeProjectSignalSupersedesTaskLevelViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "OverlappingSignalsForSameResourceAreDeduplicatedViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "CompletedProjectExcludedEvenWhenAssignedViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "EmptyResourceUserMatchesNothingViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "BlankUserIdDoesNotMatchBlankProjectManagerViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "ProjectManagerMatchWithBlankResourceReturnsProjectViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "TasklessProjectExcludedViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "WholeProjectAndTaskLevelAcrossProjectsNoLeakageViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AllProjectsVisibilityReturnsAllProjectsViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AllProjectsVisibilityIncludesActiveStatusesAndPostingTasksViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedProjectsRequiresScopeFilterViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedProjectsBlockedWhenProjectFieldsDisabledViaAPI"
- },
{
"codeunitId": 148305,
"codeunitName": "Expense Test",
diff --git a/src/DisabledTests/_Exclude_APIV1__Tests/_Exclude_APIV1__Tests.DisabledTest.json b/src/DisabledTests/_Exclude_APIV1__Tests/_Exclude_APIV1__Tests.DisabledTest.json
deleted file mode 100644
index ad692000a56..00000000000
--- a/src/DisabledTests/_Exclude_APIV1__Tests/_Exclude_APIV1__Tests.DisabledTest.json
+++ /dev/null
@@ -1,1457 +0,0 @@
-[
- {
- "codeunitId": 139701,
- "codeunitName": "APIV1 - Accounts E2E",
- "method": "TestGetAccounts"
- },
- {
- "codeunitId": 139704,
- "codeunitName": "APIV1 - Payment Terms E2E",
- "method": "TestGetPaymentTerms"
- },
- {
- "codeunitId": 139705,
- "codeunitName": "APIV1 - Shipment Methods E2E",
- "method": "TestGetShipmentMethods"
- },
- {
- "codeunitId": 139706,
- "codeunitName": "APIV1 - Company Info. E2E",
- "method": "TestGetCompanyInformationWithComplexType"
- },
- {
- "codeunitId": 139706,
- "codeunitName": "APIV1 - Company Info. E2E",
- "method": "TestModifyCompanyInformation"
- },
- {
- "codeunitId": 139706,
- "codeunitName": "APIV1 - Company Info. E2E",
- "method": "TestModifyCompanyInformationWithComplexType"
- },
- {
- "codeunitId": 139706,
- "codeunitName": "APIV1 - Company Info. E2E",
- "method": "TestRemoveComplexTypeFromCompanyInformation"
- },
- {
- "codeunitId": 139707,
- "codeunitName": "APIV1 - Item Categories E2E",
- "method": "TestCreateItemCategory"
- },
- {
- "codeunitId": 139707,
- "codeunitName": "APIV1 - Item Categories E2E",
- "method": "TestDeleteItemCategory"
- },
- {
- "codeunitId": 139707,
- "codeunitName": "APIV1 - Item Categories E2E",
- "method": "TestGetItemCategories"
- },
- {
- "codeunitId": 139707,
- "codeunitName": "APIV1 - Item Categories E2E",
- "method": "TestModifyItemCategory"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestCreateTaxGroup"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestDeleteTaxGroup"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestGetTaxGroup"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestGetTaxGroups"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestModifyTaxGroup"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionCancelAndSendInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionCancelInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionMakeCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionPostAndSendInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionPostInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionSendCancelledInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionSendDraftInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionSendPostedInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestCreateInvoiceThroughPageAndAPI"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestDeleteInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestEmptyModifyInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestGetInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestGetInvoicesAppliesDiscountPct"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestGetInvoicesRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestModifyingWithBlankIdEmptiesTheCodeAndTheId"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestModifyInvoiceNumberForDraftInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestModifyInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestModifyInvoiceSetManualDiscount"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPartialModifyInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPostInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPostInvoiceWithCurrency"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPostInvoiceWithDates"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPostInvoiceWithEmail"
- },
- {
- "codeunitId": 139710,
- "codeunitName": "Countries/Regions E2E",
- "method": "TestCreateCountriesRegions"
- },
- {
- "codeunitId": 139710,
- "codeunitName": "Countries/Regions E2E",
- "method": "TestDeleteCountriesRegions"
- },
- {
- "codeunitId": 139710,
- "codeunitName": "Countries/Regions E2E",
- "method": "TestGetCountriesRegions"
- },
- {
- "codeunitId": 139710,
- "codeunitName": "Countries/Regions E2E",
- "method": "TestModifyCountriesRegions"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestActionShipAndInvoice"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestCreateOrderThroughPageAndAPI"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestDeleteOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestEmptyModifyOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestGetOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestGetOrdersAppliesDiscountPct"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestGetOrdersRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestModifyOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestModifyOrderSetManualDiscount"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestPartialModifyOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestPostOrderForCustomerWithLocationCode"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestPostOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestPostOrderWithCurrency"
- },
- {
- "codeunitId": 139712,
- "codeunitName": "APIV1 - UofM E2E",
- "method": "TestDeleteUnitOfMeasure"
- },
- {
- "codeunitId": 139712,
- "codeunitName": "APIV1 - UofM E2E",
- "method": "TestGetUnitOfMeasure"
- },
- {
- "codeunitId": 139712,
- "codeunitName": "APIV1 - UofM E2E",
- "method": "TestInsertUnitOfMeasure"
- },
- {
- "codeunitId": 139712,
- "codeunitName": "APIV1 - UofM E2E",
- "method": "TestModifyUnitOfMeasure"
- },
- {
- "codeunitId": 139713,
- "codeunitName": "APIV1 - Currencies E2E",
- "method": "TestCreateCurrency"
- },
- {
- "codeunitId": 139713,
- "codeunitName": "APIV1 - Currencies E2E",
- "method": "TestDeleteCurrency"
- },
- {
- "codeunitId": 139713,
- "codeunitName": "APIV1 - Currencies E2E",
- "method": "TestGetCurrencies"
- },
- {
- "codeunitId": 139713,
- "codeunitName": "APIV1 - Currencies E2E",
- "method": "TestModifyCurrency"
- },
- {
- "codeunitId": 139714,
- "codeunitName": "Payment Methods E2E",
- "method": "TestCreatePaymentMethods"
- },
- {
- "codeunitId": 139714,
- "codeunitName": "Payment Methods E2E",
- "method": "TestDeletePaymentMethods"
- },
- {
- "codeunitId": 139714,
- "codeunitName": "Payment Methods E2E",
- "method": "TestGetPaymentMethods"
- },
- {
- "codeunitId": 139714,
- "codeunitName": "Payment Methods E2E",
- "method": "TestModifyPaymentMethods"
- },
- {
- "codeunitId": 139715,
- "codeunitName": "APIV1 - Balance Sheet E2E",
- "method": "TestGetBalanceSheetRecords"
- },
- {
- "codeunitId": 139716,
- "codeunitName": "APIV1 - Income Statement E2E",
- "method": "TestGetIncomeStatementRecords"
- },
- {
- "codeunitId": 139717,
- "codeunitName": "APIV1 - CashFlow Statement E2E",
- "method": "TestGetCashFlowRecords"
- },
- {
- "codeunitId": 139718,
- "codeunitName": "APIV1 - Trial Balance E2E",
- "method": "TestGetTrialBalanceRecords"
- },
- {
- "codeunitId": 139719,
- "codeunitName": "APIV1 - Aged AP E2E",
- "method": "TestGetAgedAPRecords"
- },
- {
- "codeunitId": 139720,
- "codeunitName": "APIV1 - Aged AR E2E",
- "method": "TestGetAgedARRecords"
- },
- {
- "codeunitId": 139721,
- "codeunitName": "APIV1 - Ret. Earnings E2E",
- "method": "TestRetainedEarningsStatementRecords"
- },
- {
- "codeunitId": 139722,
- "codeunitName": "APIV1 - Employees E2E",
- "method": "TestCreateEmployee"
- },
- {
- "codeunitId": 139722,
- "codeunitName": "APIV1 - Employees E2E",
- "method": "TestDeleteEmployee"
- },
- {
- "codeunitId": 139722,
- "codeunitName": "APIV1 - Employees E2E",
- "method": "TestGetEmployee"
- },
- {
- "codeunitId": 139722,
- "codeunitName": "APIV1 - Employees E2E",
- "method": "TestModifyEmployee"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestActionMakeInvoiceFromQuote"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestActionMakeOrderFromQuote"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestActionSendQuote"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestCreateQuoteThroughPageAndAPI"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestDeleteQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestEmptyModifyQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestGetQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestGetQuotesAppliesDiscountPct"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestGetQuotesRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestModifyQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestModifyQuoteSetManualDiscount"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestPartialModifyQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestPostQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestPostQuoteWithCurrency"
- },
- {
- "codeunitId": 139724,
- "codeunitName": "APIV1 - Dimensions E2E",
- "method": "TestGetDimensions"
- },
- {
- "codeunitId": 139724,
- "codeunitName": "APIV1 - Dimensions E2E",
- "method": "TestGetDimensionValues"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestActionPostGenJournalBatch"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestCreateJournal"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestDeleteJournal"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestGetJournals"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestModifyJournal"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionCancelAndSendCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionCancelCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionPostAndSendCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionPostCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionSendCancelledCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionSendPostedCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestCreateCreditMemoThroughPageAndAPI"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestDeleteCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestEmptyModifyCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemosAppliesDiscountPct"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemosRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestModifyCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestModifyCreditMemoSetManualDiscount"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestPartialModifyCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestPostCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestPostCreditMemoWithCurrency"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestActionPostPurchaseInvoice"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestCreateInvoiceThroughPageAndAPI"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestDeleteInvoice"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestEmptyModifyInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestGetInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestModifyInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestPartialModifyInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestPostInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestPostPurchaseInvoiceWithCurrency"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestPurchaseInvoiceWithPaymentDiscount"
- },
- {
- "codeunitId": 139730,
- "codeunitName": "APIV1 - GLEntries E2E",
- "method": "TestGetGLEntries"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestApplyRSPackage"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestCreateRSPackage"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestImportRSPackage"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestImportWrongRSPackage"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestUploadRSPackageFile"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateGLEntryAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateJournalLineAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreatePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreatePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateQuoteAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteGLEntryAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteJournalLineAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeletePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeletePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteQuoteAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetDraftInvoiceAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetDraftPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetGLEntryAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetGLEntryAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetJournalAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetJournalLineAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetJournalLineAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetPostedInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetPostedInvoiceAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetPostedPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetQuoteAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetQuoteAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestLinkedAttachmentContentChangeKeepsOtherFieldsUnchanged"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestLinkedAttachmentDocumentIdChangeNotAllowed"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestLinkedAttachmentFileNameChangeKeepsOtherFieldsUnchanged"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestLinkedAttachmentIdChangeNotAllowed"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedInvoice"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedPurchaseInvoice"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestUpdateGenJournalLineAttachmentBinaryContent"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestUpdateGLEntryAttachmentBinaryContent"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestDeleteInvoiceLine"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineMovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineRemovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLineDirectly"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLines"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGetPostedInvoiceLines"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestInsertingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestModifyingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestModifyingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestModifyInvoiceLine"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestModifyInvoiceLineWithUoM"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLines"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLinesWithItemVariant"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLinesWithUoM"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLineWithSequence"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestDeleteOrderLine"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestDeletingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestDeletingLineMovesOrderDiscountPct"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestDeletingLineRemovesOrderDiscountPct"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestGetOrderLineDirectly"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestGetOrderLines"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestGetOrderLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestInsertingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestModifyingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestModifyingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestModifyOrderLines"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPostOrderLines"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPostOrderLineWithItemVariant"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestDeleteQuoteLine"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestDeletingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestDeletingLineMovesQuoteDiscountPct"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestDeletingLineRemovesQuoteDiscountPct"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLineDirectly"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLines"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestInsertingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestInsertingLineUpdatesQuoteDiscountPct"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestModifyingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestModifyingLineUpdatesQuoteDiscountPct"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestModifyQuoteLines"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPostQuoteLines"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPostQuoteLinesWithItemVariant"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeleteCreditMemoLine"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeletePostedCreditMemoLine"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineMovesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineRemovesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLineDirectly"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLines"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGetPostedCreditMemoLines"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestInsertingLineUpdatesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestModifyCreditMemoLines"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestModifyingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestModifyingLineUpdatesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLines"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLinesWithItemVariant"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLineWithSequence"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestDeleteInvoiceLine"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestDeletingLineRemovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLineDirectly"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLines"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestGetPostedInvoiceLines"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestInsertingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestModifyingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestModifyInvoiceLines"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLines"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLinesWithItemVariant"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLineWithSequence"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestAppliesToInvoiceNoAndIdSync"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCreateCustomerPayment"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCreateCustomerPaymentWithInvoiceId"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCreateCustomerPaymentWithoutDocNo"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCustomerAutofillDoesNotOverwrite"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCustomerAutofillWhenGivingInvoiceNumber"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCustomerNoAndIdSync"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestDeleteCustomerPayment"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestGetCustomerPayment"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestModifyCustomerPayment"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestModifyCustomerPaymentWithRandomDocNo"
- },
- {
- "codeunitId": 139744,
- "codeunitName": "APIV1 - PDF Document E2E",
- "method": "TestGetPDFPurchaseInvoice"
- },
- {
- "codeunitId": 139744,
- "codeunitName": "APIV1 - PDF Document E2E",
- "method": "TestGetPDFSalesCreditMemo"
- },
- {
- "codeunitId": 139744,
- "codeunitName": "APIV1 - PDF Document E2E",
- "method": "TestGetPDFSalesInvoice"
- },
- {
- "codeunitId": 139744,
- "codeunitName": "APIV1 - PDF Document E2E",
- "method": "TestGetPDFSalesQuote"
- },
- {
- "codeunitId": 139745,
- "codeunitName": "APIV1 - Journal Lines E2E",
- "method": "TestCreateJournalLineWithDimensionsOnAccountWithDimensionSetup"
- },
- {
- "codeunitId": 139745,
- "codeunitName": "APIV1 - Journal Lines E2E",
- "method": "TestCreateJournalLineWithDisabledCopyVATSetup"
- },
- {
- "codeunitId": 139745,
- "codeunitName": "APIV1 - Journal Lines E2E",
- "method": "TestCreateJournalLineWithoutDimensionsOnAccountWithDimensionSetup"
- },
- {
- "codeunitId": 139745,
- "codeunitName": "APIV1 - Journal Lines E2E",
- "method": "TestCreateJournalLineWithOverridenDefaultDimension"
- }
-]
diff --git a/src/DisabledTests/_Exclude_APIV2__Tests/_Exclude_APIV2__Tests.DisabledTest.json b/src/DisabledTests/_Exclude_APIV2__Tests/_Exclude_APIV2__Tests.DisabledTest.json
index 2a73423912e..e8cb0707a35 100644
--- a/src/DisabledTests/_Exclude_APIV2__Tests/_Exclude_APIV2__Tests.DisabledTest.json
+++ b/src/DisabledTests/_Exclude_APIV2__Tests/_Exclude_APIV2__Tests.DisabledTest.json
@@ -1,119 +1,4 @@
[
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithCategoryCode"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithCategoryId"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithTemplate"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithTemplateIgnoresFieldsSet"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithUoMCode"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithUoMId"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateSimpleItem"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestDeleteItem"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestGetItemWithCategory"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestGetRelatedEntities"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestGetSimpleItem"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestModifyItem"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestModifyItemInventory"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestPatchItemWithCategoryCode"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestPatchItemWithCategoryId"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestPatchItemWithGenProdPostingGroup"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestPatchItemWithInventoryPostingGroup"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestUnassignGenProdPostingGroup"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestUnassignInventoryPostingGroup"
- },
- {
- "codeunitId": 139801,
- "codeunitName": "APIV2 - Accounts E2E",
- "method": "TestGetAccounts"
- },
- {
- "codeunitId": 139804,
- "codeunitName": "APIV2 - Payment Terms E2E",
- "method": "TestGetPaymentTerms"
- },
- {
- "codeunitId": 139805,
- "codeunitName": "APIV2 - Shipment Methods E2E",
- "method": "TestGetShipmentMethods"
- },
- {
- "codeunitId": 139806,
- "codeunitName": "APIV2 - Company Info. E2E",
- "method": "TestGetCompanyInformation"
- },
{
"codeunitId": 139806,
"codeunitName": "APIV2 - Company Info. E2E",
@@ -123,3465 +8,5 @@
"codeunitId": 139806,
"codeunitName": "APIV2 - Company Info. E2E",
"method": "TestModifyCompanyInformation"
- },
- {
- "codeunitId": 139806,
- "codeunitName": "APIV2 - Company Info. E2E",
- "method": "TestModifyInvalidExperinceTier"
- },
- {
- "codeunitId": 139806,
- "codeunitName": "APIV2 - Company Info. E2E",
- "method": "TestModifyValidExperinceTier"
- },
- {
- "codeunitId": 139807,
- "codeunitName": "APIV2 - Item Categories E2E",
- "method": "TestCreateItemCategory"
- },
- {
- "codeunitId": 139807,
- "codeunitName": "APIV2 - Item Categories E2E",
- "method": "TestDeleteItemCategory"
- },
- {
- "codeunitId": 139807,
- "codeunitName": "APIV2 - Item Categories E2E",
- "method": "TestGetItemCategories"
- },
- {
- "codeunitId": 139807,
- "codeunitName": "APIV2 - Item Categories E2E",
- "method": "TestModifyItemCategory"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestCreateTaxGroup"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestDeleteTaxGroup"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestGetTaxGroup"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestGetTaxGroups"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestModifyTaxGroup"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionCancelAndSendInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionCancelInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionMakeCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionPostAndSendInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionPostInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionSendCancelledInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionSendDraftInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionSendPostedInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestCreateInvoiceThroughPageAndAPI"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestDeleteInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestEmptyModifyInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetInvoiceFromPostedOrderCorrectOrderIdAndNo"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetInvoicesAppliesDiscountPct"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetInvoicesRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetSalesInvoiceFromDraftId"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestModifyingWithBlankIdEmptiesTheCodeAndTheId"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestModifyInvoiceNumberForDraftInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestModifyInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestModifyInvoiceSetManualDiscount"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPartialModifyInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPostInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPostInvoiceWithCurrency"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPostInvoiceWithDates"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPostInvoiceWithEmail"
- },
- {
- "codeunitId": 139810,
- "codeunitName": "APIV2 - Countries/Regions E2E",
- "method": "TestCreateCountriesRegions"
- },
- {
- "codeunitId": 139810,
- "codeunitName": "APIV2 - Countries/Regions E2E",
- "method": "TestDeleteCountriesRegions"
- },
- {
- "codeunitId": 139810,
- "codeunitName": "APIV2 - Countries/Regions E2E",
- "method": "TestGetCountriesRegions"
- },
- {
- "codeunitId": 139810,
- "codeunitName": "APIV2 - Countries/Regions E2E",
- "method": "TestModifyCountriesRegions"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestActionShipAndInvoice"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestCreateOrderThroughPageAndAPI"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestDeleteOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestEmptyModifyOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestGetOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestGetOrdersAppliesDiscountPct"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestGetOrdersRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestModifyOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestModifyOrderSetManualDiscount"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestPartialModifyOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestPostOrderForCustomerWithLocationCode"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestPostOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestPostOrderWithCurrency"
- },
- {
- "codeunitId": 139812,
- "codeunitName": "APIV2 - UofM E2E",
- "method": "TestDeleteUnitOfMeasure"
- },
- {
- "codeunitId": 139812,
- "codeunitName": "APIV2 - UofM E2E",
- "method": "TestGetUnitOfMeasure"
- },
- {
- "codeunitId": 139812,
- "codeunitName": "APIV2 - UofM E2E",
- "method": "TestInsertUnitOfMeasure"
- },
- {
- "codeunitId": 139812,
- "codeunitName": "APIV2 - UofM E2E",
- "method": "TestModifyUnitOfMeasure"
- },
- {
- "codeunitId": 139813,
- "codeunitName": "APIV2 - Currencies E2E",
- "method": "TestCreateCurrency"
- },
- {
- "codeunitId": 139813,
- "codeunitName": "APIV2 - Currencies E2E",
- "method": "TestDeleteCurrency"
- },
- {
- "codeunitId": 139813,
- "codeunitName": "APIV2 - Currencies E2E",
- "method": "TestGetCurrencies"
- },
- {
- "codeunitId": 139813,
- "codeunitName": "APIV2 - Currencies E2E",
- "method": "TestModifyCurrency"
- },
- {
- "codeunitId": 139814,
- "codeunitName": "APIV2 - Payment Methods E2E",
- "method": "TestCreatePaymentMethods"
- },
- {
- "codeunitId": 139814,
- "codeunitName": "APIV2 - Payment Methods E2E",
- "method": "TestDeletePaymentMethods"
- },
- {
- "codeunitId": 139814,
- "codeunitName": "APIV2 - Payment Methods E2E",
- "method": "TestGetPaymentMethods"
- },
- {
- "codeunitId": 139814,
- "codeunitName": "APIV2 - Payment Methods E2E",
- "method": "TestModifyPaymentMethods"
- },
- {
- "codeunitId": 139815,
- "codeunitName": "APIV2 - Balance Sheet E2E",
- "method": "TestGetBalanceSheetRecords"
- },
- {
- "codeunitId": 139816,
- "codeunitName": "APIV2 - Income Statement E2E",
- "method": "TestGetIncomeStatementRecords"
- },
- {
- "codeunitId": 139817,
- "codeunitName": "APIV2 - CashFlow Statement E2E",
- "method": "TestGetCashFlowRecords"
- },
- {
- "codeunitId": 139818,
- "codeunitName": "APIV2 - Trial Balance E2E",
- "method": "TestGetTrialBalanceRecords"
- },
- {
- "codeunitId": 139819,
- "codeunitName": "APIV2 - Aged AP E2E",
- "method": "TestGetAgedAPRecords"
- },
- {
- "codeunitId": 139820,
- "codeunitName": "APIV2 - Aged AR E2E",
- "method": "TestGetAgedARRecords"
- },
- {
- "codeunitId": 139821,
- "codeunitName": "APIV2 - Ret. Earnings E2E",
- "method": "TestRetainedEarningsStatementRecords"
- },
- {
- "codeunitId": 139822,
- "codeunitName": "APIV2 - Employees E2E",
- "method": "TestCreateEmployee"
- },
- {
- "codeunitId": 139822,
- "codeunitName": "APIV2 - Employees E2E",
- "method": "TestDeleteEmployee"
- },
- {
- "codeunitId": 139822,
- "codeunitName": "APIV2 - Employees E2E",
- "method": "TestGetEmployee"
- },
- {
- "codeunitId": 139822,
- "codeunitName": "APIV2 - Employees E2E",
- "method": "TestModifyEmployee"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestActionMakeInvoiceFromQuote"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestActionMakeOrderFromQuote"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestActionSendQuote"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestCreateQuoteThroughPageAndAPI"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestDeleteQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestEmptyModifyQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestGetQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestGetQuotesAppliesDiscountPct"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestGetQuotesRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestModifyQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestModifyQuoteSetManualDiscount"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestPartialModifyQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestPostQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestPostQuoteWithCurrency"
- },
- {
- "codeunitId": 139824,
- "codeunitName": "APIV2 - Dimensions E2E",
- "method": "TestGetDimensions"
- },
- {
- "codeunitId": 139824,
- "codeunitName": "APIV2 - Dimensions E2E",
- "method": "TestGetDimensionValues"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateDoesntWorkWithAlreadyExistingCode"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateJournalLineDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreatePurchaseCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreatePurchaseInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreatePurchaseOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateSalesCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateSalesInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateSalesOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateSalesQuoteDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateTimeRegEntryDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteDimensionSetLineOfGenJournalLines"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeletePurchaseCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeletePurchaseInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeletePurchaseOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteSalesCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteSalesInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteSalesOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteSalesQuoteDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteTimeRegEntryDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfGLEntry"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfJournalLines"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfPurchaseCrMemo"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfPurchaseInvoice"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfPurchaseOrder"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfSalesCrMemo"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfSalesInvoice"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfSalesOrder"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfSalesQuote"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfTimeRegEntry"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyDimensionSetLineOfGenJournalLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyDimensionSetLineOfSalesOrder"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyDimensionSetLineOfSalesQuote"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyOfDimensionCodeDoesntWork"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyPurchaseCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyPurchaseInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyPurchaseOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifySalesCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifySalesInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyTimeRegEntryDimensionSetLine"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestActionPostGenJournalBatch"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestCreateJournal"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestDeleteJournal"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestGetJournals"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestModifyJournal"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionCancelAndSendCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionCancelCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionPostAndSendCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionPostCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionSendCancelledCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionSendPostedCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestCreateCreditMemoThroughPageAndAPI"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestDeleteCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestEmptyModifyCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemosAppliesDiscountPct"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemosRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestModifyCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestModifyCreditMemoSetManualDiscount"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestPartialModifyCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestPostCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestPostCreditMemoWithCurrency"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestActionPostPurchaseInvoice"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestCreateInvoiceThroughPageAndAPI"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestDeleteInvoice"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestEmptyModifyInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestGetInvoiceFromPostedOrderCorrectOrderIdAndNo"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestGetInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestGetPurchaseInvoiceFromDraftId"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestModifyInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestPartialModifyInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestPostInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestPostPurchaseInvoiceWithCurrency"
- },
- {
- "codeunitId": 139830,
- "codeunitName": "APIV2 - GLEntries E2E",
- "method": "TestGetGLEntries"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestApplyRSPackage"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestCreateRSPackage"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestImportRSPackage"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestImportWrongRSPackage"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestUploadRSPackageFile"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftOrderAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftPurchaseOrderAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateGLEntryAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateJournalLineAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreatePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreatePostedPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreatePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateQuoteAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteDraftPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteGLEntryAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteJournalLineAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeletePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeletePostedPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeletePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteQuoteAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftInvoiceAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftOrderAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftOrderAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftPurchaseCreditMemoAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftPurchaseOrderAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetGLEntryAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetGLEntryAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetJournalAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetJournalLineAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetJournalLineAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetPostedInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetPostedInvoiceAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetPostedPurchaseCreditMemoAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetPostedPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetQuoteAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetQuoteAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestLinkedAttachmentContentChangeKeepsOtherFieldsUnchanged"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestLinkedAttachmentDocumentIdChangeNotAllowed"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestLinkedAttachmentFileNameChangeKeepsOtherFieldsUnchanged"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedInvoice"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedPurchaseCreditMemo"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedPurchaseInvoice"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestUpdateGenJournalLineAttachmentBinaryContent"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestUpdateGLEntryAttachmentBinaryContent"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestDeleteInvoiceLine"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineMovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineRemovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLineDirectly"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLines"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGetPostedInvoiceLines"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestInsertingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestInsertingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestModifyingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestModifyingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestModifyInvoiceLine"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestModifyInvoiceLineWithUoM"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLines"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLinesWithItemVariant"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLinesWithUoM"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLineWithSequence"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestCreatingOrderLineWithAssemblyBOM"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestDeleteOrderLine"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestDeletingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestDeletingLineMovesOrderDiscountPct"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestDeletingLineRemovesOrderDiscountPct"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestExpandReturnsCorrectDocumentLines"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestExpandReturnsCorrectDocumentLinesWithMultipleDocuments"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestGetOrderLineDirectly"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestGetOrderLines"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestGetOrderLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestInsertingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestInsertingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestModifyingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestModifyingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestModifyOrderLines"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPostOrderLines"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPostOrderLineWithItemVariant"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestDeleteQuoteLine"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestDeletingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestDeletingLineMovesQuoteDiscountPct"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestDeletingLineRemovesQuoteDiscountPct"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLineDirectly"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLines"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestInsertingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestInsertingLineUpdatesQuoteDiscountPct"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestModifyingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestModifyingLineUpdatesQuoteDiscountPct"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestModifyQuoteLines"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPostQuoteLines"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPostQuoteLinesWithItemVariant"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeleteCreditMemoLine"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeletePostedCreditMemoLine"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineMovesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineRemovesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLineDirectly"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLines"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGetPostedCreditMemoLines"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestInsertingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestInsertingLineUpdatesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestModifyCreditMemoLines"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestModifyingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestModifyingLineUpdatesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLines"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLinesWithItemVariant"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLineWithSequence"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestDeleteInvoiceLine"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestDeletingLineRemovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLineDirectly"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLines"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestGetPostedInvoiceLines"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestInsertingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestInsertingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestModifyingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestModifyInvoiceLines"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLines"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLinesWithItemVariant"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLineWithSequence"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestCreateItemVariantWithItemId"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestCreateItemVariantWithItemNumber"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestCreateItemVariantWithItemNumberAndItemId"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestDeleteInUse"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestDeleteItemVariant"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestGetItemVariant"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestModifyItemVariant"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestModifyItemVariantItemId"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestModifyItemVariantItemNumber"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestAppliesToInvoiceNoAndIdSync"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCreateCustomerPayment"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCreateCustomerPaymentWithInvoiceId"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCreateCustomerPaymentWithoutDocNo"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCustomerAutofillDoesNotOverwrite"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCustomerAutofillWhenGivingInvoiceNumber"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCustomerNoAndIdSync"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestDeleteCustomerPayment"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestGetCustomerPayment"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestModifyCustomerPayment"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestModifyCustomerPaymentWithRandomDocNo"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFPurchaseCreditMemo"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFPurchaseInvoice"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFSalesCreditMemo"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFSalesInvoice"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFSalesOrder"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFSalesQuote"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataContactWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataCustomerWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataEmployeeWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataVendor"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataVendorWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadatItemWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueContactWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueCustomerWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueEmployeeWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueItemWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueVendor"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueVendorWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteVendor"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceVendor"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadVendor"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestAppliesToInvoiceNoAndIdSync"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestAppliesToInvoiceNumberEmptyForNonInvoiceApplication"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestCreateVendorPayment"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestCreateVendorPaymentWithInvoiceId"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestCreateVendorPaymentWithoutDocNo"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestDeleteVendorPayment"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestGetVendorPayment"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestGetVendorPaymentWithoutInvoiceApplicationIsVisible"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestModifyVendorPayment"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestModifyVendorPaymentWithRandomDocNo"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestVendorAutofillDoesNotOverwrite"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestVendorAutofillWhenGivingInvoiceNumber"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestVendorNoAndIdSync"
- },
- {
- "codeunitId": 139847,
- "codeunitName": "APIV2 - Sales Shipments E2E",
- "method": "TestExpandDimensions"
- },
- {
- "codeunitId": 139847,
- "codeunitName": "APIV2 - Sales Shipments E2E",
- "method": "TestGetSalesShipments"
- },
- {
- "codeunitId": 139848,
- "codeunitName": "APIV2 - Sales Ship. Lines E2E",
- "method": "TestExpandDimensions"
- },
- {
- "codeunitId": 139848,
- "codeunitName": "APIV2 - Sales Ship. Lines E2E",
- "method": "TestGetLineDirectly"
- },
- {
- "codeunitId": 139848,
- "codeunitName": "APIV2 - Sales Ship. Lines E2E",
- "method": "TestGetShipmentLines"
- },
- {
- "codeunitId": 139848,
- "codeunitName": "APIV2 - Sales Ship. Lines E2E",
- "method": "TestGetShipmentLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139849,
- "codeunitName": "APIV2 - Purchase Receipts E2E",
- "method": "TestExpandDimensions"
- },
- {
- "codeunitId": 139849,
- "codeunitName": "APIV2 - Purchase Receipts E2E",
- "method": "TestGetPurchaseReceipts"
- },
- {
- "codeunitId": 139850,
- "codeunitName": "APIV2 - Purch. Rcpt. Lines E2E",
- "method": "TestExpandDimensions"
- },
- {
- "codeunitId": 139850,
- "codeunitName": "APIV2 - Purch. Rcpt. Lines E2E",
- "method": "TestGetLineDirectly"
- },
- {
- "codeunitId": 139850,
- "codeunitName": "APIV2 - Purch. Rcpt. Lines E2E",
- "method": "TestGetReceiptLines"
- },
- {
- "codeunitId": 139850,
- "codeunitName": "APIV2 - Purch. Rcpt. Lines E2E",
- "method": "TestGetReceiptLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestActionRecieveAndInvoice"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestCreateOrderThroughPageAndAPI"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestDeleteOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestEmptyModifyOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestGetOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestGetOrdersAppliesDiscountPct"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestGetOrdersRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestModifyOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestModifyOrderSetManualDiscount"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPartialModifyOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPostOrderForCustomerWithLocationCode"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPostOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPostOrdersWithEmptyShippingAddress"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPostOrderWithCurrency"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestDeleteOrderLine"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestDeletingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestDeletingLineMovesOrderDiscountPct"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestDeletingLineRemovesOrderDiscountPct"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestGetOrderLineDirectly"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestGetOrderLines"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestGetOrderLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestInsertingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestInsertingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestModifyingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestModifyingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestModifyOrderLines"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPostOrderLines"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPostOrderLineWithItemVariant"
- },
- {
- "codeunitId": 139853,
- "codeunitName": "APIV2 - Contacts Inf. E2E",
- "method": "TestGetCustomerContactInformation"
- },
- {
- "codeunitId": 139853,
- "codeunitName": "APIV2 - Contacts Inf. E2E",
- "method": "TestGetCustomerContactsInformation"
- },
- {
- "codeunitId": 139853,
- "codeunitName": "APIV2 - Contacts Inf. E2E",
- "method": "TestGetVendorContactInformation"
- },
- {
- "codeunitId": 139853,
- "codeunitName": "APIV2 - Contacts Inf. E2E",
- "method": "TestGetVendorContactsInformation"
- },
- {
- "codeunitId": 139854,
- "codeunitName": "APIV2 - Item Ledg. Entries E2E",
- "method": "TestGetItemLedgerEntries"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestCannotPatchContactNoOfWonOpportunity"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestCannotPatchSPCodeOfWonOpportunity"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestCreateOpportunity"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestCreateOpportunityContactNo"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestGetOpportunities"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestPatchOpportunity"
- },
- {
- "codeunitId": 139856,
- "codeunitName": "APIV2 - GenProdPostGroup E2E",
- "method": "TestGetGenProdPostGroups"
- },
- {
- "codeunitId": 139857,
- "codeunitName": "APIV2 - InventoryPostGroup E2E",
- "method": "TestGetInventoryPostGroups"
- },
- {
- "codeunitId": 139858,
- "codeunitName": "APIV2 Currency Exch. Rate E2E",
- "method": "TestGetCurrencyExchangeRates"
- },
- {
- "codeunitId": 139858,
- "codeunitName": "APIV2 Currency Exch. Rate E2E",
- "method": "TestSingleGetCurrencyExchangeRate"
- },
- {
- "codeunitId": 139859,
- "codeunitName": "APIV2 - Accounting Periods E2E",
- "method": "TestGetAccountingPeriods"
- },
- {
- "codeunitId": 139860,
- "codeunitName": "APIV2 - G/L Setup E2E",
- "method": "TestGetGLSetup"
- },
- {
- "codeunitId": 139861,
- "codeunitName": "APIV2JobQueueLogEntriesE2E",
- "method": "TestGetJobQueueLogEntry"
- },
- {
- "codeunitId": 139862,
- "codeunitName": "APIV2JobQueueEntriesE2E",
- "method": "TestGetCorrespondingJobQueueLogEntryFromExpand"
- },
- {
- "codeunitId": 139862,
- "codeunitName": "APIV2JobQueueEntriesE2E",
- "method": "TestGetCorrespondingJobQueueLogEntryFromSubPage"
- },
- {
- "codeunitId": 139862,
- "codeunitName": "APIV2JobQueueEntriesE2E",
- "method": "TestGetJobQueueEntry"
- },
- {
- "codeunitId": 139862,
- "codeunitName": "APIV2JobQueueEntriesE2E",
- "method": "TestRescheduleJobQueueEntry"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestActionCancelCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestActionPostCreditMemo"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestCreateCreditMemoThroughPageAndAPI"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestDeleteCreditMemo"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestEmptyModifyCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestGetCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestModifyCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestModifyCreditMemoSetManualDiscount"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestPartialModifyCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestPostCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestPostCreditMemoWithCurrency"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestPostCreditMemoWithVendorCreditMemoNo"
- },
- {
- "codeunitId": 139866,
- "codeunitName": "APIV2 - Contacts E2E",
- "method": "TestDeleteContact"
- },
- {
- "codeunitId": 139866,
- "codeunitName": "APIV2 - Contacts E2E",
- "method": "TestGetContactWithAddressAndSpecialCharacters"
- },
- {
- "codeunitId": 139866,
- "codeunitName": "APIV2 - Contacts E2E",
- "method": "TestGetSimpleContact"
- },
- {
- "codeunitId": 139866,
- "codeunitName": "APIV2 - Contacts E2E",
- "method": "TestModifyContactWithAddress"
- },
- {
- "codeunitId": 139867,
- "codeunitName": "APIV2 - Apply Vendor Ent. E2E",
- "method": "TestApplyVendorEntryAppliesPayment"
- },
- {
- "codeunitId": 139867,
- "codeunitName": "APIV2 - Apply Vendor Ent. E2E",
- "method": "TestGetApplyVendorEntriesFailsWhenNoVendor"
- },
- {
- "codeunitId": 139867,
- "codeunitName": "APIV2 - Apply Vendor Ent. E2E",
- "method": "TestGetApplyVendorEntriesReturnsOpenEntries"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestCreateLocation"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestCreateSalesOrderLineWithLocation"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestDeleteLocation"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestGetLocation"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestModifyLocationWithAddress"
- },
- {
- "codeunitId": 139869,
- "codeunitName": "APIV2 - Cust. Ret. Reasons E2E",
- "method": "TestCreateReasonCode"
- },
- {
- "codeunitId": 139869,
- "codeunitName": "APIV2 - Cust. Ret. Reasons E2E",
- "method": "TestDeleteReasonCode"
- },
- {
- "codeunitId": 139869,
- "codeunitName": "APIV2 - Cust. Ret. Reasons E2E",
- "method": "TestGetReasonCode"
- },
- {
- "codeunitId": 139869,
- "codeunitName": "APIV2 - Cust. Ret. Reasons E2E",
- "method": "TestModifyReasonCode"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestDeleteCreditMemoLine"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestDeletePostedCreditMemoLine"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGetCreditMemoLineDirectly"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGetCreditMemoLines"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGetCreditMemoLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGetPostedCreditMemoLines"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestModifyCreditMemoLines"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostCreditMemoLines"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostCreditMemoLinesWithItemVariant"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostCreditMemoLineWithSequence"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139882,
- "codeunitName": "APIV2 - Salesperson/Purch E2E",
- "method": "CreateSalespersonPurchaser"
- },
- {
- "codeunitId": 139882,
- "codeunitName": "APIV2 - Salesperson/Purch E2E",
- "method": "DeleteSalespersonPurchaser"
- },
- {
- "codeunitId": 139882,
- "codeunitName": "APIV2 - Salesperson/Purch E2E",
- "method": "GetSalespersonPurchaser"
- },
- {
- "codeunitId": 139882,
- "codeunitName": "APIV2 - Salesperson/Purch E2E",
- "method": "ModifySalespersonPurchaserJobTitle"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateCustomerAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftOrderAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftPurchaseOrderAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreatePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreatePostedPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreatePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateQuoteAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateVendorAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteDraftPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteEmployeeAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteJobAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeletePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeletePostedPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeletePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteQuoteAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteVendorAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetCustomerAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftInvoiceAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftOrderAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftPurchaseCreditMemoAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftPurchaseOrderAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetEmployeeAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetItemAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetJobAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetPostedInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetPostedInvoiceAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetPostedPurchaseCreditMemoAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetPostedPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetQuoteAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetQuoteAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetVendorAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestUpdateCustomerAttachmentBinaryContent"
- },
- {
- "codeunitId": 139906,
- "codeunitName": "APIV2 - FA Locations E2E",
- "method": "TestCreateFALocation"
- },
- {
- "codeunitId": 139906,
- "codeunitName": "APIV2 - FA Locations E2E",
- "method": "TestDeleteFALocation"
- },
- {
- "codeunitId": 139906,
- "codeunitName": "APIV2 - FA Locations E2E",
- "method": "TestGetFALocation"
- },
- {
- "codeunitId": 139906,
- "codeunitName": "APIV2 - FA Locations E2E",
- "method": "TestModifyFALocation"
- },
- {
- "codeunitId": 139907,
- "codeunitName": "APIV2 - Fixed Assets E2E",
- "method": "TestCreateFixedAsset"
- },
- {
- "codeunitId": 139907,
- "codeunitName": "APIV2 - Fixed Assets E2E",
- "method": "TestDeleteFixedAsset"
- },
- {
- "codeunitId": 139907,
- "codeunitName": "APIV2 - Fixed Assets E2E",
- "method": "TestGetFixedAsset"
- },
- {
- "codeunitId": 139907,
- "codeunitName": "APIV2 - Fixed Assets E2E",
- "method": "TestModifyFixedAsset"
- },
- {
- "codeunitId": 139908,
- "method": "TestGetBlanketPurchaseOrders",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestGetBlanketPurchaseOrderById",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestGetBlanketSalesOrders",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestGetBlanketSalesOrderById",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139917,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Approval Entries E2E"
- },
- {
- "codeunitId": 139918,
- "method": "TestGetApprovalUserSetup",
- "codeunitName": "APIV2 - Approval UserSetup E2E"
- },
- {
- "codeunitId": 139919,
- "method": "TestGetPostedApprovalEntries",
- "codeunitName": "APIV2 PstdApprovalEntries E2E"
- },
- {
- "codeunitId": 139920,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Workflow Approvers E2E"
- },
- {
- "codeunitId": 139921,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Workflows E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestGetPurchaseQuotes",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestGetPurchaseQuoteById",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestGetPurchaseReturnOrders",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestGetPurchaseReturnOrderById",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestGetSalesReturnOrders",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestGetSalesReturnOrderById",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestGetAssemblyOrders",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestGetAssemblyOrderById",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestGetTransferOrders",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestGetTransferOrderById",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestGetSalesOrderArchives",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestGetPurchaseReturnShipments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestGetBlanketPurchaseOrders",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestGetBlanketPurchaseOrderById",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestGetBlanketSalesOrders",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestGetBlanketSalesOrderById",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139917,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Approval Entries E2E"
- },
- {
- "codeunitId": 139918,
- "method": "TestGetApprovalUserSetup",
- "codeunitName": "APIV2 - Approval UserSetup E2E"
- },
- {
- "codeunitId": 139919,
- "method": "TestGetPostedApprovalEntries",
- "codeunitName": "APIV2 PstdApprovalEntries E2E"
- },
- {
- "codeunitId": 139920,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Workflow Approvers E2E"
- },
- {
- "codeunitId": 139921,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Workflows E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestGetPurchaseQuotes",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestGetPurchaseQuoteById",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestGetPurchaseReturnOrders",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestGetPurchaseReturnOrderById",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestGetSalesReturnOrders",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestGetSalesReturnOrderById",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestGetAssemblyOrders",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestGetAssemblyOrderById",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestGetTransferOrders",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestGetTransferOrderById",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestGetSalesOrderArchives",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestGetPurchaseReturnShipments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
}
]
diff --git a/src/Layers/W1/BaseApp/Purchases/eServices/EDocument/ReturnShptPDFDocHandler.Codeunit.al b/src/Layers/W1/BaseApp/Purchases/eServices/EDocument/ReturnShptPDFDocHandler.Codeunit.al
index 22cc094eec4..d9a2ed5f429 100644
--- a/src/Layers/W1/BaseApp/Purchases/eServices/EDocument/ReturnShptPDFDocHandler.Codeunit.al
+++ b/src/Layers/W1/BaseApp/Purchases/eServices/EDocument/ReturnShptPDFDocHandler.Codeunit.al
@@ -36,7 +36,7 @@ codeunit 4999 "Return Shpt. PDF Doc.Handler" implements IPdfDocumentHandler
exit(false);
ReturnShipment.SetRange("No.", ReturnShipment."No.");
- ReportUsage := "Report Selection Usage"::"P.Return";
+ ReportUsage := "Report Selection Usage"::"P.Ret.Shpt.";
ReportSelections.GetPdfReportForVend(TempBlob, ReportUsage, ReturnShipment, ReturnShipment."Buy-from Vendor No.");
DocumentMailing.GetAttachmentFileName(Name, ReturnShipment."No.", ReturnShipmentLbl, ReportUsage.AsInteger());
exit(PDFDocumentManagement.AddToTempAttachmentEntityBuffer(DocumentId, DocumentType, TempBlob, Name, TempAttachmentEntityBuffer));
diff --git a/src/Layers/W1/Tests/ERM/SpendRequestTests.Codeunit.al b/src/Layers/W1/Tests/ERM/SpendRequestTests.Codeunit.al
index 11f5d08109a..ea889fe6e72 100644
--- a/src/Layers/W1/Tests/ERM/SpendRequestTests.Codeunit.al
+++ b/src/Layers/W1/Tests/ERM/SpendRequestTests.Codeunit.al
@@ -341,6 +341,37 @@ codeunit 134242 "Spend Request Tests"
'Deleting detail should reduce header total.');
end;
+ [Test]
+ procedure DeleteDetailLineDecrementsHeaderTotalExactlyOnce()
+ var
+ SpendRequest: Record "Spend Request";
+ FirstSpendRequestDetail: Record "Spend Request Detail";
+ RemainingSpendRequestDetail: Record "Spend Request Detail";
+ begin
+ // [SCENARIO 646383] Real detail deletion applies each LCY delta exactly once without removing the other detail.
+ Initialize();
+
+ // [GIVEN] An open LCY request "R" initially has zero total and two details "D1" and "D2" worth 10 and 30.
+ CreateSpendRequest(SpendRequest);
+ VerifyDetailDeletionTotals(SpendRequest."No.", 0, 0);
+ CreateSpendRequestDetail(FirstSpendRequestDetail, SpendRequest."No.", 10);
+ CreateSpendRequestDetail(RemainingSpendRequestDetail, SpendRequest."No.", 30);
+ VerifyDetailDeletionTotals(SpendRequest."No.", 40, 2);
+
+ // [WHEN] Deleting "D1" runs the production table trigger, not a page action or a permission test.
+ FirstSpendRequestDetail.Delete(true);
+
+ // [THEN] "D2" survives and both its amount and the header total are 30.
+ RemainingSpendRequestDetail.Get(RemainingSpendRequestDetail."Spend Request No.", RemainingSpendRequestDetail."Line No.");
+ VerifyDetailDeletionTotals(SpendRequest."No.", 30, 1);
+
+ // [WHEN] The remaining detail "D2" is deleted through its production trigger.
+ RemainingSpendRequestDetail.Delete(true);
+
+ // [THEN] No details remain and the header total is exactly zero.
+ VerifyDetailDeletionTotals(SpendRequest."No.", 0, 0);
+ end;
+
[Test]
[Scope('OnPrem')]
procedure CannotInsertDetailOnReleasedRequest()
@@ -827,4 +858,21 @@ codeunit 134242 "Spend Request Tests"
// [THEN] An error is raised.
Assert.ExpectedError('must have the status ' + Format(SpendRequest.Status::Open));
end;
+
+ local procedure VerifyDetailDeletionTotals(SpendRequestNo: Code[20]; ExpectedAmount: Decimal; ExpectedLineCount: Integer)
+ var
+ SpendRequest: Record "Spend Request";
+ SpendRequestDetail: Record "Spend Request Detail";
+ begin
+ SpendRequest.Get(SpendRequestNo);
+ Assert.AreEqual(SpendRequest.Status::Open, SpendRequest.Status, 'Detail deletion must preserve the Open status.');
+ Assert.AreEqual('', SpendRequest."Currency Code", 'The request must use LCY.');
+ Assert.AreEqual(ExpectedAmount, SpendRequest."Total Expected Amount", 'The header amount must reflect each deleted detail exactly once.');
+ Assert.AreEqual(ExpectedAmount, SpendRequest."Total Expected Amount (LCY)", 'The LCY header amount must reflect each deleted detail exactly once.');
+ SpendRequestDetail.SetRange("Spend Request No.", SpendRequestNo);
+ Assert.AreEqual(ExpectedLineCount, SpendRequestDetail.Count(), 'Only the intended details must be deleted.');
+ SpendRequestDetail.CalcSums("Expected Amount", "Expected Amount (LCY)");
+ Assert.AreEqual(ExpectedAmount, SpendRequestDetail."Expected Amount", 'The remaining detail amounts must be unchanged.');
+ Assert.AreEqual(ExpectedAmount, SpendRequestDetail."Expected Amount (LCY)", 'The remaining LCY detail amounts must be unchanged.');
+ end;
}
\ No newline at end of file
diff --git a/src/Layers/W1/Tests/Misc/APITestAuthProviderTests.Codeunit.al b/src/Layers/W1/Tests/Misc/APITestAuthProviderTests.Codeunit.al
index 68ad16c6b2a..176103cdbcd 100644
--- a/src/Layers/W1/Tests/Misc/APITestAuthProviderTests.Codeunit.al
+++ b/src/Layers/W1/Tests/Misc/APITestAuthProviderTests.Codeunit.al
@@ -9,6 +9,7 @@ codeunit 139494 "API Test Auth Provider Tests"
{
EventSubscriberInstance = Manual;
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
@@ -23,6 +24,7 @@ codeunit 139494 "API Test Auth Provider Tests"
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryUtility: Codeunit "Library - Utility";
WebServiceManagement: Codeunit "Web Service Management";
+ IdentityManagement: Codeunit "Identity Management";
SecondLibraryGraphMgt: Codeunit "Library - Graph Mgt";
FirstHttpRequestMessage: HttpRequestMessage;
SecondHttpRequestMessage: HttpRequestMessage;
@@ -33,17 +35,81 @@ codeunit 139494 "API Test Auth Provider Tests"
UnexpectedCallErr: Label 'Unexpected authentication call.';
[Test]
- procedure DefaultAuthenticationDoesNotConfigureRequest()
+ [NonDebuggable]
+ [TransactionModel(TransactionModel::AutoCommit)]
+ procedure MissingKeyIsCreatedForRequest()
+ var
+ TargetURL: Text;
+ ResponseText: Text;
begin
- // [SCENARIO] The default API test authentication does not configure the request
+ // [SCENARIO] First-use authentication creates a key visible to the independent HTTP session
Initialize();
- // [GIVEN] A Graph library instance without an explicitly selected provider
+ // [GIVEN] The disposable test user's key is missing at a committed fixture boundary
+ IdentityManagement.ClearWebServicesKey(UserSecurityId());
+ Commit();
+ TargetURL := GetUrl(ClientType::ODataV4);
- // [WHEN] A web request is initialized
- LibraryGraphMgt.InitializeWebRequestWithURL(FirstHttpRequestMessage, TargetURLTok);
+ // [WHEN] A request uses the default provider without explicit selection
+ LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, TargetURL, 200);
- // [THEN] Only the final request event is raised
+ // [THEN] The request authenticates and only NavUserPassword requires a generated key
+ VerifyKeyPresenceForServerMode();
+ VerifyNextCall(EventCallTok);
+ VerifyNoRemainingCalls();
+ end;
+
+ [Test]
+ [NonDebuggable]
+ [TransactionModel(TransactionModel::AutoCommit)]
+ procedure ExistingKeySurvivesLibraryReset()
+ var
+ ExistingKey: Text[80];
+ TargetURL: Text;
+ ResponseText: Text;
+ begin
+ // [SCENARIO] A committed non-expiring key is reused across Graph library instances
+ Initialize();
+
+ // [GIVEN] The disposable test user has a committed key without an expiry
+ ExistingKey := IdentityManagement.CreateWebServicesKeyNoExpiry(UserSecurityId());
+ Commit();
+ TargetURL := GetUrl(ClientType::ODataV4);
+
+ // [WHEN] Two independently initialized library instances authenticate
+ LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, TargetURL, 200);
+ Clear(LibraryGraphMgt);
+ LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, TargetURL, 200);
+
+ // [THEN] Neither the key nor its expiry is changed
+ VerifyExistingKey(ExistingKey);
+ Clear(ExistingKey);
+ VerifyNextCall(EventCallTok);
+ VerifyNextCall(EventCallTok);
+ VerifyNoRemainingCalls();
+ end;
+
+ [Test]
+ [NonDebuggable]
+ [TransactionModel(TransactionModel::AutoCommit)]
+ procedure ExpiredKeyIsRenewedBeforeHttpRequest()
+ var
+ ExpiredKey: Text[80];
+ ResponseText: Text;
+ begin
+ // [SCENARIO] NavUserPassword authentication replaces an expired key before the API request
+ Initialize();
+
+ // [GIVEN] The disposable test user has a committed expired key
+ ExpiredKey := IdentityManagement.CreateWebServicesKey(UserSecurityId(), CurrentDateTime() - 60000);
+ Commit();
+
+ // [WHEN] The default provider sends the request
+ LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, GetUrl(ClientType::ODataV4), 200);
+
+ // [THEN] NavUserPassword renews the key while ambient authentication leaves it untouched
+ VerifyExpiredKeyForServerMode(ExpiredKey);
+ Clear(ExpiredKey);
VerifyNextCall(EventCallTok);
VerifyNoRemainingCalls();
end;
@@ -95,7 +161,7 @@ codeunit 139494 "API Test Auth Provider Tests"
// [SCENARIO] Authentication provider selection is scoped to a Graph library instance
Initialize();
- // [GIVEN] Two Graph library instances where only the first uses the mock provider
+ // [GIVEN] One Graph library instance using the mock provider and another using the default
LibraryGraphMgt.SetAuthenticationProvider(Enum::"API Test Authentication"::Mock);
// [WHEN] Each Graph library instance initializes a web request
@@ -132,17 +198,17 @@ codeunit 139494 "API Test Auth Provider Tests"
end;
[Test]
- procedure SelectingNoneStopsConfiguringRequests()
+ procedure SelectingDefaultRestoresDefaultAuthentication()
begin
- // [SCENARIO] Selecting None replaces the previously selected provider
+ // [SCENARIO] Selecting Default replaces the previously selected mock provider
Initialize();
// [GIVEN] A request has used the mock provider
LibraryGraphMgt.SetAuthenticationProvider(Enum::"API Test Authentication"::Mock);
LibraryGraphMgt.InitializeWebRequestWithURL(FirstHttpRequestMessage, TargetURLTok);
- // [WHEN] Authentication is deselected before another request
- LibraryGraphMgt.SetAuthenticationProvider(Enum::"API Test Authentication"::None);
+ // [WHEN] Default authentication is selected before another request
+ LibraryGraphMgt.SetAuthenticationProvider(Enum::"API Test Authentication"::Default);
LibraryGraphMgt.InitializeWebRequestWithURL(SecondHttpRequestMessage, TargetURLTok);
// [THEN] Only the first request invokes the mock provider
@@ -275,6 +341,42 @@ codeunit 139494 "API Test Auth Provider Tests"
exit(LibraryGraphMgt.CreateTargetURL('', Page::"Customer List", ''));
end;
+ [NonDebuggable]
+ local procedure GetCurrentWebServiceKey(): Text[80]
+ var
+ WebServiceKey: Text[80];
+ begin
+ ClearLastError();
+ WebServiceKey := IdentityManagement.GetWebServicesKey(UserSecurityId());
+ Assert.IsTrue(GetLastErrorText() = '', 'The current user key must be readable.');
+ exit(WebServiceKey);
+ end;
+
+ [NonDebuggable]
+ local procedure VerifyKeyPresenceForServerMode()
+ begin
+ Assert.AreEqual(
+ IdentityManagement.IsUserNamePasswordAuthentication(), GetCurrentWebServiceKey() <> '',
+ 'Only NavUserPassword authentication should provision a key for the request.');
+ end;
+
+ [NonDebuggable]
+ local procedure VerifyExistingKey(ExistingKey: Text[80])
+ begin
+ Assert.IsTrue(ExistingKey = GetCurrentWebServiceKey(), 'Authentication must not rotate an existing key.');
+ Assert.AreEqual(0DT, IdentityManagement.GetWebServiceExpiryDate(UserSecurityId()), 'A non-expiring key must stay non-expiring.');
+ end;
+
+ [NonDebuggable]
+ local procedure VerifyExpiredKeyForServerMode(ExpiredKey: Text[80])
+ begin
+ if IdentityManagement.IsUserNamePasswordAuthentication() then begin
+ Assert.IsTrue(ExpiredKey <> GetCurrentWebServiceKey(), 'An expired key must be replaced.');
+ Assert.IsTrue(IdentityManagement.GetWebServiceExpiryDate(UserSecurityId()) > CurrentDateTime(), 'The replacement key must not be expired.');
+ end else
+ Assert.IsTrue(ExpiredKey = GetCurrentWebServiceKey(), 'Ambient authentication must not change the key.');
+ end;
+
local procedure VerifyNextCall(ExpectedCall: Text)
begin
APITestAuthProviderTests.VerifyRecordedCall(ExpectedCall);
diff --git a/src/Layers/W1/Tests/TestLibraries/APITestAuthentication.Enum.al b/src/Layers/W1/Tests/TestLibraries/APITestAuthentication.Enum.al
index c7ad8041b73..dac29b63510 100644
--- a/src/Layers/W1/Tests/TestLibraries/APITestAuthentication.Enum.al
+++ b/src/Layers/W1/Tests/TestLibraries/APITestAuthentication.Enum.al
@@ -11,16 +11,10 @@
enum 131023 "API Test Authentication" implements "API Test Auth Provider"
{
Extensible = true;
- DefaultImplementation = "API Test Auth Provider" = "No API Test Auth Provider";
+ DefaultImplementation = "API Test Auth Provider" = "Microsoft Test Auth Provider";
- value(0; None)
+ value(0; Default)
{
- Caption = 'None';
- Implementation = "API Test Auth Provider" = "No API Test Auth Provider";
- }
- value(1; "Microsoft Test Environment")
- {
- Caption = 'Microsoft Test Environment';
- Implementation = "API Test Auth Provider" = "Microsoft Test Auth Provider";
+ Caption = 'Default';
}
}
diff --git a/src/Layers/W1/Tests/TestLibraries/LibraryGraphDocumentTools.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/LibraryGraphDocumentTools.Codeunit.al
index cc281f04818..5391a419398 100644
--- a/src/Layers/W1/Tests/TestLibraries/LibraryGraphDocumentTools.Codeunit.al
+++ b/src/Layers/W1/Tests/TestLibraries/LibraryGraphDocumentTools.Codeunit.al
@@ -582,17 +582,16 @@ codeunit 130619 "Library - Graph Document Tools"
VATBusinessPostingGroup: Record "VAT Business Posting Group";
FixedAsset: Record "Fixed Asset";
GLAccount: Record "G/L Account";
- VATPostingSetup: Record "VAT Posting Setup";
begin
LibraryInventory.CreateItemCharge(ItemCharge);
+ EnsureVATPostingSetupExists(
+ SalesHeader."VAT Bus. Posting Group", ItemCharge."VAT Prod. Posting Group");
LibrarySales.CreateSalesLine(SalesLineCharge, SalesHeader, SalesLineCharge.Type::"Charge (Item)", ItemCharge."No.", 1);
LibraryERM.FindVATBusinessPostingGroup(VATBusinessPostingGroup);
LibraryResource.CreateResource(Resource, VATBusinessPostingGroup.Code);
- VATPostingSetup.SetRange("VAT Bus. Posting Group", SalesHeader."VAT Bus. Posting Group");
- VATPostingSetup.SetRange("VAT Prod. Posting Group", Resource."VAT Prod. Posting Group");
- if not VATPostingSetup.FINDFIRST() then
- LibraryERM.CreateVATPostingSetup(VATPostingSetup, SalesHeader."VAT Bus. Posting Group", Resource."VAT Prod. Posting Group");
+ EnsureVATPostingSetupExists(
+ SalesHeader."VAT Bus. Posting Group", Resource."VAT Prod. Posting Group");
LibrarySales.CreateSalesLine(SalesLineResource, SalesHeader, SalesLineResource.Type::Resource, Resource."No.", 1);
LibraryFixedAsset.CreateFixedAsset(FixedAsset);
@@ -619,6 +618,8 @@ codeunit 130619 "Library - Graph Document Tools"
GLAccount: Record "G/L Account";
begin
LibraryInventory.CreateItemCharge(ItemCharge);
+ EnsureVATPostingSetupExists(
+ PurchaseHeader."VAT Bus. Posting Group", ItemCharge."VAT Prod. Posting Group");
LibraryPurchase.CreatePurchaseLine(
PurchaseLineCharge, PurchaseHeader, PurchaseLineCharge.Type::"Charge (Item)", ItemCharge."No.", 1);
@@ -636,10 +637,27 @@ codeunit 130619 "Library - Graph Document Tools"
GLAccount.SetRange("Direct Posting", true);
#pragma warning restore AA0210
GLAccount.FindFirst();
+ EnsureVATPostingSetupExists(
+ PurchaseHeader."VAT Bus. Posting Group", GLAccount."VAT Prod. Posting Group");
LibraryPurchase.CreatePurchaseLine(
PurchaseLineGLAccount, PurchaseHeader, PurchaseLineGLAccount.Type::"G/L Account", GLAccount."No.", 1);
end;
+ /// Creates VAT posting setup when the specified posting-group combination does not exist.
+ /// VAT business posting group.
+ /// VAT product posting group.
+ procedure EnsureVATPostingSetupExists(VATBusPostingGroup: Code[20]; VATProdPostingGroup: Code[20])
+ var
+ VATPostingSetup: Record "VAT Posting Setup";
+ begin
+ if (VATBusPostingGroup = '') and (VATProdPostingGroup = '') then
+ exit;
+ if VATPostingSetup.Get(VATBusPostingGroup, VATProdPostingGroup) then
+ exit;
+
+ LibraryERM.CreateVATPostingSetup(VATPostingSetup, VATBusPostingGroup, VATProdPostingGroup);
+ end;
+
[Scope('OnPrem')]
procedure VerifySalesObjectTxtDescription(SalesLine: Record "Sales Line"; JObjectTxt: Text)
var
diff --git a/src/Layers/W1/Tests/TestLibraries/LibraryGraphJournalLines.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/LibraryGraphJournalLines.Codeunit.al
index ea303197684..8a43c82f71d 100644
--- a/src/Layers/W1/Tests/TestLibraries/LibraryGraphJournalLines.Codeunit.al
+++ b/src/Layers/W1/Tests/TestLibraries/LibraryGraphJournalLines.Codeunit.al
@@ -235,6 +235,11 @@ codeunit 130622 "Library - Graph Journal Lines"
begin
JournalName := LibraryUtility.GenerateRandomCode(GenJournalBatch.FieldNo(Name), DATABASE::"Gen. Journal Batch");
LibraryAPIGeneralJournal.EnsureGenJnlBatchExists(GraphMgtJournal.GetDefaultVendorPaymentsTemplateName(), JournalName);
+ GenJournalBatch.Get(GraphMgtJournal.GetDefaultVendorPaymentsTemplateName(), JournalName);
+ if GenJournalBatch."No. Series" = '' then begin
+ GenJournalBatch.Validate("No. Series", LibraryERM.CreateNoSeriesCode());
+ GenJournalBatch.Modify(true);
+ end;
exit(JournalName);
end;
diff --git a/src/Layers/W1/Tests/TestLibraries/LibraryGraphMgt.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/LibraryGraphMgt.Codeunit.al
index 5f820abf482..affec140784 100644
--- a/src/Layers/W1/Tests/TestLibraries/LibraryGraphMgt.Codeunit.al
+++ b/src/Layers/W1/Tests/TestLibraries/LibraryGraphMgt.Codeunit.al
@@ -18,8 +18,24 @@ codeunit 130618 "Library - Graph Mgt"
RemoteServerErr: Label 'The remote server returned an error: (%1) %2.', Comment = '%1 - response code number, %2 - reason phrase';
JsonContentTypeTok: Label 'application/json;odata.metadata=minimal', Locked = true;
+ /// Adds a field to the ignored-field buffer when the field exists in the source table.
+ /// Temporary ignored-field buffer.
+ /// Source table number.
+ /// Source field name.
+ procedure AddFieldToIgnoreIfExists(var TempIgnoredFields: Record 2000000041 temporary; SourceTableNo: Integer; SourceFieldName: Text)
+ var
+ RecordField: Record Field;
+ LibraryUtility: Codeunit "Library - Utility";
+ begin
+ RecordField.SetRange(TableNo, SourceTableNo);
+ RecordField.SetRange(FieldName, SourceFieldName);
+ if RecordField.FindFirst() then
+ LibraryUtility.AddTempField(TempIgnoredFields, RecordField."No.", SourceTableNo);
+ end;
+
///
/// Sets the authentication provider used by this library instance.
+ /// Without an explicit selection, the enum's default implementation is used.
/// Selecting the same provider preserves its cached state.
///
/// The authentication provider to use for subsequent API test requests.
@@ -33,6 +49,12 @@ codeunit 130618 "Library - Graph Mgt"
AuthenticationProviderResolved := true;
end;
+ /// Sets the work date to November 15 in the current year to stay within test-license date limits.
+ procedure SetLicenseSafeWorkDate()
+ begin
+ WorkDate := DMY2Date(15, 11, Date2DMY(Today, 3));
+ end;
+
procedure EnsureWebServiceExist(ServiceNameTxt: Text[240]; PageNumber: Integer)
var
WebService: Record "Web Service";
diff --git a/src/Layers/W1/Tests/TestLibraries/MicrosoftTestAuthProvider.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/MicrosoftTestAuthProvider.Codeunit.al
index e0516d38988..9a011d2ad80 100644
--- a/src/Layers/W1/Tests/TestLibraries/MicrosoftTestAuthProvider.Codeunit.al
+++ b/src/Layers/W1/Tests/TestLibraries/MicrosoftTestAuthProvider.Codeunit.al
@@ -5,92 +5,82 @@
namespace Microsoft.TestLibraries.ERP;
-using System;
-using System.Azure.KeyVault;
using System.Environment;
using System.Security.AccessControl;
-using System.Test.Library;
///
-/// Provides authentication for API tests running in Microsoft test environments.
+/// Provides API test authentication using the current user's web service key.
///
codeunit 131022 "Microsoft Test Auth Provider" implements "API Test Auth Provider"
{
Access = Internal;
var
- ApiTestPasswordFileTok: Label 'C:\Run\my\ApiTestPassword', Locked = true;
- NavServerUserPasswordKeyTok: Label 'NavServerUserPassword', Locked = true;
- CachedAuthenticationPassword: SecretText;
- ContainerPasswordReadErr: Label 'The API test password could not be read from %1.', Comment = '%1 - Password file path';
- KeyVaultPasswordReadErr: Label 'The API test password could not be retrieved from the %1 secret.', Comment = '%1 - Azure Key Vault secret name';
- PasswordRetrievalFailedErr: Label 'The API test password could not be retrieved.';
+ KeyRetrievalFailedErr: Label 'The API test web service key could not be retrieved. Check the current user permissions.';
+ EmptyKeyErr: Label 'An empty API test web service key was returned.';
///
- /// Configures authentication for API test requests, preserving ambient authentication on Windows and SaaS.
+ /// Uses the current user's web service key only with NavUserPassword authentication on-premises.
+ /// Preserves ambient authentication for Windows, SaaS, and other authentication modes.
+ /// Valid keys are reused; missing or expired keys are created with a 24-hour expiry.
///
/// The authentication context to configure.
procedure ConfigureAuthentication(var Authentication: Codeunit "API Test Auth Context")
var
EnvironmentInfo: Codeunit "Environment Information";
- SecurityGroup: Codeunit "Security Group";
+ IdentityManagement: Codeunit "Identity Management";
begin
if EnvironmentInfo.IsSaaSInfrastructure() then
exit;
- if SecurityGroup.IsWindowsAuthentication() then
+ if not IdentityManagement.IsUserNamePasswordAuthentication() then
exit;
- Authentication.SetBasicAuthentication(UserId(), GetAuthenticationPassword());
+ Authentication.SetBasicAuthentication(UserId(), GetWebServiceKey());
end;
- local procedure GetAuthenticationPassword(): SecretText
- var
- Password: SecretText;
- begin
- if not CachedAuthenticationPassword.IsEmpty() then
- exit(CachedAuthenticationPassword);
-
- if ContainerPasswordFileExists() then begin
- if not TryGetContainerPassword(Password) then
- Error(ContainerPasswordReadErr, ApiTestPasswordFileTok);
- end else
- if not TryGetNavEnlistmentPassword(Password) then
- Error(KeyVaultPasswordReadErr, NavServerUserPasswordKeyTok);
-
- CachedAuthenticationPassword := Password;
- exit(CachedAuthenticationPassword);
- end;
-
- [Scope('OnPrem')]
- local procedure ContainerPasswordFileExists(): Boolean
+ [NonDebuggable]
+ local procedure GetWebServiceKey(): SecretText
var
- File: DotNet File;
+ IdentityManagement: Codeunit "Identity Management";
+ WebServiceKey: SecretText;
+ ExpiryDate: DateTime;
begin
- exit(File.Exists(ApiTestPasswordFileTok));
+ WebServiceKey := ReadWebServiceKey(ExpiryDate);
+ if WebServiceKey.IsEmpty() or ((ExpiryDate <> 0DT) and (ExpiryDate <= CurrentDateTime())) then begin
+ ExpiryDate := CurrentDateTime() + 24 * 60 * 60 * 1000;
+ WebServiceKey := IdentityManagement.CreateWebServicesKey(UserSecurityId(), ExpiryDate);
+ // The request is authenticated by a separate server session, which only sees committed data.
+ Commit();
+ end;
+ if WebServiceKey.IsEmpty() then
+ Error(EmptyKeyErr);
+ exit(WebServiceKey);
end;
- [TryFunction]
[NonDebuggable]
- local procedure TryGetContainerPassword(var Password: SecretText)
+ local procedure ReadWebServiceKey(var ExpiryDate: DateTime): SecretText
var
- MockAzureKeyvaultSecretProvider: DotNet MockAzureKeyVaultSecretProvider;
+ IdentityManagement: Codeunit "Identity Management";
+ WebServiceKey: Text[80];
+ SecretWebServiceKey: SecretText;
begin
- // Read through a private provider without replacing the session's Azure Key Vault provider or cache.
- MockAzureKeyvaultSecretProvider := MockAzureKeyvaultSecretProvider.MockAzureKeyVaultSecretProvider();
- MockAzureKeyvaultSecretProvider.AddSecretMappingFromFile(NavServerUserPasswordKeyTok, ApiTestPasswordFileTok);
- Password := MockAzureKeyvaultSecretProvider.GetSecret(NavServerUserPasswordKeyTok);
- if Password.IsEmpty() then
- Error(PasswordRetrievalFailedErr);
- end;
+ // Identity Management substitutes error text on failure. Check fresh error state, not key format.
+ ClearLastError();
+ WebServiceKey := IdentityManagement.GetWebServicesKey(UserSecurityId());
+ if GetLastErrorText() <> '' then begin
+ Clear(WebServiceKey);
+ Error(KeyRetrievalFailedErr);
+ end;
+ SecretWebServiceKey := WebServiceKey;
+ Clear(WebServiceKey);
- [TryFunction]
- local procedure TryGetNavEnlistmentPassword(var Password: SecretText)
- var
- AzureKeyVault: Codeunit "Azure Key Vault";
- begin
- if not AzureKeyVault.GetAzureKeyVaultSecret(NavServerUserPasswordKeyTok, Password) then
- Error(PasswordRetrievalFailedErr);
- if Password.IsEmpty() then
- Error(PasswordRetrievalFailedErr);
+ // The expiry getter also substitutes a value on failure.
+ ClearLastError();
+ ExpiryDate := IdentityManagement.GetWebServiceExpiryDate(UserSecurityId());
+ if GetLastErrorText() <> '' then begin
+ Clear(SecretWebServiceKey);
+ Error(KeyRetrievalFailedErr);
+ end;
+ exit(SecretWebServiceKey);
end;
}
diff --git a/src/Layers/W1/Tests/TestLibraries/NoAPITestAuthProvider.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/NoAPITestAuthProvider.Codeunit.al
deleted file mode 100644
index 6b744459e86..00000000000
--- a/src/Layers/W1/Tests/TestLibraries/NoAPITestAuthProvider.Codeunit.al
+++ /dev/null
@@ -1,22 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-
-#pragma warning disable AA0247
-
-///
-/// Leaves API test requests configured with the library's default authentication behavior (the default credentials of the Business Central service).
-///
-codeunit 131024 "No API Test Auth Provider" implements "API Test Auth Provider"
-{
- Access = Internal;
-
- ///
- /// Leaves the authentication context unchanged.
- ///
- /// The authentication context to configure.
- procedure ConfigureAuthentication(var Authentication: Codeunit "API Test Auth Context")
- begin
- end;
-}