diff --git a/shopinvader_delivery_carrier/services/abstract_sale.py b/shopinvader_delivery_carrier/services/abstract_sale.py index 2fed60afde..b5401ad27a 100644 --- a/shopinvader_delivery_carrier/services/abstract_sale.py +++ b/shopinvader_delivery_carrier/services/abstract_sale.py @@ -10,14 +10,12 @@ class AbstractSaleService(AbstractComponent): def _convert_shipping(self, cart): res = super(AbstractSaleService, self)._convert_shipping(cart) - selected_carrier = {} if cart.carrier_id: - carrier = cart.carrier_id - selected_carrier = { - "id": carrier.id, - "name": carrier.name, - "description": carrier.description, - } + selected_carrier = self._prepare_carrier( + cart.carrier_id, no_price=True + ) + else: + selected_carrier = {} res.update( { "amount": { @@ -52,13 +50,9 @@ def _convert_amount(self, sale): ) return result - def _prepare_carrier(self, carrier): - return { - "id": carrier.id, - "name": carrier.name, - "description": carrier.description, - "price": carrier.price, - } + def _prepare_carrier(self, carrier, no_price=False): + service = self.component(usage="delivery_carrier") + return service._prepare_carrier(carrier, no_price=no_price) def _get_available_carrier(self, cart): return [ diff --git a/shopinvader_delivery_carrier/services/delivery_carrier.py b/shopinvader_delivery_carrier/services/delivery_carrier.py index 2867f5b946..9c47392c24 100644 --- a/shopinvader_delivery_carrier/services/delivery_carrier.py +++ b/shopinvader_delivery_carrier/services/delivery_carrier.py @@ -72,6 +72,11 @@ def _validator_return_search(self): "required": False, "nullable": True, }, + "code": { + "type": "string", + "required": False, + "nullable": True, + }, "description": { "type": "string", "required": False, @@ -112,8 +117,8 @@ def _search(self, **params): return cart._get_available_carrier() return self.shopinvader_backend.carrier_ids - def _prepare_carrier(self, carrier): - res = carrier.jsonify(self._json_parser_carrier)[0] + def _prepare_carrier(self, carrier, no_price=False): + res = carrier.jsonify(self._json_parser_carrier(no_price=no_price))[0] res["type"] = None return res @@ -138,6 +143,8 @@ def _load_zip_code(self, params): def allowed_carrier_types(self): return [] - @property - def _json_parser_carrier(self): - return ["id", "name", "description", "price"] + def _json_parser_carrier(self, no_price=False): + res = ["id", "name", "default_code:code", "description"] + if not no_price: + res.append("price") + return res diff --git a/shopinvader_delivery_carrier/tests/common.py b/shopinvader_delivery_carrier/tests/common.py index 434bb6b952..66eaa24493 100644 --- a/shopinvader_delivery_carrier/tests/common.py +++ b/shopinvader_delivery_carrier/tests/common.py @@ -12,6 +12,8 @@ def setUpClass(cls): super(CommonCarrierCase, cls).setUpClass() cls.free_carrier = cls.env.ref("delivery.free_delivery_carrier") cls.poste_carrier = cls.env.ref("delivery.delivery_carrier") + cls.free_carrier.default_code = "FREE" + cls.poste_carrier.default_code = "POSTE" cls.product_1 = cls.env.ref("product.product_product_4b") cls.precision = 2 diff --git a/shopinvader_delivery_carrier/tests/test_carrier.py b/shopinvader_delivery_carrier/tests/test_carrier.py index 6d61a70657..b9364fc98d 100644 --- a/shopinvader_delivery_carrier/tests/test_carrier.py +++ b/shopinvader_delivery_carrier/tests/test_carrier.py @@ -22,6 +22,16 @@ def test_deprecated_apply_delivery_method(self): def test_setting_free_carrier(self): cart = self._set_carrier(self.free_carrier) self.assertEqual(cart["shipping"]["amount"]["total"], 0) + self.assertEqual( + cart["shipping"]["selected_carrier"], + { + "description": self.free_carrier.description or None, + "id": self.free_carrier.id, + "name": self.free_carrier.name, + "code": self.free_carrier.code, + "type": None, + }, + ) def test_setting_poste_carrier(self): cart = self._set_carrier(self.poste_carrier) @@ -60,6 +70,18 @@ def test_setting_poste_carrier(self): cart_amount["tax_without_shipping"], tax_without_shipping ) + # Check Selected carrier + self.assertEqual( + cart["shipping"]["selected_carrier"], + { + "description": self.poste_carrier.description or None, + "id": self.poste_carrier.id, + "name": self.poste_carrier.name, + "code": self.poste_carrier.code, + "type": None, + }, + ) + def test_reset_carrier_on_add_item(self): self._apply_carrier_and_assert_set() cart = self.add_item(self.product_1.id, 2) diff --git a/shopinvader_delivery_carrier/tests/test_delivery_carrier.py b/shopinvader_delivery_carrier/tests/test_delivery_carrier.py index f1f6a094d5..c3ef050227 100644 --- a/shopinvader_delivery_carrier/tests/test_delivery_carrier.py +++ b/shopinvader_delivery_carrier/tests/test_delivery_carrier.py @@ -24,6 +24,7 @@ def test_search_all(self): "description": self.free_carrier.description or None, "id": self.free_carrier.id, "name": self.free_carrier.name, + "code": self.free_carrier.code, "type": None, }, { @@ -31,6 +32,7 @@ def test_search_all(self): "description": self.poste_carrier.description or None, "id": self.poste_carrier.id, "name": self.poste_carrier.name, + "code": self.poste_carrier.code, "type": None, }, ], @@ -47,6 +49,7 @@ def test_search_current_cart(self): "description": self.free_carrier.description or None, "id": self.free_carrier.id, "name": self.free_carrier.name, + "code": self.free_carrier.code, "type": None, }, { @@ -54,6 +57,7 @@ def test_search_current_cart(self): "description": self.poste_carrier.description or None, "id": self.poste_carrier.id, "name": self.poste_carrier.name, + "code": self.poste_carrier.code, "type": None, }, ],