From 9a6f4ad3377ed3ef7446f8c8ed74e7d7f75b6c51 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Wed, 15 Feb 2023 16:38:46 +0100 Subject: [PATCH 01/17] [ADD] purchase_invoice_method Co-authored-by: Kevin Luna --- purchase_invoice_method/README.rst | 86 ++++ purchase_invoice_method/__init__.py | 1 + purchase_invoice_method/__manifest__.py | 17 + .../i18n/purchase_invoice_method.pot | 47 ++ purchase_invoice_method/models/__init__.py | 1 + .../models/purchase_order.py | 35 ++ .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 5 + purchase_invoice_method/readme/USAGE.rst | 4 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 439 ++++++++++++++++++ purchase_invoice_method/tests/__init__.py | 1 + .../tests/test_purchase_invoice_method.py | 87 ++++ .../views/purchase_order.xml | 19 + 14 files changed, 744 insertions(+) create mode 100644 purchase_invoice_method/README.rst create mode 100644 purchase_invoice_method/__init__.py create mode 100644 purchase_invoice_method/__manifest__.py create mode 100644 purchase_invoice_method/i18n/purchase_invoice_method.pot create mode 100644 purchase_invoice_method/models/__init__.py create mode 100644 purchase_invoice_method/models/purchase_order.py create mode 100644 purchase_invoice_method/readme/CONTRIBUTORS.rst create mode 100644 purchase_invoice_method/readme/DESCRIPTION.rst create mode 100644 purchase_invoice_method/readme/USAGE.rst create mode 100644 purchase_invoice_method/static/description/icon.png create mode 100644 purchase_invoice_method/static/description/index.html create mode 100644 purchase_invoice_method/tests/__init__.py create mode 100644 purchase_invoice_method/tests/test_purchase_invoice_method.py create mode 100644 purchase_invoice_method/views/purchase_order.xml diff --git a/purchase_invoice_method/README.rst b/purchase_invoice_method/README.rst new file mode 100644 index 00000000000..4d27657739f --- /dev/null +++ b/purchase_invoice_method/README.rst @@ -0,0 +1,86 @@ +======================= +Purchase Invoice Method +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fpurchase--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/purchase-workflow/tree/14.0/purchase_invoice_method + :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-14-0/purchase-workflow-14-0-purchase_invoice_method + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/142/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds the possibility for users to force the invoice status of the +purchase orders to 'Waiting Bills' so they can create a bill. +Also, you can force an "On ordered quantites" invoice method to "On received quantites". + +Example: you can bill a purchase even when you haven't received the product/service. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +#. Create a purchase order and confirm it. +#. Go to page "Other information" and select an option of the "Invoice Method" field. +#. #. If "On ordered quantited" is selected you can bill a purchase even you haven't received the product. +#. #. If "On received quantited" is selected you cannot bill a purchase if you haven't received the product. + +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 +~~~~~~~ + +* CreuBlanca + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella +* Kevin Luna + +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_invoice_method/__init__.py b/purchase_invoice_method/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/purchase_invoice_method/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_invoice_method/__manifest__.py b/purchase_invoice_method/__manifest__.py new file mode 100644 index 00000000000..f81384f2971 --- /dev/null +++ b/purchase_invoice_method/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2023 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Purchase Invoice Method", + "summary": """ + Allow to force the invoice method of a purchase""", + "version": "14.0.1.0.0", + "license": "AGPL-3", + "author": "CreuBlanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/purchase-workflow", + "depends": ["purchase"], + "data": [ + "views/purchase_order.xml", + ], + "demo": [], +} diff --git a/purchase_invoice_method/i18n/purchase_invoice_method.pot b/purchase_invoice_method/i18n/purchase_invoice_method.pot new file mode 100644 index 00000000000..0fba7a68a01 --- /dev/null +++ b/purchase_invoice_method/i18n/purchase_invoice_method.pot @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_invoice_method +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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_invoice_method +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__display_name +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order_line__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__id +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order_line__id +msgid "ID" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__invoice_method +msgid "Invoice Method" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order____last_update +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order_line____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model,name:purchase_invoice_method.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model,name:purchase_invoice_method.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" diff --git a/purchase_invoice_method/models/__init__.py b/purchase_invoice_method/models/__init__.py new file mode 100644 index 00000000000..9f03530643d --- /dev/null +++ b/purchase_invoice_method/models/__init__.py @@ -0,0 +1 @@ +from . import purchase_order diff --git a/purchase_invoice_method/models/purchase_order.py b/purchase_invoice_method/models/purchase_order.py new file mode 100644 index 00000000000..5c592a8a562 --- /dev/null +++ b/purchase_invoice_method/models/purchase_order.py @@ -0,0 +1,35 @@ +# Copyright 2023 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class PurchaseOrder(models.Model): + _inherit = "purchase.order" + + invoice_method = fields.Selection( + lambda r: r.env["product.template"]._fields["purchase_method"].selection + ) + + +class PurchaseOrderLine(models.Model): + _inherit = "purchase.order.line" + + @api.depends( + "invoice_lines.move_id.state", + "invoice_lines.quantity", + "qty_received", + "product_uom_qty", + "order_id.state", + "order_id.invoice_method", + ) + def _compute_qty_invoiced(self): + super()._compute_qty_invoiced() + for line in self.filtered( + lambda r: r.order_id.invoice_method + and r.order_id.state in ["purchase", "done"] + ): + if line.order_id.invoice_method == "purchase": + line.qty_to_invoice = line.product_qty - line.qty_invoiced + elif line.order_id.invoice_method == "receive": + line.qty_to_invoice = line.qty_received - line.qty_invoiced diff --git a/purchase_invoice_method/readme/CONTRIBUTORS.rst b/purchase_invoice_method/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..29a097d1a44 --- /dev/null +++ b/purchase_invoice_method/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Enric Tobella +* Kevin Luna diff --git a/purchase_invoice_method/readme/DESCRIPTION.rst b/purchase_invoice_method/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..f4dcd630007 --- /dev/null +++ b/purchase_invoice_method/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module adds the possibility for users to force the invoice status of the +purchase orders to 'Waiting Bills' so they can create a bill. +Also, you can force an "On ordered quantites" invoice method to "On received quantites". + +Example: you can bill a purchase even when you haven't received the product/service. diff --git a/purchase_invoice_method/readme/USAGE.rst b/purchase_invoice_method/readme/USAGE.rst new file mode 100644 index 00000000000..c13fee894f8 --- /dev/null +++ b/purchase_invoice_method/readme/USAGE.rst @@ -0,0 +1,4 @@ +#. Create a purchase order and confirm it. +#. Go to page "Other information" and select an option of the "Invoice Method" field. +#. #. If "On ordered quantited" is selected you can bill a purchase even you haven't received the product. +#. #. If "On received quantited" is selected you cannot bill a purchase if you haven't received the product. diff --git a/purchase_invoice_method/static/description/icon.png b/purchase_invoice_method/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/purchase_invoice_method/static/description/index.html b/purchase_invoice_method/static/description/index.html new file mode 100644 index 00000000000..24f7a104af4 --- /dev/null +++ b/purchase_invoice_method/static/description/index.html @@ -0,0 +1,439 @@ + + + + + + +Purchase Invoice Method + + + +
+

