From b99dc296583b5b0ba491da68276242eb74214783 Mon Sep 17 00:00:00 2001 From: Eduardo De Miguel Date: Tue, 18 Jun 2024 14:01:19 +0200 Subject: [PATCH 1/9] [ADD] sale_margin_delivered_dropshipping: Compute delivered margins on Dropshipping --- sale_margin_delivered_dropshipping/README.rst | 124 +++++ .../__init__.py | 1 + .../__manifest__.py | 16 + .../models/__init__.py | 1 + .../models/sale_margin.py | 23 + .../readme/CONFIGURE.rst | 6 + .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 3 + .../readme/USAGE.rst | 18 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 465 ++++++++++++++++++ .../tests/__init__.py | 3 + .../test_sale_margin_delivered_dropship.py | 52 ++ 13 files changed, 714 insertions(+) create mode 100644 sale_margin_delivered_dropshipping/README.rst create mode 100644 sale_margin_delivered_dropshipping/__init__.py create mode 100644 sale_margin_delivered_dropshipping/__manifest__.py create mode 100644 sale_margin_delivered_dropshipping/models/__init__.py create mode 100644 sale_margin_delivered_dropshipping/models/sale_margin.py create mode 100644 sale_margin_delivered_dropshipping/readme/CONFIGURE.rst create mode 100644 sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst create mode 100644 sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst create mode 100644 sale_margin_delivered_dropshipping/readme/USAGE.rst create mode 100644 sale_margin_delivered_dropshipping/static/description/icon.png create mode 100644 sale_margin_delivered_dropshipping/static/description/index.html create mode 100644 sale_margin_delivered_dropshipping/tests/__init__.py create mode 100644 sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py diff --git a/sale_margin_delivered_dropshipping/README.rst b/sale_margin_delivered_dropshipping/README.rst new file mode 100644 index 00000000..de918246 --- /dev/null +++ b/sale_margin_delivered_dropshipping/README.rst @@ -0,0 +1,124 @@ +================================== +Sale Margin Delivered Dropshipping +================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5a597b346c2f49f2ccba1b1f44ed58c0c66d0bf10be25e6e8aeb9c56e4674328 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |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%2Fmargin--analysis-lightgray.png?logo=github + :target: https://github.com/OCA/margin-analysis/tree/16.0/sale_margin_delivered_dropshipping + :alt: OCA/margin-analysis +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_delivered_dropshipping + :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/margin-analysis&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Computes sale order lines margins for the delivered items. + +This module takes in consideration Outgoing, Returns and Dropship. + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +#. To grant Sales Margin view privileges to a user, go to *Settings > Users & + Companies > Users*, select the user and set *Show Sale Margin* on. +#. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. +#. Configure Dropship Product: Create or Edit an Storable product, + activate Dropship route on *Inventory Tab > Routes* and + add a Product Supplierinfo under *Purchase tab > Vendors*. + +Usage +===== + +#. Go to *Sales > Orders > Quotations*. +#. Create a new *Sales Order* and add a line with an stockable product. Set a + quantity higher than one. +#. Confirm the *Sales Order* and deliver just a partial amount of product in + the picking. +#. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* dimension + and the *Margin* and *Margin Delivered* to compare them. + +For example: + +In an order line with a product at a cost of 10 and a sell price of 25 we +deliver 2 of 3 units. Then, the reported margins would be: + +`margin`: 45 (3 * 15) +`margin_delivered`: 30 (2 * 15) + +Additionally, you can check the margin and the margin percent in the sales +order line. + +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 +~~~~~~~ + +* Moduon + +Contributors +~~~~~~~~~~~~ + +* Eduardo de Miguel (`Moduon `__) +* Rafael Blasco (`Moduon `__) + +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-Shide| image:: https://github.com/Shide.png?size=40px + :target: https://github.com/Shide + :alt: Shide + +Current `maintainer `__: + +|maintainer-Shide| + +This module is part of the `OCA/margin-analysis `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_margin_delivered_dropshipping/__init__.py b/sale_margin_delivered_dropshipping/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/sale_margin_delivered_dropshipping/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_margin_delivered_dropshipping/__manifest__.py b/sale_margin_delivered_dropshipping/__manifest__.py new file mode 100644 index 00000000..b3ab8777 --- /dev/null +++ b/sale_margin_delivered_dropshipping/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2024 Moduon Team +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Sale Margin Delivered Dropshipping", + "version": "16.0.1.0.0", + "author": "Moduon, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/margin-analysis", + "category": "Sales", + "license": "AGPL-3", + "depends": ["sale_margin_delivered", "stock_dropshipping"], + "data": [], + "installable": True, + "auto_install": True, + "development_status": "Alpha", + "maintainers": ["Shide"], +} diff --git a/sale_margin_delivered_dropshipping/models/__init__.py b/sale_margin_delivered_dropshipping/models/__init__.py new file mode 100644 index 00000000..7df041a9 --- /dev/null +++ b/sale_margin_delivered_dropshipping/models/__init__.py @@ -0,0 +1 @@ +from . import sale_margin diff --git a/sale_margin_delivered_dropshipping/models/sale_margin.py b/sale_margin_delivered_dropshipping/models/sale_margin.py new file mode 100644 index 00000000..160ffa4c --- /dev/null +++ b/sale_margin_delivered_dropshipping/models/sale_margin.py @@ -0,0 +1,23 @@ +# Copyright 2024 Moduon Team +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + def _get_delivered_margin_valuation_layers(self): + """Adds Valuation Layers that involves Dropshipping and not considered + in other scenarios.""" + valuation_layers = super()._get_delivered_margin_valuation_layers() + for move in self.move_ids.filtered(lambda m: m.state == "done"): + if ( + move.location_dest_usage == "customer" + and move.location_usage == "supplier" + ): + # Dropship moves have 2 valuation layers. Use negative one + valuation_layers |= move.stock_valuation_layer_ids.filtered( + lambda vl: vl.quantity < 0 + ) + return valuation_layers diff --git a/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst b/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst new file mode 100644 index 00000000..bf521422 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst @@ -0,0 +1,6 @@ +#. To grant Sales Margin view privileges to a user, go to *Settings > Users & + Companies > Users*, select the user and set *Show Sale Margin* on. +#. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. +#. Configure Dropship Product: Create or Edit an Storable product, + activate Dropship route on *Inventory Tab > Routes* and + add a Product Supplierinfo under *Purchase tab > Vendors*. diff --git a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..249b6b1d --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Eduardo de Miguel (`Moduon `__) +* Rafael Blasco (`Moduon `__) diff --git a/sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst b/sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst new file mode 100644 index 00000000..8748901a --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +Computes sale order lines margins for the delivered items. + +This module takes in consideration Outgoing, Returns and Dropship. diff --git a/sale_margin_delivered_dropshipping/readme/USAGE.rst b/sale_margin_delivered_dropshipping/readme/USAGE.rst new file mode 100644 index 00000000..1dbc7486 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/USAGE.rst @@ -0,0 +1,18 @@ +#. Go to *Sales > Orders > Quotations*. +#. Create a new *Sales Order* and add a line with an stockable product. Set a + quantity higher than one. +#. Confirm the *Sales Order* and deliver just a partial amount of product in + the picking. +#. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* dimension + and the *Margin* and *Margin Delivered* to compare them. + +For example: + +In an order line with a product at a cost of 10 and a sell price of 25 we +deliver 2 of 3 units. Then, the reported margins would be: + +`margin`: 45 (3 * 15) +`margin_delivered`: 30 (2 * 15) + +Additionally, you can check the margin and the margin percent in the sales +order line. diff --git a/sale_margin_delivered_dropshipping/static/description/icon.png b/sale_margin_delivered_dropshipping/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/sale_margin_delivered_dropshipping/static/description/index.html b/sale_margin_delivered_dropshipping/static/description/index.html new file mode 100644 index 00000000..d890d380 --- /dev/null +++ b/sale_margin_delivered_dropshipping/static/description/index.html @@ -0,0 +1,465 @@ + + + + + +Sale Margin Delivered Dropshipping + + + +
+

