Skip to content

Commit f66dc81

Browse files
committed
edi_sale_input: add support for legacy conf
This was supported in early un-merged version of the module. Let's be kind w/ existing configurations ;)
1 parent 65e5020 commit f66dc81

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

edi_sale_input_oca/components/process.py

+30
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@
33
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
44

55

6+
import logging
7+
68
from odoo import _
79
from odoo.exceptions import UserError
810

911
from odoo.addons.component.core import Component
1012

13+
_logger = logging.getLogger(__name__)
14+
1115

1216
class EDIExchangeSOInput(Component):
1317
"""Process sale orders."""
@@ -16,6 +20,21 @@ class EDIExchangeSOInput(Component):
1620
_inherit = "edi.component.input.mixin"
1721
_usage = "input.process.sale.order"
1822

23+
def __init__(self, work_context):
24+
super().__init__(work_context)
25+
self.settings = {}
26+
# Suppor legacy key `self.type_settings`
27+
for key in ("sale_order", "sale_order_import"):
28+
if key in self.type_settings:
29+
_logger.warning(
30+
"Deprecated key %s for %s. "
31+
"Please use default field values in env_ctx",
32+
key,
33+
self._usage,
34+
)
35+
self.settings = self.type_settings.get(key, {})
36+
break
37+
1938
def process(self):
2039
wiz = self._setup_wizard()
2140
res = wiz.import_order_button()
@@ -53,8 +72,19 @@ def _setup_wizard(self):
5372
wiz.order_file = self.exchange_record._get_file_content(binary=False)
5473
wiz.order_filename = self.exchange_record.exchange_filename
5574
wiz.order_file_change()
75+
wiz.price_source = self._get_default_price_source()
76+
wiz.confirm_order = self._order_should_be_confirmed()
5677
return wiz
5778

79+
# Deprecated: use default field values in env_ctx
80+
# as these settings are supported by sale_order_import model.
81+
def _get_default_price_source(self):
82+
return self.settings.get("price_source", "pricelist")
83+
84+
# Deprecated: use default field values in env_ctx
85+
def _order_should_be_confirmed(self):
86+
return self.settings.get("confirm_order", False)
87+
5888
def _handle_create_order(self, order_id):
5989
order = self.env["sale.order"].browse(order_id)
6090
self.exchange_record._set_related_record(order)

edi_sale_input_oca/tests/test_process.py

+28
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
44

55
import base64
6+
import textwrap
67
from unittest import mock
78

9+
from odoo.tools import mute_logger
10+
811
from odoo.addons.component.tests.common import SavepointComponentCase
912
from odoo.addons.edi_oca.tests.common import EDIBackendTestMixin
1013

@@ -45,6 +48,31 @@ def test_wizard_setup(self):
4548
self.assertEqual(wiz.price_source, "pricelist")
4649
md_onchange.assert_called()
4750

51+
@mute_logger("odoo.addons.edi_sale_input_oca.components.process")
52+
def test_wizard_setup_deprecated_settings(self):
53+
self.exc_type.advanced_settings_edit = textwrap.dedent(
54+
"""
55+
components:
56+
process:
57+
usage: input.process.sale.order
58+
sale_order_import:
59+
confirm_order: true
60+
"""
61+
)
62+
comp = self.backend._get_component(self.record, "process")
63+
with mock.patch.object(
64+
type(self.wiz_model), "order_file_change"
65+
) as md_onchange:
66+
wiz = comp._setup_wizard()
67+
self.assertEqual(wiz._name, self.wiz_model._name)
68+
self.assertEqual(
69+
base64.b64decode(wiz.order_file), b"<fake><order></order></fake>"
70+
)
71+
self.assertEqual(wiz.order_filename, self.record.exchange_filename)
72+
self.assertEqual(wiz.price_source, "pricelist")
73+
self.assertEqual(wiz.confirm_order, True)
74+
md_onchange.assert_called()
75+
4876
# In both tests here we don"t care about the specific format of the import.
4977
# We only care that the wizard plugged with the component works as expected.
5078
def test_existing_order(self):

0 commit comments

Comments
 (0)