From 8037769086526a89326481da42fda5be6e7e1579 Mon Sep 17 00:00:00 2001 From: David Alonso // Solvos Date: Mon, 25 Oct 2021 13:57:37 +0200 Subject: [PATCH 01/20] [ADD] purchase_order_type_dashboard --- purchase_order_type_dashboard/README.rst | 81 ++++ purchase_order_type_dashboard/__init__.py | 1 + purchase_order_type_dashboard/__manifest__.py | 20 + purchase_order_type_dashboard/i18n/es.po | 87 ++++ .../i18n/purchase_order_type_dashboard.pot | 84 ++++ .../models/__init__.py | 1 + .../models/purchase_order_type.py | 60 +++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 421 ++++++++++++++++++ .../tests/__init__.py | 1 + .../test_purchase_order_type_dashboard.py | 68 +++ .../views/menu_purchase_order.xml | 17 + .../views/view_purchase_order.xml | 45 ++ .../views/view_purchase_order_type.xml | 136 ++++++ 16 files changed, 1024 insertions(+) create mode 100644 purchase_order_type_dashboard/README.rst create mode 100644 purchase_order_type_dashboard/__init__.py create mode 100644 purchase_order_type_dashboard/__manifest__.py create mode 100644 purchase_order_type_dashboard/i18n/es.po create mode 100644 purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot create mode 100644 purchase_order_type_dashboard/models/__init__.py create mode 100644 purchase_order_type_dashboard/models/purchase_order_type.py create mode 100644 purchase_order_type_dashboard/readme/CONTRIBUTORS.rst create mode 100644 purchase_order_type_dashboard/readme/DESCRIPTION.rst create mode 100644 purchase_order_type_dashboard/static/description/icon.png create mode 100644 purchase_order_type_dashboard/static/description/index.html create mode 100644 purchase_order_type_dashboard/tests/__init__.py create mode 100644 purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py create mode 100644 purchase_order_type_dashboard/views/menu_purchase_order.xml create mode 100644 purchase_order_type_dashboard/views/view_purchase_order.xml create mode 100644 purchase_order_type_dashboard/views/view_purchase_order_type.xml diff --git a/purchase_order_type_dashboard/README.rst b/purchase_order_type_dashboard/README.rst new file mode 100644 index 00000000000..bd04359b81e --- /dev/null +++ b/purchase_order_type_dashboard/README.rst @@ -0,0 +1,81 @@ +============================= +Purchase Order Type Dashboard +============================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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/13.0/purchase_order_type_dashboard + :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-13-0/purchase-workflow-13-0-purchase_order_type_dashboard + :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/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adds a dashboard for Purchase Orders based on Purchase Order Types. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Solvos + +Contributors +~~~~~~~~~~~~ + +* David Alonso + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-dalonsod| image:: https://github.com/dalonsod.png?size=40px + :target: https://github.com/dalonsod + :alt: dalonsod + +Current `maintainer `__: + +|maintainer-dalonsod| + +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_type_dashboard/__init__.py b/purchase_order_type_dashboard/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/purchase_order_type_dashboard/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_order_type_dashboard/__manifest__.py b/purchase_order_type_dashboard/__manifest__.py new file mode 100644 index 00000000000..8fd6e02c0b7 --- /dev/null +++ b/purchase_order_type_dashboard/__manifest__.py @@ -0,0 +1,20 @@ +# ?? 2021 Solvos Consultor??a Inform??tica () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Purchase Order Type Dashboard", + "version": "13.0.1.0.0", + "author": "Solvos, Odoo Community Association (OCA)", + "license": "AGPL-3", + "category": "Purchase Management", + "depends": ["purchase_order_type"], + "website": "https://github.com/OCA/purchase-workflow", + "data": [ + "views/view_purchase_order.xml", + "views/view_purchase_order_type.xml", + "views/menu_purchase_order.xml", + ], + "maintainers": ["dalonsod"], + "installable": True, + "auto_install": False, +} diff --git a/purchase_order_type_dashboard/i18n/es.po b/purchase_order_type_dashboard/i18n/es.po new file mode 100644 index 00000000000..39f8e8ca98a --- /dev/null +++ b/purchase_order_type_dashboard/i18n/es.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_type_dashboard +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-01-01 13:39+0000\n" +"Last-Translator: David Alonso (Solvos) \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "View" +msgstr "Ver" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "All" +msgstr "Todos" + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.purchase_order_type_dashboard_action +#: model:ir.ui.menu,name:purchase_order_type_dashboard.purchase_order_dashboard_menu +msgid "Dashboard" +msgstr "Tablero" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__invoice_status_no_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.purchase_order_view_search +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Nothing to Bill" +msgstr "Nada para facturar" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Purchase Orders that have nothing to bill yet" +msgstr "N??mero de pedidos de compra que no tienen todav??a nada que facturar" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Purchase Orders waiting for bills" +msgstr "N??mero de pedidos de compra esperando por facturas" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Requests for Quotations" +msgstr "N??mero de solicitudes de presupuesto" + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.action_purchase_order_from_dashboard +msgid "Purchase Order" +msgstr "Pedido de compra" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__purchase_order_ids +msgid "Purchase Orders" +msgstr "Pedidos de compra" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__state_rfq_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "RFQs" +msgstr "Sol. ppto." + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.action_purchase_rfq_from_dashboard +msgid "Request for Quotation" +msgstr "Solicitud de presupuesto" + +#. module: purchase_order_type_dashboard +#: model:ir.model,name:purchase_order_type_dashboard.model_purchase_order_type +msgid "Type of purchase order" +msgstr "Tipo de pedido de compra" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__invoice_status_ti_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Waiting Bills" +msgstr "Para facturar" diff --git a/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot b/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot new file mode 100644 index 00000000000..939e52eba82 --- /dev/null +++ b/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_type_dashboard +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.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_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "View" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "All" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.purchase_order_type_dashboard_action +#: model:ir.ui.menu,name:purchase_order_type_dashboard.purchase_order_dashboard_menu +msgid "Dashboard" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__invoice_status_no_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.purchase_order_view_search +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Nothing to Bill" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Purchase Orders that have nothing to bill yet" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Purchase Orders waiting for bills" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Requests for Quotations" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.action_purchase_order_from_dashboard +msgid "Purchase Order" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__purchase_order_ids +msgid "Purchase Orders" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__state_rfq_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "RFQs" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.action_purchase_rfq_from_dashboard +msgid "Request for Quotation" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model,name:purchase_order_type_dashboard.model_purchase_order_type +msgid "Type of purchase order" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__invoice_status_ti_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Waiting Bills" +msgstr "" diff --git a/purchase_order_type_dashboard/models/__init__.py b/purchase_order_type_dashboard/models/__init__.py new file mode 100644 index 00000000000..d7570a0e252 --- /dev/null +++ b/purchase_order_type_dashboard/models/__init__.py @@ -0,0 +1 @@ +from . import purchase_order_type diff --git a/purchase_order_type_dashboard/models/purchase_order_type.py b/purchase_order_type_dashboard/models/purchase_order_type.py new file mode 100644 index 00000000000..3e3d39a5779 --- /dev/null +++ b/purchase_order_type_dashboard/models/purchase_order_type.py @@ -0,0 +1,60 @@ +# ?? 2021 Solvos Consultor??a Inform??tica () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class PurchaseOrderType(models.Model): + _inherit = "purchase.order.type" + + purchase_order_ids = fields.One2many( + comodel_name="purchase.order", + inverse_name="order_type", + string="Purchase Orders", + ) + state_rfq_po_count = fields.Integer(string="RFQs", compute="_compute_po_counts") + invoice_status_no_po_count = fields.Integer( + string="Nothing to Bill", compute="_compute_po_counts" + ) + invoice_status_ti_po_count = fields.Integer( + string="Waiting Bills", compute="_compute_po_counts" + ) + + @api.depends( + "purchase_order_ids", + "purchase_order_ids.state", + "purchase_order_ids.invoice_status", + ) + def _compute_po_counts(self): + rfq_states = ("draft", "sent", "to approve") + po_states = ("purchase", "done") + PurchaseOrder = self.env["purchase.order"] + fetch_data = PurchaseOrder.read_group( + [("order_type", "in", self.ids)], + ["order_type", "state", "invoice_status"], + ["order_type", "state", "invoice_status"], + lazy=False, + ) + result = [ + [ + data["order_type"][0], + data["state"], + data["invoice_status"], + data["__count"], + ] + for data in fetch_data + ] + for order in self: + order.state_rfq_po_count = sum( + [r[3] for r in result if r[0] == order.id and r[1] in rfq_states] + ) + order.invoice_status_no_po_count = sum( + [ + r[3] + for r in result + if r[0] == order.id and r[1] in po_states and r[2] == "no" + ] + ) + order.invoice_status_ti_po_count = sum( + [r[3] for r in result if r[0] == order.id and r[2] == "to invoice"] + ) diff --git a/purchase_order_type_dashboard/readme/CONTRIBUTORS.rst b/purchase_order_type_dashboard/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..423455dfe8d --- /dev/null +++ b/purchase_order_type_dashboard/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* David Alonso diff --git a/purchase_order_type_dashboard/readme/DESCRIPTION.rst b/purchase_order_type_dashboard/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..8a311249466 --- /dev/null +++ b/purchase_order_type_dashboard/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Adds a dashboard for Purchase Orders based on Purchase Order Types. diff --git a/purchase_order_type_dashboard/static/description/icon.png b/purchase_order_type_dashboard/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_order_type_dashboard/static/description/index.html b/purchase_order_type_dashboard/static/description/index.html new file mode 100644 index 00000000000..ca70ee4f86e --- /dev/null +++ b/purchase_order_type_dashboard/static/description/index.html @@ -0,0 +1,421 @@ + + + + + + +Purchase Order Type Dashboard + + + +
+

