From a62392f53699a8e9afc0a988c2056e2ed3b3a0a2 Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Tue, 29 Oct 2019 12:18:57 +0100 Subject: [PATCH 01/18] [11.0][ADD] sale_margin_sync: Recompute sale margin when related stock move cost price is changed --- sale_margin_sync/README.rst | 76 ++++ sale_margin_sync/__init__.py | 3 + sale_margin_sync/__manifest__.py | 16 + sale_margin_sync/i18n/sale_margin_sync.pot | 20 + sale_margin_sync/models/__init__.py | 3 + sale_margin_sync/models/stock_move.py | 22 + sale_margin_sync/readme/CONTRIBUTORS.rst | 4 + sale_margin_sync/readme/DESCRIPTION.rst | 1 + sale_margin_sync/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 426 ++++++++++++++++++ sale_margin_sync/tests/__init__.py | 3 + .../tests/test_sale_margin_sync.py | 41 ++ 12 files changed, 615 insertions(+) create mode 100644 sale_margin_sync/README.rst create mode 100644 sale_margin_sync/__init__.py create mode 100644 sale_margin_sync/__manifest__.py create mode 100644 sale_margin_sync/i18n/sale_margin_sync.pot create mode 100644 sale_margin_sync/models/__init__.py create mode 100644 sale_margin_sync/models/stock_move.py create mode 100644 sale_margin_sync/readme/CONTRIBUTORS.rst create mode 100644 sale_margin_sync/readme/DESCRIPTION.rst create mode 100644 sale_margin_sync/static/description/icon.png create mode 100644 sale_margin_sync/static/description/index.html create mode 100644 sale_margin_sync/tests/__init__.py create mode 100644 sale_margin_sync/tests/test_sale_margin_sync.py diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst new file mode 100644 index 000000000..cf711d15e --- /dev/null +++ b/sale_margin_sync/README.rst @@ -0,0 +1,76 @@ +================ +Sale margin sync +================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fmargin--analysis-lightgray.png?logo=github + :target: https://github.com/OCA/margin-analysis/tree/11.0/sale_margin_sync + :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-11-0/margin-analysis-11-0-sale_margin_sync + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/132/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Recompute sale margin when related stock move cost price is changed. + +**Table of contents** + +.. contents:: + :local: + +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 smashing 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 `_: + + * Carlos Dauden + * Sergio Teruel + +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. + +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_sync/__init__.py b/sale_margin_sync/__init__.py new file mode 100644 index 000000000..31660d6a9 --- /dev/null +++ b/sale_margin_sync/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py new file mode 100644 index 000000000..09fd26418 --- /dev/null +++ b/sale_margin_sync/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2019 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + 'name': 'Sale margin sync', + 'summary': 'Recompute sale margin when stock move cost price is changed', + 'version': '11.0.1.0.0', + 'category': 'Sales', + 'website': 'https://github.com/OCA/margin-analysis', + 'author': 'Tecnativa, Odoo Community Association (OCA)', + 'license': 'AGPL-3', + 'installable': True, + 'depends': [ + 'sale_margin', + 'sale_stock', + ], +} diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot new file mode 100644 index 000000000..6ba81dc3f --- /dev/null +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_margin_sync +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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_sync +#: model:ir.model,name:sale_margin_sync.model_stock_move +msgid "Stock Move" +msgstr "" + diff --git a/sale_margin_sync/models/__init__.py b/sale_margin_sync/models/__init__.py new file mode 100644 index 000000000..1fec16564 --- /dev/null +++ b/sale_margin_sync/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import stock_move diff --git a/sale_margin_sync/models/stock_move.py b/sale_margin_sync/models/stock_move.py new file mode 100644 index 000000000..f1da4d2a2 --- /dev/null +++ b/sale_margin_sync/models/stock_move.py @@ -0,0 +1,22 @@ +# Copyright 2019 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class StockMove(models.Model): + _inherit = 'stock.move' + + def write(self, vals): + res = super(StockMove, self).write(vals) + if 'price_unit' in vals and not self.env.context.get( + 'skip_sale_margin_sync', False): + self.sale_margin_sync() + return res + + def sale_margin_sync(self): + for move in self: + if (move.state != 'done' or not move.sale_line_id or + not move._is_out()): + continue + move.sale_line_id.purchase_price = -move.price_unit diff --git a/sale_margin_sync/readme/CONTRIBUTORS.rst b/sale_margin_sync/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..66d11c825 --- /dev/null +++ b/sale_margin_sync/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Carlos Dauden + * Sergio Teruel diff --git a/sale_margin_sync/readme/DESCRIPTION.rst b/sale_margin_sync/readme/DESCRIPTION.rst new file mode 100644 index 000000000..03ba88c69 --- /dev/null +++ b/sale_margin_sync/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Recompute sale margin when related stock move cost price is changed. diff --git a/sale_margin_sync/static/description/icon.png b/sale_margin_sync/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_sync/static/description/index.html b/sale_margin_sync/static/description/index.html new file mode 100644 index 000000000..346557d62 --- /dev/null +++ b/sale_margin_sync/static/description/index.html @@ -0,0 +1,426 @@ + + + + + + +Sale margin sync + + + +
+