Sale Margin Delivered Dropshipping

+ + +

Alpha License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runboat

+

Computes sale order lines margins for the delivered items.

+

This module takes in consideration Outgoing, Returns and Dropship.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Configuration

+
    +
  1. To grant Sales Margin view privileges to a user, go to Settings > Users & +Companies > Users, select the user and set Show Sale Margin on.
  2. +
  3. Go to Settings > Purchase > Logistics and activate Dropshipping.
  4. +
  5. Configure Dropship Product: Create or Edit an Storable product, +activate Dropship route on Inventory Tab > Routes and +add a Product Supplierinfo under Purchase tab > Vendors.
  6. +
+
+
+

Usage

+
    +
  1. Go to Sales > Orders > Quotations.
  2. +
  3. Create a new Sales Order and add a line with an stockable product. Set a +quantity higher than one.
  4. +
  5. Confirm the Sales Order and deliver just a partial amount of product in +the picking.
  6. +
  7. Go to Sales > Reporting > Sales and unfold the Order Reference dimension +and the Margin and Margin Delivered to compare them.
  8. +
+

For example:

+

In an order line with a product at a cost of 10 and a sell price of 25 we +deliver 2 of 3 units. Then, the reported margins would be:

+

margin: 45 (3 * 15) +margin_delivered: 30 (2 * 15)

