diff --git a/setup/stock_landed_costs_delivery/odoo/addons/stock_landed_costs_delivery b/setup/stock_landed_costs_delivery/odoo/addons/stock_landed_costs_delivery new file mode 120000 index 000000000000..def07b440611 --- /dev/null +++ b/setup/stock_landed_costs_delivery/odoo/addons/stock_landed_costs_delivery @@ -0,0 +1 @@ +../../../../stock_landed_costs_delivery \ No newline at end of file diff --git a/setup/stock_landed_costs_delivery/setup.py b/setup/stock_landed_costs_delivery/setup.py new file mode 100644 index 000000000000..28c57bb64031 --- /dev/null +++ b/setup/stock_landed_costs_delivery/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/stock_landed_costs_delivery/README.rst b/stock_landed_costs_delivery/README.rst new file mode 100644 index 000000000000..3c9652c529d5 --- /dev/null +++ b/stock_landed_costs_delivery/README.rst @@ -0,0 +1,102 @@ +=========================== +Stock landed costs delivery +=========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:a1ff3f74ed89cad18c0fd8fe165e2930769f00e48c602cf148cfe5fb6095b395 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/stock-logistics-workflow/tree/16.0/stock_landed_costs_delivery + :alt: OCA/stock-logistics-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/stock-logistics-workflow-16-0/stock-logistics-workflow-16-0-stock_landed_costs_delivery + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-workflow&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addon adds a cost line with the carrier of the purchase order and the price. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +#. Go to Inventory > Configuration > Shipping methods +#. Create a record with Allow create landed cost lines option checked. +#. Go to Purchase > Orders > Requests for Quotation. +#. Create an order with 2 lines: storable product + service product (landed cost). +#. Set Custom carrier. +#. Confirm Order. +#. Receives products and done picking. +#. Go to Inventory > Operations > Landed Costs. +#. A record related to the delivery purchase order lines and a cost line was created with the shipping price. +#. Landed Cost will be validated when linked purchase picking are done. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_ + + * Pedro M. Baeza + * Víctor Martínez + * Carolina Fernandez + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-victoralmau| image:: https://github.com/victoralmau.png?size=40px + :target: https://github.com/victoralmau + :alt: victoralmau + +Current `maintainer `__: + +|maintainer-victoralmau| + +This module is part of the `OCA/stock-logistics-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_landed_costs_delivery/__init__.py b/stock_landed_costs_delivery/__init__.py new file mode 100644 index 000000000000..0650744f6bc6 --- /dev/null +++ b/stock_landed_costs_delivery/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_landed_costs_delivery/__manifest__.py b/stock_landed_costs_delivery/__manifest__.py new file mode 100644 index 000000000000..6dfae046a369 --- /dev/null +++ b/stock_landed_costs_delivery/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2021 Tecnativa - Víctor Martínez +# Copyright 2024 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock landed costs delivery", + "version": "16.0.1.0.0", + "category": "Inventory", + "website": "https://github.com/OCA/stock-logistics-workflow", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["delivery_purchase", "stock_landed_costs_purchase_auto"], + "data": ["views/delivery_carrier_view.xml"], + "installable": True, + "maintainers": ["victoralmau"], +} diff --git a/stock_landed_costs_delivery/i18n/it.po b/stock_landed_costs_delivery/i18n/it.po new file mode 100644 index 000000000000..31c7a5c3692e --- /dev/null +++ b/stock_landed_costs_delivery/i18n/it.po @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_landed_costs_delivery +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-12-19 15:37+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: stock_landed_costs_delivery +#: model:ir.model.fields,field_description:stock_landed_costs_delivery.field_delivery_carrier__create_landed_cost_line +msgid "Allow create landed cost lines" +msgstr "Consente creazione righe costi accessori" + +#. module: stock_landed_costs_delivery +#: model:ir.model,name:stock_landed_costs_delivery.model_purchase_order +msgid "Purchase Order" +msgstr "Ordine di acquisto" + +#. module: stock_landed_costs_delivery +#: model:ir.model,name:stock_landed_costs_delivery.model_delivery_carrier +msgid "Shipping Methods" +msgstr "Metodi di spedizione" + +#. module: stock_landed_costs_delivery +#: model:ir.model.fields,field_description:stock_landed_costs_delivery.field_delivery_carrier__split_method_landed_cost_line +msgid "Split method" +msgstr "Metodo di divisione" + +#. module: stock_landed_costs_delivery +#: model:ir.model.fields,help:stock_landed_costs_delivery.field_delivery_carrier__split_method_landed_cost_line +msgid "Split method used in landed cost lines" +msgstr "Metodo di divisione utilizzato nelle righe costi accessori" + +#. module: stock_landed_costs_delivery +#: model:ir.model,name:stock_landed_costs_delivery.model_stock_picking +msgid "Transfer" +msgstr "Trasferimento" diff --git a/stock_landed_costs_delivery/i18n/stock_landed_costs_delivery.pot b/stock_landed_costs_delivery/i18n/stock_landed_costs_delivery.pot new file mode 100644 index 000000000000..61c1ae4b463e --- /dev/null +++ b/stock_landed_costs_delivery/i18n/stock_landed_costs_delivery.pot @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_landed_costs_delivery +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: stock_landed_costs_delivery +#: model:ir.model.fields,field_description:stock_landed_costs_delivery.field_delivery_carrier__create_landed_cost_line +msgid "Allow create landed cost lines" +msgstr "" + +#. module: stock_landed_costs_delivery +#: model:ir.model,name:stock_landed_costs_delivery.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: stock_landed_costs_delivery +#: model:ir.model,name:stock_landed_costs_delivery.model_delivery_carrier +msgid "Shipping Methods" +msgstr "" + +#. module: stock_landed_costs_delivery +#: model:ir.model.fields,field_description:stock_landed_costs_delivery.field_delivery_carrier__split_method_landed_cost_line +msgid "Split method" +msgstr "" + +#. module: stock_landed_costs_delivery +#: model:ir.model.fields,help:stock_landed_costs_delivery.field_delivery_carrier__split_method_landed_cost_line +msgid "Split method used in landed cost lines" +msgstr "" + +#. module: stock_landed_costs_delivery +#: model:ir.model,name:stock_landed_costs_delivery.model_stock_picking +msgid "Transfer" +msgstr "" diff --git a/stock_landed_costs_delivery/models/__init__.py b/stock_landed_costs_delivery/models/__init__.py new file mode 100644 index 000000000000..09eaeec7da8b --- /dev/null +++ b/stock_landed_costs_delivery/models/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import delivery_carrier +from . import purchase_order +from . import stock_picking diff --git a/stock_landed_costs_delivery/models/delivery_carrier.py b/stock_landed_costs_delivery/models/delivery_carrier.py new file mode 100644 index 000000000000..0ffa39e623d0 --- /dev/null +++ b/stock_landed_costs_delivery/models/delivery_carrier.py @@ -0,0 +1,22 @@ +# Copyright 2021 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import api, fields, models + + +class DeliveryCarrier(models.Model): + _inherit = "delivery.carrier" + + @api.model + def _get_selection_split_method_landed_cost_line(self): + model = self.env["stock.landed.cost.lines"] + return model.fields_get(allfields=["split_method"])["split_method"]["selection"] + + create_landed_cost_line = fields.Boolean( + string="Allow create landed cost lines", default=True + ) + split_method_landed_cost_line = fields.Selection( + selection="_get_selection_split_method_landed_cost_line", + string="Split method", + default="by_quantity", + help="Split method used in landed cost lines", + ) diff --git a/stock_landed_costs_delivery/models/purchase_order.py b/stock_landed_costs_delivery/models/purchase_order.py new file mode 100644 index 000000000000..dd8044ef7bc5 --- /dev/null +++ b/stock_landed_costs_delivery/models/purchase_order.py @@ -0,0 +1,33 @@ +# Copyright 2021-2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import models + + +class PurchaseOrder(models.Model): + _inherit = "purchase.order" + + def _prepare_landed_cost_line_delivery_values(self, carrier, price_unit): + return { + "product_id": carrier.product_id.id, + "name": carrier.name, + "price_unit": price_unit, + "split_method": carrier.split_method_landed_cost_line, + } + + def _create_delivery_line(self, carrier, price_unit): + """Auto-add delivery line to first draft Landed cost. + We need to add the line to the first Landed cost due to the process: + 1- A new landed cost is created, if applicable (backorder). + 2- The _create_delivery_line() method is called.""" + res = super()._create_delivery_line(carrier=carrier, price_unit=price_unit) + if carrier.create_landed_cost_line: + vals = self._prepare_landed_cost_line_delivery_values(carrier, price_unit) + lc = self.sudo().landed_cost_ids.filtered(lambda x: x.state == "draft") + # Use the context to identify which picking is being generated from and + # set cost lines in the correct Landed cost. + if self.env.context.get("from_picking"): + picking = self.env.context.get("from_picking") + lc = lc.filtered(lambda x: picking in x.picking_ids) + if lc: + lc[0].cost_lines = [(0, 0, vals)] + return res diff --git a/stock_landed_costs_delivery/models/stock_picking.py b/stock_landed_costs_delivery/models/stock_picking.py new file mode 100644 index 000000000000..6daff884e9cf --- /dev/null +++ b/stock_landed_costs_delivery/models/stock_picking.py @@ -0,0 +1,30 @@ +# Copyright 2023-2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import models +from odoo.tools import config + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + def _add_delivery_cost_to_po(self): + """We add the context to identify in _create_delivery_line() method the picking.""" + self.ensure_one() + self = self.with_context(from_picking=self) + return super()._add_delivery_cost_to_po() + + def _action_done(self): + """Validate Landed costs linked to the purchase and picking.""" + res = super()._action_done() + if not config["test_enable"] or self.env.context.get( + "test_stock_landed_costs_delivery" + ): + for item in self: + landed_cost = item.purchase_id.sudo().landed_cost_ids.filtered( + lambda x: item in x.picking_ids + and x.state == "draft" + and x.cost_lines + ) + if landed_cost: + landed_cost.button_validate() + return res diff --git a/stock_landed_costs_delivery/readme/CONTRIBUTORS.rst b/stock_landed_costs_delivery/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..713dfdaf4a6b --- /dev/null +++ b/stock_landed_costs_delivery/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* `Tecnativa `_ + + * Pedro M. Baeza + * Víctor Martínez + * Carolina Fernandez diff --git a/stock_landed_costs_delivery/readme/DESCRIPTION.rst b/stock_landed_costs_delivery/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..2c04af99d981 --- /dev/null +++ b/stock_landed_costs_delivery/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This addon adds a cost line with the carrier of the purchase order and the price. diff --git a/stock_landed_costs_delivery/readme/USAGE.rst b/stock_landed_costs_delivery/readme/USAGE.rst new file mode 100644 index 000000000000..8b31d5c69b93 --- /dev/null +++ b/stock_landed_costs_delivery/readme/USAGE.rst @@ -0,0 +1,10 @@ +#. Go to Inventory > Configuration > Shipping methods +#. Create a record with Allow create landed cost lines option checked. +#. Go to Purchase > Orders > Requests for Quotation. +#. Create an order with 2 lines: storable product + service product (landed cost). +#. Set Custom carrier. +#. Confirm Order. +#. Receives products and done picking. +#. Go to Inventory > Operations > Landed Costs. +#. A record related to the delivery purchase order lines and a cost line was created with the shipping price. +#. Landed Cost will be validated when linked purchase picking are done. diff --git a/stock_landed_costs_delivery/static/description/icon.png b/stock_landed_costs_delivery/static/description/icon.png new file mode 100644 index 000000000000..3a0328b516c4 Binary files /dev/null and b/stock_landed_costs_delivery/static/description/icon.png differ diff --git a/stock_landed_costs_delivery/static/description/index.html b/stock_landed_costs_delivery/static/description/index.html new file mode 100644 index 000000000000..8b915ce384c7 --- /dev/null +++ b/stock_landed_costs_delivery/static/description/index.html @@ -0,0 +1,443 @@ + + + + + +Stock landed costs delivery + + + +
+