Purchase Invoice Method

+ + +

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

+

This module adds the possibility for users to force the invoice status of the +purchase orders to ‘Waiting Bills’ so they can create a bill. +Also, you can force an “On ordered quantites” invoice method to “On received quantites”.

+

Example: you can bill a purchase even when you haven’t received the product/service.

+

Table of contents

+ +
+

Usage

+
    +
  1. Create a purchase order and confirm it.
  2. +
  3. Go to page “Other information” and select an option of the “Invoice Method” field.
  4. +
    1. +
    2. If “On ordered quantited” is selected you can bill a purchase even you haven’t received the product.
    3. +
    +
  5. +
    1. +
    2. If “On received quantited” is selected you cannot bill a purchase if you haven’t received the product.
    3. +
    +
  6. +
+
+
+

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

+
    +
  • CreuBlanca
  • +
+
+
+

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_invoice_method/tests/__init__.py b/purchase_invoice_method/tests/__init__.py new file mode 100644 index 00000000000..bdec84fdfda --- /dev/null +++ b/purchase_invoice_method/tests/__init__.py @@ -0,0 +1 @@ +from . import test_purchase_invoice_method diff --git a/purchase_invoice_method/tests/test_purchase_invoice_method.py b/purchase_invoice_method/tests/test_purchase_invoice_method.py new file mode 100644 index 00000000000..536f24dd7cb --- /dev/null +++ b/purchase_invoice_method/tests/test_purchase_invoice_method.py @@ -0,0 +1,87 @@ +# Copyright 2023 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.tests import Form +from odoo.tests.common import TransactionCase + + +class TestPurchaseInvoiceMethod(TransactionCase): + def setUp(self): + super().setUp() + + self.vendor = self.env["res.partner"].create( + { + "name": "Supplier", + "email": "supplier.serv@supercompany.com", + } + ) + + self.product = self.env["product.product"].create( + { + "name": "Product", + "standard_price": 200.0, + "list_price": 180.0, + "type": "service", + "purchase_method": "receive", + } + ) + + def test_force_create_invoice_receive(self): + + purchase_order_form = Form(self.env["purchase.order"]) + purchase_order_form.partner_id = self.vendor + + with purchase_order_form.order_line.new() as line: + line.name = self.product.name + line.product_id = self.product + line.product_qty = 4 + line.price_unit = 500 + + purchase_order = purchase_order_form.save() + purchase_order.button_confirm() + + self.assertEqual(purchase_order.invoice_status, "no") + purchase_order.invoice_method = "purchase" + self.assertEqual(purchase_order.invoice_status, "to invoice") + for line in purchase_order.order_line: + self.assertEqual(line.product_qty, 4) + self.assertEqual(line.qty_invoiced, 0.0) + + purchase_order.action_create_invoice() + self.assertEqual(purchase_order.invoice_status, "invoiced") + for line in purchase_order.order_line: + self.assertEqual(line.qty_to_invoice, 0.0) + self.assertEqual(line.qty_invoiced, 4) + + def test_force_create_invoice_purchase(self): + self.product.purchase_method = "purchase" + purchase_order_form = Form(self.env["purchase.order"]) + purchase_order_form.partner_id = self.vendor + + with purchase_order_form.order_line.new() as line: + line.name = self.product.name + line.product_id = self.product + line.product_qty = 4 + line.price_unit = 500 + + purchase_order = purchase_order_form.save() + purchase_order.button_confirm() + + self.assertEqual(purchase_order.invoice_status, "to invoice") + purchase_order.invoice_method = "receive" + self.assertEqual(purchase_order.invoice_status, "no") + + def test_force_create_invoice_draft(self): + purchase_order_form = Form(self.env["purchase.order"]) + purchase_order_form.partner_id = self.vendor + + with purchase_order_form.order_line.new() as line: + line.name = self.product.name + line.product_id = self.product + line.product_qty = 4 + line.price_unit = 500 + + purchase_order = purchase_order_form.save() + purchase_order.invoice_method = "purchase" + self.assertEqual(purchase_order.invoice_status, "no") + self.assertEqual(purchase_order.order_line.qty_to_invoice, 0) diff --git a/purchase_invoice_method/views/purchase_order.xml b/purchase_invoice_method/views/purchase_order.xml new file mode 100644 index 00000000000..8df558dee3e --- /dev/null +++ b/purchase_invoice_method/views/purchase_order.xml @@ -0,0 +1,19 @@ + + + + + + purchase.order.form (in purchase_invoice_method) + purchase.order + + + + + + + + + + + From f5b2c5a78cf6390340f9f881a91a466091af6a53 Mon Sep 17 00:00:00 2001 From: Aritz Olea Date: Mon, 24 Apr 2023 09:11:57 +0200 Subject: [PATCH 02/17] [MIG] purchase_invoice_method: Migration to 15.0 --- purchase_invoice_method/README.rst | 10 +++++----- purchase_invoice_method/__manifest__.py | 2 +- .../i18n/purchase_invoice_method.pot | 20 +------------------ .../models/purchase_order.py | 3 ++- .../static/description/index.html | 6 +++--- 5 files changed, 12 insertions(+), 29 deletions(-) diff --git a/purchase_invoice_method/README.rst b/purchase_invoice_method/README.rst index 4d27657739f..6bee994a507 100644 --- a/purchase_invoice_method/README.rst +++ b/purchase_invoice_method/README.rst @@ -14,13 +14,13 @@ Purchase Invoice Method :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/14.0/purchase_invoice_method + :target: https://github.com/OCA/purchase-workflow/tree/15.0/purchase_invoice_method :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-14-0/purchase-workflow-14-0-purchase_invoice_method + :target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_invoice_method :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/142/14.0 + :target: https://runbot.odoo-community.org/runbot/142/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -50,7 +50,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. @@ -81,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_invoice_method/__manifest__.py b/purchase_invoice_method/__manifest__.py index f81384f2971..765004beecc 100644 --- a/purchase_invoice_method/__manifest__.py +++ b/purchase_invoice_method/__manifest__.py @@ -5,7 +5,7 @@ "name": "Purchase Invoice Method", "summary": """ Allow to force the invoice method of a purchase""", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/purchase-workflow", diff --git a/purchase_invoice_method/i18n/purchase_invoice_method.pot b/purchase_invoice_method/i18n/purchase_invoice_method.pot index 0fba7a68a01..e7f3f1f56d7 100644 --- a/purchase_invoice_method/i18n/purchase_invoice_method.pot +++ b/purchase_invoice_method/i18n/purchase_invoice_method.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,29 +13,11 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: purchase_invoice_method -#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__display_name -#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order_line__display_name -msgid "Display Name" -msgstr "" - -#. module: purchase_invoice_method -#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__id -#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order_line__id -msgid "ID" -msgstr "" - #. module: purchase_invoice_method #: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__invoice_method msgid "Invoice Method" msgstr "" -#. module: purchase_invoice_method -#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order____last_update -#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order_line____last_update -msgid "Last Modified on" -msgstr "" - #. module: purchase_invoice_method #: model:ir.model,name:purchase_invoice_method.model_purchase_order msgid "Purchase Order" diff --git a/purchase_invoice_method/models/purchase_order.py b/purchase_invoice_method/models/purchase_order.py index 5c592a8a562..fbda726b1fd 100644 --- a/purchase_invoice_method/models/purchase_order.py +++ b/purchase_invoice_method/models/purchase_order.py @@ -24,7 +24,7 @@ class PurchaseOrderLine(models.Model): "order_id.invoice_method", ) def _compute_qty_invoiced(self): - super()._compute_qty_invoiced() + ret = super()._compute_qty_invoiced() for line in self.filtered( lambda r: r.order_id.invoice_method and r.order_id.state in ["purchase", "done"] @@ -33,3 +33,4 @@ def _compute_qty_invoiced(self): line.qty_to_invoice = line.product_qty - line.qty_invoiced elif line.order_id.invoice_method == "receive": line.qty_to_invoice = line.qty_received - line.qty_invoiced + return ret diff --git a/purchase_invoice_method/static/description/index.html b/purchase_invoice_method/static/description/index.html index 24f7a104af4..0d843c511d8 100644 --- a/purchase_invoice_method/static/description/index.html +++ b/purchase_invoice_method/static/description/index.html @@ -367,7 +367,7 @@

