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
+
+
+

+
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
+
+
+
+
+- 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.
+
+
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

+
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. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

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 @@
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 @@
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
+
+
+
+
+
+
-
+
- Create a purchase order and confirm it.
- Go to page “Other information” and select an option of the “Invoice
@@ -408,7 +413,7 @@
-
+
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 @@
Do not contact contributors directly about support or help with technical issues.
+
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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

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 @@
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.
@@ -445,7 +448,7 @@
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",
}