+

Additionally, you can check the margin and the margin percent in the sales +order line.

+
+
+

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

+
    +
  • Moduon
  • +
+
+
+

Contributors

+ +
+
+

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:

+

Shide

+

This module is part of the OCA/margin-analysis project on GitHub.

+

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

+
+
+
+ + diff --git a/sale_margin_delivered_dropshipping/tests/__init__.py b/sale_margin_delivered_dropshipping/tests/__init__.py new file mode 100644 index 00000000..1b3e385e --- /dev/null +++ b/sale_margin_delivered_dropshipping/tests/__init__.py @@ -0,0 +1,3 @@ +# Copyright 2019 Tecnativa - Sergio Teruel +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl +from . import test_sale_margin_delivered_dropship diff --git a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py new file mode 100644 index 00000000..296d1d88 --- /dev/null +++ b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py @@ -0,0 +1,52 @@ +# Copyright 2024 Moduon Team +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl + + +from odoo.addons.sale_margin_delivered.tests.test_sale_margin_delivered import ( + TestSaleMarginDelivered, +) + + +class TestSaleMarginDeliveredDropship(TestSaleMarginDelivered): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.supplier = cls.env["res.partner"].create( + {"name": "supplier test", "property_product_pricelist": cls.pricelist.id} + ) + dropship_route = cls.env.ref("stock_dropshipping.route_drop_shipping") + cls.dropship_product = cls.env["product.product"].create( + { + "name": "Dropship Product Test", + "type": "product", + "uom_id": cls.product_uom_id.id, + "standard_price": 10.0, + "list_price": 20.00, + "tracking": "none", + "route_ids": [(6, 0, dropship_route.ids)], + } + ) + cls.dropship_product.seller_ids = [ + (0, 0, {"partner_id": cls.supplier.id, "price": 3.0}) + ] + + def test_sale_margin_delivered_dropship(self): + """Delivered quantities by Dropship""" + sale_order = self._new_sale_order(product=self.dropship_product) + sale_order.action_confirm() + purchases = sale_order._get_purchase_orders() + purchases.button_confirm() + dropship_picking = purchases.picking_ids + dropship_picking.move_line_ids.qty_done = 6.0 + dropship_picking._action_done() + # Create return for Dropship + picking_return = self._create_return( + dropship_picking, qty_refund=3.0, to_refund=True + ) + picking_return.action_assign() + picking_return.move_line_ids.qty_done = 3.0 + picking_return._action_done() + order_line = sale_order.order_line[:1] + self.assertEqual(order_line.margin_delivered, 30.0) + self.assertEqual(order_line.margin_delivered_percent, 50.0) + self.assertEqual(order_line.purchase_price_delivery, order_line.purchase_price) From f61be9a04565aff29c2041c6ec10139c9c5778b4 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 19 Jun 2024 10:19:32 +0000 Subject: [PATCH 2/9] [UPD] Update sale_margin_delivered_dropshipping.pot --- .../sale_margin_delivered_dropshipping.pot | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 sale_margin_delivered_dropshipping/i18n/sale_margin_delivered_dropshipping.pot diff --git a/sale_margin_delivered_dropshipping/i18n/sale_margin_delivered_dropshipping.pot b/sale_margin_delivered_dropshipping/i18n/sale_margin_delivered_dropshipping.pot new file mode 100644 index 00000000..1b6f914f --- /dev/null +++ b/sale_margin_delivered_dropshipping/i18n/sale_margin_delivered_dropshipping.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_margin_delivered_dropshipping +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: sale_margin_delivered_dropshipping +#: model:ir.model,name:sale_margin_delivered_dropshipping.model_sale_order_line +msgid "Sales Order Line" +msgstr "" From d829d1ca63117073aa4be4f140fdbfddbb6630a3 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 19 Jun 2024 10:22:26 +0000 Subject: [PATCH 3/9] [BOT] post-merge updates --- sale_margin_delivered_dropshipping/README.rst | 2 +- sale_margin_delivered_dropshipping/__manifest__.py | 2 +- .../static/description/index.html | 13 +++++-------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/sale_margin_delivered_dropshipping/README.rst b/sale_margin_delivered_dropshipping/README.rst index de918246..26214d82 100644 --- a/sale_margin_delivered_dropshipping/README.rst +++ b/sale_margin_delivered_dropshipping/README.rst @@ -7,7 +7,7 @@ Sale Margin Delivered Dropshipping !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:5a597b346c2f49f2ccba1b1f44ed58c0c66d0bf10be25e6e8aeb9c56e4674328 + !! source digest: sha256:26f521c15e749b2b0fc883532c1cdec7a52007cc59d5b3e33232fbc636a011d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/sale_margin_delivered_dropshipping/__manifest__.py b/sale_margin_delivered_dropshipping/__manifest__.py index b3ab8777..b580333d 100644 --- a/sale_margin_delivered_dropshipping/__manifest__.py +++ b/sale_margin_delivered_dropshipping/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Sale Margin Delivered Dropshipping", - "version": "16.0.1.0.0", + "version": "16.0.1.0.1", "author": "Moduon, Odoo Community Association (OCA)", "website": "https://github.com/OCA/margin-analysis", "category": "Sales", diff --git a/sale_margin_delivered_dropshipping/static/description/index.html b/sale_margin_delivered_dropshipping/static/description/index.html index d890d380..9e3ef7c1 100644 --- a/sale_margin_delivered_dropshipping/static/description/index.html +++ b/sale_margin_delivered_dropshipping/static/description/index.html @@ -8,11 +8,10 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ +:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. -Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +274,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: gray; } /* line numbers */ +pre.code .ln { color: grey; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +300,7 @@ span.pre { white-space: pre } -span.problematic, pre.problematic { +span.problematic { color: red } span.section-subtitle { @@ -367,7 +366,7 @@