Purchase Invoice Method

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

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

+

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

This module adds the possibility for users to force the invoice status of the purchase orders to ‘Waiting Bills’ so they can create a bill. Also, you can force an “On ordered quantites” invoice method to “On received quantites”.

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

@@ -430,7 +430,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 3c05ab86fd440677408f667d3a57a0ceb97f820c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Alan=20Ramos=20Rodr=C3=ADguez?= Date: Mon, 17 Jul 2023 20:59:47 +0000 Subject: [PATCH 03/17] Added translation using Weblate (Spanish (Mexico)) --- purchase_invoice_method/i18n/es_MX.po | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 purchase_invoice_method/i18n/es_MX.po diff --git a/purchase_invoice_method/i18n/es_MX.po b/purchase_invoice_method/i18n/es_MX.po new file mode 100644 index 00000000000..ab8dd6c2d53 --- /dev/null +++ b/purchase_invoice_method/i18n/es_MX.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_invoice_method +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es_MX\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_invoice_method +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__invoice_method +msgid "Invoice Method" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model,name:purchase_invoice_method.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model,name:purchase_invoice_method.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" From 36066d5428edc196ebd4cf2ef7b812078bd04369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Alan=20Ramos=20Rodr=C3=ADguez?= Date: Mon, 17 Jul 2023 21:00:18 +0000 Subject: [PATCH 04/17] Translated using Weblate (Spanish (Mexico)) Currently translated at 100.0% (3 of 3 strings) Translation: purchase-workflow-15.0/purchase-workflow-15.0-purchase_invoice_method Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_invoice_method/es_MX/ --- purchase_invoice_method/README.rst | 15 +++++--- purchase_invoice_method/i18n/es_MX.po | 10 +++-- .../static/description/index.html | 38 ++++++++++--------- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/purchase_invoice_method/README.rst b/purchase_invoice_method/README.rst index 6bee994a507..b91a74212eb 100644 --- a/purchase_invoice_method/README.rst +++ b/purchase_invoice_method/README.rst @@ -2,10 +2,13 @@ Purchase Invoice Method ======================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:1dae1c47ea7be5616ce7edeb3173fcc43849b3e6cb4e423fcadf3634260266a5 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Purchase Invoice Method .. |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_invoice_method :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/142/15.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/purchase-workflow&target_branch=15.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds the possibility for users to force the invoice status of the purchase orders to 'Waiting Bills' so they can create a bill. @@ -49,7 +52,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/purchase_invoice_method/i18n/es_MX.po b/purchase_invoice_method/i18n/es_MX.po index ab8dd6c2d53..9dfda5c01c8 100644 --- a/purchase_invoice_method/i18n/es_MX.po +++ b/purchase_invoice_method/i18n/es_MX.po @@ -6,25 +6,27 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-07-17 21:00+0000\n" +"Last-Translator: Jesús Alan Ramos Rodríguez \n" "Language-Team: none\n" "Language: es_MX\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: purchase_invoice_method #: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__invoice_method msgid "Invoice Method" -msgstr "" +msgstr "Método de Factruación" #. module: purchase_invoice_method #: model:ir.model,name:purchase_invoice_method.model_purchase_order msgid "Purchase Order" -msgstr "" +msgstr "Orden de Compra" #. module: purchase_invoice_method #: model:ir.model,name:purchase_invoice_method.model_purchase_order_line msgid "Purchase Order Line" -msgstr "" +msgstr "Línea de Orden de Compra" diff --git a/purchase_invoice_method/static/description/index.html b/purchase_invoice_method/static/description/index.html index 0d843c511d8..9b758aa8cae 100644 --- a/purchase_invoice_method/static/description/index.html +++ b/purchase_invoice_method/static/description/index.html @@ -1,20 +1,20 @@ - + - + Purchase Invoice Method -
-

