Skip to content

Commit

Permalink
edi_sale: propagate origin on lines
Browse files Browse the repository at this point in the history
  • Loading branch information
simahawk committed Aug 7, 2023
1 parent 0d9ce3c commit 1b161c2
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
10 changes: 10 additions & 0 deletions edi_sale_oca/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,13 @@ def _compute_edi_exchange_ready(self):

def _edi_exchange_ready(self):
return not self._is_delivery() and not self.display_type

@api.model_create_multi
def create(self, vals_list):
# Set default origin if not passed
for vals in vals_list:
orig_id = vals.get("origin_exchange_record_id")
if not orig_id and "order_id" in vals:
order = self.env["sale.order"].browse(vals["order_id"])
vals["origin_exchange_record_id"] = order.origin_exchange_record_id.id
return super().create(vals_list)
1 change: 1 addition & 0 deletions edi_sale_oca/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
from . import test_order
from . import test_process
50 changes: 50 additions & 0 deletions edi_sale_oca/tests/test_order.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Copyright 2022 Camptocamp SA
# @author: Simone Orsi <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo.tests.common import SavepointCase

from odoo.addons.edi_oca.tests.common import EDIBackendTestMixin

from .common import OrderMixin


class TestOrder(SavepointCase, EDIBackendTestMixin, OrderMixin):
@classmethod
def setUpClass(cls):
super().setUpClass()
# force metadata storage w/ proper key
cls.env = cls.env(context=dict(cls.env.context, edi_framework_action=True))
cls._setup_records()
cls.exchange_type_in.exchange_filename_pattern = "{record.id}-{type.code}-{dt}"
cls.exc_record_in = cls.backend.create_record(
cls.exchange_type_in.code, {"edi_exchange_state": "input_received"}
)
cls._setup_order(
origin_exchange_record_id=cls.exc_record_in.id,
)

def test_line_origin(self):
order = self.sale
self.assertEqual(order.origin_exchange_record_id, self.exc_record_in)
lines = order.order_line
self.env["sale.order.line"].create(
[
{
"order_id": order.id,
"product_id": self.product_d.id,
"product_uom_qty": 300,
"edi_id": 4000,
},
{
"order_id": order.id,
"product_id": self.product_d.id,
"product_uom_qty": 400,
"edi_id": 5000,
},
]
)
order.invalidate_cache()
new_line1, new_line2 = order.order_line - lines
self.assertEqual(new_line1.origin_exchange_record_id, self.exc_record_in)
self.assertEqual(new_line2.origin_exchange_record_id, self.exc_record_in)

0 comments on commit 1b161c2

Please sign in to comment.