[FIX] account_edi_*: Fix EDI addresses

* = facturx, ubl, ubl_bis3, ubl_cii

Problem
---------
Currently, the EDI use the commercial partner to craft the XML document.
However, this causes issues when users add, for example, an invoice
address to a partner. Indeed, the address of the main partner will be
used and not the invoice address. This caused issue; see the relevant
OPW-3624205.

Objective
---------
Make sure that the correct address is used when generating the XML.

Solution
---------
Make sure the commercial partner // partner value is used at the correct
spot.
- `partner` should be used for addresses
- `commercial_partner` for everything else.

OPW-3624205
task-3636315

closes odoo/odoo#158219

X-original-commit: 95d3a5ac16c341acc4b680f19e404a9f2334b582
Signed-off-by: Habib Ayob (ayh) <ayh@odoo.com>
Signed-off-by: Antoine Boonen (aboo) <aboo@odoo.com>
This commit is contained in:
Antoine Boonen
2024-03-20 17:11:44 +00:00
parent 618fbc1a54
commit e353da27d4
3 changed files with 13 additions and 15 deletions
@@ -96,7 +96,7 @@
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
<!-- Contact. -->
<ram:Name t-out="partner.name"/>
<ram:Name t-out="partner.display_name"/>
<ram:SpecifiedLegalOrganization t-if="specified_legal_organization_val">
<ram:ID t-att-schemeID="str('0002')"
t-out="specified_legal_organization_val"/>
@@ -189,7 +189,7 @@
<ram:BuyerTradeParty>
<!-- Address. -->
<t t-call="account_edi_ubl_cii.account_invoice_partner_facturx_export_22">
<t t-set="partner" t-value="record.commercial_partner_id"/>
<t t-set="partner" t-value="record.partner_id"/>
<t t-set="specified_legal_organization_val" t-value="buyer_specified_legal_organization"/>
</t>
@@ -55,14 +55,11 @@ class AccountEdiXmlUBL20(models.AbstractModel):
}]
def _get_partner_party_legal_entity_vals_list(self, partner):
commercial_partner = partner.commercial_partner_id
return [{
'commercial_partner': commercial_partner,
'registration_name': commercial_partner.name,
'company_id': commercial_partner.vat,
'registration_address_vals': self._get_partner_address_vals(commercial_partner),
'commercial_partner': partner,
'registration_name': partner.name,
'company_id': partner.vat,
'registration_address_vals': self._get_partner_address_vals(partner),
}]
def _get_partner_contact_vals(self, partner):
@@ -76,11 +73,11 @@ class AccountEdiXmlUBL20(models.AbstractModel):
def _get_partner_party_vals(self, partner, role):
return {
'partner': partner,
'party_identification_vals': self._get_partner_party_identification_vals_list(partner),
'party_name_vals': [{'name': partner.name}],
'party_identification_vals': self._get_partner_party_identification_vals_list(partner.commercial_partner_id),
'party_name_vals': [{'name': partner.display_name}],
'postal_address_vals': self._get_partner_address_vals(partner),
'party_tax_scheme_vals': self._get_partner_party_tax_scheme_vals_list(partner, role),
'party_legal_entity_vals': self._get_partner_party_legal_entity_vals_list(partner),
'party_tax_scheme_vals': self._get_partner_party_tax_scheme_vals_list(partner.commercial_partner_id, role),
'party_legal_entity_vals': self._get_partner_party_legal_entity_vals_list(partner.commercial_partner_id),
'contact_vals': self._get_partner_contact_vals(partner),
}
@@ -480,7 +477,7 @@ class AccountEdiXmlUBL20(models.AbstractModel):
charge_total_amount += allowance_charge_vals['amount']
supplier = invoice.company_id.partner_id.commercial_partner_id
customer = invoice.commercial_partner_id
customer = invoice.partner_id
# OrderReference/SalesOrderID (sales_order_id) is optional
sales_order_id = 'sale_line_ids' in invoice.invoice_line_ids._fields \
@@ -113,6 +113,7 @@ class AccountEdiXmlUBLBIS3(models.AbstractModel):
# EXTENDS account.edi.xml.ubl_21
vals = super()._get_partner_party_vals(partner, role)
partner = partner.commercial_partner_id
vals.update({
'endpoint_id': partner.peppol_endpoint,
'endpoint_id_attrs': {'schemeID': partner.peppol_eas},
@@ -133,7 +134,7 @@ class AccountEdiXmlUBLBIS3(models.AbstractModel):
def _get_delivery_vals_list(self, invoice):
# EXTENDS account.edi.xml.ubl_21
supplier = invoice.company_id.partner_id.commercial_partner_id
customer = invoice.commercial_partner_id
customer = invoice.partner_id
economic_area = self.env.ref('base.europe').country_ids.mapped('code') + ['NO']
intracom_delivery = (customer.country_id.code in economic_area