[FR E-Reporting] Implement and send invoice lifecycle messages - #10374
[FR E-Reporting] Implement and send invoice lifecycle messages#10374Milica Đukić (djukicmilica) wants to merge 87 commits into
Conversation
This reverts commit f40c964.
(cherry picked from commit cd7be9a32ef1c8ab3b4f596822ee2a5d04b2b070)
| { | ||
| addlast(Processing) | ||
| { | ||
| action(ViewFREInvoiceLifecycles) |
There was a problem hiding this comment.
This pageextension relies on the app's namespace for owned objects, but the new action identifier ViewFREInvoiceLifecycles is added to the base E-Documents page without the member affix pattern used elsewhere in this app's extension members. A namespace does not exempt pageextension actions from AppSource member-affix requirements.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.33.4
|
CheckSIRENNotEmpty, CheckSIRETNotEmpty, and CheckSellerCountryCode raise dead-end plain Error calls for recoverable setup problems even though the only fix is on Company Information. Use ErrorInfo with PageNo = Page::"Company Information", RecordId, and an AddNavigationAction so the user can jump straight to the missing setup instead of being blocked by a non-actionable dialog. Knowledge: Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.33.4 |
| { | ||
| fields | ||
| { | ||
| field(10970; "FR Sender Platform ID"; Text[50]) |
There was a problem hiding this comment.
The new FR Sender Platform ID and FR Sender Platform Name table-extension fields are classified as SystemMetadata, even though they store the approved platform's identifier and name. That under-classifies organization-identifying tenant data, so telemetry, GDPR exports, and admin reports will treat it as system metadata.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.33.4
| begin | ||
| // [FEATURE] [AI test] | ||
| // [SCENARIO] A payment application is captured as an immutable Collected lifecycle occurrence | ||
| Initialize(); |
There was a problem hiding this comment.
Most of this new test codeunit calls Initialize(), and that helper unconditionally executes Commit() after writing setup data. Methods such as CaptureCollectedOccurrenceCreatesCapturedLifecycle therefore run the commit path under the default AutoRollback transaction model, which can fail with an infrastructure Commit error instead of producing the intended test verdict. These tests need AutoCommit (with an isolated runner) or the committing setup must be reworked so non-AutoCommit tests do not execute Commit().
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.33.4
|
Superseded by #10437, which is now the authoritative implementation for AB#637593. The replacement uses a smaller, normalized E-Document message model, generic payment occurrences, queued delivery, and focused payment/buyer lifecycle coverage. Continuing review in #10437 avoids carrying forward this PR's long and conflicting commit history. |
Why
French e-reporting requires payment applications and reversals for accepted e-invoices to be captured as lifecycle occurrences and reported through the invoice's approved French service. The application needs end-to-end lifecycle processing, from immutable payment and VAT data through message creation, delivery, failure handling, and retry.
Summary
Message Sent, and retry without creating duplicate messages.Fixes
AB#637593