Sale Margin Delivered Dropshipping

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:5a597b346c2f49f2ccba1b1f44ed58c0c66d0bf10be25e6e8aeb9c56e4674328 +!! source digest: sha256:26f521c15e749b2b0fc883532c1cdec7a52007cc59d5b3e33232fbc636a011d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Alpha License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runboat

Computes sale order lines margins for the delivered items.

@@ -448,9 +447,7 @@

Contributors

Maintainers

This module is maintained by the OCA.

- -Odoo Community Association - +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.

From bbde522495f30859d005b0cedaea0a4ea5ec618e Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Wed, 19 Jun 2024 16:37:55 +0200 Subject: [PATCH 4/9] [IMP] sale_margin_delivered: Store margin delivered percent as a fration of 1 As it's done into the sale_margin addon from odoo --- .../tests/test_sale_margin_delivered_dropship.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py index 296d1d88..b986bfab 100644 --- a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py +++ b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py @@ -48,5 +48,5 @@ def test_sale_margin_delivered_dropship(self): picking_return._action_done() order_line = sale_order.order_line[:1] self.assertEqual(order_line.margin_delivered, 30.0) - self.assertEqual(order_line.margin_delivered_percent, 50.0) + self.assertEqual(order_line.margin_delivered_percent, 0.5) self.assertEqual(order_line.purchase_price_delivery, order_line.purchase_price) From e50136420c7de1bf5d42013086b4016d430cccf8 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 24 Jun 2024 12:09:36 +0000 Subject: [PATCH 5/9] Added translation using Weblate (Italian) --- sale_margin_delivered_dropshipping/i18n/it.po | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 sale_margin_delivered_dropshipping/i18n/it.po diff --git a/sale_margin_delivered_dropshipping/i18n/it.po b/sale_margin_delivered_dropshipping/i18n/it.po new file mode 100644 index 00000000..ddbd41c2 --- /dev/null +++ b/sale_margin_delivered_dropshipping/i18n/it.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_margin_delivered_dropshipping +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\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" + +#. module: sale_margin_delivered_dropshipping +#: model:ir.model,name:sale_margin_delivered_dropshipping.model_sale_order_line +msgid "Sales Order Line" +msgstr "" From aa0f6ae45625394d4ee1189b27f226d7472acc8d Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 24 Jun 2024 12:10:04 +0000 Subject: [PATCH 6/9] Translated using Weblate (Italian) Currently translated at 100.0% (1 of 1 strings) Translation: margin-analysis-16.0/margin-analysis-16.0-sale_margin_delivered_dropshipping Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_delivered_dropshipping/it/ --- sale_margin_delivered_dropshipping/i18n/it.po | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sale_margin_delivered_dropshipping/i18n/it.po b/sale_margin_delivered_dropshipping/i18n/it.po index ddbd41c2..5dbf84e4 100644 --- a/sale_margin_delivered_dropshipping/i18n/it.po +++ b/sale_margin_delivered_dropshipping/i18n/it.po @@ -6,15 +6,17 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-06-24 14:36+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: sale_margin_delivered_dropshipping #: model:ir.model,name:sale_margin_delivered_dropshipping.model_sale_order_line msgid "Sales Order Line" -msgstr "" +msgstr "Riga ordine di vendita" From f1ffc17160a055b95c6fa770ac2fc3513f2632f6 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Fri, 21 Feb 2025 13:06:20 +0530 Subject: [PATCH 7/9] [IMP] sale_margin_delivered_dropshipping: pre-commit auto fixes --- sale_margin_delivered_dropshipping/README.rst | 58 +++++++++---------- .../pyproject.toml | 3 + .../readme/CONFIGURE.md | 8 +++ .../readme/CONFIGURE.rst | 6 -- .../readme/CONTRIBUTORS.md | 2 + .../readme/CONTRIBUTORS.rst | 2 - .../{DESCRIPTION.rst => DESCRIPTION.md} | 0 .../readme/USAGE.md | 17 ++++++ .../readme/USAGE.rst | 18 ------ .../static/description/index.html | 49 ++++++++-------- 10 files changed, 85 insertions(+), 78 deletions(-) create mode 100644 sale_margin_delivered_dropshipping/pyproject.toml create mode 100644 sale_margin_delivered_dropshipping/readme/CONFIGURE.md delete mode 100644 sale_margin_delivered_dropshipping/readme/CONFIGURE.rst create mode 100644 sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md delete mode 100644 sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst rename sale_margin_delivered_dropshipping/readme/{DESCRIPTION.rst => DESCRIPTION.md} (100%) create mode 100644 sale_margin_delivered_dropshipping/readme/USAGE.md delete mode 100644 sale_margin_delivered_dropshipping/readme/USAGE.rst diff --git a/sale_margin_delivered_dropshipping/README.rst b/sale_margin_delivered_dropshipping/README.rst index 26214d82..0d71bd35 100644 --- a/sale_margin_delivered_dropshipping/README.rst +++ b/sale_margin_delivered_dropshipping/README.rst @@ -17,13 +17,13 @@ Sale Margin Delivered Dropshipping :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmargin--analysis-lightgray.png?logo=github - :target: https://github.com/OCA/margin-analysis/tree/16.0/sale_margin_delivered_dropshipping + :target: https://github.com/OCA/margin-analysis/tree/17.0/sale_margin_delivered_dropshipping :alt: OCA/margin-analysis .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_delivered_dropshipping + :target: https://translation.odoo-community.org/projects/margin-analysis-17-0/margin-analysis-17-0-sale_margin_delivered_dropshipping :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/margin-analysis&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/margin-analysis&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,34 +45,34 @@ This module takes in consideration Outgoing, Returns and Dropship. Configuration ============= -#. To grant Sales Margin view privileges to a user, go to *Settings > Users & - Companies > Users*, select the user and set *Show Sale Margin* on. -#. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. -#. Configure Dropship Product: Create or Edit an Storable product, - activate Dropship route on *Inventory Tab > Routes* and - add a Product Supplierinfo under *Purchase tab > Vendors*. +1. To grant Sales Margin view privileges to a user, go to *Settings > + Users & Companies > Users*, select the user and set *Show Sale + Margin* on. +2. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. +3. Configure Dropship Product: Create or Edit an Storable product, + activate Dropship route on *Inventory Tab > Routes* and add a Product + Supplierinfo under *Purchase tab > Vendors*. Usage ===== -#. Go to *Sales > Orders > Quotations*. -#. Create a new *Sales Order* and add a line with an stockable product. Set a - quantity higher than one. -#. Confirm the *Sales Order* and deliver just a partial amount of product in - the picking. -#. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* dimension - and the *Margin* and *Margin Delivered* to compare them. +1. Go to *Sales > Orders > Quotations*. +2. Create a new *Sales Order* and add a line with an stockable product. + Set a quantity higher than one. +3. Confirm the *Sales Order* and deliver just a partial amount of + product in the picking. +4. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* + dimension and the *Margin* and *Margin Delivered* to compare them. For example: -In an order line with a product at a cost of 10 and a sell price of 25 we -deliver 2 of 3 units. Then, the reported margins would be: +In an order line with a product at a cost of 10 and a sell price of 25 +we deliver 2 of 3 units. Then, the reported margins would be: -`margin`: 45 (3 * 15) -`margin_delivered`: 30 (2 * 15) +\`margin\`: 45 (3 \* 15) \`margin_delivered\`: 30 (2 \* 15) -Additionally, you can check the margin and the margin percent in the sales -order line. +Additionally, you can check the margin and the margin percent in the +sales order line. Bug Tracker =========== @@ -80,7 +80,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -88,18 +88,18 @@ Credits ======= Authors -~~~~~~~ +------- * Moduon Contributors -~~~~~~~~~~~~ +------------ -* Eduardo de Miguel (`Moduon `__) -* Rafael Blasco (`Moduon `__) +- Eduardo de Miguel (`Moduon `__) +- Rafael Blasco (`Moduon `__) Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -119,6 +119,6 @@ Current `maintainer `__: |maintainer-Shide| -This module is part of the `OCA/margin-analysis `_ project on GitHub. +This module is part of the `OCA/margin-analysis `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_margin_delivered_dropshipping/pyproject.toml b/sale_margin_delivered_dropshipping/pyproject.toml new file mode 100644 index 00000000..4231d0cc --- /dev/null +++ b/sale_margin_delivered_dropshipping/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/sale_margin_delivered_dropshipping/readme/CONFIGURE.md b/sale_margin_delivered_dropshipping/readme/CONFIGURE.md new file mode 100644 index 00000000..ee4c8bb3 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/CONFIGURE.md @@ -0,0 +1,8 @@ +1. To grant Sales Margin view privileges to a user, go to *Settings \> + Users & Companies \> Users*, select the user and set *Show Sale + Margin* on. +2. Go to *Settings \> Purchase \> Logistics* and activate + *Dropshipping*. +3. Configure Dropship Product: Create or Edit an Storable product, + activate Dropship route on *Inventory Tab \> Routes* and add a + Product Supplierinfo under *Purchase tab \> Vendors*. diff --git a/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst b/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst deleted file mode 100644 index bf521422..00000000 --- a/sale_margin_delivered_dropshipping/readme/CONFIGURE.rst +++ /dev/null @@ -1,6 +0,0 @@ -#. To grant Sales Margin view privileges to a user, go to *Settings > Users & - Companies > Users*, select the user and set *Show Sale Margin* on. -#. Go to *Settings > Purchase > Logistics* and activate *Dropshipping*. -#. Configure Dropship Product: Create or Edit an Storable product, - activate Dropship route on *Inventory Tab > Routes* and - add a Product Supplierinfo under *Purchase tab > Vendors*. diff --git a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md new file mode 100644 index 00000000..f468f56f --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Eduardo de Miguel ([Moduon](https://www.moduon.team/)) +- Rafael Blasco ([Moduon](https://www.moduon.team/)) diff --git a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst deleted file mode 100644 index 249b6b1d..00000000 --- a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,2 +0,0 @@ -* Eduardo de Miguel (`Moduon `__) -* Rafael Blasco (`Moduon `__) diff --git a/sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst b/sale_margin_delivered_dropshipping/readme/DESCRIPTION.md similarity index 100% rename from sale_margin_delivered_dropshipping/readme/DESCRIPTION.rst rename to sale_margin_delivered_dropshipping/readme/DESCRIPTION.md diff --git a/sale_margin_delivered_dropshipping/readme/USAGE.md b/sale_margin_delivered_dropshipping/readme/USAGE.md new file mode 100644 index 00000000..66db6963 --- /dev/null +++ b/sale_margin_delivered_dropshipping/readme/USAGE.md @@ -0,0 +1,17 @@ +1. Go to *Sales \> Orders \> Quotations*. +2. Create a new *Sales Order* and add a line with an stockable product. + Set a quantity higher than one. +3. Confirm the *Sales Order* and deliver just a partial amount of + product in the picking. +4. Go to *Sales \> Reporting \> Sales* and unfold the *Order Reference* + dimension and the *Margin* and *Margin Delivered* to compare them. + +For example: + +In an order line with a product at a cost of 10 and a sell price of 25 +we deliver 2 of 3 units. Then, the reported margins would be: + +\`margin\`: 45 (3 \* 15) \`margin_delivered\`: 30 (2 \* 15) + +Additionally, you can check the margin and the margin percent in the +sales order line. diff --git a/sale_margin_delivered_dropshipping/readme/USAGE.rst b/sale_margin_delivered_dropshipping/readme/USAGE.rst deleted file mode 100644 index 1dbc7486..00000000 --- a/sale_margin_delivered_dropshipping/readme/USAGE.rst +++ /dev/null @@ -1,18 +0,0 @@ -#. Go to *Sales > Orders > Quotations*. -#. Create a new *Sales Order* and add a line with an stockable product. Set a - quantity higher than one. -#. Confirm the *Sales Order* and deliver just a partial amount of product in - the picking. -#. Go to *Sales > Reporting > Sales* and unfold the *Order Reference* dimension - and the *Margin* and *Margin Delivered* to compare them. - -For example: - -In an order line with a product at a cost of 10 and a sell price of 25 we -deliver 2 of 3 units. Then, the reported margins would be: - -`margin`: 45 (3 * 15) -`margin_delivered`: 30 (2 * 15) - -Additionally, you can check the margin and the margin percent in the sales -order line. diff --git a/sale_margin_delivered_dropshipping/static/description/index.html b/sale_margin_delivered_dropshipping/static/description/index.html index 9e3ef7c1..d29d87ab 100644 --- a/sale_margin_delivered_dropshipping/static/description/index.html +++ b/sale_margin_delivered_dropshipping/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -368,7 +369,7 @@