Sale margin sync

+ + +

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Recompute sale margin when related stock move cost price is changed.

+

Table of contents

+ +
+

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 smashing 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:

    +
    +
      +
    • Carlos Dauden
    • +
    • Sergio Teruel
    • +
    +
    +
  • +
+
+
+

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.

+

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_sync/tests/__init__.py b/sale_margin_sync/tests/__init__.py new file mode 100644 index 000000000..8df8dcdcb --- /dev/null +++ b/sale_margin_sync/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_sale_margin_sync diff --git a/sale_margin_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py new file mode 100644 index 000000000..935045fdb --- /dev/null +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -0,0 +1,41 @@ +# Copyright 2019 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo.tests.common import SavepointCase + + +class TestSaleMarginSync(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner = cls.env['res.partner'].create({ + 'name': 'Test', + }) + cls.product = cls.env['product.product'].create({ + 'name': 'test_product', + 'type': 'product', + }) + cls.env['stock.quant'].create({ + 'product_id': cls.product.id, + 'location_id': cls.env.ref('stock.stock_location_stock').id, + 'quantity': 30.0}) + cls.order = cls.env['sale.order'].create({ + 'partner_id': cls.partner.id, + 'order_line': [(0, 0, { + 'name': cls.product.name, + 'product_id': cls.product.id, + 'product_uom_qty': 10, + 'product_uom': cls.product.uom_id.id, + 'price_unit': 100.00, + })], + 'pricelist_id': cls.env.ref('product.list0').id, + }) + + def test_sale_margin_sync(self): + self.order.action_confirm() + so_line = self.order.order_line[:1] + move = so_line.move_ids[:1] + move.quantity_done = 10 + move.picking_id.action_done() + move.price_unit = -80.0 + self.assertEqual(so_line.purchase_price, 80.0) + self.assertEqual(so_line.margin, 200.0) From de994f681aa2fdf4ade49adfbe837c75c28c99d0 Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Thu, 31 Oct 2019 00:20:17 +0100 Subject: [PATCH 02/18] [MIG] sale_margin_sync: Migration to 12.0 --- sale_margin_sync/README.rst | 10 +++++----- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/i18n/sale_margin_sync.pot | 2 +- sale_margin_sync/models/stock_move.py | 6 ++---- sale_margin_sync/static/description/index.html | 6 +++--- sale_margin_sync/tests/test_sale_margin_sync.py | 10 ++++++++++ 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index cf711d15e..56fb41680 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/11.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/12.0/sale_margin_sync :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-11-0/margin-analysis-11-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-12-0/margin-analysis-12-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/11.0 + :target: https://runbot.odoo-community.org/runbot/132/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -71,6 +71,6 @@ 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. -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_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 09fd26418..3d5447973 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'Sale margin sync', 'summary': 'Recompute sale margin when stock move cost price is changed', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'category': 'Sales', 'website': 'https://github.com/OCA/margin-analysis', 'author': 'Tecnativa, Odoo Community Association (OCA)', diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index 6ba81dc3f..aa948acee 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" diff --git a/sale_margin_sync/models/stock_move.py b/sale_margin_sync/models/stock_move.py index f1da4d2a2..d76205c51 100644 --- a/sale_margin_sync/models/stock_move.py +++ b/sale_margin_sync/models/stock_move.py @@ -15,8 +15,6 @@ def write(self, vals): return res def sale_margin_sync(self): - for move in self: - if (move.state != 'done' or not move.sale_line_id or - not move._is_out()): - continue + for move in self.filtered(lambda m: ( + m.state == 'done' and m.sale_line_id and m._is_out())): move.sale_line_id.purchase_price = -move.price_unit diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index 346557d62..93578de7f 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -417,7 +417,7 @@

Maintainers

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.

