From 1a5c5186631c5ed3cf55abf2a8559c3e3aab6a7b Mon Sep 17 00:00:00 2001 From: Joan Sisquella Date: Fri, 18 Jul 2025 15:05:00 +0200 Subject: [PATCH 01/14] [ADD] purchase_order_uninvoiced_amount_line --- .../README.rst | 77 ++++ .../__init__.py | 4 + .../__manifest__.py | 16 + .../models/__init__.py | 4 + .../models/purchase_order_line.py | 39 ++ .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 1 + .../static/description/index.html | 421 ++++++++++++++++++ .../tests/__init__.py | 4 + ...t_purchase_order_line_uninvoiced_amount.py | 189 ++++++++ .../views/purchase_order_line_views.xml | 23 + 11 files changed, 780 insertions(+) create mode 100644 purchase_order_uninvoiced_amount_line/README.rst create mode 100644 purchase_order_uninvoiced_amount_line/__init__.py create mode 100644 purchase_order_uninvoiced_amount_line/__manifest__.py create mode 100644 purchase_order_uninvoiced_amount_line/models/__init__.py create mode 100644 purchase_order_uninvoiced_amount_line/models/purchase_order_line.py create mode 100644 purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.rst create mode 100644 purchase_order_uninvoiced_amount_line/readme/DESCRIPTION.rst create mode 100644 purchase_order_uninvoiced_amount_line/static/description/index.html create mode 100644 purchase_order_uninvoiced_amount_line/tests/__init__.py create mode 100644 purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py create mode 100644 purchase_order_uninvoiced_amount_line/views/purchase_order_line_views.xml diff --git a/purchase_order_uninvoiced_amount_line/README.rst b/purchase_order_uninvoiced_amount_line/README.rst new file mode 100644 index 00000000000..86aebe4711c --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/README.rst @@ -0,0 +1,77 @@ +===================================== +Purchase Order Line Uninvoiced Amount +===================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ca1a514d8ebafc275d46902443d02ec13ced72b8f6f4ee4c4b8a338eaad3f6d6 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fpurchase--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/purchase-workflow/tree/15.0/purchase_order_uninvoiced_amount_line + :alt: OCA/purchase-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_order_uninvoiced_amount_line + :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/purchase-workflow&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Show uninvoiced amount on purchase order line tree. + +**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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* `ForgeFlow `__: + * Joan Sisquella + +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/purchase-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_order_uninvoiced_amount_line/__init__.py b/purchase_order_uninvoiced_amount_line/__init__.py new file mode 100644 index 00000000000..6f937c0c0cd --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/purchase_order_uninvoiced_amount_line/__manifest__.py b/purchase_order_uninvoiced_amount_line/__manifest__.py new file mode 100644 index 00000000000..aadf152eced --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Purchase Order Line Uninvoiced Amount", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "version": "15.0.1.0.0", + "development_status": "Beta", + "website": "https://github.com/OCA/purchase-workflow", + "category": "Purchase", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["purchase", "purchase_order_line_menu"], + "data": ["views/purchase_order_line_views.xml"], +} diff --git a/purchase_order_uninvoiced_amount_line/models/__init__.py b/purchase_order_uninvoiced_amount_line/models/__init__.py new file mode 100644 index 00000000000..d70b8833432 --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/models/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import purchase_order_line diff --git a/purchase_order_uninvoiced_amount_line/models/purchase_order_line.py b/purchase_order_uninvoiced_amount_line/models/purchase_order_line.py new file mode 100644 index 00000000000..47bf8feea47 --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/models/purchase_order_line.py @@ -0,0 +1,39 @@ +# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class PurchaseOrderLine(models.Model): + _inherit = "purchase.order.line" + + @api.depends( + "product_qty", + "qty_invoiced", + "qty_received", + "product_id", + "product_uom", + "price_unit", + "price_subtotal", + ) + def _compute_amount_uninvoiced(self): + for line in self: + if line.product_id.purchase_method == "purchase": + qty = line.product_qty - line.qty_invoiced + else: + qty = line.qty_received - line.qty_invoiced + price_unit = ( + line.price_subtotal / line.product_qty + if line.product_qty + else line.price_unit + ) + amount_uninvoiced = max(0, qty * price_unit) + line.amount_uninvoiced = line.currency_id.round(amount_uninvoiced) + + amount_uninvoiced = fields.Monetary( + string="Uninvoiced Amount", + readonly=True, + compute="_compute_amount_uninvoiced", + store=True, + currency_field="currency_id", + ) diff --git a/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.rst b/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..9578acd0b7b --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* `ForgeFlow `__: + * Joan Sisquella diff --git a/purchase_order_uninvoiced_amount_line/readme/DESCRIPTION.rst b/purchase_order_uninvoiced_amount_line/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..1c66c995274 --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Show uninvoiced amount on purchase order line tree. diff --git a/purchase_order_uninvoiced_amount_line/static/description/index.html b/purchase_order_uninvoiced_amount_line/static/description/index.html new file mode 100644 index 00000000000..8f54dd79263 --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/static/description/index.html @@ -0,0 +1,421 @@ + + + + + +Purchase Order Line Uninvoiced Amount + + + +
+

Purchase Order Line Uninvoiced Amount

+ + +

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

+

Show uninvoiced amount on purchase order line tree.

+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+
+

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.

+

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

+

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

+
+
+
+ + diff --git a/purchase_order_uninvoiced_amount_line/tests/__init__.py b/purchase_order_uninvoiced_amount_line/tests/__init__.py new file mode 100644 index 00000000000..7263c649b3e --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import test_purchase_order_line_uninvoiced_amount diff --git a/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py b/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py new file mode 100644 index 00000000000..57279b151b6 --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py @@ -0,0 +1,189 @@ +# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import fields +from odoo.tests.common import Form, TransactionCase + + +class TestPurchaseOrderLineUninvoicedAmount(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.purchase_order_model = cls.env["purchase.order"] + cls.purchase_order_line_model = cls.env["purchase.order.line"] + cls.account_move_model = cls.env["account.move"] + cls.res_partner_model = cls.env["res.partner"] + cls.product_product_model = cls.env["product.product"] + cls.product_category_model = cls.env["product.category"] + cls.company = cls.env.ref("base.main_company") + cls.partner = cls.res_partner_model.create( + {"name": "Partner 1", "supplier_rank": 1, "is_company": True} + ) + cls.product_categ = cls.product_category_model.create({"name": "Test category"}) + cls.uom_categ = cls.env["uom.category"].create({"name": "Category 1"}) + cls.uom1 = cls.env["uom.uom"].create( + { + "name": "UOM 1", + "category_id": cls.uom_categ.id, + "factor": 1, + "active": True, + "uom_type": "reference", + } + ) + # Products + cls.product_category = cls.env["product.category"].create( + {"name": "Test Product category"} + ) + cls.product_1 = cls.env["product.product"].create( + { + "name": "Test Product 1", + "sale_ok": True, + "type": "consu", + "categ_id": cls.product_category.id, + "description_sale": "Test Description Sale", + "purchase_method": "receive", + } + ) + cls.product_2 = cls.env["product.product"].create( + { + "name": "Test Product 2", + "sale_ok": True, + "type": "consu", + "categ_id": cls.product_category.id, + "description_sale": "Test Description Sale 2", + "purchase_method": "purchase", + } + ) + + def _create_purchase_with_lines(self, lines_data): + purchase = self.purchase_order_model.create( + {"company_id": self.company.id, "partner_id": self.partner.id} + ) + lines = [] + for line_data in lines_data: + line = self.purchase_order_line_model.create( + { + "name": line_data["product"].name, + "product_id": line_data["product"].id, + "product_qty": line_data["qty"], + "product_uom": line_data["product"].uom_po_id.id, + "price_unit": line_data["price"], + "date_planned": fields.Date.today(), + "order_id": purchase.id, + } + ) + lines.append(line) + + purchase.button_confirm() + for i, line in enumerate(lines): + line.qty_received = lines_data[i]["received"] + return purchase, lines + + def _create_invoice_from_purchase(self, purchase): + invoice_form = Form( + self.account_move_model.with_context(default_move_type="in_invoice") + ) + invoice_form.partner_id = purchase.partner_id + invoice_form.purchase_id = purchase + return invoice_form.save() + + def test_single_line_not_invoiced(self): + purchase, lines = self._create_purchase_with_lines( + [{"product": self.product_1, "qty": 5, "received": 5, "price": 100.0}] + ) + line = lines[0] + self.assertEqual(line.amount_uninvoiced, 500.0) + self.assertEqual(line.invoice_status, "to invoice") + + def test_single_line_no_receive(self): + purchase, lines = self._create_purchase_with_lines( + [{"product": self.product_1, "qty": 5, "received": 0, "price": 100.0}] + ) + line = lines[0] + self.assertEqual(line.amount_uninvoiced, 0.0) + + def test_single_line_partial_invoice(self): + purchase, lines = self._create_purchase_with_lines( + [{"product": self.product_1, "qty": 10, "received": 10, "price": 50.0}] + ) + line = lines[0] + self.assertEqual(line.amount_uninvoiced, 500.0) + invoice = self._create_invoice_from_purchase(purchase) + with Form(invoice) as invoice_form: + with invoice_form.invoice_line_ids.edit(0) as line_form: + line_form.quantity = 6 + self.assertEqual(line.amount_uninvoiced, 200.0) + + def test_single_line_fully_invoiced(self): + purchase, lines = self._create_purchase_with_lines( + [{"product": self.product_1, "qty": 3, "received": 3, "price": 75.0}] + ) + line = lines[0] + self._create_invoice_from_purchase(purchase) + self.assertEqual(line.amount_uninvoiced, 0.0) + + def test_multiple_lines_different_amounts(self): + purchase, lines = self._create_purchase_with_lines( + [ + {"product": self.product_1, "qty": 5, "received": 5, "price": 100.0}, + {"product": self.product_2, "qty": 3, "received": 2, "price": 200.0}, + ] + ) + line1, line2 = lines + # Line 1: receive policy, 5 received - 0 invoiced = 5 * 100 = 500 + self.assertEqual(line1.amount_uninvoiced, 500.0) + # Line 2: purchase policy, 3 ordered - 0 invoiced = 3 * 200 = 600 + self.assertEqual(line2.amount_uninvoiced, 600.0) + + def test_on_ordered_quantities_policy(self): + purchase, lines = self._create_purchase_with_lines( + [{"product": self.product_2, "qty": 10, "received": 0, "price": 60.0}] + ) + line = lines[0] + self.assertEqual(line.amount_uninvoiced, 600.0) + invoice = self._create_invoice_from_purchase(purchase) + with Form(invoice) as invoice_form: + with invoice_form.invoice_line_ids.edit(0) as line_form: + line_form.quantity = 4 + self.assertEqual(line.amount_uninvoiced, 360.0) + + def test_zero_quantity_line(self): + purchase, lines = self._create_purchase_with_lines( + [{"product": self.product_1, "qty": 0, "received": 0, "price": 100.0}] + ) + line = lines[0] + self.assertEqual(line.amount_uninvoiced, 0.0) + + def test_over_invoicing(self): + purchase, lines = self._create_purchase_with_lines( + [{"product": self.product_1, "qty": 5, "received": 5, "price": 80.0}] + ) + line = lines[0] + invoice = self._create_invoice_from_purchase(purchase) + with Form(invoice) as invoice_form: + with invoice_form.invoice_line_ids.edit(0) as line_form: + line_form.quantity = 8 + # Over-invoicing should result in 0, not negative + self.assertEqual(line.amount_uninvoiced, 0.0) + + def test_mixed_policies_multiple_lines(self): + self.product_1.purchase_method = "receive" + self.product_2.purchase_method = "purchase" + purchase, lines = self._create_purchase_with_lines( + [ + {"product": self.product_1, "qty": 10, "received": 8, "price": 25.0}, + {"product": self.product_2, "qty": 6, "received": 3, "price": 150.0}, + ] + ) + + line1, line2 = lines + self.assertEqual(line1.amount_uninvoiced, 200.0) + self.assertEqual(line2.amount_uninvoiced, 900.0) + invoice = self._create_invoice_from_purchase(purchase) + with Form(invoice) as invoice_form: + with invoice_form.invoice_line_ids.edit(0) as line_form: + line_form.quantity = 5 + with invoice_form.invoice_line_ids.edit(1) as line_form: + line_form.quantity = 2 + self.assertEqual(line1.amount_uninvoiced, 75.0) + self.assertEqual(line2.amount_uninvoiced, 600.0) diff --git a/purchase_order_uninvoiced_amount_line/views/purchase_order_line_views.xml b/purchase_order_uninvoiced_amount_line/views/purchase_order_line_views.xml new file mode 100644 index 00000000000..873a1cee68d --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/views/purchase_order_line_views.xml @@ -0,0 +1,23 @@ + + + + + purchase.order.line.tree.uninvoiced + purchase.order.line + + + + + + + + From 40d3553e877e51714568732aae151c34c8f360d0 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 8 Sep 2025 11:33:36 +0000 Subject: [PATCH 02/14] [UPD] Update purchase_order_uninvoiced_amount_line.pot --- .../purchase_order_uninvoiced_amount_line.pot | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 purchase_order_uninvoiced_amount_line/i18n/purchase_order_uninvoiced_amount_line.pot diff --git a/purchase_order_uninvoiced_amount_line/i18n/purchase_order_uninvoiced_amount_line.pot b/purchase_order_uninvoiced_amount_line/i18n/purchase_order_uninvoiced_amount_line.pot new file mode 100644 index 00000000000..1bd93eed1a6 --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/i18n/purchase_order_uninvoiced_amount_line.pot @@ -0,0 +1,25 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_uninvoiced_amount_line +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: purchase_order_uninvoiced_amount_line +#: model:ir.model,name:purchase_order_uninvoiced_amount_line.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" + +#. module: purchase_order_uninvoiced_amount_line +#: model:ir.model.fields,field_description:purchase_order_uninvoiced_amount_line.field_purchase_order_line__amount_uninvoiced +#: model_terms:ir.ui.view,arch_db:purchase_order_uninvoiced_amount_line.purchase_order_line_tree_uninvoiced +msgid "Uninvoiced Amount" +msgstr "" From 11d7cf59c27760673b03ce293e1844e3bddec4c9 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 8 Sep 2025 11:41:46 +0000 Subject: [PATCH 03/14] [BOT] post-merge updates --- .../static/description/icon.png | Bin 0 -> 10254 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 purchase_order_uninvoiced_amount_line/static/description/icon.png diff --git a/purchase_order_uninvoiced_amount_line/static/description/icon.png b/purchase_order_uninvoiced_amount_line/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1dcc49c24f364e9adf0afbc6fc0bac6dbecdeb11 GIT binary patch literal 10254 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 Date: Wed, 10 Sep 2025 09:51:16 +0200 Subject: [PATCH 04/14] [MIG] purchase_order_uninvoiced_amount_line: Migration to 16.0 --- purchase_order_uninvoiced_amount_line/README.rst | 10 +++++----- purchase_order_uninvoiced_amount_line/__manifest__.py | 2 +- .../static/description/index.html | 6 +++--- .../test_purchase_order_line_uninvoiced_amount.py | 8 ++------ 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/purchase_order_uninvoiced_amount_line/README.rst b/purchase_order_uninvoiced_amount_line/README.rst index 86aebe4711c..d4678cf80f9 100644 --- a/purchase_order_uninvoiced_amount_line/README.rst +++ b/purchase_order_uninvoiced_amount_line/README.rst @@ -17,13 +17,13 @@ Purchase Order Line Uninvoiced Amount :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/purchase-workflow/tree/15.0/purchase_order_uninvoiced_amount_line + :target: https://github.com/OCA/purchase-workflow/tree/16.0/purchase_order_uninvoiced_amount_line :alt: OCA/purchase-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_order_uninvoiced_amount_line + :target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_order_uninvoiced_amount_line :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/purchase-workflow&target_branch=15.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=16.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -41,7 +41,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. @@ -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/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_order_uninvoiced_amount_line/__manifest__.py b/purchase_order_uninvoiced_amount_line/__manifest__.py index aadf152eced..e9038ca3553 100644 --- a/purchase_order_uninvoiced_amount_line/__manifest__.py +++ b/purchase_order_uninvoiced_amount_line/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Purchase Order Line Uninvoiced Amount", "author": "ForgeFlow, Odoo Community Association (OCA)", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "development_status": "Beta", "website": "https://github.com/OCA/purchase-workflow", "category": "Purchase", diff --git a/purchase_order_uninvoiced_amount_line/static/description/index.html b/purchase_order_uninvoiced_amount_line/static/description/index.html index 8f54dd79263..86fc3771cee 100644 --- a/purchase_order_uninvoiced_amount_line/static/description/index.html +++ b/purchase_order_uninvoiced_amount_line/static/description/index.html @@ -368,7 +368,7 @@