Sale Margin Delivered Dropshipping

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:26f521c15e749b2b0fc883532c1cdec7a52007cc59d5b3e33232fbc636a011d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Alpha License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runboat

+

Alpha License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runboat

Computes sale order lines margins for the delivered items.

This module takes in consideration Outgoing, Returns and Dropship.

@@ -394,39 +395,39 @@

Sale Margin Delivered Dropshipping

Configuration

    -
  1. To grant Sales Margin view privileges to a user, go to Settings > Users & -Companies > Users, select the user and set Show Sale Margin on.
  2. +
  3. To grant Sales Margin view privileges to a user, go to Settings > +Users & Companies > Users, select the user and set Show Sale +Margin on.
  4. Go to Settings > Purchase > Logistics and activate Dropshipping.
  5. Configure Dropship Product: Create or Edit an Storable product, -activate Dropship route on Inventory Tab > Routes and -add a Product Supplierinfo under Purchase tab > Vendors.
  6. +activate Dropship route on Inventory Tab > Routes and add a Product +Supplierinfo under Purchase tab > Vendors.

Usage

  1. Go to Sales > Orders > Quotations.
  2. -
  3. Create a new Sales Order and add a line with an stockable product. Set a -quantity higher than one.
  4. -
  5. Confirm the Sales Order and deliver just a partial amount of product in -the picking.
  6. -
  7. Go to Sales > Reporting > Sales and unfold the Order Reference dimension -and the Margin and Margin Delivered to compare them.
  8. +
  9. Create a new Sales Order and add a line with an stockable product. +Set a quantity higher than one.
  10. +
  11. Confirm the Sales Order and deliver just a partial amount of +product in the picking.
  12. +
  13. Go to Sales > Reporting > Sales and unfold the Order Reference +dimension and the Margin and Margin Delivered to compare them.

