Skip to content

Commit

Permalink
Merge PR #91 into 14.0
Browse files Browse the repository at this point in the history
Signed-off-by hparfr
  • Loading branch information
Akretion Git Bot committed Feb 18, 2025
2 parents 3cdede3 + 339292d commit 9b6dcf4
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 6 deletions.
19 changes: 14 additions & 5 deletions sale_import_base/components/importer_sale_channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,14 @@ def run(self):
return self._run(self.collection.data_str)

def _prepare_sale_vals(self, data):
channel = self.env["sale.channel"].browse(self.collection.record_id)
partner = self._process_partner(data["address_customer"])
address_invoice, address_shipping = self._process_addresses(
partner, data["address_invoicing"], data["address_shipping"]
partner,
data["address_invoicing"],
data["address_shipping"],
channel.auto_archive_addresses,
)
channel = self.env["sale.channel"].browse(self.collection.record_id)
so_vals = {
"partner_id": partner.id,
"partner_invoice_id": address_invoice.id,
Expand Down Expand Up @@ -147,9 +150,15 @@ def _prepare_partner(self, data, parent_id=None, archived=None):
result["state_id"] = state.id
return result

def _process_addresses(self, parent, address_invoice, address_shipping):
vals_addr_invoice = self._prepare_partner(address_invoice, parent.id, True)
vals_addr_shipping = self._prepare_partner(address_shipping, parent.id, True)
def _process_addresses(
self, parent, address_invoice, address_shipping, archive_addresses=True
):
vals_addr_invoice = self._prepare_partner(
address_invoice, parent.id, archive_addresses
)
vals_addr_shipping = self._prepare_partner(
address_shipping, parent.id, archive_addresses
)
if vals_addr_invoice == vals_addr_shipping:
# not technically correct for the shipping addr, but this shouldn't matter
vals_addr_invoice["type"] = "invoice"
Expand Down
6 changes: 6 additions & 0 deletions sale_import_base/models/sale_channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ class SaleChannel(models.Model):
_inherit = "sale.channel"

allow_match_on_email = fields.Boolean("Allow customer match on email")
# default = True to be backward compatible as much as possible
# NOTE : in V16 or sale_import_base backport V14 from V16 this
# field has been renamed archive_addresses
auto_archive_addresses = fields.Boolean(
"Automatically archive partner's addresses", default=True
)
sale_orders_check_amounts_untaxed = fields.Boolean(
"(technical) Check untaxed amounts against imported values"
)
Expand Down
26 changes: 25 additions & 1 deletion sale_import_base/tests/test_sale_order_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def test_create_partner(self):
"""
Base scenario: import Sale Order with standard data
-> Create partner
-> Create delivery, shipping addresses in inactive state
-> Create delivery, shipping addresses in inactive state by default
"""
partner_count = (
self.env["res.partner"].with_context(active_test=False).search_count([])
Expand All @@ -74,6 +74,30 @@ def test_create_partner(self):
self.assertEqual(sale.partner_invoice_id.type, "invoice")
self.assertEqual(sale.partner_invoice_id.active, False)

def test_create_partner_no_archive(self):
"""
Base scenario: import Sale Order with standard data
-> Create partner
-> Create delivery, shipping addresses remains active because
it has been configured with auto_archive_addresses = False
"""
partner_count = (
self.env["res.partner"].with_context(active_test=False).search_count([])
)
chunk_vals = self.get_chunk_vals("all")
channel = self.env["sale.channel"].browse(chunk_vals["record_id"])
channel.auto_archive_addresses = False
self._helper_create_chunk(chunk_vals)
partner_count_after_import = (
self.env["res.partner"].with_context(active_test=False).search_count([])
)
self.assertEqual(partner_count_after_import, partner_count + 3)
sale = self.get_created_sales()
self.assertEqual(sale.partner_shipping_id.type, "delivery")
self.assertEqual(sale.partner_shipping_id.active, True)
self.assertEqual(sale.partner_invoice_id.type, "invoice")
self.assertEqual(sale.partner_invoice_id.active, True)

def test_create_addresses_identical(self):
"""
Test if shipping and invoice addresses are the same,
Expand Down
1 change: 1 addition & 0 deletions sale_import_base/views/sale_channel.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
<field name="internal_naming_method" />
<field name="pricelist_id" />
<field name="allow_match_on_email" />
<field name="auto_archive_addresses" />
<field name="confirm_order" />
<field
name="invoice_order"
Expand Down

0 comments on commit 9b6dcf4

Please sign in to comment.