-

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_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 935045fdb..db5c61285 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -13,6 +13,7 @@ def setUpClass(cls): cls.product = cls.env['product.product'].create({ 'name': 'test_product', 'type': 'product', + 'standard_price': 70, }) cls.env['stock.quant'].create({ 'product_id': cls.product.id, @@ -39,3 +40,12 @@ def test_sale_margin_sync(self): move.price_unit = -80.0 self.assertEqual(so_line.purchase_price, 80.0) self.assertEqual(so_line.margin, 200.0) + + def test_sale_margin_sync_unvalidated_move(self): + self.order.action_confirm() + so_line = self.order.order_line[:1] + move = so_line.move_ids[:1] + move.quantity_done = 10 + move.price_unit = -80.0 + self.assertEqual(so_line.purchase_price, 70.0) + self.assertEqual(so_line.margin, 300.0) From 851844d4f6f02d95c58068488b0f0c4a75376d3f Mon Sep 17 00:00:00 2001 From: Sergio Teruel Date: Thu, 21 Nov 2019 21:31:45 +0100 Subject: [PATCH 03/18] [IMP] sale_margin_sync: Create a pricelist for testing to avoid crash test with other modules --- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/tests/test_sale_margin_sync.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 3d5447973..e7400dc63 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'Sale margin sync', 'summary': 'Recompute sale margin when stock move cost price is changed', - 'version': '12.0.1.0.0', + 'version': '12.0.1.0.1', 'category': 'Sales', 'website': 'https://github.com/OCA/margin-analysis', 'author': 'Tecnativa, Odoo Community Association (OCA)', diff --git a/sale_margin_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index db5c61285..1cbe3e72c 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -7,6 +7,9 @@ class TestSaleMarginSync(SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() + cls.pricelist = cls.env['product.pricelist'].create({ + 'name': 'Pricelist for testing sale_margin_sync', + }) cls.partner = cls.env['res.partner'].create({ 'name': 'Test', }) @@ -28,7 +31,7 @@ def setUpClass(cls): 'product_uom': cls.product.uom_id.id, 'price_unit': 100.00, })], - 'pricelist_id': cls.env.ref('product.list0').id, + 'pricelist_id': cls.pricelist.id, }) def test_sale_margin_sync(self): From 6de195bce6061afa1e95a0ede0155f45dae4f418 Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Thu, 17 Sep 2020 16:38:33 +0200 Subject: [PATCH 04/18] [IMP] sale_margin_sync: black, isort --- sale_margin_sync/__manifest__.py | 21 +++---- sale_margin_sync/models/stock_move.py | 12 ++-- .../tests/test_sale_margin_sync.py | 59 +++++++++++-------- 3 files changed, 49 insertions(+), 43 deletions(-) diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index e7400dc63..ff5275277 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -1,16 +1,13 @@ # Copyright 2019 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { - 'name': 'Sale margin sync', - 'summary': 'Recompute sale margin when stock move cost price is changed', - 'version': '12.0.1.0.1', - 'category': 'Sales', - 'website': 'https://github.com/OCA/margin-analysis', - 'author': 'Tecnativa, Odoo Community Association (OCA)', - 'license': 'AGPL-3', - 'installable': True, - 'depends': [ - 'sale_margin', - 'sale_stock', - ], + "name": "Sale margin sync", + "summary": "Recompute sale margin when stock move cost price is changed", + "version": "12.0.1.0.1", + "category": "Sales", + "website": "https://github.com/OCA/margin-analysis", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": ["sale_margin", "sale_stock",], } diff --git a/sale_margin_sync/models/stock_move.py b/sale_margin_sync/models/stock_move.py index d76205c51..74ea11ec1 100644 --- a/sale_margin_sync/models/stock_move.py +++ b/sale_margin_sync/models/stock_move.py @@ -5,16 +5,18 @@ class StockMove(models.Model): - _inherit = 'stock.move' + _inherit = "stock.move" def write(self, vals): res = super(StockMove, self).write(vals) - if 'price_unit' in vals and not self.env.context.get( - 'skip_sale_margin_sync', False): + if "price_unit" in vals and not self.env.context.get( + "skip_sale_margin_sync", False + ): self.sale_margin_sync() return res def sale_margin_sync(self): - for move in self.filtered(lambda m: ( - m.state == 'done' and m.sale_line_id and m._is_out())): + for move in self.filtered( + lambda m: (m.state == "done" and m.sale_line_id and m._is_out()) + ): move.sale_line_id.purchase_price = -move.price_unit diff --git a/sale_margin_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 1cbe3e72c..6ece0f60b 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -7,32 +7,39 @@ class TestSaleMarginSync(SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.pricelist = cls.env['product.pricelist'].create({ - 'name': 'Pricelist for testing sale_margin_sync', - }) - cls.partner = cls.env['res.partner'].create({ - 'name': 'Test', - }) - cls.product = cls.env['product.product'].create({ - 'name': 'test_product', - 'type': 'product', - 'standard_price': 70, - }) - cls.env['stock.quant'].create({ - 'product_id': cls.product.id, - 'location_id': cls.env.ref('stock.stock_location_stock').id, - 'quantity': 30.0}) - cls.order = cls.env['sale.order'].create({ - 'partner_id': cls.partner.id, - 'order_line': [(0, 0, { - 'name': cls.product.name, - 'product_id': cls.product.id, - 'product_uom_qty': 10, - 'product_uom': cls.product.uom_id.id, - 'price_unit': 100.00, - })], - 'pricelist_id': cls.pricelist.id, - }) + cls.pricelist = cls.env["product.pricelist"].create( + {"name": "Pricelist for testing sale_margin_sync",} + ) + cls.partner = cls.env["res.partner"].create({"name": "Test",}) + cls.product = cls.env["product.product"].create( + {"name": "test_product", "type": "product", "standard_price": 70,} + ) + cls.env["stock.quant"].create( + { + "product_id": cls.product.id, + "location_id": cls.env.ref("stock.stock_location_stock").id, + "quantity": 30.0, + } + ) + cls.order = cls.env["sale.order"].create( + { + "partner_id": cls.partner.id, + "order_line": [ + ( + 0, + 0, + { + "name": cls.product.name, + "product_id": cls.product.id, + "product_uom_qty": 10, + "product_uom": cls.product.uom_id.id, + "price_unit": 100.00, + }, + ) + ], + "pricelist_id": cls.pricelist.id, + } + ) def test_sale_margin_sync(self): self.order.action_confirm() From 57059369cf472e175cb67169f02e72270487df4a Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Thu, 17 Sep 2020 16:38:33 +0200 Subject: [PATCH 05/18] [MIG] sale_margin_sync: Migration to v13.0 --- sale_margin_sync/README.rst | 10 ++++----- sale_margin_sync/__manifest__.py | 4 ++-- sale_margin_sync/i18n/sale_margin_sync.pot | 11 +++++----- sale_margin_sync/models/__init__.py | 2 +- sale_margin_sync/models/stock_move.py | 22 ------------------- .../models/stock_valuation_layer.py | 20 +++++++++++++++++ .../static/description/index.html | 6 ++--- .../tests/test_sale_margin_sync.py | 10 ++++----- 8 files changed, 41 insertions(+), 44 deletions(-) delete mode 100644 sale_margin_sync/models/stock_move.py create mode 100644 sale_margin_sync/models/stock_valuation_layer.py diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index 56fb41680..5c83bba51 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/12.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/13.0/sale_margin_sync :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-12-0/margin-analysis-12-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-13-0/margin-analysis-13-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/12.0 + :target: https://runbot.odoo-community.org/runbot/132/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -71,6 +71,6 @@ 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. -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_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index ff5275277..9ef6f6c4e 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,11 +3,11 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "12.0.1.0.1", + "version": "13.0.1.0.0", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", "license": "AGPL-3", "installable": True, - "depends": ["sale_margin", "sale_stock",], + "depends": ["sale_margin", "sale_stock"], } diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index aa948acee..28dd313aa 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_margin_sync +# * sale_margin_sync # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -14,7 +14,6 @@ msgstr "" "Plural-Forms: \n" #. module: sale_margin_sync -#: model:ir.model,name:sale_margin_sync.model_stock_move -msgid "Stock Move" +#: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer +msgid "Stock Valuation Layer" msgstr "" - diff --git a/sale_margin_sync/models/__init__.py b/sale_margin_sync/models/__init__.py index 1fec16564..276dabe9e 100644 --- a/sale_margin_sync/models/__init__.py +++ b/sale_margin_sync/models/__init__.py @@ -1,3 +1,3 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from . import stock_move +from . import stock_valuation_layer diff --git a/sale_margin_sync/models/stock_move.py b/sale_margin_sync/models/stock_move.py deleted file mode 100644 index 74ea11ec1..000000000 --- a/sale_margin_sync/models/stock_move.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2019 Tecnativa - Carlos Dauden -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import models - - -class StockMove(models.Model): - _inherit = "stock.move" - - def write(self, vals): - res = super(StockMove, self).write(vals) - if "price_unit" in vals and not self.env.context.get( - "skip_sale_margin_sync", False - ): - self.sale_margin_sync() - return res - - def sale_margin_sync(self): - for move in self.filtered( - lambda m: (m.state == "done" and m.sale_line_id and m._is_out()) - ): - move.sale_line_id.purchase_price = -move.price_unit diff --git a/sale_margin_sync/models/stock_valuation_layer.py b/sale_margin_sync/models/stock_valuation_layer.py new file mode 100644 index 000000000..7214b3cdf --- /dev/null +++ b/sale_margin_sync/models/stock_valuation_layer.py @@ -0,0 +1,20 @@ +# Copyright 2019 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class StockValuationLayer(models.Model): + _inherit = "stock.valuation.layer" + + def write(self, vals): + res = super().write(vals) + if "unit_cost" in vals and not self.env.context.get( + "skip_sale_margin_sync", False + ): + self.sale_margin_sync() + return res + + def sale_margin_sync(self): + for svl in self.filtered(lambda l: (l.quantity < 0.0)): + svl.stock_move_id.sale_line_id.purchase_price = svl.unit_cost diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index 93578de7f..fde491d55 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -417,7 +417,7 @@

Maintainers

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.

-

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_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 6ece0f60b..82f2530f3 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -8,11 +8,11 @@ class TestSaleMarginSync(SavepointCase): def setUpClass(cls): super().setUpClass() cls.pricelist = cls.env["product.pricelist"].create( - {"name": "Pricelist for testing sale_margin_sync",} + {"name": "Pricelist for testing sale_margin_sync"} ) - cls.partner = cls.env["res.partner"].create({"name": "Test",}) + cls.partner = cls.env["res.partner"].create({"name": "Test"}) cls.product = cls.env["product.product"].create( - {"name": "test_product", "type": "product", "standard_price": 70,} + {"name": "test_product", "type": "product", "standard_price": 70} ) cls.env["stock.quant"].create( { @@ -47,7 +47,7 @@ def test_sale_margin_sync(self): move = so_line.move_ids[:1] move.quantity_done = 10 move.picking_id.action_done() - move.price_unit = -80.0 + move.stock_valuation_layer_ids[:1].unit_cost = 80.0 self.assertEqual(so_line.purchase_price, 80.0) self.assertEqual(so_line.margin, 200.0) @@ -56,6 +56,6 @@ def test_sale_margin_sync_unvalidated_move(self): so_line = self.order.order_line[:1] move = so_line.move_ids[:1] move.quantity_done = 10 - move.price_unit = -80.0 + move.stock_valuation_layer_ids[:1].unit_cost = 80.0 self.assertEqual(so_line.purchase_price, 70.0) self.assertEqual(so_line.margin, 300.0) From d155a7c9971b74e43281442711ee2308b039d3f5 Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Mon, 30 Aug 2021 17:52:47 +0200 Subject: [PATCH 06/18] [IMP] sale_margin_sync: Sync sale line purchase price from stock valuation layer unit cost TT31421 --- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/models/stock_valuation_layer.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 9ef6f6c4e..8ade68edc 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "13.0.1.0.0", + "version": "13.0.1.0.1", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/sale_margin_sync/models/stock_valuation_layer.py b/sale_margin_sync/models/stock_valuation_layer.py index 7214b3cdf..e7b88f338 100644 --- a/sale_margin_sync/models/stock_valuation_layer.py +++ b/sale_margin_sync/models/stock_valuation_layer.py @@ -1,12 +1,21 @@ # Copyright 2019 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import models +from odoo import api, models class StockValuationLayer(models.Model): _inherit = "stock.valuation.layer" + @api.model_create_multi + def create(self, vals_list): + """Update purchase price from sale line linked to svl record + """ + svls = super().create(vals_list) + if not self.env.context.get("skip_sale_margin_sync", False): + svls.filtered("stock_move_id.sale_line_id").sale_margin_sync() + return svls + def write(self, vals): res = super().write(vals) if "unit_cost" in vals and not self.env.context.get( @@ -16,5 +25,7 @@ def write(self, vals): return res def sale_margin_sync(self): + """Only synchronize outgoing moves + """ for svl in self.filtered(lambda l: (l.quantity < 0.0)): svl.stock_move_id.sale_line_id.purchase_price = svl.unit_cost From 74b57b2c093d6d9c1eaa83b496e1fb4754650b55 Mon Sep 17 00:00:00 2001 From: rafamar Date: Sat, 15 Oct 2022 23:00:51 +0200 Subject: [PATCH 07/18] [IMP] sale_margin_sync: black, isort, prettier --- sale_margin_sync/models/stock_valuation_layer.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sale_margin_sync/models/stock_valuation_layer.py b/sale_margin_sync/models/stock_valuation_layer.py index e7b88f338..51b75108a 100644 --- a/sale_margin_sync/models/stock_valuation_layer.py +++ b/sale_margin_sync/models/stock_valuation_layer.py @@ -9,8 +9,7 @@ class StockValuationLayer(models.Model): @api.model_create_multi def create(self, vals_list): - """Update purchase price from sale line linked to svl record - """ + """Update purchase price from sale line linked to svl record""" svls = super().create(vals_list) if not self.env.context.get("skip_sale_margin_sync", False): svls.filtered("stock_move_id.sale_line_id").sale_margin_sync() @@ -25,7 +24,6 @@ def write(self, vals): return res def sale_margin_sync(self): - """Only synchronize outgoing moves - """ + """Only synchronize outgoing moves""" for svl in self.filtered(lambda l: (l.quantity < 0.0)): svl.stock_move_id.sale_line_id.purchase_price = svl.unit_cost From bbac7e4eec7c35ea854f2d9843ee6f4d8d1912a8 Mon Sep 17 00:00:00 2001 From: rafamar Date: Sat, 15 Oct 2022 23:48:12 +0200 Subject: [PATCH 08/18] [MIG] sale_margin_sync: Migration to 14.0 --- sale_margin_sync/README.rst | 10 ++-- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/i18n/sale_margin_sync.pot | 17 ++++++- .../models/stock_valuation_layer.py | 9 +++- .../static/description/index.html | 6 +-- .../tests/test_sale_margin_sync.py | 51 ++++++++++++++----- 6 files changed, 70 insertions(+), 25 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index 5c83bba51..ffb3f7a40 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/13.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/14.0/sale_margin_sync :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-13-0/margin-analysis-13-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-14-0/margin-analysis-14-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/13.0 + :target: https://runbot.odoo-community.org/runbot/132/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -71,6 +71,6 @@ 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. -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_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 8ade68edc..8ef95ccdb 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "13.0.1.0.1", + "version": "14.0.1.0.0", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index 28dd313aa..32810ace5 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,6 +13,21 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: sale_margin_sync +#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_margin_sync +#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer__id +msgid "ID" +msgstr "" + +#. module: sale_margin_sync +#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer____last_update +msgid "Last Modified on" +msgstr "" + #. module: sale_margin_sync #: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer msgid "Stock Valuation Layer" diff --git a/sale_margin_sync/models/stock_valuation_layer.py b/sale_margin_sync/models/stock_valuation_layer.py index 51b75108a..1d504d51d 100644 --- a/sale_margin_sync/models/stock_valuation_layer.py +++ b/sale_margin_sync/models/stock_valuation_layer.py @@ -26,4 +26,11 @@ def write(self, vals): def sale_margin_sync(self): """Only synchronize outgoing moves""" for svl in self.filtered(lambda l: (l.quantity < 0.0)): - svl.stock_move_id.sale_line_id.purchase_price = svl.unit_cost + sale_line_id = svl.stock_move_id.sale_line_id + product_cost = svl.unit_cost + if sale_line_id.product_uom and sale_line_id.product_uom != svl.uom_id: + product_cost = svl.uom_id._compute_price( + product_cost, + sale_line_id.product_uom, + ) + sale_line_id.purchase_price = product_cost diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index fde491d55..f9a9c9bfc 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -417,7 +417,7 @@

Maintainers

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.

-

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_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 82f2530f3..14ca58278 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -35,7 +35,18 @@ def setUpClass(cls): "product_uom": cls.product.uom_id.id, "price_unit": 100.00, }, - ) + ), + ( + 0, + 0, + { + "name": cls.product.name, + "product_id": cls.product.id, + "product_uom_qty": 2, + "product_uom": cls.env.ref("uom.product_uom_dozen").id, + "price_unit": 1200.00, + }, + ), ], "pricelist_id": cls.pricelist.id, } @@ -43,19 +54,31 @@ def setUpClass(cls): def test_sale_margin_sync(self): self.order.action_confirm() - so_line = self.order.order_line[:1] - move = so_line.move_ids[:1] - move.quantity_done = 10 - move.picking_id.action_done() - move.stock_valuation_layer_ids[:1].unit_cost = 80.0 - self.assertEqual(so_line.purchase_price, 80.0) - self.assertEqual(so_line.margin, 200.0) + so_line1 = self.order.order_line[:1] + move1 = so_line1.move_ids[:1] + move1.quantity_done = 10 + so_line2 = self.order.order_line[1:2] + move2 = so_line2.move_ids[:1] + move2.quantity_done = 2 + self.order.picking_ids[:1]._action_done() + move1.stock_valuation_layer_ids[:1].unit_cost = 80.0 + move2.stock_valuation_layer_ids[:1].unit_cost = 80.0 + self.assertEqual(so_line1.purchase_price, 80.0) + self.assertEqual(so_line1.margin, 200.0) + self.assertEqual(so_line2.purchase_price, 960.0) + self.assertEqual(so_line2.margin, 480) def test_sale_margin_sync_unvalidated_move(self): self.order.action_confirm() - so_line = self.order.order_line[:1] - move = so_line.move_ids[:1] - move.quantity_done = 10 - move.stock_valuation_layer_ids[:1].unit_cost = 80.0 - self.assertEqual(so_line.purchase_price, 70.0) - self.assertEqual(so_line.margin, 300.0) + so_line1 = self.order.order_line[:1] + move1 = so_line1.move_ids[:1] + move1.quantity_done = 10 + move1.stock_valuation_layer_ids[:1].unit_cost = 80.0 + so_line2 = self.order.order_line[1:2] + move2 = so_line2.move_ids[:1] + move2.quantity_done = 2 + move2.stock_valuation_layer_ids[:1].unit_cost = 80.0 + self.assertEqual(so_line1.purchase_price, 70.0) + self.assertEqual(so_line1.margin, 300.0) + self.assertEqual(so_line2.purchase_price, 840.0) + self.assertEqual(so_line2.margin, 720) From af7d0c2a5197583e7b0eb9b14312c890438a1aa9 Mon Sep 17 00:00:00 2001 From: CarlosRoca13 Date: Wed, 23 Nov 2022 11:37:20 +0100 Subject: [PATCH 09/18] [MIG] sale_margin_sync: Migration to 15.0 --- sale_margin_sync/README.rst | 11 ++++++----- sale_margin_sync/__manifest__.py | 2 +- sale_margin_sync/i18n/sale_margin_sync.pot | 17 +---------------- sale_margin_sync/readme/CONTRIBUTORS.rst | 1 + sale_margin_sync/static/description/index.html | 7 ++++--- sale_margin_sync/tests/test_sale_margin_sync.py | 4 ++-- 6 files changed, 15 insertions(+), 27 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index ffb3f7a40..eee1b90f9 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/14.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/15.0/sale_margin_sync :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-14-0/margin-analysis-14-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-15-0/margin-analysis-15-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/14.0 + :target: https://runbot.odoo-community.org/runbot/132/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -57,6 +57,7 @@ Contributors * Carlos Dauden * Sergio Teruel + * Carlos Roca Maintainers ~~~~~~~~~~~ @@ -71,6 +72,6 @@ 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. -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_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 8ef95ccdb..694075c05 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "14.0.1.0.0", + "version": "15.0.1.0.1", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/sale_margin_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index 32810ace5..a815f629c 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,21 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: sale_margin_sync -#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer__display_name -msgid "Display Name" -msgstr "" - -#. module: sale_margin_sync -#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer__id -msgid "ID" -msgstr "" - -#. module: sale_margin_sync -#: model:ir.model.fields,field_description:sale_margin_sync.field_stock_valuation_layer____last_update -msgid "Last Modified on" -msgstr "" - #. module: sale_margin_sync #: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer msgid "Stock Valuation Layer" diff --git a/sale_margin_sync/readme/CONTRIBUTORS.rst b/sale_margin_sync/readme/CONTRIBUTORS.rst index 66d11c825..51818bd0f 100644 --- a/sale_margin_sync/readme/CONTRIBUTORS.rst +++ b/sale_margin_sync/readme/CONTRIBUTORS.rst @@ -2,3 +2,4 @@ * Carlos Dauden * Sergio Teruel + * Carlos Roca diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index f9a9c9bfc..f0197a2d6 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -405,6 +405,7 @@