Purchase Order Type Dashboard

+ + +

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

+

Adds a dashboard for Purchase Orders based on Purchase Order Types.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Solvos
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

dalonsod

+

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_type_dashboard/tests/__init__.py b/purchase_order_type_dashboard/tests/__init__.py new file mode 100644 index 00000000000..eeaebcd6d21 --- /dev/null +++ b/purchase_order_type_dashboard/tests/__init__.py @@ -0,0 +1 @@ +from . import test_purchase_order_type_dashboard diff --git a/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py new file mode 100644 index 00000000000..a9dd3d6acad --- /dev/null +++ b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py @@ -0,0 +1,68 @@ +# ?? 2021 Solvos Consultor??a Inform??tica () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +import time + +from odoo.tests import common, tagged +from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT + + +@tagged("post_install", "-at_install") +class TestPurchaseOrderTypeDashboard(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.po_obj = cls.env["purchase.order"] + # Partner + cls.partner1 = cls.env.ref("base.res_partner_1") + # Products + cls.product1 = cls.env.ref("product.product_product_7") + cls.product2 = cls.env.ref("product.product_product_9") + cls.product3 = cls.env.ref("product.product_product_11") + # Purchase Type + cls.type1 = cls.env.ref("purchase_order_type.po_type_regular") + + def test_purchase_order_type_dashboard(self): + po_type1_rfq_count = self.type1.state_rfq_po_count + purchase = self._create_purchase( + [(self.product1, 1), (self.product2, 5), (self.product3, 8)] + ) + self.assertEquals(self.type1.state_rfq_po_count, po_type1_rfq_count + 1) + + purchase.button_confirm() + po_type1_is_no_count = self.type1.invoice_status_no_po_count + po_type1_is_ti_count = self.type1.invoice_status_ti_po_count + purchase_picking = purchase.picking_ids + for move in purchase_picking.move_ids_without_package: + move.move_line_ids.write({"qty_done": move.purchase_line_id.product_qty}) + purchase_picking.action_done() + self.assertEquals( + self.type1.invoice_status_no_po_count, po_type1_is_no_count - 1 + ) + self.assertEquals( + self.type1.invoice_status_ti_po_count, po_type1_is_ti_count + 1 + ) + + def _create_purchase(self, line_products): + """ Create a purchase order. + ``line_products`` is a list of tuple [(product, qty)] + """ + lines = [] + for product, qty in line_products: + line_values = { + "name": product.name, + "product_id": product.id, + "product_qty": qty, + "product_uom": product.uom_id.id, + "price_unit": 100, + "date_planned": time.strftime(DEFAULT_SERVER_DATETIME_FORMAT), + } + lines.append((0, 0, line_values)) + purchase = self.po_obj.create( + { + "partner_id": self.partner1.id, + "order_type": self.type1.id, + "order_line": lines, + } + ) + return purchase diff --git a/purchase_order_type_dashboard/views/menu_purchase_order.xml b/purchase_order_type_dashboard/views/menu_purchase_order.xml new file mode 100644 index 00000000000..d917f4abb05 --- /dev/null +++ b/purchase_order_type_dashboard/views/menu_purchase_order.xml @@ -0,0 +1,17 @@ + + + + Dashboard + ir.actions.act_window + purchase.order.type + kanban,tree,form,pivot + + + + diff --git a/purchase_order_type_dashboard/views/view_purchase_order.xml b/purchase_order_type_dashboard/views/view_purchase_order.xml new file mode 100644 index 00000000000..5aff2bcc3e7 --- /dev/null +++ b/purchase_order_type_dashboard/views/view_purchase_order.xml @@ -0,0 +1,45 @@ + + + + Request for Quotation + purchase.order + tree,kanban,form,pivot,graph,calendar,activity + + + + {'default_order_type': active_id} + + [('order_type', '=', active_id)] + + + + Purchase Order + purchase.order + tree,kanban,form,pivot,graph,calendar,activity + + + + {'default_order_type': active_id} + + [('order_type', '=', active_id), ('state','in',('purchase', 'done'))] + + + + purchase.order.select (in purchase_order_type_dashboard) + purchase.order + + + + + + + + diff --git a/purchase_order_type_dashboard/views/view_purchase_order_type.xml b/purchase_order_type_dashboard/views/view_purchase_order_type.xml new file mode 100644 index 00000000000..896e1a58691 --- /dev/null +++ b/purchase_order_type_dashboard/views/view_purchase_order_type.xml @@ -0,0 +1,136 @@ + + + + purchase.order.type.tree (in purchase_order_type_dashboard) + purchase.order.type + + + + + + + + + + + purchase.order.type.kanban (in purchase_order_type_dashboard) + purchase.order.type + + + + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
+
+
From 096646c767deacb82e6f075afd0a1f4540204187 Mon Sep 17 00:00:00 2001 From: David Alonso // Solvos Date: Sat, 17 Sep 2022 11:15:24 +0200 Subject: [PATCH 02/20] [IMP] purchase_order_type_dashboard: black, isort, prettier --- .../tests/test_purchase_order_type_dashboard.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py index a9dd3d6acad..70e1ce11069 100644 --- a/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py +++ b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py @@ -44,7 +44,7 @@ def test_purchase_order_type_dashboard(self): ) def _create_purchase(self, line_products): - """ Create a purchase order. + """Create a purchase order. ``line_products`` is a list of tuple [(product, qty)] """ lines = [] From a6926e73b0a43e28ca8ce381baabb09c36486947 Mon Sep 17 00:00:00 2001 From: David Alonso // Solvos Date: Sat, 17 Sep 2022 11:34:43 +0200 Subject: [PATCH 03/20] [MIG] purchase_order_type_dashboard: Migration to 14.0 --- purchase_order_type_dashboard/README.rst | 10 ++-- purchase_order_type_dashboard/__manifest__.py | 3 +- .../demo/purchase_order_type_dashboard.xml | 21 ++++++++ .../i18n/purchase_order_type_dashboard.pot | 37 ++++++++++++- .../static/description/index.html | 6 +-- .../test_purchase_order_type_dashboard.py | 11 ++-- .../views/view_purchase_order_type.xml | 53 +++++++++++++++++-- 7 files changed, 121 insertions(+), 20 deletions(-) create mode 100644 purchase_order_type_dashboard/demo/purchase_order_type_dashboard.xml diff --git a/purchase_order_type_dashboard/README.rst b/purchase_order_type_dashboard/README.rst index bd04359b81e..d4e08dcd4a0 100644 --- a/purchase_order_type_dashboard/README.rst +++ b/purchase_order_type_dashboard/README.rst @@ -14,13 +14,13 @@ Purchase Order Type Dashboard :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/13.0/purchase_order_type_dashboard + :target: https://github.com/OCA/purchase-workflow/tree/14.0/purchase_order_type_dashboard :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-13-0/purchase-workflow-13-0-purchase_order_type_dashboard + :target: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_order_type_dashboard :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/13.0 + :target: https://runbot.odoo-community.org/runbot/142/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -76,6 +76,6 @@ Current `maintainer `__: |maintainer-dalonsod| -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_type_dashboard/__manifest__.py b/purchase_order_type_dashboard/__manifest__.py index 8fd6e02c0b7..9a889dfe68c 100644 --- a/purchase_order_type_dashboard/__manifest__.py +++ b/purchase_order_type_dashboard/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Order Type Dashboard", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "author": "Solvos, Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Purchase Management", @@ -14,6 +14,7 @@ "views/view_purchase_order_type.xml", "views/menu_purchase_order.xml", ], + "demo": ["demo/purchase_order_type_dashboard.xml"], "maintainers": ["dalonsod"], "installable": True, "auto_install": False, diff --git a/purchase_order_type_dashboard/demo/purchase_order_type_dashboard.xml b/purchase_order_type_dashboard/demo/purchase_order_type_dashboard.xml new file mode 100644 index 00000000000..12925c59a0f --- /dev/null +++ b/purchase_order_type_dashboard/demo/purchase_order_type_dashboard.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot b/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot index 939e52eba82..0092198dc6b 100644 --- a/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot +++ b/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -29,6 +29,21 @@ msgstr "" msgid "Dashboard" msgstr "" +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__id +msgid "ID" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type____last_update +msgid "Last Modified on" +msgstr "" + #. module: purchase_order_type_dashboard #: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__invoice_status_no_po_count #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.purchase_order_view_search @@ -72,6 +87,26 @@ msgstr "" msgid "Request for Quotation" msgstr "" +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Show other options" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total Nothing to Bill" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total RFQs" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total Waiting Bills" +msgstr "" + #. module: purchase_order_type_dashboard #: model:ir.model,name:purchase_order_type_dashboard.model_purchase_order_type msgid "Type of purchase order" diff --git a/purchase_order_type_dashboard/static/description/index.html b/purchase_order_type_dashboard/static/description/index.html index ca70ee4f86e..19700efd7a0 100644 --- a/purchase_order_type_dashboard/static/description/index.html +++ b/purchase_order_type_dashboard/static/description/index.html @@ -367,7 +367,7 @@

