Skip to content

[28.5] [FR E-Reporting] Add payment and invoice lifecycle messages - #10892

Merged
Milica Đukić (djukicmilica) merged 49 commits into
microsoft:releases/28.5from
djukicmilica:propagate/pr-10822-to-releases-28.5
Sep 2, 2026
Merged

[28.5] [FR E-Reporting] Add payment and invoice lifecycle messages#10892
Milica Đukić (djukicmilica) merged 49 commits into
microsoft:releases/28.5from
djukicmilica:propagate/pr-10822-to-releases-28.5

Conversation

@djukicmilica

@djukicmilica Milica Đukić (djukicmilica) commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Backport of #10822 to releases/28.5.

Why

French electronic invoicing requires lifecycle communication beyond the parent E-Document processing status. Eligible outgoing invoice payment applications and reversals must produce collected or negative-collected messages, buyers must be able to accept or refuse incoming invoices, and platform lifecycle messages must be correlated without overwriting the invoice's own state.

This change models these exchanges as child E-Document messages and adds reusable transport, queuing, response polling, payment-occurrence, payload, and external-reference infrastructure to E-Document Core.

Summary

  • Added a public E-Document message API with IMessageSender and IMessageResponseHandler integration contracts, payload persistence, processing statuses, queued background delivery, response polling, and retry support.
  • Added generic applied and reversed E-Document payment occurrences with replay protection and original-occurrence linkage.
  • Added French Collected and Negative Collected messages for payment applications and unapplications on approved or cleared Peppol BIS 3.0 FR and Factur-X FR documents with reportable unrealized VAT.
  • Added proportional VAT allocation by rate and category, deterministic rounding, reversal of the original VAT breakdown, and frozen sender-platform and invoice context for PPF/CDV lifecycle payloads.
  • Added buyer Accepted and Refused messages for incoming purchase invoices, with optional refusal reasons and validation that only one buyer response can be sent.
  • Added incoming lifecycle-message correlation by external document and message IDs, normalization of Submitted, Accepted, Refused, and Technical Rejected statuses, payload retention, transition validation, and deduplication.
  • Added PPF/CDV profile validation, French service setup fields, lifecycle actions and history pages, and focused Core and French integration tests covering transport, payments, buyer responses, profiles, VAT allocation, and incoming messages.
  • Fixed E-Document test object ID collisions and Factur-X test variable shadowing that blocked BCApps validation against NAV.

Fixes
AB#648388

djukicmilica added 10 commits September 1, 2026 13:51
# Conflicts:
#	src/Apps/FR/EDocument_FR/EReportingFR/test/src/FacturXCIIXMLTests.Codeunit.al
# Conflicts:
#	src/Apps/FR/EDocument_FR/EReportingFR/test/src/FacturXCIIXMLTests.Codeunit.al
# Conflicts:
#	src/Apps/FR/EDocument_FR/EReportingFR/app/src/Core/EDocHelpers.Codeunit.al
@github-actions github-actions Bot added AL: Apps (W1) Add-on apps for W1 From Fork Pull request is coming from a fork Ownership: Needs Review Ownership is Other, low confidence, or needs manual correction Team: Other GitHub request for other area than SCM, Finance or Integration ADO: Sync Creates an Azure DevOps work item if needed and indicates that one is linked labels Sep 1, 2026
@github-actions github-actions Bot added this to the Version 28.5 milestone Sep 1, 2026
@djukicmilica
Milica Đukić (djukicmilica) merged commit 754787d into microsoft:releases/28.5 Sep 2, 2026
40 checks passed
Milica Đukić (djukicmilica) added a commit that referenced this pull request Sep 3, 2026
…10946)

Backport of #10892 to `releases/28.x`.

## Why

French electronic invoicing requires lifecycle communication beyond the
parent E-Document processing status. Eligible outgoing invoice payment
applications and reversals must produce collected or negative-collected
messages, buyers must be able to accept or refuse incoming invoices, and
platform lifecycle messages must be correlated without overwriting the
invoice's own state.

This change models these exchanges as child E-Document messages and adds
reusable transport, queuing, response polling, payment-occurrence,
payload, and external-reference infrastructure to E-Document Core.

## Summary

- **Added** a public E-Document message API with transport contracts,
payload persistence, processing statuses, queued delivery, response
polling, and retry support.
- **Added** applied and reversed payment occurrences with replay
protection and original-occurrence linkage.
- **Added** French payment, buyer response, and incoming lifecycle
messages with VAT allocation and PPF/CDV validation.
- **Added** focused Core and French integration tests for transport,
payments, responses, profiles, VAT allocation, and incoming messages.
- **Fixed** test object ID collisions and Factur-X variable shadowing
that blocked validation.

Fixes
[AB#648388](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/648388)

Co-authored-by: djukicmilica <milicadjukic@microsoft.com>
Milica Đukić (djukicmilica) added a commit that referenced this pull request Sep 4, 2026
## Why

BCApps PR #10892 added 18 French E-Reporting files to `releases/28.5`,
but that release still owns the E-Reporting FR app inline in NAV.
Keeping the same FR objects in the BCApps validation overlay collides
with the NAV-inline app and produces an invalid validation checkout,
including a duplicate pageextension 10974.

The FR files are represented by NAV PR 253681 for
[AB#648388](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/648388).
The 32 W1 E-Document changes from #10892 belong in BCApps and remain
unchanged.

## Summary

- **Removed** exactly the 18 misplaced
`src/Apps/FR/EDocument_FR/EReportingFR` files introduced by #10892 from
the 28.5 release branch.
- **Preserved** all W1 E-Document changes from #10892 in BCApps.
- **Limited** the correction to `releases/28.5`; no files are removed
from `main`.

Fixes

[AB#648771](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/648771)

Co-authored-by: djukicmilica <milicadjukic@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ADO: Sync Creates an Azure DevOps work item if needed and indicates that one is linked AL: Apps (W1) Add-on apps for W1 From Fork Pull request is coming from a fork Ownership: Needs Review Ownership is Other, low confidence, or needs manual correction Team: Other GitHub request for other area than SCM, Finance or Integration

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants