diff --git a/l10n_fr_chorus_account/models/account_move.py b/l10n_fr_chorus_account/models/account_move.py
index 0086e670e..e739072da 100644
--- a/l10n_fr_chorus_account/models/account_move.py
+++ b/l10n_fr_chorus_account/models/account_move.py
@@ -83,6 +83,10 @@ class AccountMove(models.Model):
states={"draft": [("readonly", False)]},
)
+ def _get_commitment_number(self):
+ self.ensure_one()
+ return self.ref
+
@api.constrains("chorus_attachment_ids", "transmit_method_id")
def _check_chorus_attachments(self):
# https://communaute.chorus-pro.gouv.fr/pieces-jointes-dans-chorus-pro-quelques-regles-a-respecter/ # noqa: B950
@@ -162,6 +166,7 @@ def action_post(self):
lambda x: x.move_type in ("out_invoice", "out_refund")
and x.transmit_method_code == "fr-chorus"
):
+ commitment_number = self._get_commitment_number()
company_partner = inv.company_id.partner_id
if not company_partner.siren or not company_partner.nic:
raise UserError(
@@ -192,8 +197,8 @@ def action_post(self):
% cpartner.display_name
)
if cpartner.fr_chorus_required in ("engagement", "service_and_engagement"):
- if inv.ref:
- inv.chorus_invoice_check_commitment_number()
+ if commitment_number:
+ inv.chorus_invoice_check_commitment_number(commitment_number)
else:
raise UserError(
_(
@@ -207,8 +212,8 @@ def action_post(self):
inv.partner_id.fr_chorus_service_id
and inv.partner_id.fr_chorus_service_id.engagement_required
):
- if inv.ref:
- inv.chorus_invoice_check_commitment_number()
+ if commitment_number:
+ inv.chorus_invoice_check_commitment_number(commitment_number)
else:
raise UserError(
_(
@@ -225,7 +230,7 @@ def action_post(self):
if cpartner.fr_chorus_required == "service_or_engagement":
if not inv.partner_id.chorus_service_ok():
- if not inv.ref:
+ if not commitment_number:
raise UserError(
_(
"Partner '%s' is configured as "
@@ -400,15 +405,17 @@ def chorus_update_invoice_status(self):
)
logger.info("End of the update of chorus invoice status")
- def chorus_invoice_check_commitment_number(self, raise_if_not_found=True):
+ def chorus_invoice_check_commitment_number(
+ self, commitment_number, raise_if_not_found=True
+ ):
self.ensure_one()
res = self.chorus_check_commitment_number(
- self.company_id, self.ref, raise_if_not_found=raise_if_not_found
+ self.company_id, commitment_number, raise_if_not_found=raise_if_not_found
)
if res is True:
self.message_post(
body=_("Engagement juridique %s checked via Chorus Pro API.")
- % self.ref
+ % commitment_number
)
return res
diff --git a/l10n_fr_chorus_facturx/models/account_move.py b/l10n_fr_chorus_facturx/models/account_move.py
index 39d031c0b..57f28d461 100644
--- a/l10n_fr_chorus_facturx/models/account_move.py
+++ b/l10n_fr_chorus_facturx/models/account_move.py
@@ -2,12 +2,27 @@
# @author: Alexis de Lattre
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+from lxml import etree
+
from odoo import api, models
class AccountMove(models.Model):
_inherit = "account.move"
+ def _cii_add_buyer_order_reference(self, trade_agreement, ns):
+ self.ensure_one()
+ if self.transmit_method_code == "fr-chorus":
+ buyer_order_ref = etree.SubElement(
+ trade_agreement, ns["ram"] + "BuyerOrderReferencedDocument"
+ )
+ buyer_order_id = etree.SubElement(
+ buyer_order_ref, ns["ram"] + "IssuerAssignedID"
+ )
+ buyer_order_id.text = self._get_commitment_number()
+ else:
+ return super()._cii_add_buyer_order_reference(trade_agreement, ns)
+
@api.model
def _cii_trade_contact_department_name(self, partner):
if partner.fr_chorus_service_id: