-
Notifications
You must be signed in to change notification settings - Fork 412
[E-Document Formats] Migrate NAV PRs 247170 and 247176 into BCApps #9426
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Groenbech96
wants to merge
7
commits into
main
Choose a base branch
from
user/magnushar/migrate-nav-pr-247170-247176
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
ae03777
Migrate NAV PRs 247170 and 247176 into BCApps
aaaa529
Merge remote-tracking branch 'origin/main' into user/magnushar/migrat…
66d31dc
fix(ci): restore AA0139 scope and add XML helper for e-doc handlers
4d31aef
fix(ci): reassign EDocument XML Helper to ID 6430 and fix pragma/labels
8178f35
fix(edoc): reuse PEPPOL utility and remove helper codeunit
4a9f49d
fix(ci): correct PINT/FacturaE structured handlers
456c38d
Fix compile errors in FacturaE and PINT A-NZ E-Document handlers
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
312 changes: 312 additions & 0 deletions
312
src/Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/EDocumentPINTANZHandler.Codeunit.al
Large diffs are not rendered by default.
Oops, something went wrong.
17 changes: 17 additions & 0 deletions
17
src/Apps/APAC/EDocumentFormats/PINT A-NZ/app/src/Core/PINTANZEDocReadintoDraft.EnumExt.al
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| // ------------------------------------------------------------------------------------------------ | ||
| // Copyright (c) Microsoft Corporation. All rights reserved. | ||
| // Licensed under the MIT License. See License.txt in the project root for license information. | ||
| // ------------------------------------------------------------------------------------------------ | ||
| namespace Microsoft.eServices.EDocument.Format; | ||
|
|
||
| using Microsoft.eServices.EDocument.Processing.Import; | ||
| using Microsoft.eServices.EDocument.Processing.Interfaces; | ||
|
|
||
| enumextension 28006 "PINT A-NZ EDoc Read into Draft" extends "E-Doc. Read into Draft" | ||
| { | ||
| value(28005; "PINT A-NZ") | ||
| { | ||
| Caption = 'PINT A-NZ'; | ||
| Implementation = IStructuredFormatReader = "E-Document PINT A-NZ Handler"; | ||
| } | ||
| } |
207 changes: 207 additions & 0 deletions
207
src/Apps/APAC/EDocumentFormats/PINT A-NZ/test/.resources/pint_a-nz/pint_a-nz-invoice-0.xml
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
src/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocFormatMock.Codeunit.al
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| // ------------------------------------------------------------------------------------------------ | ||
| // Copyright (c) Microsoft Corporation. All rights reserved. | ||
| // Licensed under the MIT License. See License.txt in the project root for license information. | ||
| // ------------------------------------------------------------------------------------------------ | ||
| codeunit 148007 "E-Doc. Format Mock" implements "E-Document" | ||
| { | ||
| SingleInstance = true; | ||
|
|
||
| procedure Check(var SourceDocumentHeader: RecordRef; EDocService: Record "E-Document Service"; EDocumentProcessingPhase: enum "E-Document Processing Phase"); | ||
| begin | ||
| OnCheck(SourceDocumentHeader, EDocService, EDocumentProcessingPhase); | ||
| end; | ||
|
|
||
| procedure Create(EDocService: Record "E-Document Service"; var EDocument: Record "E-Document"; var SourceDocumentHeader: RecordRef; var SourceDocumentLines: RecordRef; var TempBlob: codeunit "Temp Blob"); | ||
| begin | ||
| OnCreate(EDocService, EDocument, SourceDocumentHeader, SourceDocumentLines, TempBlob); | ||
| end; | ||
|
|
||
| procedure CreateBatch(EDocService: Record "E-Document Service"; var EDocuments: Record "E-Document"; var SourceDocumentHeaders: RecordRef; var SourceDocumentsLines: RecordRef; var TempBlob: codeunit "Temp Blob"); | ||
| begin | ||
| OnCreateBatch(EDocService, EDocuments, SourceDocumentHeaders, SourceDocumentsLines, TempBlob); | ||
| end; | ||
|
|
||
| procedure GetBasicInfoFromReceivedDocument(var EDocument: Record "E-Document"; var TempBlob: codeunit "Temp Blob"); | ||
| begin | ||
| OnGetBasicInfoFromReceivedDocument(EDocument, TempBlob); | ||
| end; | ||
|
|
||
| procedure GetCompleteInfoFromReceivedDocument(var EDocument: Record "E-Document"; var CreatedDocumentHeader: RecordRef; var CreatedDocumentLines: RecordRef; var TempBlob: codeunit "Temp Blob"); | ||
| begin | ||
| OnGetCompleteInfoFromReceivedDocument(EDocument, CreatedDocumentHeader, CreatedDocumentLines, TempBlob); | ||
| end; | ||
|
|
||
| [IntegrationEvent(false, false)] | ||
| local procedure OnCheck(var SourceDocumentHeader: RecordRef; EDocService: Record "E-Document Service"; EDocumentProcessingPhase: enum "E-Document Processing Phase") | ||
| begin | ||
| end; | ||
|
|
||
| [IntegrationEvent(false, false)] | ||
| local procedure OnCreate(EDocService: Record "E-Document Service"; var EDocument: Record "E-Document"; var SourceDocumentHeader: RecordRef; var SourceDocumentLines: RecordRef; var TempBlob: codeunit "Temp Blob"); | ||
| begin | ||
| end; | ||
|
|
||
| [IntegrationEvent(false, false)] | ||
| local procedure OnCreateBatch(EDocService: Record "E-Document Service"; var EDocuments: Record "E-Document"; var SourceDocumentHeaders: RecordRef; var SourceDocumentsLines: RecordRef; var TempBlob: codeunit "Temp Blob"); | ||
| begin | ||
| end; | ||
|
|
||
| [IntegrationEvent(false, false)] | ||
| local procedure OnGetBasicInfoFromReceivedDocument(var EDocument: Record "E-Document"; var TempBlob: codeunit "Temp Blob"); | ||
| begin | ||
| end; | ||
|
|
||
| [IntegrationEvent(false, false)] | ||
| local procedure OnGetCompleteInfoFromReceivedDocument(var EDocument: Record "E-Document"; var CreatedDocumentHeader: RecordRef; var CreatedDocumentLines: RecordRef; var TempBlob: codeunit "Temp Blob"); | ||
| begin | ||
| end; | ||
| } |
11 changes: 11 additions & 0 deletions
11
src/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocFormatMock.EnumExt.al
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| // ------------------------------------------------------------------------------------------------ | ||
| // Copyright (c) Microsoft Corporation. All rights reserved. | ||
| // Licensed under the MIT License. See License.txt in the project root for license information. | ||
| // ------------------------------------------------------------------------------------------------ | ||
| enumextension 148003 "E-Doc. Format Mock" extends "E-Document Format" | ||
| { | ||
| value(6160; "Mock") | ||
| { | ||
| Implementation = "E-Document" = "E-Doc. Format Mock"; | ||
| } | ||
| } | ||
272 changes: 272 additions & 0 deletions
272
src/Apps/APAC/EDocumentFormats/PINT A-NZ/test/src/EDocumentStructuredTests.Codeunit.al
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,272 @@ | ||
| // ------------------------------------------------------------------------------------------------ | ||
| // Copyright (c) Microsoft Corporation. All rights reserved. | ||
| // Licensed under the MIT License. See License.txt in the project root for license information. | ||
| // ------------------------------------------------------------------------------------------------ | ||
| codeunit 148005 "E-Document Structured Tests" | ||
| { | ||
| Subtype = Test; | ||
| TestType = IntegrationTest; | ||
|
|
||
| var | ||
| Customer: Record Customer; | ||
| Vendor: Record Vendor; | ||
| EDocumentService: Record "E-Document Service"; | ||
| Assert: Codeunit Assert; | ||
| LibraryVariableStorage: Codeunit "Library - Variable Storage"; | ||
| LibraryEDoc: Codeunit "Library - E-Document"; | ||
| LibraryLowerPermission: Codeunit "Library - Lower Permissions"; | ||
| PINTANZStructuredValidations: Codeunit "PINTANZ Structured Validations"; | ||
| IsInitialized: Boolean; | ||
| EDocumentStatusNotUpdatedErr: Label 'The status of the EDocument was not updated to the expected status after the step was executed.'; | ||
| TestFileTok: Label 'pint_a-nz/pint_a-nz-invoice-0.xml', Locked = true; | ||
| MockCurrencyCode: Code[10]; | ||
| MockDate: Date; | ||
|
|
||
| #region PINT A-NZ XML | ||
| [Test] | ||
| procedure TestPINTANZInvoice_ValidDocument() | ||
| var | ||
| EDocument: Record "E-Document"; | ||
| begin | ||
| // [FEATURE] [E-Document] [PINTANZ] [Import] | ||
| // [SCENARIO] Import and process a valid PINTANZ invoice document | ||
|
|
||
| // [GIVEN] A valid PINTANZ XML invoice document is imported | ||
| Initialize(Enum::"Service Integration"::"No Integration"); | ||
| SetupPINTANZEDocumentService(); | ||
| CreateInboundEDocumentFromXML(EDocument, TestFileTok); | ||
|
|
||
| // [WHEN] The document is processed to draft status | ||
| if ProcessEDocumentToStep(EDocument, "Import E-Document Steps"::"Read into Draft") then begin | ||
| PINTANZStructuredValidations.SetMockCurrencyCode(MockCurrencyCode); | ||
| PINTANZStructuredValidations.SetMockDate(MockDate); | ||
|
|
||
| // [THEN] The full E-Document content is correctly extracted | ||
| PINTANZStructuredValidations.AssertFullEDocumentContentExtracted(EDocument."Entry No"); | ||
| end else | ||
| Assert.Fail(EDocumentStatusNotUpdatedErr); | ||
| end; | ||
|
|
||
| [Test] | ||
| [HandlerFunctions('EDocumentPurchaseHeaderPageHandler')] | ||
| procedure TestPINTANZInvoice_ValidDocument_ViewExtractedData() | ||
| var | ||
| EDocument: Record "E-Document"; | ||
| EDocImport: Codeunit "E-Doc. Import"; | ||
| begin | ||
| // [FEATURE] [E-Document] [PINTANZ] [View Data] | ||
| // [SCENARIO] View extracted data from a valid PINTANZ invoice document | ||
|
|
||
| // [GIVEN] A valid PINTANZ XML invoice document is imported | ||
| Initialize(Enum::"Service Integration"::"No Integration"); | ||
| SetupPINTANZEDocumentService(); | ||
| CreateInboundEDocumentFromXML(EDocument, TestFileTok); | ||
|
|
||
| // [WHEN] The document is processed to draft status | ||
| ProcessEDocumentToStep(EDocument, "Import E-Document Steps"::"Read into Draft"); | ||
| EDocument.Get(EDocument."Entry No"); | ||
|
|
||
| // [WHEN] View extracted data is called | ||
| EDocImport.ViewExtractedData(EDocument); | ||
|
|
||
| // [THEN] The extracted data page opens and can be handled properly (verified by page handler) | ||
| // EDocumentPurchaseHeaderPageHandler | ||
| end; | ||
|
|
||
| [Test] | ||
| procedure TestPINTANZInvoice_ValidDocument_PurchaseInvoiceCreated() | ||
| var | ||
| EDocument: Record "E-Document"; | ||
| PurchaseHeader: Record "Purchase Header"; | ||
| DummyItem: Record Item; | ||
| EDocumentProcessing: Codeunit "E-Document Processing"; | ||
| DataTypeManagement: Codeunit "Data Type Management"; | ||
| RecRef: RecordRef; | ||
| VariantRecord: Variant; | ||
| begin | ||
| // [FEATURE] [E-Document] [PINTANZ] [Purchase Invoice Creation] | ||
| // [SCENARIO] Create a purchase invoice from a valid PINTANZ invoice document | ||
|
|
||
| // [GIVEN] A valid PINTANZ XML invoice document is imported | ||
| Initialize(Enum::"Service Integration"::"No Integration"); | ||
| SetupPINTANZEDocumentService(); | ||
| CreateInboundEDocumentFromXML(EDocument, TestFileTok); | ||
|
|
||
| // [WHEN] The document is processed through finish draft step | ||
| ProcessEDocumentToStep(EDocument, "Import E-Document Steps"::"Finish draft"); | ||
| EDocument.Get(EDocument."Entry No"); | ||
|
|
||
| // [WHEN] The created purchase record is retrieved | ||
| EDocumentProcessing.GetRecord(EDocument, VariantRecord); | ||
| DataTypeManagement.GetRecordRef(VariantRecord, RecRef); | ||
| RecRef.SetTable(PurchaseHeader); | ||
|
|
||
| // [THEN] The purchase header is correctly created with PINTANZ data | ||
| PINTANZStructuredValidations.SetMockCurrencyCode(MockCurrencyCode); | ||
| PINTANZStructuredValidations.SetMockDate(MockDate); | ||
| PINTANZStructuredValidations.AssertPurchaseDocument(Vendor."No.", PurchaseHeader, DummyItem); | ||
| end; | ||
|
|
||
| [Test] | ||
| procedure TestPINTANZInvoice_ValidDocument_UpdateDraftAndFinalize() | ||
| var | ||
| EDocument: Record "E-Document"; | ||
| PurchaseHeader: Record "Purchase Header"; | ||
| Item: Record Item; | ||
| EDocImportParameters: Record "E-Doc. Import Parameters"; | ||
| EDocImport: Codeunit "E-Doc. Import"; | ||
| EDocumentProcessing: Codeunit "E-Document Processing"; | ||
| DataTypeManagement: Codeunit "Data Type Management"; | ||
| RecRef: RecordRef; | ||
| EDocPurchaseDraft: TestPage "E-Document Purchase Draft"; | ||
| VariantRecord: Variant; | ||
| begin | ||
| // [FEATURE] [E-Document] [PINTANZ] [Draft Update] | ||
| // [SCENARIO] Update draft purchase document data and finalize processing | ||
|
|
||
| // [GIVEN] A valid PINTANZ XML invoice document is imported and processed to draft preparation | ||
| Initialize(Enum::"Service Integration"::"No Integration"); | ||
| SetupPINTANZEDocumentService(); | ||
| CreateInboundEDocumentFromXML(EDocument, TestFileTok); | ||
| ProcessEDocumentToStep(EDocument, "Import E-Document Steps"::"Prepare draft"); | ||
|
|
||
| // [GIVEN] A generic item is created for manual assignment | ||
| LibraryEDoc.CreateGenericItem(Item, ''); | ||
|
|
||
| // [WHEN] The draft document is opened and modified through UI | ||
| EDocPurchaseDraft.OpenEdit(); | ||
| EDocPurchaseDraft.GoToRecord(EDocument); | ||
| EDocPurchaseDraft.Lines.First(); | ||
| EDocPurchaseDraft.Lines."No.".SetValue(Item."No."); | ||
| EDocPurchaseDraft.Lines.Next(); | ||
|
|
||
| // [WHEN] The processing is completed to finish draft step | ||
| EDocImportParameters."Step to Run" := "Import E-Document Steps"::"Finish draft"; | ||
| EDocImport.ProcessIncomingEDocument(EDocument, EDocImportParameters); | ||
| EDocument.Get(EDocument."Entry No"); | ||
|
|
||
| // [WHEN] The final purchase record is retrieved | ||
| EDocumentProcessing.GetRecord(EDocument, VariantRecord); | ||
| DataTypeManagement.GetRecordRef(VariantRecord, RecRef); | ||
| RecRef.SetTable(PurchaseHeader); | ||
|
|
||
| // [THEN] The purchase header contains both imported PINTANZ data and manual updates | ||
| PINTANZStructuredValidations.SetMockCurrencyCode(MockCurrencyCode); | ||
| PINTANZStructuredValidations.SetMockDate(MockDate); | ||
| PINTANZStructuredValidations.AssertPurchaseDocument(Vendor."No.", PurchaseHeader, Item); | ||
| end; | ||
|
|
||
| [PageHandler] | ||
| procedure EDocumentPurchaseHeaderPageHandler(var EDocReadablePurchaseDoc: TestPage "E-Doc. Readable Purchase Doc.") | ||
| begin | ||
| EDocReadablePurchaseDoc.Close(); | ||
| end; | ||
| #endregion | ||
|
|
||
| local procedure Initialize(Integration: Enum "Service Integration") | ||
| var | ||
| TransformationRule: Record "Transformation Rule"; | ||
| EDocument: Record "E-Document"; | ||
| EDocDataStorage: Record "E-Doc. Data Storage"; | ||
| EDocumentsSetup: Record "E-Documents Setup"; | ||
| EDocumentServiceStatus: Record "E-Document Service Status"; | ||
| EDocumentPurchaseHeader: Record "E-Document Purchase Header"; | ||
| EDocumentPurchaseLine: Record "E-Document Purchase Line"; | ||
| DocumentAttachment: Record "Document Attachment"; | ||
| Currency: Record Currency; | ||
| begin | ||
| LibraryLowerPermission.SetOutsideO365Scope(); | ||
| LibraryVariableStorage.Clear(); | ||
| Clear(LibraryVariableStorage); | ||
|
|
||
| if IsInitialized then | ||
| exit; | ||
|
|
||
| EDocument.DeleteAll(false); | ||
| EDocumentServiceStatus.DeleteAll(false); | ||
| EDocumentService.DeleteAll(false); | ||
| EDocDataStorage.DeleteAll(false); | ||
| EDocumentPurchaseHeader.DeleteAll(false); | ||
| EDocumentPurchaseLine.DeleteAll(false); | ||
| DocumentAttachment.DeleteAll(false); | ||
|
|
||
| LibraryEDoc.SetupStandardVAT(); | ||
| LibraryEDoc.SetupStandardSalesScenario(Customer, EDocumentService, Enum::"E-Document Format"::"PINT A-NZ", Integration); | ||
| LibraryEDoc.SetupStandardPurchaseScenario(Vendor, EDocumentService, Enum::"E-Document Format"::"PINT A-NZ", Integration); | ||
| EDocumentService."Import Process" := "E-Document Import Process"::"Version 2.0"; | ||
| EDocumentService."Read into Draft Impl." := "E-Doc. Read into Draft"::"PINT A-NZ"; | ||
| EDocumentService.Modify(); | ||
| EDocumentsSetup.InsertNewExperienceSetup(); | ||
|
|
||
| // Set a currency that can be used across all localizations | ||
| MockCurrencyCode := 'XYZ'; | ||
| Currency.Init(); | ||
| Currency.Validate(Code, MockCurrencyCode); | ||
| if Currency.Insert(true) then; | ||
| CreateCurrencyExchangeRate(); | ||
|
|
||
| MockDate := DMY2Date(22, 01, 2026); | ||
|
|
||
| TransformationRule.DeleteAll(false); | ||
| TransformationRule.CreateDefaultTransformations(); | ||
|
|
||
| IsInitialized := true; | ||
| end; | ||
|
|
||
| local procedure SetupPINTANZEDocumentService() | ||
| begin | ||
| EDocumentService."Read into Draft Impl." := "E-Doc. Read into Draft"::"PINT A-NZ"; | ||
| EDocumentService.Modify(false); | ||
| end; | ||
|
|
||
| local procedure CreateInboundEDocumentFromXML(var EDocument: Record "E-Document"; FilePath: Text) | ||
| var | ||
| EDocLogRecord: Record "E-Document Log"; | ||
| EDocumentLog: Codeunit "E-Document Log"; | ||
| begin | ||
| LibraryEDoc.CreateInboundEDocument(EDocument, EDocumentService); | ||
|
|
||
| EDocumentLog.SetBlob('Test', Enum::"E-Doc. File Format"::XML, NavApp.GetResourceAsText(FilePath)); | ||
| EDocumentLog.SetFields(EDocument, EDocumentService); | ||
| EDocLogRecord := EDocumentLog.InsertLog(Enum::"E-Document Service Status"::Imported, Enum::"Import E-Doc. Proc. Status"::Readable); | ||
|
|
||
| EDocument."Structured Data Entry No." := EDocLogRecord."E-Doc. Data Storage Entry No."; | ||
| EDocument.Modify(false); | ||
| end; | ||
|
|
||
| local procedure ProcessEDocumentToStep(var EDocument: Record "E-Document"; ProcessingStep: Enum "Import E-Document Steps"): Boolean | ||
| var | ||
| EDocImportParameters: Record "E-Doc. Import Parameters"; | ||
| EDocImport: Codeunit "E-Doc. Import"; | ||
| EDocumentProcessing: Codeunit "E-Document Processing"; | ||
| begin | ||
| EDocumentProcessing.ModifyEDocumentProcessingStatus(EDocument, "Import E-Doc. Proc. Status"::Readable); | ||
| EDocImportParameters."Step to Run" := ProcessingStep; | ||
| EDocImport.ProcessIncomingEDocument(EDocument, EDocImportParameters); | ||
| EDocument.CalcFields("Import Processing Status"); | ||
|
|
||
| // Update the exit condition to handle different processing steps | ||
| case ProcessingStep of | ||
| "Import E-Document Steps"::"Read into Draft": | ||
| exit(EDocument."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::"Ready for draft"); | ||
| "Import E-Document Steps"::"Finish draft": | ||
| exit(EDocument."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::Processed); | ||
| "Import E-Document Steps"::"Prepare draft": | ||
| exit(EDocument."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::"Draft Ready"); | ||
| else | ||
| exit(EDocument."Import Processing Status" = Enum::"Import E-Doc. Proc. Status"::"Ready for draft"); | ||
| end; | ||
| end; | ||
|
|
||
| local procedure CreateCurrencyExchangeRate() | ||
| var | ||
| CurrencyExchangeRate: Record "Currency Exchange Rate"; | ||
| begin | ||
| CurrencyExchangeRate.Init(); | ||
| CurrencyExchangeRate."Currency Code" := MockCurrencyCode; | ||
| CurrencyExchangeRate."Starting Date" := WorkDate(); | ||
| CurrencyExchangeRate."Exchange Rate Amount" := 10; | ||
| CurrencyExchangeRate."Relational Exch. Rate Amount" := 1.23; | ||
| CurrencyExchangeRate.Insert(true); | ||
| end; | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This test app depends on "E-Document Format for PINT A-NZ", which adds value 28005 to "E-Document Format" in the same installation graph.
Adding "Mock" at ordinal 6160 inserts a new enum member before that existing value, so persisted rows can resolve to a different member after install or upgrade. Per the referenced guidance, assign a new ordinal greater than every existing value on the enum.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why