Purchase Order Type Dashboard

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

Adds a dashboard for Purchase Orders based on Purchase Order Types.

Table of contents

@@ -386,7 +386,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -412,7 +412,7 @@

Maintainers

promote its widespread use.

Current maintainer:

dalonsod

-

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_type_dashboard/tests/test_purchase_order_type_dashboard.py b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py index 70e1ce11069..f1b0c91430c 100644 --- a/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py +++ b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py @@ -27,19 +27,16 @@ def test_purchase_order_type_dashboard(self): purchase = self._create_purchase( [(self.product1, 1), (self.product2, 5), (self.product3, 8)] ) - self.assertEquals(self.type1.state_rfq_po_count, po_type1_rfq_count + 1) + self.assertEqual(self.type1.state_rfq_po_count, po_type1_rfq_count + 1) purchase.button_confirm() po_type1_is_no_count = self.type1.invoice_status_no_po_count po_type1_is_ti_count = self.type1.invoice_status_ti_po_count - purchase_picking = purchase.picking_ids - for move in purchase_picking.move_ids_without_package: - move.move_line_ids.write({"qty_done": move.purchase_line_id.product_qty}) - purchase_picking.action_done() - self.assertEquals( + purchase.order_line[0].qty_received = 1.0 + self.assertEqual( self.type1.invoice_status_no_po_count, po_type1_is_no_count - 1 ) - self.assertEquals( + self.assertEqual( self.type1.invoice_status_ti_po_count, po_type1_is_ti_count + 1 ) diff --git a/purchase_order_type_dashboard/views/view_purchase_order_type.xml b/purchase_order_type_dashboard/views/view_purchase_order_type.xml index 896e1a58691..3f128876f55 100644 --- a/purchase_order_type_dashboard/views/view_purchase_order_type.xml +++ b/purchase_order_type_dashboard/views/view_purchase_order_type.xml @@ -11,12 +11,55 @@ /> - - + + + + + purchase.order.type.form (in purchase_order_type_dashboard) + purchase.order.type + + +
+ + + +
+
+
+ From 26d142305ee7cceea397069e169ebc3a3ce1c0ff Mon Sep 17 00:00:00 2001 From: David Alonso // Solvos Date: Tue, 23 May 2023 19:05:31 +0200 Subject: [PATCH 04/20] [IMP] purchase_order_type_dashboard: black, isort, prettier --- .../models/purchase_order_type.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/purchase_order_type_dashboard/models/purchase_order_type.py b/purchase_order_type_dashboard/models/purchase_order_type.py index 3e3d39a5779..2ecf0f2b9cd 100644 --- a/purchase_order_type_dashboard/models/purchase_order_type.py +++ b/purchase_order_type_dashboard/models/purchase_order_type.py @@ -46,15 +46,13 @@ def _compute_po_counts(self): ] for order in self: order.state_rfq_po_count = sum( - [r[3] for r in result if r[0] == order.id and r[1] in rfq_states] + r[3] for r in result if r[0] == order.id and r[1] in rfq_states ) order.invoice_status_no_po_count = sum( - [ - r[3] - for r in result - if r[0] == order.id and r[1] in po_states and r[2] == "no" - ] + r[3] + for r in result + if r[0] == order.id and r[1] in po_states and r[2] == "no" ) order.invoice_status_ti_po_count = sum( - [r[3] for r in result if r[0] == order.id and r[2] == "to invoice"] + r[3] for r in result if r[0] == order.id and r[2] == "to invoice" ) From 8320d95cc5530b87eed68759316350a1df3623a3 Mon Sep 17 00:00:00 2001 From: David Alonso // Solvos Date: Tue, 23 May 2023 19:24:10 +0200 Subject: [PATCH 05/20] [MIG] purchase_order_type_dashboard: Migration to 15.0 --- purchase_order_type_dashboard/README.rst | 10 +++++----- purchase_order_type_dashboard/__manifest__.py | 2 +- purchase_order_type_dashboard/i18n/es.po | 20 +++++++++++++++++++ .../i18n/purchase_order_type_dashboard.pot | 17 +--------------- .../static/description/index.html | 6 +++--- .../test_purchase_order_type_dashboard.py | 2 +- 6 files changed, 31 insertions(+), 26 deletions(-) diff --git a/purchase_order_type_dashboard/README.rst b/purchase_order_type_dashboard/README.rst index d4e08dcd4a0..96b38e480fa 100644 --- a/purchase_order_type_dashboard/README.rst +++ b/purchase_order_type_dashboard/README.rst @@ -14,13 +14,13 @@ Purchase Order Type Dashboard :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_order_type_dashboard + :target: https://github.com/OCA/purchase-workflow/tree/15.0/purchase_order_type_dashboard :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_order_type_dashboard + :target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_order_type_dashboard :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| @@ -38,7 +38,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -76,6 +76,6 @@ Current `maintainer `__: |maintainer-dalonsod| -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_type_dashboard/__manifest__.py b/purchase_order_type_dashboard/__manifest__.py index 9a889dfe68c..1e5231d44e7 100644 --- a/purchase_order_type_dashboard/__manifest__.py +++ b/purchase_order_type_dashboard/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Order Type Dashboard", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "author": "Solvos, Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Purchase Management", diff --git a/purchase_order_type_dashboard/i18n/es.po b/purchase_order_type_dashboard/i18n/es.po index 39f8e8ca98a..ed992052cbd 100644 --- a/purchase_order_type_dashboard/i18n/es.po +++ b/purchase_order_type_dashboard/i18n/es.po @@ -75,6 +75,26 @@ msgstr "Sol. ppto." msgid "Request for Quotation" msgstr "Solicitud de presupuesto" +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Show other options" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total Nothing to Bill" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total RFQs" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total Waiting Bills" +msgstr "" + #. module: purchase_order_type_dashboard #: model:ir.model,name:purchase_order_type_dashboard.model_purchase_order_type msgid "Type of purchase order" diff --git a/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot b/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot index 0092198dc6b..fcdb73ff030 100644 --- a/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot +++ b/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.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" @@ -29,21 +29,6 @@ msgstr "" msgid "Dashboard" msgstr "" -#. module: purchase_order_type_dashboard -#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__display_name -msgid "Display Name" -msgstr "" - -#. module: purchase_order_type_dashboard -#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__id -msgid "ID" -msgstr "" - -#. module: purchase_order_type_dashboard -#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type____last_update -msgid "Last Modified on" -msgstr "" - #. module: purchase_order_type_dashboard #: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__invoice_status_no_po_count #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.purchase_order_view_search diff --git a/purchase_order_type_dashboard/static/description/index.html b/purchase_order_type_dashboard/static/description/index.html index 19700efd7a0..32b7b66c86a 100644 --- a/purchase_order_type_dashboard/static/description/index.html +++ b/purchase_order_type_dashboard/static/description/index.html @@ -367,7 +367,7 @@

Purchase Order Type Dashboard

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

Adds a dashboard for Purchase Orders based on Purchase Order Types.

Table of contents

@@ -386,7 +386,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -412,7 +412,7 @@

Maintainers

promote its widespread use.

Current maintainer:

dalonsod

-

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_type_dashboard/tests/test_purchase_order_type_dashboard.py b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py index f1b0c91430c..d5007638f20 100644 --- a/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py +++ b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py @@ -8,7 +8,7 @@ @tagged("post_install", "-at_install") -class TestPurchaseOrderTypeDashboard(common.SavepointCase): +class TestPurchaseOrderTypeDashboard(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() From 4c75939328aeb7ed064eb4f8aa8327cef5648e19 Mon Sep 17 00:00:00 2001 From: Christian Santamaria Date: Tue, 6 Jun 2023 16:31:39 +0200 Subject: [PATCH 06/20] [MIG] purchase_order_type_dashboard: Migration to 16.0 --- purchase_order_type_dashboard/README.rst | 10 +++++----- purchase_order_type_dashboard/__manifest__.py | 2 +- .../i18n/purchase_order_type_dashboard.pot | 2 +- .../static/description/index.html | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/purchase_order_type_dashboard/README.rst b/purchase_order_type_dashboard/README.rst index 96b38e480fa..7ccc8b71a48 100644 --- a/purchase_order_type_dashboard/README.rst +++ b/purchase_order_type_dashboard/README.rst @@ -14,13 +14,13 @@ Purchase Order Type Dashboard :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_type_dashboard + :target: https://github.com/OCA/purchase-workflow/tree/16.0/purchase_order_type_dashboard :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_type_dashboard + :target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_order_type_dashboard :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 + :target: https://runbot.odoo-community.org/runbot/142/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -76,6 +76,6 @@ Current `maintainer `__: |maintainer-dalonsod| -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_type_dashboard/__manifest__.py b/purchase_order_type_dashboard/__manifest__.py index 1e5231d44e7..015bb300673 100644 --- a/purchase_order_type_dashboard/__manifest__.py +++ b/purchase_order_type_dashboard/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Order Type Dashboard", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "author": "Solvos, Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Purchase Management", diff --git a/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot b/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot index fcdb73ff030..cee9aa6d723 100644 --- a/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot +++ b/purchase_order_type_dashboard/i18n/purchase_order_type_dashboard.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/purchase_order_type_dashboard/static/description/index.html b/purchase_order_type_dashboard/static/description/index.html index 32b7b66c86a..32a6ef19fe9 100644 --- a/purchase_order_type_dashboard/static/description/index.html +++ b/purchase_order_type_dashboard/static/description/index.html @@ -367,7 +367,7 @@

Purchase Order Type Dashboard

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

Adds a dashboard for Purchase Orders based on Purchase Order Types.

Table of contents

@@ -386,7 +386,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -412,7 +412,7 @@

Maintainers

promote its widespread use.

Current maintainer:

dalonsod

-

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 d81256d95a84b2d9a6f588bd19ae5ac2def61dcc Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Thu, 20 Jul 2023 17:45:16 +0000 Subject: [PATCH 07/20] Translated using Weblate (Spanish) Currently translated at 100.0% (17 of 17 strings) Translation: purchase-workflow-16.0/purchase-workflow-16.0-purchase_order_type_dashboard Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_order_type_dashboard/es/ --- purchase_order_type_dashboard/README.rst | 15 ++++---- purchase_order_type_dashboard/i18n/es.po | 14 ++++---- .../static/description/index.html | 36 ++++++++++--------- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/purchase_order_type_dashboard/README.rst b/purchase_order_type_dashboard/README.rst index 7ccc8b71a48..9ab650b5456 100644 --- a/purchase_order_type_dashboard/README.rst +++ b/purchase_order_type_dashboard/README.rst @@ -2,10 +2,13 @@ Purchase Order Type Dashboard ============================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:aa47cad13aaa5a830b21d7bed031536a3a1e9485dc064b081f1190de8f900868 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Purchase Order Type Dashboard .. |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_type_dashboard :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/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Adds a dashboard for Purchase Orders based on Purchase Order Types. @@ -37,7 +40,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/purchase_order_type_dashboard/i18n/es.po b/purchase_order_type_dashboard/i18n/es.po index ed992052cbd..cdbc923c856 100644 --- a/purchase_order_type_dashboard/i18n/es.po +++ b/purchase_order_type_dashboard/i18n/es.po @@ -6,15 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2022-01-01 13:39+0000\n" -"Last-Translator: David Alonso (Solvos) \n" +"PO-Revision-Date: 2023-07-20 18:09+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: none\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.2\n" +"X-Generator: Weblate 4.17\n" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban @@ -78,22 +78,22 @@ msgstr "Solicitud de presupuesto" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban msgid "Show other options" -msgstr "" +msgstr "Mostrar otras opciones" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree msgid "Total Nothing to Bill" -msgstr "" +msgstr "Total Nada que facturar" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree msgid "Total RFQs" -msgstr "" +msgstr "Total de peticiones de ofertas" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree msgid "Total Waiting Bills" -msgstr "" +msgstr "Total de facturas en espera" #. module: purchase_order_type_dashboard #: model:ir.model,name:purchase_order_type_dashboard.model_purchase_order_type diff --git a/purchase_order_type_dashboard/static/description/index.html b/purchase_order_type_dashboard/static/description/index.html index 32a6ef19fe9..7c8d7332dca 100644 --- a/purchase_order_type_dashboard/static/description/index.html +++ b/purchase_order_type_dashboard/static/description/index.html @@ -1,20 +1,20 @@ - + - + Purchase Order Type Dashboard -
-

Purchase Order Type Dashboard

+
+ + +Odoo Community Association + +
+

Purchase Order Type Dashboard

-

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

Adds a dashboard for Purchase Orders based on Purchase Order Types.

Table of contents

@@ -384,7 +389,7 @@

Purchase Order Type Dashboard

-

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

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Solvos
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -426,5 +431,6 @@

Maintainers

+
From 9ff8c5056dd2a40ae5b9f042a8bb0e32c7cc9aca Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Thu, 26 Jun 2025 22:01:32 +0000 Subject: [PATCH 18/20] Added translation using Weblate (Portuguese (Brazil)) --- purchase_order_type_dashboard/i18n/pt_BR.po | 100 ++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 purchase_order_type_dashboard/i18n/pt_BR.po diff --git a/purchase_order_type_dashboard/i18n/pt_BR.po b/purchase_order_type_dashboard/i18n/pt_BR.po new file mode 100644 index 00000000000..ae5b8c863e5 --- /dev/null +++ b/purchase_order_type_dashboard/i18n/pt_BR.po @@ -0,0 +1,100 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_order_type_dashboard +# +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_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "View" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "All" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.purchase_order_type_dashboard_action +#: model:ir.ui.menu,name:purchase_order_type_dashboard.purchase_order_dashboard_menu +msgid "Dashboard" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__invoice_status_no_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.purchase_order_view_search +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Nothing to Bill" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Purchase Orders that have nothing to bill yet" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Purchase Orders waiting for bills" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Number of Requests for Quotations" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.action_purchase_order_from_dashboard +msgid "Purchase Order" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__purchase_order_ids +msgid "Purchase Orders" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__state_rfq_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "RFQs" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.actions.act_window,name:purchase_order_type_dashboard.action_purchase_rfq_from_dashboard +msgid "Request for Quotation" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total Nothing to Bill" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total RFQs" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_tree +msgid "Total Waiting Bills" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model,name:purchase_order_type_dashboard.model_purchase_order_type +msgid "Type of purchase order" +msgstr "" + +#. module: purchase_order_type_dashboard +#: model:ir.model.fields,field_description:purchase_order_type_dashboard.field_purchase_order_type__invoice_status_ti_po_count +#: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban +msgid "Waiting Bills" +msgstr "" From 87d32bd7e95b74184c83170c80d15e5f92eff3df Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 15 Sep 2025 12:51:05 +0000 Subject: [PATCH 19/20] Translated using Weblate (Italian) Currently translated at 100.0% (16 of 16 strings) Translation: purchase-workflow-18.0/purchase-workflow-18.0-purchase_order_type_dashboard Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_order_type_dashboard/it/ --- purchase_order_type_dashboard/i18n/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/purchase_order_type_dashboard/i18n/it.po b/purchase_order_type_dashboard/i18n/it.po index ed90487ddda..21dc5977dfd 100644 --- a/purchase_order_type_dashboard/i18n/it.po +++ b/purchase_order_type_dashboard/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-08-20 09:58+0000\n" +"PO-Revision-Date: 2025-09-15 15:42+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.6.2\n" +"X-Generator: Weblate 5.10.4\n" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban @@ -37,7 +37,7 @@ msgstr "Bacheca" #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.purchase_order_view_search #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban msgid "Nothing to Bill" -msgstr "Niente da pagare" +msgstr "Niente da fatturare" #. module: purchase_order_type_dashboard #: model_terms:ir.ui.view,arch_db:purchase_order_type_dashboard.view_purchase_order_type_kanban From f1eee5cc53c77caebe0a94e928394f018df36980 Mon Sep 17 00:00:00 2001 From: Hudson5577 Date: Mon, 3 Nov 2025 20:42:48 +0700 Subject: [PATCH 20/20] [19.0][MIG] purchase_order_type_dashboard: Migration to 19.0 --- purchase_order_type_dashboard/README.rst | 14 ++-- purchase_order_type_dashboard/__manifest__.py | 2 +- .../readme/CONTRIBUTORS.md | 3 +- .../static/description/index.html | 10 ++- .../test_purchase_order_type_dashboard.py | 79 ++++++++++++++++--- 5 files changed, 87 insertions(+), 21 deletions(-) diff --git a/purchase_order_type_dashboard/README.rst b/purchase_order_type_dashboard/README.rst index 8bfd6712f4f..814cc8f2370 100644 --- a/purchase_order_type_dashboard/README.rst +++ b/purchase_order_type_dashboard/README.rst @@ -21,13 +21,13 @@ Purchase Order Type Dashboard :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_type_dashboard + :target: https://github.com/OCA/purchase-workflow/tree/19.0/purchase_order_type_dashboard :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_type_dashboard + :target: https://translation.odoo-community.org/projects/purchase-workflow-19-0/purchase-workflow-19-0-purchase_order_type_dashboard :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. @@ -66,6 +66,10 @@ Contributors - Bhavesh Heliconia +- `SolusiAglis `__ + + - Hudson Amadeus Leonardy + Maintainers ----------- @@ -87,6 +91,6 @@ Current `maintainer `__: |maintainer-dalonsod| -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_type_dashboard/__manifest__.py b/purchase_order_type_dashboard/__manifest__.py index 8fa3d165088..4a3b6ee6100 100644 --- a/purchase_order_type_dashboard/__manifest__.py +++ b/purchase_order_type_dashboard/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Order Type Dashboard", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "author": "Solvos, Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Purchase Management", diff --git a/purchase_order_type_dashboard/readme/CONTRIBUTORS.md b/purchase_order_type_dashboard/readme/CONTRIBUTORS.md index 6656b06541e..98512e39d9f 100644 --- a/purchase_order_type_dashboard/readme/CONTRIBUTORS.md +++ b/purchase_order_type_dashboard/readme/CONTRIBUTORS.md @@ -2,4 +2,5 @@ - Angel Rivas \<\> - [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) - Bhavesh Heliconia - +- [SolusiAglis](https://solusiaglis.co.id) + - Hudson Amadeus Leonardy \ No newline at end of file diff --git a/purchase_order_type_dashboard/static/description/index.html b/purchase_order_type_dashboard/static/description/index.html index cb08ef9fe5f..b9b73b27d19 100644 --- a/purchase_order_type_dashboard/static/description/index.html +++ b/purchase_order_type_dashboard/static/description/index.html @@ -374,7 +374,7 @@

Purchase Order Type Dashboard

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:4f418a2072e468d5f61a2c00bd6dce1aa70e28fdc1e265ef72cf44ef7133c829 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

Adds a dashboard for Purchase Orders based on Purchase Order Types.

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.

@@ -413,6 +413,10 @@

Contributors

  • Bhavesh Heliconia
  • +
  • SolusiAglis
      +
    • Hudson Amadeus Leonardy
    • +
    +
  • @@ -426,7 +430,7 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    dalonsod

    -

    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_type_dashboard/tests/test_purchase_order_type_dashboard.py b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py index 2f35da668aa..35f43a1fa69 100644 --- a/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py +++ b/purchase_order_type_dashboard/tests/test_purchase_order_type_dashboard.py @@ -1,10 +1,8 @@ # ?? 2021 Solvos Consultor??a Inform??tica () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -import time - +from odoo import fields from odoo.tests import tagged -from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT from odoo.addons.base.tests.common import BaseCommon @@ -15,19 +13,78 @@ class TestPurchaseOrderTypeDashboard(BaseCommon): def setUpClass(cls): super().setUpClass() cls.po_obj = cls.env["purchase.order"] + # Partner - cls.partner1 = cls.env.ref("base.res_partner_1") + cls.partner1 = cls.env["res.partner"].create( + { + "name": "Wood Corner", + "is_company": True, + "street": "1839 Arbor Way", + "city": "Turlock", + "email": "wood.corner26@example.com", + "phone": "(623)-853-7197", + } + ) + + cls.category_office = cls.env["product.category"].create( + { + "name": "Office Furniture", + } + ) + + cls.uom_unit = cls.env.ref("uom.product_uom_unit") + # Products - cls.product1 = cls.env.ref("product.product_product_7") - cls.product2 = cls.env.ref("product.product_product_9") - cls.product3 = cls.env.ref("product.product_product_11") + cls.product_storage_box = cls.env["product.product"].create( + { + "name": "Storage Box", + "categ_id": cls.category_office.id, + "standard_price": 14.0, + "list_price": 15.8, + "type": "consu", + "default_code": "E-COM08", + } + ) + + cls.product_pedal_bin = cls.env["product.product"].create( + { + "name": "Pedal Bin", + "categ_id": cls.category_office.id, + "standard_price": 10.0, + "list_price": 47.0, + "type": "consu", + "uom_id": cls.uom_unit.id, + "default_code": "E-COM10", + } + ) + + cls.product_conference_chair = cls.env["product.product"].create( + { + "name": "Conference Chair", + "categ_id": cls.category_office.id, + "standard_price": 28.0, + "list_price": 33.0, + "type": "consu", + "uom_id": cls.uom_unit.id, + "default_code": "E-COM12", + } + ) + # Purchase Type - cls.type1 = cls.env.ref("purchase_order_type.po_type_regular") + cls.type1 = cls.env["purchase.order.type"].create( + { + "name": "Regular", + } + ) def test_purchase_order_type_dashboard(self): po_type1_rfq_count = self.type1.state_rfq_po_count purchase = self._create_purchase( - [(self.product1, 1), (self.product2, 5), (self.product3, 8)] + [ + (self.product_storage_box, 1), + (self.product_pedal_bin, 5), + (self.product_conference_chair, 8), + ] ) self.assertEqual(self.type1.state_rfq_po_count, po_type1_rfq_count + 1) @@ -52,9 +109,9 @@ def _create_purchase(self, line_products): "name": product.name, "product_id": product.id, "product_qty": qty, - "product_uom": product.uom_id.id, + "product_uom_id": product.uom_id.id, "price_unit": 100, - "date_planned": time.strftime(DEFAULT_SERVER_DATETIME_FORMAT), + "date_planned": fields.Datetime.now(), } lines.append((0, 0, line_values)) purchase = self.po_obj.create(