For example:

-

In an order line with a product at a cost of 10 and a sell price of 25 we -deliver 2 of 3 units. Then, the reported margins would be:

-

margin: 45 (3 * 15) -margin_delivered: 30 (2 * 15)

-

Additionally, you can check the margin and the margin percent in the sales -order line.

+

In an order line with a product at a cost of 10 and a sell price of 25 +we deliver 2 of 3 units. Then, the reported margins would be:

+

`margin`: 45 (3 * 15) `margin_delivered`: 30 (2 * 15)

+

Additionally, you can check the margin and the margin percent in the +sales order line.

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.

+feedback.

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

@@ -447,13 +448,15 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +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:

Shide

-

This module is part of the OCA/margin-analysis project on GitHub.

+

This module is part of the OCA/margin-analysis project on GitHub.

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

From c0440f941e0dba90caf64363d1621da01d12c046 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Fri, 21 Feb 2025 13:07:38 +0530 Subject: [PATCH 8/9] [MIG] sale_margin_delivered_dropshipping: Migration to 17.0 --- sale_margin_delivered_dropshipping/README.rst | 3 +++ sale_margin_delivered_dropshipping/__manifest__.py | 2 +- sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md | 2 ++ .../static/description/index.html | 4 ++++ .../tests/test_sale_margin_delivered_dropship.py | 4 ++-- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/sale_margin_delivered_dropshipping/README.rst b/sale_margin_delivered_dropshipping/README.rst index 0d71bd35..563e4aa1 100644 --- a/sale_margin_delivered_dropshipping/README.rst +++ b/sale_margin_delivered_dropshipping/README.rst @@ -97,6 +97,9 @@ Contributors - Eduardo de Miguel (`Moduon `__) - Rafael Blasco (`Moduon `__) +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia Maintainers ----------- diff --git a/sale_margin_delivered_dropshipping/__manifest__.py b/sale_margin_delivered_dropshipping/__manifest__.py index b580333d..d304f65d 100644 --- a/sale_margin_delivered_dropshipping/__manifest__.py +++ b/sale_margin_delivered_dropshipping/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Sale Margin Delivered Dropshipping", - "version": "16.0.1.0.1", + "version": "17.0.1.0.0", "author": "Moduon, Odoo Community Association (OCA)", "website": "https://github.com/OCA/margin-analysis", "category": "Sales", diff --git a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md index f468f56f..87f9e568 100644 --- a/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md +++ b/sale_margin_delivered_dropshipping/readme/CONTRIBUTORS.md @@ -1,2 +1,4 @@ - Eduardo de Miguel ([Moduon](https://www.moduon.team/)) - Rafael Blasco ([Moduon](https://www.moduon.team/)) +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/sale_margin_delivered_dropshipping/static/description/index.html b/sale_margin_delivered_dropshipping/static/description/index.html index d29d87ab..9695fc42 100644 --- a/sale_margin_delivered_dropshipping/static/description/index.html +++ b/sale_margin_delivered_dropshipping/static/description/index.html @@ -443,6 +443,10 @@