Stock landed costs delivery

+ + +

Beta License: AGPL-3 OCA/stock-logistics-workflow Translate me on Weblate Try me on Runboat

+

This addon adds a cost line with the carrier of the purchase order and the price.

+

Table of contents

+ +
+

Usage

+
    +
  1. Go to Inventory > Configuration > Shipping methods
  2. +
  3. Create a record with Allow create landed cost lines option checked.
  4. +
  5. Go to Purchase > Orders > Requests for Quotation.
  6. +
  7. Create an order with 2 lines: storable product + service product (landed cost).
  8. +
  9. Set Custom carrier.
  10. +
  11. Confirm Order.
  12. +
  13. Receives products and done picking.
  14. +
  15. Go to Inventory > Operations > Landed Costs.
  16. +
  17. A record related to the delivery purchase order lines and a cost line was created with the shipping price.
  18. +
  19. Landed Cost will be validated when linked purchase picking are done.
  20. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa
      +
    • Pedro M. Baeza
    • +
    • Víctor Martínez
    • +
    • Carolina Fernandez
    • +
    +
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

victoralmau

+

This module is part of the OCA/stock-logistics-workflow project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/stock_landed_costs_delivery/tests/__init__.py b/stock_landed_costs_delivery/tests/__init__.py new file mode 100644 index 000000000000..ade83b9d6346 --- /dev/null +++ b/stock_landed_costs_delivery/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_purchase_order diff --git a/stock_landed_costs_delivery/tests/test_purchase_order.py b/stock_landed_costs_delivery/tests/test_purchase_order.py new file mode 100644 index 000000000000..36c3560a72a6 --- /dev/null +++ b/stock_landed_costs_delivery/tests/test_purchase_order.py @@ -0,0 +1,132 @@ +# Copyright 2021-2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) + +from odoo.tests.common import users + +from odoo.addons.stock_landed_costs_purchase_auto.tests.common import ( + TestPurchaseOrderBase, +) + + +class TestPurchaseOrder(TestPurchaseOrderBase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env( + context=dict( + cls.env.context, + test_stock_landed_costs_delivery=True, + ) + ) + product_carrier = cls.env["product.product"].create( + {"name": "Carrier", "type": "service", "categ_id": cls.category.id} + ) + cls.carrier = cls.env["delivery.carrier"].create( + { + "name": "Test carrier", + "product_id": product_carrier.id, + "fixed_price": 10, + } + ) + cls.order.carrier_id = cls.carrier + cls.purchase_user.write( + {"groups_id": [(4, cls.env.ref("stock.group_stock_user").id)]} + ) + + @users("test_purchase_user") + def test_order_with_lc_basic_user(self): + self.order = self.order.with_user(self.env.user) + self.order.button_confirm() + lc = self.order.landed_cost_ids + self.assertTrue(lc.state, "draft") + picking = self.order.picking_ids + self._action_picking_validate(picking) + self.assertTrue(lc.state, "done") + + def test_order_with_lc_carrier_id(self): + self.order.button_confirm() + picking = self.order.picking_ids + lc = self.order.landed_cost_ids + self.assertEqual(len(lc.cost_lines), 0) + self.assertEqual(lc.state, "draft") + self._action_picking_validate(picking) + self.assertEqual(len(lc.cost_lines), 1) + self.assertEqual(lc.state, "done") + self.assertIn(self.carrier.product_id, lc.cost_lines.mapped("product_id")) + lc_cost_line = lc.cost_lines.filtered( + lambda x: x.product_id == self.carrier.product_id + ) + self.assertEqual(lc_cost_line.price_unit, 10) + self.assertEqual( + lc_cost_line.split_method, self.carrier.split_method_landed_cost_line + ) + + def test_order_with_lc_carrier_id_multi_01(self): + """Order > Carrier. Picking 1 > Carrier. Picking 2 > Carrier.""" + self.order.order_line.product_qty = 2 + self.order.button_confirm() + picking = self.order.picking_ids + self.assertEqual(len(self.order.landed_cost_ids), 1) + lc = self.order.landed_cost_ids + self.assertEqual(len(lc.cost_lines), 0) + self.assertEqual(lc.state, "draft") + for move in picking.move_ids_without_package: + move.quantity_done = 1 + self._action_picking_validate(picking) + self.assertEqual(len(self.order.landed_cost_ids), 2) + extra_lc = self.order.landed_cost_ids - lc + self.assertEqual(len(lc.cost_lines), 1) + self.assertEqual(lc.state, "done") + self.assertEqual(extra_lc.state, "draft") + self.assertEqual(lc.cost_lines.price_unit, 10) + new_picking = self.order.picking_ids - picking + self._action_picking_validate(new_picking) + self.assertEqual(len(extra_lc.cost_lines), 1) + self.assertEqual(extra_lc.state, "done") + self.assertEqual(self.carrier.product_id, extra_lc.cost_lines.product_id) + self.assertEqual(extra_lc.cost_lines.price_unit, 10) + self.assertEqual( + self.carrier.split_method_landed_cost_line, + extra_lc.cost_lines.split_method, + ) + + def test_order_with_lc_carrier_id_multi_02(self): + """Order > No Carrier. Picking 1 > No Carrier. Picking 2 > Carrier.""" + self.order.carrier_id = False + self.order.order_line.product_qty = 2 + self.order.button_confirm() + picking = self.order.picking_ids + self.assertEqual(len(self.order.landed_cost_ids), 1) + lc = self.order.landed_cost_ids + self.assertEqual(len(lc.cost_lines), 0) + self.assertEqual(lc.state, "draft") + for move in picking.move_ids_without_package: + move.quantity_done = 1 + self._action_picking_validate(picking) + # Picking without carrier and LC without cost lines and draft state + self.assertFalse(picking.carrier_id) + self.assertEqual(len(self.order.landed_cost_ids), 2) + extra_lc = self.order.landed_cost_ids - lc + self.assertEqual(len(lc.cost_lines), 0) + self.assertEqual(lc.state, "draft") + self.assertEqual(extra_lc.state, "draft") + new_picking = self.order.picking_ids - picking + new_picking.carrier_id = self.carrier + self._action_picking_validate(new_picking) + # Order with carrier, delivery price and delivery line + self.assertEqual(self.order.carrier_id, self.carrier) + self.assertEqual(self.order.delivery_price, 10) + self.assertEqual( + len(self.order.order_line.filtered(lambda x: x.is_delivery)), 1 + ) + # LC keep draft state + self.assertEqual(lc.state, "draft") + # Extra LC done (cost line from delivery) + self.assertEqual(len(extra_lc.cost_lines), 1) + self.assertEqual(extra_lc.state, "done") + self.assertEqual(self.carrier.product_id, extra_lc.cost_lines.product_id) + self.assertEqual(extra_lc.cost_lines.price_unit, 10) + self.assertEqual( + self.carrier.split_method_landed_cost_line, + extra_lc.cost_lines.split_method, + ) diff --git a/stock_landed_costs_delivery/views/delivery_carrier_view.xml b/stock_landed_costs_delivery/views/delivery_carrier_view.xml new file mode 100644 index 000000000000..cfd25f7f8685 --- /dev/null +++ b/stock_landed_costs_delivery/views/delivery_carrier_view.xml @@ -0,0 +1,18 @@ + + + + + delivery.carrier + + + + + + + + +