Purchase Invoice Method

+
+ + +Odoo Community Association + +
+

Purchase Invoice Method

-

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

This module adds the possibility for users to force the invoice status of the purchase orders to ‘Waiting Bills’ so they can create a bill. Also, you can force an “On ordered quantites” invoice method to “On @@ -390,7 +395,7 @@

Purchase Invoice Method

-

Usage

+

Usage

  1. Create a purchase order and confirm it.
  2. Go to page “Other information” and select an option of the “Invoice @@ -408,7 +413,7 @@

    Usage

-

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 @@ -416,15 +421,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • CreuBlanca
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -445,5 +450,6 @@

Maintainers

+
From 2dc1c1850eff56a1d445efb731d1353dda69ab21 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Fri, 27 Jun 2025 13:04:09 +0000 Subject: [PATCH 16/17] Added translation using Weblate (Portuguese (Brazil)) --- purchase_invoice_method/i18n/pt_BR.po | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 purchase_invoice_method/i18n/pt_BR.po diff --git a/purchase_invoice_method/i18n/pt_BR.po b/purchase_invoice_method/i18n/pt_BR.po new file mode 100644 index 00000000000..ce4af3482e1 --- /dev/null +++ b/purchase_invoice_method/i18n/pt_BR.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_invoice_method +# +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: pt_BR\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_invoice_method +#: model:ir.model.fields,field_description:purchase_invoice_method.field_purchase_order__invoice_method +msgid "Invoice Method" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model,name:purchase_invoice_method.model_purchase_order +msgid "Purchase Order" +msgstr "" + +#. module: purchase_invoice_method +#: model:ir.model,name:purchase_invoice_method.model_purchase_order_line +msgid "Purchase Order Line" +msgstr "" From cad83b949301f39d5becd821d08d8c98d3893f05 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Mon, 27 Apr 2026 17:43:10 +0530 Subject: [PATCH 17/17] [MIG] purchase_invoice_method: Migration to 19.0 --- purchase_invoice_method/README.rst | 14 ++++++++------ purchase_invoice_method/__manifest__.py | 2 +- .../readme/CONTRIBUTORS.md | 3 ++- .../static/description/index.html | 11 +++++++---- .../tests/test_purchase_invoice_method.py | 19 ++++++------------- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/purchase_invoice_method/README.rst b/purchase_invoice_method/README.rst index 7f1148036cf..c35619cbf50 100644 --- a/purchase_invoice_method/README.rst +++ b/purchase_invoice_method/README.rst @@ -21,13 +21,13 @@ Purchase Invoice Method :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_invoice_method + :target: https://github.com/OCA/purchase-workflow/tree/19.0/purchase_invoice_method :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_invoice_method + :target: https://translation.odoo-community.org/projects/purchase-workflow-19-0/purchase-workflow-19-0-purchase_invoice_method :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| @@ -67,7 +67,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. @@ -84,7 +84,9 @@ Contributors - Enric Tobella - Kevin Luna -- ``Heliconia Solutions Pvt. Ltd. ``\ \_ +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia Maintainers ----------- @@ -99,6 +101,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_invoice_method/__manifest__.py b/purchase_invoice_method/__manifest__.py index 3851c755836..960f63972da 100644 --- a/purchase_invoice_method/__manifest__.py +++ b/purchase_invoice_method/__manifest__.py @@ -5,7 +5,7 @@ "name": "Purchase Invoice Method", "summary": """ Allow to force the invoice method of a purchase""", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "license": "AGPL-3", "author": "CreuBlanca, Odoo Community Association (OCA)", "website": "https://github.com/OCA/purchase-workflow", diff --git a/purchase_invoice_method/readme/CONTRIBUTORS.md b/purchase_invoice_method/readme/CONTRIBUTORS.md index 6abebcb81a0..a0a6dd6c92a 100644 --- a/purchase_invoice_method/readme/CONTRIBUTORS.md +++ b/purchase_invoice_method/readme/CONTRIBUTORS.md @@ -1,3 +1,4 @@ - Enric Tobella \<\> - Kevin Luna \<\> -- `Heliconia Solutions Pvt. Ltd. `_ +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/purchase_invoice_method/static/description/index.html b/purchase_invoice_method/static/description/index.html index 0e3b59f8f95..b2da3724569 100644 --- a/purchase_invoice_method/static/description/index.html +++ b/purchase_invoice_method/static/description/index.html @@ -374,7 +374,7 @@