Purchase Order Line Uninvoiced Amount

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:ca1a514d8ebafc275d46902443d02ec13ced72b8f6f4ee4c4b8a338eaad3f6d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Show uninvoiced amount on purchase order line tree.

Table of contents

@@ -387,7 +387,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.

@@ -412,7 +412,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/purchase-workflow project on GitHub.

+

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

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

diff --git a/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py b/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py index 57279b151b6..db7c0ebf65c 100644 --- a/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py +++ b/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py @@ -80,12 +80,8 @@ def _create_purchase_with_lines(self, lines_data): return purchase, lines def _create_invoice_from_purchase(self, purchase): - invoice_form = Form( - self.account_move_model.with_context(default_move_type="in_invoice") - ) - invoice_form.partner_id = purchase.partner_id - invoice_form.purchase_id = purchase - return invoice_form.save() + res = purchase.action_create_invoice() + return self.env["account.move"].browse(res["res_id"]) def test_single_line_not_invoiced(self): purchase, lines = self._create_purchase_with_lines( From 0894a604667ee4ba5f6013f0a6370247d8737a60 Mon Sep 17 00:00:00 2001 From: Joan Sisquella Date: Wed, 10 Sep 2025 10:05:25 +0200 Subject: [PATCH 05/14] [IMP] purchase_order_uninvoiced_amount_line: pre-commit auto fixes --- .../README.rst | 21 ++++++++++--------- .../pyproject.toml | 3 +++ .../readme/CONTRIBUTORS.md | 2 ++ .../readme/CONTRIBUTORS.rst | 2 -- .../{DESCRIPTION.rst => DESCRIPTION.md} | 0 .../static/description/index.html | 12 ++++++----- 6 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 purchase_order_uninvoiced_amount_line/pyproject.toml create mode 100644 purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.md delete mode 100644 purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.rst rename purchase_order_uninvoiced_amount_line/readme/{DESCRIPTION.rst => DESCRIPTION.md} (100%) diff --git a/purchase_order_uninvoiced_amount_line/README.rst b/purchase_order_uninvoiced_amount_line/README.rst index d4678cf80f9..ca6253a2491 100644 --- a/purchase_order_uninvoiced_amount_line/README.rst +++ b/purchase_order_uninvoiced_amount_line/README.rst @@ -17,13 +17,13 @@ Purchase Order Line Uninvoiced Amount :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/purchase-workflow/tree/16.0/purchase_order_uninvoiced_amount_line + :target: https://github.com/OCA/purchase-workflow/tree/17.0/purchase_order_uninvoiced_amount_line :alt: OCA/purchase-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_order_uninvoiced_amount_line + :target: https://translation.odoo-community.org/projects/purchase-workflow-17-0/purchase-workflow-17-0-purchase_order_uninvoiced_amount_line :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/purchase-workflow&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -41,7 +41,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. @@ -49,18 +49,19 @@ Credits ======= Authors -~~~~~~~ +------- * ForgeFlow Contributors -~~~~~~~~~~~~ +------------ -* `ForgeFlow `__: - * Joan Sisquella +- `ForgeFlow `__: + + - Joan Sisquella Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -72,6 +73,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/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_order_uninvoiced_amount_line/pyproject.toml b/purchase_order_uninvoiced_amount_line/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.md b/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..9e0224fb7b7 --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- [ForgeFlow](https://www.forgeflow.com): + - Joan Sisquella diff --git a/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.rst b/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.rst deleted file mode 100644 index 9578acd0b7b..00000000000 --- a/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,2 +0,0 @@ -* `ForgeFlow `__: - * Joan Sisquella diff --git a/purchase_order_uninvoiced_amount_line/readme/DESCRIPTION.rst b/purchase_order_uninvoiced_amount_line/readme/DESCRIPTION.md similarity index 100% rename from purchase_order_uninvoiced_amount_line/readme/DESCRIPTION.rst rename to purchase_order_uninvoiced_amount_line/readme/DESCRIPTION.md diff --git a/purchase_order_uninvoiced_amount_line/static/description/index.html b/purchase_order_uninvoiced_amount_line/static/description/index.html index 86fc3771cee..4b507c2b3d1 100644 --- a/purchase_order_uninvoiced_amount_line/static/description/index.html +++ b/purchase_order_uninvoiced_amount_line/static/description/index.html @@ -368,7 +368,7 @@

Purchase Order Line Uninvoiced Amount

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:ca1a514d8ebafc275d46902443d02ec13ced72b8f6f4ee4c4b8a338eaad3f6d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Show uninvoiced amount on purchase order line tree.

Table of contents

@@ -387,7 +387,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.

@@ -401,8 +401,10 @@

Authors

Contributors

@@ -412,7 +414,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/purchase-workflow project on GitHub.

+

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

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

From 4107a2c45ac7a0acd65358674939d1ac691eddbc Mon Sep 17 00:00:00 2001 From: Joan Sisquella Date: Wed, 10 Sep 2025 10:23:30 +0200 Subject: [PATCH 06/14] [MIG] purchase_order_uninvoiced_amount_line: Migration to 17.0 --- purchase_order_uninvoiced_amount_line/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchase_order_uninvoiced_amount_line/__manifest__.py b/purchase_order_uninvoiced_amount_line/__manifest__.py index e9038ca3553..0a6cb6cbee0 100644 --- a/purchase_order_uninvoiced_amount_line/__manifest__.py +++ b/purchase_order_uninvoiced_amount_line/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Purchase Order Line Uninvoiced Amount", "author": "ForgeFlow, Odoo Community Association (OCA)", - "version": "16.0.1.0.0", + "version": "17.0.1.0.0", "development_status": "Beta", "website": "https://github.com/OCA/purchase-workflow", "category": "Purchase", From 84c979549b99b3976f97e1278576b280ea159af0 Mon Sep 17 00:00:00 2001 From: Joan Sisquella Date: Wed, 10 Sep 2025 10:40:11 +0200 Subject: [PATCH 07/14] [IMP] purchase_order_uninvoiced_amount_line: pre-commit auto fixes --- purchase_order_uninvoiced_amount_line/README.rst | 10 +++++----- .../static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/purchase_order_uninvoiced_amount_line/README.rst b/purchase_order_uninvoiced_amount_line/README.rst index ca6253a2491..0c0422a7a28 100644 --- a/purchase_order_uninvoiced_amount_line/README.rst +++ b/purchase_order_uninvoiced_amount_line/README.rst @@ -17,13 +17,13 @@ Purchase Order Line Uninvoiced Amount :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/purchase-workflow/tree/17.0/purchase_order_uninvoiced_amount_line + :target: https://github.com/OCA/purchase-workflow/tree/18.0/purchase_order_uninvoiced_amount_line :alt: OCA/purchase-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/purchase-workflow-17-0/purchase-workflow-17-0-purchase_order_uninvoiced_amount_line + :target: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_order_uninvoiced_amount_line :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/purchase-workflow&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -41,7 +41,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. @@ -73,6 +73,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/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_order_uninvoiced_amount_line/static/description/index.html b/purchase_order_uninvoiced_amount_line/static/description/index.html index 4b507c2b3d1..36aa2acd9c6 100644 --- a/purchase_order_uninvoiced_amount_line/static/description/index.html +++ b/purchase_order_uninvoiced_amount_line/static/description/index.html @@ -368,7 +368,7 @@

Purchase Order Line Uninvoiced Amount

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:ca1a514d8ebafc275d46902443d02ec13ced72b8f6f4ee4c4b8a338eaad3f6d6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Show uninvoiced amount on purchase order line tree.

Table of contents

@@ -387,7 +387,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.

@@ -414,7 +414,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/purchase-workflow project on GitHub.

+

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

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

From 1344c1596c1f73177fc45a4c6c8021f11618dd49 Mon Sep 17 00:00:00 2001 From: Joan Sisquella Date: Wed, 10 Sep 2025 10:52:22 +0200 Subject: [PATCH 08/14] [MIG] purchase_order_uninvoiced_amount_line: Migration to 18.0 --- purchase_order_uninvoiced_amount_line/__manifest__.py | 2 +- .../tests/test_purchase_order_line_uninvoiced_amount.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/purchase_order_uninvoiced_amount_line/__manifest__.py b/purchase_order_uninvoiced_amount_line/__manifest__.py index 0a6cb6cbee0..3cf5e1e546e 100644 --- a/purchase_order_uninvoiced_amount_line/__manifest__.py +++ b/purchase_order_uninvoiced_amount_line/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Purchase Order Line Uninvoiced Amount", "author": "ForgeFlow, Odoo Community Association (OCA)", - "version": "17.0.1.0.0", + "version": "18.0.1.0.0", "development_status": "Beta", "website": "https://github.com/OCA/purchase-workflow", "category": "Purchase", diff --git a/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py b/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py index db7c0ebf65c..19eccd03b99 100644 --- a/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py +++ b/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py @@ -2,7 +2,8 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import fields -from odoo.tests.common import Form, TransactionCase +from odoo.tests import Form +from odoo.tests.common import TransactionCase class TestPurchaseOrderLineUninvoicedAmount(TransactionCase): From d3519bf9f2b054d5a4a2957ff9e3d0fd54628852 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 12 Sep 2025 10:29:15 +0000 Subject: [PATCH 09/14] [UPD] Update purchase_order_uninvoiced_amount_line.pot --- .../i18n/purchase_order_uninvoiced_amount_line.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchase_order_uninvoiced_amount_line/i18n/purchase_order_uninvoiced_amount_line.pot b/purchase_order_uninvoiced_amount_line/i18n/purchase_order_uninvoiced_amount_line.pot index 1bd93eed1a6..828d9e65f77 100644 --- a/purchase_order_uninvoiced_amount_line/i18n/purchase_order_uninvoiced_amount_line.pot +++ b/purchase_order_uninvoiced_amount_line/i18n/purchase_order_uninvoiced_amount_line.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 501c14371e40d52a9bae54f16883c86871e93d84 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 12 Sep 2025 10:34:50 +0000 Subject: [PATCH 10/14] [BOT] post-merge updates --- .../README.rst | 8 +++- .../static/description/index.html | 37 ++++++++++++------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/purchase_order_uninvoiced_amount_line/README.rst b/purchase_order_uninvoiced_amount_line/README.rst index 0c0422a7a28..b02a49f6a63 100644 --- a/purchase_order_uninvoiced_amount_line/README.rst +++ b/purchase_order_uninvoiced_amount_line/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ===================================== Purchase Order Line Uninvoiced Amount ===================================== @@ -7,13 +11,13 @@ Purchase Order Line Uninvoiced Amount !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:ca1a514d8ebafc275d46902443d02ec13ced72b8f6f4ee4c4b8a338eaad3f6d6 + !! source digest: sha256:138b5d5b42e3809c85e1cdf1ee9c4c5a6301960d702acfeb2bd96922c43ba3aa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 +.. |badge2| image:: https://img.shields.io/badge/license-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%2Fpurchase--workflow-lightgray.png?logo=github diff --git a/purchase_order_uninvoiced_amount_line/static/description/index.html b/purchase_order_uninvoiced_amount_line/static/description/index.html index 36aa2acd9c6..6eb183a7a42 100644 --- a/purchase_order_uninvoiced_amount_line/static/description/index.html +++ b/purchase_order_uninvoiced_amount_line/static/description/index.html @@ -3,15 +3,16 @@ -Purchase Order Line Uninvoiced Amount +README.rst -
-

Purchase Order Line Uninvoiced Amount

+
+ + +Odoo Community Association + +
+

Purchase Order Line Uninvoiced Amount

-

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

+

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

Show uninvoiced amount on purchase order line tree.

Table of contents

@@ -383,7 +389,7 @@

Purchase Order Line Uninvoiced Amount

-

Bug Tracker

+

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 @@ -391,15 +397,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • ForgeFlow
-

Contributors

+

Contributors

-

Maintainers

+

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.

@@ -419,5 +427,6 @@

Maintainers

+
From b1b5ecf68a6ffa891a6583640d9ac5b52667b31f Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 15 Sep 2025 06:36:08 +0000 Subject: [PATCH 11/14] Added translation using Weblate (Italian) --- .../i18n/it.po | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 purchase_order_uninvoiced_amount_line/i18n/it.po diff --git a/purchase_order_uninvoiced_amount_line/i18n/it.po b/purchase_order_uninvoiced_amount_line/i18n/it.po new file mode 100644 index 00000000000..356035382be --- /dev/null +++ b/purchase_order_uninvoiced_amount_line/i18n/it.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_uninvoiced_amount_line +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.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: purchase_order_uninvoiced_amount_line +#: model:ir.model,name:purchase_order_uninvoiced_amount_line.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" + +#. module: purchase_order_uninvoiced_amount_line +#: model:ir.model.fields,field_description:purchase_order_uninvoiced_amount_line.field_purchase_order_line__amount_uninvoiced +#: model_terms:ir.ui.view,arch_db:purchase_order_uninvoiced_amount_line.purchase_order_line_tree_uninvoiced +msgid "Uninvoiced Amount" +msgstr "" From 25bd9e2a9007ab68ed4b2885f691ae0e16d266ac Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 16 Sep 2025 08:42:23 +0000 Subject: [PATCH 12/14] Translated using Weblate (Italian) Currently translated at 100.0% (2 of 2 strings) Translation: purchase-workflow-18.0/purchase-workflow-18.0-purchase_order_uninvoiced_amount_line Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_order_uninvoiced_amount_line/it/ --- purchase_order_uninvoiced_amount_line/i18n/it.po | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/purchase_order_uninvoiced_amount_line/i18n/it.po b/purchase_order_uninvoiced_amount_line/i18n/it.po index 356035382be..a30c824f3b2 100644 --- a/purchase_order_uninvoiced_amount_line/i18n/it.po +++ b/purchase_order_uninvoiced_amount_line/i18n/it.po @@ -6,21 +6,23 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-09-16 10:20+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 5.10.4\n" #. module: purchase_order_uninvoiced_amount_line #: model:ir.model,name:purchase_order_uninvoiced_amount_line.model_purchase_order_line msgid "Purchase Order Line" -msgstr "" +msgstr "Riga ordine di acquisto" #. module: purchase_order_uninvoiced_amount_line #: model:ir.model.fields,field_description:purchase_order_uninvoiced_amount_line.field_purchase_order_line__amount_uninvoiced #: model_terms:ir.ui.view,arch_db:purchase_order_uninvoiced_amount_line.purchase_order_line_tree_uninvoiced msgid "Uninvoiced Amount" -msgstr "" +msgstr "Importo non fatturato" From 722f5435bc82823ae339594647128d4f7599058b Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Thu, 19 Mar 2026 14:32:57 +0530 Subject: [PATCH 13/14] [MIG] purchase_order_uninvoiced_amount_line: Migration to 19.0 --- .../README.rst | 14 ++-- .../__manifest__.py | 2 +- .../models/purchase_order_line.py | 2 +- .../readme/CONTRIBUTORS.md | 2 + .../static/description/index.html | 10 ++- ...t_purchase_order_line_uninvoiced_amount.py | 64 ++++++++++++++++--- 6 files changed, 76 insertions(+), 18 deletions(-) diff --git a/purchase_order_uninvoiced_amount_line/README.rst b/purchase_order_uninvoiced_amount_line/README.rst index b02a49f6a63..c1066f31498 100644 --- a/purchase_order_uninvoiced_amount_line/README.rst +++ b/purchase_order_uninvoiced_amount_line/README.rst @@ -21,13 +21,13 @@ Purchase Order Line Uninvoiced Amount :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/purchase-workflow/tree/18.0/purchase_order_uninvoiced_amount_line + :target: https://github.com/OCA/purchase-workflow/tree/19.0/purchase_order_uninvoiced_amount_line :alt: OCA/purchase-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_order_uninvoiced_amount_line + :target: https://translation.odoo-community.org/projects/purchase-workflow-19-0/purchase-workflow-19-0-purchase_order_uninvoiced_amount_line :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/purchase-workflow&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,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. @@ -64,6 +64,10 @@ Contributors - Joan Sisquella +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia + Maintainers ----------- @@ -77,6 +81,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/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_order_uninvoiced_amount_line/__manifest__.py b/purchase_order_uninvoiced_amount_line/__manifest__.py index 3cf5e1e546e..e1e2bc1fb3d 100644 --- a/purchase_order_uninvoiced_amount_line/__manifest__.py +++ b/purchase_order_uninvoiced_amount_line/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Purchase Order Line Uninvoiced Amount", "author": "ForgeFlow, Odoo Community Association (OCA)", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "development_status": "Beta", "website": "https://github.com/OCA/purchase-workflow", "category": "Purchase", diff --git a/purchase_order_uninvoiced_amount_line/models/purchase_order_line.py b/purchase_order_uninvoiced_amount_line/models/purchase_order_line.py index 47bf8feea47..5ad2c9453a4 100644 --- a/purchase_order_uninvoiced_amount_line/models/purchase_order_line.py +++ b/purchase_order_uninvoiced_amount_line/models/purchase_order_line.py @@ -12,7 +12,7 @@ class PurchaseOrderLine(models.Model): "qty_invoiced", "qty_received", "product_id", - "product_uom", + "product_uom_id", "price_unit", "price_subtotal", ) diff --git a/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.md b/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.md index 9e0224fb7b7..0060b85dbf9 100644 --- a/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.md +++ b/purchase_order_uninvoiced_amount_line/readme/CONTRIBUTORS.md @@ -1,2 +1,4 @@ - [ForgeFlow](https://www.forgeflow.com): - Joan Sisquella +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/purchase_order_uninvoiced_amount_line/static/description/index.html b/purchase_order_uninvoiced_amount_line/static/description/index.html index 6eb183a7a42..40a011eea22 100644 --- a/purchase_order_uninvoiced_amount_line/static/description/index.html +++ b/purchase_order_uninvoiced_amount_line/static/description/index.html @@ -374,7 +374,7 @@

Purchase Order Line Uninvoiced Amount

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:138b5d5b42e3809c85e1cdf1ee9c4c5a6301960d702acfeb2bd96922c43ba3aa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Show uninvoiced amount on purchase order line tree.

Table of contents

@@ -393,7 +393,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.

@@ -411,6 +411,10 @@

Contributors

  • Joan Sisquella
  • +
  • Heliconia Solutions Pvt. Ltd.
      +
    • Bhavesh Heliconia
    • +
    +
  • @@ -422,7 +426,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/purchase-workflow project on GitHub.

    +

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

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

    diff --git a/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py b/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py index 19eccd03b99..dd2b831e91b 100644 --- a/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py +++ b/purchase_order_uninvoiced_amount_line/tests/test_purchase_order_line_uninvoiced_amount.py @@ -3,13 +3,54 @@ from odoo import fields from odoo.tests import Form -from odoo.tests.common import TransactionCase +from odoo.addons.account.tests.common import AccountTestInvoicingCommon -class TestPurchaseOrderLineUninvoicedAmount(TransactionCase): + +class TestPurchaseOrderLineUninvoiceAmount(AccountTestInvoicingCommon): @classmethod def setUpClass(cls): super().setUpClass() + if not cls.company_data.get("default_journal_purchase"): + cls.company_data["default_account_payable"] = cls.env[ + "account.account" + ].create( + { + "name": "Payable", + "code": "PAY", + "account_type": "liability_payable", + } + ) + cls.company_data["default_account_expense"] = cls.env[ + "account.account" + ].create( + { + "name": "Expense", + "code": "EXP", + "account_type": "expense", + } + ) + cls.company_data["default_account_receivable"] = cls.env[ + "account.account" + ].create( + { + "name": "Receivable", + "code": "REC", + "account_type": "asset_receivable", + } + ) + cls.company_data["default_journal_purchase"] = cls.env[ + "account.journal" + ].create( + { + "name": "Purchase Journal", + "type": "purchase", + "code": "PJ", + "default_account_id": cls.company_data[ + "default_account_expense" + ].id, + } + ) cls.purchase_order_model = cls.env["purchase.order"] cls.purchase_order_line_model = cls.env["purchase.order.line"] cls.account_move_model = cls.env["account.move"] @@ -18,17 +59,24 @@ def setUpClass(cls): cls.product_category_model = cls.env["product.category"] cls.company = cls.env.ref("base.main_company") cls.partner = cls.res_partner_model.create( - {"name": "Partner 1", "supplier_rank": 1, "is_company": True} + { + "name": "Partner 1", + "property_account_receivable_id": cls.company_data[ + "default_account_receivable" + ].id, + "property_account_payable_id": cls.company_data[ + "default_account_payable" + ].id, + "supplier_rank": 1, + "is_company": True, + } ) cls.product_categ = cls.product_category_model.create({"name": "Test category"}) - cls.uom_categ = cls.env["uom.category"].create({"name": "Category 1"}) cls.uom1 = cls.env["uom.uom"].create( { "name": "UOM 1", - "category_id": cls.uom_categ.id, - "factor": 1, + "relative_factor": 1, "active": True, - "uom_type": "reference", } ) # Products @@ -67,7 +115,7 @@ def _create_purchase_with_lines(self, lines_data): "name": line_data["product"].name, "product_id": line_data["product"].id, "product_qty": line_data["qty"], - "product_uom": line_data["product"].uom_po_id.id, + "product_uom_id": line_data["product"].uom_id.id, "price_unit": line_data["price"], "date_planned": fields.Date.today(), "order_id": purchase.id, From e68f0a8aa592a8689aea1ddbd2fbe96759242211 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Thu, 19 Mar 2026 14:38:27 +0530 Subject: [PATCH 14/14] [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 00000000000..a7834895fb8 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +odoo-addon-purchase_order_line_menu @ git+https://github.com/OCA/purchase-workflow.git@refs/pull/2846/head#subdirectory=purchase_order_line_menu