Skip to content

Commit 6b304e8

Browse files
author
diego.fernandez
committed
[IMP] intrastat_delivery: Añadido un orden de prioridad distinto para que establezca el incoterm en primer lugar del partner, despúes del método de envio y por último el general, si no quedará vacío.
odoo-16/fl-v16#6678
1 parent b8c632d commit 6b304e8

3 files changed

Lines changed: 41 additions & 17 deletions

File tree

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,41 @@
11
# © 2023 FactorLibre - Aritz Olea <aritz.olea@factorlibre.com>
2-
from odoo import models
3-
2+
from odoo import models, api
43

54
class SaleOrder(models.Model):
65
_inherit = "sale.order"
76

7+
def _get_default_incoterm(self):
8+
"""Obtiene el Incoterm por orden de prioridad"""
9+
self.ensure_one()
10+
partner_incoterm = self.partner_id.sale_incoterm_id
11+
if partner_incoterm:
12+
return partner_incoterm
13+
carrier_incoterm = self.carrier_id.incoterm
14+
if carrier_incoterm:
15+
return carrier_incoterm
16+
company_incoterm = self.company_id.incoterm_id
17+
if company_incoterm:
18+
return company_incoterm
19+
return False
20+
21+
@api.onchange("partner_id", "carrier_id")
22+
def _onchange_partner_or_carrier(self):
23+
for order in self:
24+
order.incoterm = order._get_default_incoterm()
25+
826
def _action_confirm(self):
927
ret = super()._action_confirm()
1028
for order in self:
11-
order.write(
12-
{
13-
"incoterm": order.carrier_id.incoterm.id,
14-
"intrastat_transport_id": order.carrier_id.intrastat_transport_id.id,
15-
}
16-
)
29+
order.write({
30+
"incoterm": order._get_default_incoterm().id,
31+
"intrastat_transport_id": order.carrier_id.intrastat_transport_id.id,
32+
})
1733
return ret
1834

1935
def _prepare_invoice(self):
20-
ret = super()._prepare_invoice()
21-
ret.update(
22-
{
23-
"invoice_incoterm_id": self.incoterm.id,
24-
"intrastat_transport_id": self.intrastat_transport_id.id,
25-
}
26-
)
27-
return ret
36+
invoice_vals = super()._prepare_invoice()
37+
invoice_vals.update({
38+
"invoice_incoterm_id": self.incoterm.id,
39+
"intrastat_transport_id": self.intrastat_transport_id.id,
40+
})
41+
return invoice_vals
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
* Aritz Olea <aritz.olea@factorlibre.com>
2+
* Diego Fernández <diego.fernandez@factorlibre.com>

intrastat_delivery/readme/DESCRIPTION.rst

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,13 @@ The mode of transport and incoterm are assigned to the sales order when it goes
88
from that sales order.
99

1010
It is recommended to set TRUE the "Show incoterms in orders and invoices" value at
11-
"Settings / Sales".
11+
"Settings / Sales".
12+
13+
Incoterm selection priority:
14+
15+
When assigning the Incoterm to a sales order, the following priority is applied:
16+
17+
1. First, the Incoterm set on the partner is used.
18+
2. If not defined, the Incoterm from the shipping method is used.
19+
3. If still not defined, the general settings Incoterm is used.
20+
4. If none of the above are set, the Incoterm field remains empty.

0 commit comments

Comments
 (0)