Purchase Invoice Method

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:871c0424c65bae40d58b8151b86776a7cd7b8eb4f7d537160b5691801702383f !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

This module adds the possibility for users to force the invoice status of the purchase orders to ‘Waiting Bills’ so they can create a bill. Also, you can force an “On ordered quantites” invoice method to “On @@ -417,7 +417,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.

@@ -433,7 +433,10 @@

Contributors

@@ -445,7 +448,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_invoice_method/tests/test_purchase_invoice_method.py b/purchase_invoice_method/tests/test_purchase_invoice_method.py index 4fdf18a0c76..56a27dcf35b 100644 --- a/purchase_invoice_method/tests/test_purchase_invoice_method.py +++ b/purchase_invoice_method/tests/test_purchase_invoice_method.py @@ -2,26 +2,19 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo.tests import Form -from odoo.tests.common import TransactionCase +from odoo.addons.account.tests.common import AccountTestInvoicingCommon -class TestPurchaseInvoiceMethod(TransactionCase): + +class TestPurchaseInvoiceMethod(AccountTestInvoicingCommon): @classmethod def setUpClass(cls): super().setUpClass() - cls.vendor = cls.env["res.partner"].create( - { - "name": "Supplier", - "email": "supplier.serv@supercompany.com", - } - ) - - cls.product = cls.env["product.product"].create( + cls.vendor = cls.partner_a + cls.product = cls.product_a + cls.product.write( { - "name": "Product", - "standard_price": 200.0, - "list_price": 180.0, "type": "service", "purchase_method": "receive", }