Contributors

  • Carlos Dauden
  • Sergio Teruel
  • +
  • Carlos Roca
@@ -417,7 +418,7 @@

Maintainers

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.

-

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_sync/tests/test_sale_margin_sync.py b/sale_margin_sync/tests/test_sale_margin_sync.py index 14ca58278..a29da65c8 100644 --- a/sale_margin_sync/tests/test_sale_margin_sync.py +++ b/sale_margin_sync/tests/test_sale_margin_sync.py @@ -1,9 +1,9 @@ # Copyright 2019 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase -class TestSaleMarginSync(SavepointCase): +class TestSaleMarginSync(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() From 62baa0e3c308c5666b9d84f9d61aeceecd7df668 Mon Sep 17 00:00:00 2001 From: "Yadier A. De Quesada" Date: Mon, 17 Apr 2023 15:48:46 -0400 Subject: [PATCH 10/18] [MIG] sale_margin_sync: Migration to 16.0 [MIG] sale_margin_sync: Migration to 16.0 --- sale_margin_sync/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_margin_sync/__manifest__.py b/sale_margin_sync/__manifest__.py index 694075c05..ceffcb438 100644 --- a/sale_margin_sync/__manifest__.py +++ b/sale_margin_sync/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale margin sync", "summary": "Recompute sale margin when stock move cost price is changed", - "version": "15.0.1.0.1", + "version": "16.0.1.0.0", "category": "Sales", "website": "https://github.com/OCA/margin-analysis", "author": "Tecnativa, Odoo Community Association (OCA)", From e875811aabe28461ef0fd4edcd24cc0138a27e55 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 20 Apr 2023 08:22:42 +0000 Subject: [PATCH 11/18] [UPD] Update sale_margin_sync.pot --- sale_margin_sync/README.rst | 10 +++++----- sale_margin_sync/i18n/sale_margin_sync.pot | 2 +- sale_margin_sync/static/description/index.html | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index eee1b90f9..1489d0cac 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -14,13 +14,13 @@ Sale margin sync :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/15.0/sale_margin_sync + :target: https://github.com/OCA/margin-analysis/tree/16.0/sale_margin_sync :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-15-0/margin-analysis-15-0-sale_margin_sync + :target: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_sync :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/15.0 + :target: https://runbot.odoo-community.org/runbot/132/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -72,6 +72,6 @@ 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. -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_sync/i18n/sale_margin_sync.pot b/sale_margin_sync/i18n/sale_margin_sync.pot index a815f629c..6990ede21 100644 --- a/sale_margin_sync/i18n/sale_margin_sync.pot +++ b/sale_margin_sync/i18n/sale_margin_sync.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index f0197a2d6..7be2faf05 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -367,7 +367,7 @@