Contributors

diff --git a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py index b986bfab..29f5afcf 100644 --- a/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py +++ b/sale_margin_delivered_dropshipping/tests/test_sale_margin_delivered_dropship.py @@ -37,14 +37,14 @@ def test_sale_margin_delivered_dropship(self): purchases = sale_order._get_purchase_orders() purchases.button_confirm() dropship_picking = purchases.picking_ids - dropship_picking.move_line_ids.qty_done = 6.0 + dropship_picking.move_line_ids.quantity = 6.0 dropship_picking._action_done() # Create return for Dropship picking_return = self._create_return( dropship_picking, qty_refund=3.0, to_refund=True ) picking_return.action_assign() - picking_return.move_line_ids.qty_done = 3.0 + picking_return.move_line_ids.quantity = 3.0 picking_return._action_done() order_line = sale_order.order_line[:1] self.assertEqual(order_line.margin_delivered, 30.0) From e96ce2fff6f4efb272aa9be76b9ebbc4ac8cfd10 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Fri, 21 Feb 2025 15:27:01 +0530 Subject: [PATCH 9/9] [DON'T MERGE] test-requirements.txt --- test-requirements.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test-requirements.txt diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 00000000..f23446af --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +odoo-addon-sale_margin_delivered @ git+https://github.com/OCA/margin-analysis.git@refs/pull/239/head#subdirectory=sale_margin_delivered