Sale margin sync

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/margin-analysis Translate me on Weblate Try me on Runbot

Recompute sale margin when related stock move cost price is changed.

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -418,7 +418,7 @@

Maintainers

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.

-

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 296875cb38b99862db76ffc47fb9b46f628fc3f9 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Mon, 21 Aug 2023 15:22:23 +0000 Subject: [PATCH 12/18] Added translation using Weblate (Spanish) --- sale_margin_sync/i18n/es.po | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 sale_margin_sync/i18n/es.po diff --git a/sale_margin_sync/i18n/es.po b/sale_margin_sync/i18n/es.po new file mode 100644 index 000000000..0e61c9714 --- /dev/null +++ b/sale_margin_sync/i18n/es.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_margin_sync +# +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: es\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_sync +#: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer +msgid "Stock Valuation Layer" +msgstr "" From bc55754344a4be182e3f6e9c7f120868d36fef76 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Mon, 21 Aug 2023 15:24:49 +0000 Subject: [PATCH 13/18] Translated using Weblate (Spanish) Currently translated at 100.0% (1 of 1 strings) Translation: margin-analysis-16.0/margin-analysis-16.0-sale_margin_sync Translate-URL: https://translation.odoo-community.org/projects/margin-analysis-16-0/margin-analysis-16-0-sale_margin_sync/es/ --- sale_margin_sync/README.rst | 15 ++++---- sale_margin_sync/i18n/es.po | 6 ++-- .../static/description/index.html | 34 ++++++++++--------- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/sale_margin_sync/README.rst b/sale_margin_sync/README.rst index 1489d0cac..75736c849 100644 --- a/sale_margin_sync/README.rst +++ b/sale_margin_sync/README.rst @@ -2,10 +2,13 @@ Sale margin sync ================ -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:79af34278f79f246a4c9bd3e053cdcc916a70cd75850df7c5da19b9103ec1bd9 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Sale margin sync .. |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_sync :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/132/16.0 - :alt: Try me on Runbot +.. |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| +|badge1| |badge2| |badge3| |badge4| |badge5| Recompute sale margin when related stock move cost price is changed. @@ -37,7 +40,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 smashing it by providing a detailed and welcomed +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. diff --git a/sale_margin_sync/i18n/es.po b/sale_margin_sync/i18n/es.po index 0e61c9714..237a1cfdd 100644 --- a/sale_margin_sync/i18n/es.po +++ b/sale_margin_sync/i18n/es.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: 2023-09-02 18:17+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: none\n" "Language: es\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_sync #: model:ir.model,name:sale_margin_sync.model_stock_valuation_layer msgid "Stock Valuation Layer" -msgstr "" +msgstr "Nivel de valoración de existencias" diff --git a/sale_margin_sync/static/description/index.html b/sale_margin_sync/static/description/index.html index 7be2faf05..879ca3352 100644 --- a/sale_margin_sync/static/description/index.html +++ b/sale_margin_sync/static/description/index.html @@ -1,20 +1,20 @@ - + - + Sale margin sync