From 6afd387ed594285f089cef8b4e04a33676214cf4 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 29 Aug 2019 15:29:16 +0200 Subject: [PATCH 01/35] [ADD] sale_order_invoicing_queued: Enqueue sales order invoicing This module allows to enqueue in several jobs the sales orders invoicing process to be executed in paralell on background, that's it's normally done serially and on foreground. Jobs are split following the same criteria as standard Odoo: grouping by order invoicing address and order currency. Installation ============ This module depends on *queue_job* module that is hosted on https://github.com/OCA/queue. Configuration ============= If you want to see queued jobs, you need "Job Queue / Job Queue Manager" permission in your user. Usage ===== * Go to *Sales > Invoicing > Orders to Invoice*. * Select sales orders whose invoicing you want to enqueue. * Click on *Action > Invoice Order*. * Click on "Enqueue Invoicing" button. * On that moment, jobs will be enqueued on foreground, but the control will be returned to you after that. * Having the "Job Queue Manager" permissions, you can go to the sales order, and see the tab "Invoicing Jobs". There a list with all the jobs related to that sales order can be found. Known issues / Roadmap ====================== * This module doesn't take into account any possible modification on grouping criteria, like all the modules that uses `sale_order_action_invoice_create_hook`. --- sale_order_invoicing_queued/README.rst | 115 +++++ sale_order_invoicing_queued/__init__.py | 4 + sale_order_invoicing_queued/__manifest__.py | 22 + sale_order_invoicing_queued/i18n/es.po | 63 +++ .../i18n/sale_order_invoicing_queued.pot | 57 +++ .../models/__init__.py | 4 + .../models/queue_job.py | 12 + .../models/sale_order.py | 31 ++ .../readme/CONFIGURE.rst | 5 + .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 6 + .../readme/INSTALL.rst | 2 + .../readme/ROADMAP.rst | 3 + sale_order_invoicing_queued/readme/USAGE.rst | 9 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 464 ++++++++++++++++++ sale_order_invoicing_queued/tests/__init__.py | 3 + .../tests/test_sale_order_invoicing_queued.py | 77 +++ .../views/queue_job_views.xml | 29 ++ .../views/sale_order_views.xml | 22 + .../wizards/__init__.py | 3 + .../wizards/sale_advance_payment_inv.py | 35 ++ .../sale_advance_payment_inv_views.xml | 14 + 23 files changed, 983 insertions(+) create mode 100644 sale_order_invoicing_queued/README.rst create mode 100644 sale_order_invoicing_queued/__init__.py create mode 100644 sale_order_invoicing_queued/__manifest__.py create mode 100644 sale_order_invoicing_queued/i18n/es.po create mode 100644 sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot create mode 100644 sale_order_invoicing_queued/models/__init__.py create mode 100644 sale_order_invoicing_queued/models/queue_job.py create mode 100644 sale_order_invoicing_queued/models/sale_order.py create mode 100644 sale_order_invoicing_queued/readme/CONFIGURE.rst create mode 100644 sale_order_invoicing_queued/readme/CONTRIBUTORS.rst create mode 100644 sale_order_invoicing_queued/readme/DESCRIPTION.rst create mode 100644 sale_order_invoicing_queued/readme/INSTALL.rst create mode 100644 sale_order_invoicing_queued/readme/ROADMAP.rst create mode 100644 sale_order_invoicing_queued/readme/USAGE.rst create mode 100644 sale_order_invoicing_queued/static/description/icon.png create mode 100644 sale_order_invoicing_queued/static/description/index.html create mode 100644 sale_order_invoicing_queued/tests/__init__.py create mode 100644 sale_order_invoicing_queued/tests/test_sale_order_invoicing_queued.py create mode 100644 sale_order_invoicing_queued/views/queue_job_views.xml create mode 100644 sale_order_invoicing_queued/views/sale_order_views.xml create mode 100644 sale_order_invoicing_queued/wizards/__init__.py create mode 100644 sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py create mode 100644 sale_order_invoicing_queued/wizards/sale_advance_payment_inv_views.xml diff --git a/sale_order_invoicing_queued/README.rst b/sale_order_invoicing_queued/README.rst new file mode 100644 index 00000000000..163ae275f52 --- /dev/null +++ b/sale_order_invoicing_queued/README.rst @@ -0,0 +1,115 @@ +============================= +Enqueue sales order invoicing +============================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Faccount--invoicing-lightgray.png?logo=github + :target: https://github.com/OCA/account-invoicing/tree/11.0/sale_order_invoicing_queued + :alt: OCA/account-invoicing +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-invoicing-11-0/account-invoicing-11-0-sale_order_invoicing_queued + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/95/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to enqueue in several jobs the sales orders invoicing +process to be executed in paralell on background, which is normally done +serially and on foreground. + +Jobs are split following the same criteria as standard Odoo: grouping by +order invoicing address and order currency. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module depends on *queue_job* module that is hosted on +https://github.com/OCA/queue. + +Configuration +============= + +Jobs are enqueued in the channel ``root.sale_order_invoicing_queued``, +so you must adjust your Odoo configuration according this. + +If you want to see queued jobs, you need "Job Queue / Job Queue Manager" +permission in your user. + +Usage +===== + +#. Go to *Sales > Invoicing > Orders to Invoice*. +#. Select sales orders whose invoicing you want to enqueue. +#. Click on *Action > Invoice Order*. +#. Click on "Enqueue Invoicing" button. +#. On that moment, jobs will be enqueued on foreground, but the control will + be returned to you after that. +#. Having the "Job Queue Manager" permissions, you can go to the sales order, + and see the tab "Invoicing Jobs". There a list with all the jobs related + to that sales order can be found. + +Known issues / Roadmap +====================== + +* This module doesn't take into account any possible modification on grouping + criteria, like all the modules that use + ``sale_order_action_invoice_create_hook``. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `__: + + * Pedro M. Baeza + +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/account-invoicing `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_order_invoicing_queued/__init__.py b/sale_order_invoicing_queued/__init__.py new file mode 100644 index 00000000000..7588e52c8cc --- /dev/null +++ b/sale_order_invoicing_queued/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models +from . import wizards diff --git a/sale_order_invoicing_queued/__manifest__.py b/sale_order_invoicing_queued/__manifest__.py new file mode 100644 index 00000000000..f7b2c53b8dc --- /dev/null +++ b/sale_order_invoicing_queued/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2019 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Enqueue sales order invoicing', + 'version': '11.0.1.0.0', + 'category': 'Sales Management', + 'license': 'AGPL-3', + 'author': 'Tecnativa, ' + 'Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/account-invoicing', + 'depends': [ + 'sale', + 'queue_job', + ], + 'data': [ + 'views/queue_job_views.xml', + 'views/sale_order_views.xml', + 'wizards/sale_advance_payment_inv_views.xml', + ], + 'installable': True, +} diff --git a/sale_order_invoicing_queued/i18n/es.po b/sale_order_invoicing_queued/i18n/es.po new file mode 100644 index 00000000000..d5e8a4d10af --- /dev/null +++ b/sale_order_invoicing_queued/i18n/es.po @@ -0,0 +1,63 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_order_invoicing_queued +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-08-29 16:09+0000\n" +"PO-Revision-Date: 2019-08-29 16:09+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sale_order_invoicing_queued +#: model:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing +msgid "Cancel" +msgstr "Cancelar" + +#. module: sale_order_invoicing_queued +#: model:ir.ui.view,arch_db:sale_order_invoicing_queued.view_sale_advance_payment_inv +msgid "Enqueue Invoicing" +msgstr "Encolar facturación" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order_invoicing_job_ids +#: model:ir.ui.view,arch_db:sale_order_invoicing_queued.view_order_form +msgid "Invoicing Jobs" +msgstr "Trabajos de facturación" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_queue_job +msgid "Queue Job" +msgstr "Trabajo en cola" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_sale_order +msgid "Quotation" +msgstr "Presupuesto" + +#. module: sale_order_invoicing_queued +#: model:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing +msgid "Requeue" +msgstr "Volver a poner en cola" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_sale_advance_payment_inv +msgid "Sales Advance Payment Invoice" +msgstr "Ventas. Anticipo pago factura" + +#. module: sale_order_invoicing_queued +#: code:addons/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py:26 +#, python-format +msgid "" +"There's already an enqueued job for invoicing the sales order %s. Please " +"wait until it's finished or remove it from the selection." +msgstr "" +"Ya existe un trabajo encolado para facturar el pedido de venta %s. Por favor " +"espera hasta que haya terminado o elimine el pedido de la selección." diff --git a/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot b/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot new file mode 100644 index 00000000000..9f4aa3774bc --- /dev/null +++ b/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot @@ -0,0 +1,57 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_order_invoicing_queued +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sale_order_invoicing_queued +#: model:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing +msgid "Cancel" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.ui.view,arch_db:sale_order_invoicing_queued.view_sale_advance_payment_inv +msgid "Enqueue Invoicing" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order_invoicing_job_ids +#: model:ir.ui.view,arch_db:sale_order_invoicing_queued.view_order_form +msgid "Invoicing Jobs" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_queue_job +msgid "Queue Job" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_sale_order +msgid "Quotation" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing +msgid "Requeue" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_sale_advance_payment_inv +msgid "Sales Advance Payment Invoice" +msgstr "" + +#. module: sale_order_invoicing_queued +#: code:addons/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py:26 +#, python-format +msgid "There's already an enqueued job for invoicing the sales order %s. Please wait until it's finished or remove it from the selection." +msgstr "" + diff --git a/sale_order_invoicing_queued/models/__init__.py b/sale_order_invoicing_queued/models/__init__.py new file mode 100644 index 00000000000..b53566c317c --- /dev/null +++ b/sale_order_invoicing_queued/models/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import queue_job +from . import sale_order diff --git a/sale_order_invoicing_queued/models/queue_job.py b/sale_order_invoicing_queued/models/queue_job.py new file mode 100644 index 00000000000..0a4ad521cb8 --- /dev/null +++ b/sale_order_invoicing_queued/models/queue_job.py @@ -0,0 +1,12 @@ +# Copyright 2019 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +from odoo import models + + +class QueueJob(models.Model): + _inherit = 'queue.job' + + def cancel(self): + self.filtered(lambda x: x.state in ['pending', 'enqueued']).unlink() diff --git a/sale_order_invoicing_queued/models/sale_order.py b/sale_order_invoicing_queued/models/sale_order.py new file mode 100644 index 00000000000..ffdbb3952b4 --- /dev/null +++ b/sale_order_invoicing_queued/models/sale_order.py @@ -0,0 +1,31 @@ +# Copyright 2019 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + +try: # The try can be removed in v12 as not needed + from odoo.addons.queue_job.job import job +except ImportError: + import logging + import functools + + logging.getLogger(__name__).debug("Can't `import queue_job`.") + + def job(*argv, **kwargs): + return functools.partial + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + invoicing_job_ids = fields.Many2many( + comodel_name='queue.job', + column1='order_id', + column2='job_id', + string="Invoicing Jobs", + copy=False, + ) + + @job(default_channel='root.sale_order_invoicing_queued') + def create_invoices_job(self, final): + self.action_invoice_create(final=final) diff --git a/sale_order_invoicing_queued/readme/CONFIGURE.rst b/sale_order_invoicing_queued/readme/CONFIGURE.rst new file mode 100644 index 00000000000..6ac44572ec4 --- /dev/null +++ b/sale_order_invoicing_queued/readme/CONFIGURE.rst @@ -0,0 +1,5 @@ +Jobs are enqueued in the channel ``root.sale_order_invoicing_queued``, +so you must adjust your Odoo configuration according this. + +If you want to see queued jobs, you need "Job Queue / Job Queue Manager" +permission in your user. diff --git a/sale_order_invoicing_queued/readme/CONTRIBUTORS.rst b/sale_order_invoicing_queued/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..2b13251bef4 --- /dev/null +++ b/sale_order_invoicing_queued/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `__: + + * Pedro M. Baeza diff --git a/sale_order_invoicing_queued/readme/DESCRIPTION.rst b/sale_order_invoicing_queued/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..eb83e648315 --- /dev/null +++ b/sale_order_invoicing_queued/readme/DESCRIPTION.rst @@ -0,0 +1,6 @@ +This module allows to enqueue in several jobs the sales orders invoicing +process to be executed in paralell on background, which is normally done +serially and on foreground. + +Jobs are split following the same criteria as standard Odoo: grouping by +order invoicing address and order currency. diff --git a/sale_order_invoicing_queued/readme/INSTALL.rst b/sale_order_invoicing_queued/readme/INSTALL.rst new file mode 100644 index 00000000000..c8d5b2fea2b --- /dev/null +++ b/sale_order_invoicing_queued/readme/INSTALL.rst @@ -0,0 +1,2 @@ +This module depends on *queue_job* module that is hosted on +https://github.com/OCA/queue. diff --git a/sale_order_invoicing_queued/readme/ROADMAP.rst b/sale_order_invoicing_queued/readme/ROADMAP.rst new file mode 100644 index 00000000000..4a8a4171b1c --- /dev/null +++ b/sale_order_invoicing_queued/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +* This module doesn't take into account any possible modification on grouping + criteria, like all the modules that use + ``sale_order_action_invoice_create_hook``. diff --git a/sale_order_invoicing_queued/readme/USAGE.rst b/sale_order_invoicing_queued/readme/USAGE.rst new file mode 100644 index 00000000000..a63cf180fab --- /dev/null +++ b/sale_order_invoicing_queued/readme/USAGE.rst @@ -0,0 +1,9 @@ +#. Go to *Sales > Invoicing > Orders to Invoice*. +#. Select sales orders whose invoicing you want to enqueue. +#. Click on *Action > Invoice Order*. +#. Click on "Enqueue Invoicing" button. +#. On that moment, jobs will be enqueued on foreground, but the control will + be returned to you after that. +#. Having the "Job Queue Manager" permissions, you can go to the sales order, + and see the tab "Invoicing Jobs". There a list with all the jobs related + to that sales order can be found. diff --git a/sale_order_invoicing_queued/static/description/icon.png b/sale_order_invoicing_queued/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/sale_order_invoicing_queued/static/description/index.html b/sale_order_invoicing_queued/static/description/index.html new file mode 100644 index 00000000000..cbd51f76c8c --- /dev/null +++ b/sale_order_invoicing_queued/static/description/index.html @@ -0,0 +1,464 @@ + + + + + + +Enqueue sales order invoicing + + + +
+

Enqueue sales order invoicing

+ + +

Beta License: AGPL-3 OCA/account-invoicing Translate me on Weblate Try me on Runbot

+

This module allows to enqueue in several jobs the sales orders invoicing +process to be executed in paralell on background, which is normally done +serially and on foreground.

+

Jobs are split following the same criteria as standard Odoo: grouping by +order invoicing address and order currency.

+

Table of contents

+ +
+

Installation

+

This module depends on queue_job module that is hosted on +https://github.com/OCA/queue.

+
+
+

Configuration

+

Jobs are enqueued in the channel root.sale_order_invoicing_queued, +so you must adjust your Odoo configuration according this.

+

If you want to see queued jobs, you need “Job Queue / Job Queue Manager” +permission in your user.

+
+
+

Usage

+
    +
  1. Go to Sales > Invoicing > Orders to Invoice.
  2. +
  3. Select sales orders whose invoicing you want to enqueue.
  4. +
  5. Click on Action > Invoice Order.
  6. +
  7. Click on “Enqueue Invoicing” button.
  8. +
  9. On that moment, jobs will be enqueued on foreground, but the control will +be returned to you after that.
  10. +
  11. Having the “Job Queue Manager” permissions, you can go to the sales order, +and see the tab “Invoicing Jobs”. There a list with all the jobs related +to that sales order can be found.
  12. +
+
+
+

Known issues / Roadmap

+
    +
  • This module doesn’t take into account any possible modification on grouping +criteria, like all the modules that use +sale_order_action_invoice_create_hook.
  • +
+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

This module is part of the OCA/account-invoicing project on GitHub.

+

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

+
+
+
+ + diff --git a/sale_order_invoicing_queued/tests/__init__.py b/sale_order_invoicing_queued/tests/__init__.py new file mode 100644 index 00000000000..720608f43b5 --- /dev/null +++ b/sale_order_invoicing_queued/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_sale_order_invoicing_queued diff --git a/sale_order_invoicing_queued/tests/test_sale_order_invoicing_queued.py b/sale_order_invoicing_queued/tests/test_sale_order_invoicing_queued.py new file mode 100644 index 00000000000..061c805222c --- /dev/null +++ b/sale_order_invoicing_queued/tests/test_sale_order_invoicing_queued.py @@ -0,0 +1,77 @@ +# Copyright 2019 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import exceptions +from odoo.tests import SavepointCase + + +class TestSaleOrderInvoicingQueue(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.wizard_obj = cls.env['sale.advance.payment.inv'] + cls.queue_obj = cls.env['queue.job'] + cls.partner = cls.env['res.partner'].create({'name': 'Test partner'}) + cls.partner2 = cls.env['res.partner'].create({'name': 'Other partner'}) + cls.product = cls.env['product.product'].create({ + 'name': 'Test product', + 'type': 'service', + 'invoice_policy': 'order', + }) + cls.order = cls.env['sale.order'].create({ + 'partner_id': cls.partner.id, + 'partner_shipping_id': cls.partner.id, + 'partner_invoice_id': cls.partner.id, + 'pricelist_id': cls.partner.property_product_pricelist.id, + 'order_line': [ + (0, 0, { + 'name': cls.product.name, + 'product_id': cls.product.id, + 'price_unit': 20, + 'product_uom_qty': 1, + 'product_uom': cls.product.uom_id.id, + }), + ] + }) + cls.order.action_confirm() + cls.order2 = cls.order.copy({'partner_invoice_id': cls.partner2.id}) + cls.order2.action_confirm() + + def test_queue_invoicing(self): + wizard = self.wizard_obj.with_context( + active_ids=(self.order + self.order2).ids, + active_model=self.order._name, + ).create({}) + prev_jobs = self.queue_obj.search([]) + wizard.enqueue_invoices() + current_jobs = self.queue_obj.search([]) + jobs = current_jobs - prev_jobs + self.assertEqual(len(jobs), 2) + self.assertTrue(self.order.invoicing_job_ids) + self.assertTrue(self.order2.invoicing_job_ids) + self.assertNotEqual( + self.order.invoicing_job_ids, self.order2.invoicing_job_ids + ) + # Remove job + self.order.invoicing_job_ids.cancel() + self.assertFalse(self.order.invoicing_job_ids.exists()) + # Try to enqueue invoicing again + with self.assertRaises(exceptions.UserError): + wizard.enqueue_invoices() + + def test_direct_invoicing(self): + # Test methods that produces directly invoices + wizard = self.wizard_obj.with_context( + active_ids=self.order.ids, + active_model=self.order._name, + ).create({ + 'advance_payment_method': 'percentage', + 'amount': 50, + }) + wizard.enqueue_invoices() + self.assertTrue(self.order.invoice_ids) + + def test_invoicing(self): + # Execute method directly for checking if invoicing is done + self.order.create_invoices_job(True) + self.assertTrue(self.order.invoice_ids) diff --git a/sale_order_invoicing_queued/views/queue_job_views.xml b/sale_order_invoicing_queued/views/queue_job_views.xml new file mode 100644 index 00000000000..482d875abb3 --- /dev/null +++ b/sale_order_invoicing_queued/views/queue_job_views.xml @@ -0,0 +1,29 @@ + + + + + queue.job + + + + + + + + + + + From 6319b723d5aa8f341396adb8169dfd5b9fb13f1d Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Mon, 9 Sep 2019 16:35:45 +0200 Subject: [PATCH 02/35] [IMP] *_queued: Remove `cancel` method + use same user --- sale_order_invoicing_queued/__manifest__.py | 2 +- sale_order_invoicing_queued/i18n/es.po | 8 +++----- .../i18n/sale_order_invoicing_queued.pot | 5 ----- sale_order_invoicing_queued/models/__init__.py | 1 - sale_order_invoicing_queued/models/queue_job.py | 12 ------------ .../tests/test_sale_order_invoicing_queued.py | 3 --- .../views/queue_job_views.xml | 2 +- .../wizards/sale_advance_payment_inv.py | 2 +- 8 files changed, 6 insertions(+), 29 deletions(-) delete mode 100644 sale_order_invoicing_queued/models/queue_job.py diff --git a/sale_order_invoicing_queued/__manifest__.py b/sale_order_invoicing_queued/__manifest__.py index f7b2c53b8dc..da71bb86ede 100644 --- a/sale_order_invoicing_queued/__manifest__.py +++ b/sale_order_invoicing_queued/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'Enqueue sales order invoicing', - 'version': '11.0.1.0.0', + 'version': '11.0.1.1.0', 'category': 'Sales Management', 'license': 'AGPL-3', 'author': 'Tecnativa, ' diff --git a/sale_order_invoicing_queued/i18n/es.po b/sale_order_invoicing_queued/i18n/es.po index d5e8a4d10af..beb943cdf44 100644 --- a/sale_order_invoicing_queued/i18n/es.po +++ b/sale_order_invoicing_queued/i18n/es.po @@ -32,11 +32,6 @@ msgstr "Encolar facturación" msgid "Invoicing Jobs" msgstr "Trabajos de facturación" -#. module: sale_order_invoicing_queued -#: model:ir.model,name:sale_order_invoicing_queued.model_queue_job -msgid "Queue Job" -msgstr "Trabajo en cola" - #. module: sale_order_invoicing_queued #: model:ir.model,name:sale_order_invoicing_queued.model_sale_order msgid "Quotation" @@ -61,3 +56,6 @@ msgid "" msgstr "" "Ya existe un trabajo encolado para facturar el pedido de venta %s. Por favor " "espera hasta que haya terminado o elimine el pedido de la selección." + +#~ msgid "Queue Job" +#~ msgstr "Trabajo en cola" diff --git a/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot b/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot index 9f4aa3774bc..2213f9b3267 100644 --- a/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot +++ b/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot @@ -29,11 +29,6 @@ msgstr "" msgid "Invoicing Jobs" msgstr "" -#. module: sale_order_invoicing_queued -#: model:ir.model,name:sale_order_invoicing_queued.model_queue_job -msgid "Queue Job" -msgstr "" - #. module: sale_order_invoicing_queued #: model:ir.model,name:sale_order_invoicing_queued.model_sale_order msgid "Quotation" diff --git a/sale_order_invoicing_queued/models/__init__.py b/sale_order_invoicing_queued/models/__init__.py index b53566c317c..d1d09e0213d 100644 --- a/sale_order_invoicing_queued/models/__init__.py +++ b/sale_order_invoicing_queued/models/__init__.py @@ -1,4 +1,3 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import queue_job from . import sale_order diff --git a/sale_order_invoicing_queued/models/queue_job.py b/sale_order_invoicing_queued/models/queue_job.py deleted file mode 100644 index 0a4ad521cb8..00000000000 --- a/sale_order_invoicing_queued/models/queue_job.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2019 Tecnativa - Pedro M. Baeza -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - - -from odoo import models - - -class QueueJob(models.Model): - _inherit = 'queue.job' - - def cancel(self): - self.filtered(lambda x: x.state in ['pending', 'enqueued']).unlink() diff --git a/sale_order_invoicing_queued/tests/test_sale_order_invoicing_queued.py b/sale_order_invoicing_queued/tests/test_sale_order_invoicing_queued.py index 061c805222c..6d18dfd2f06 100644 --- a/sale_order_invoicing_queued/tests/test_sale_order_invoicing_queued.py +++ b/sale_order_invoicing_queued/tests/test_sale_order_invoicing_queued.py @@ -52,9 +52,6 @@ def test_queue_invoicing(self): self.assertNotEqual( self.order.invoicing_job_ids, self.order2.invoicing_job_ids ) - # Remove job - self.order.invoicing_job_ids.cancel() - self.assertFalse(self.order.invoicing_job_ids.exists()) # Try to enqueue invoicing again with self.assertRaises(exceptions.UserError): wizard.enqueue_invoices() diff --git a/sale_order_invoicing_queued/views/queue_job_views.xml b/sale_order_invoicing_queued/views/queue_job_views.xml index 482d875abb3..57fa5a6031f 100644 --- a/sale_order_invoicing_queued/views/queue_job_views.xml +++ b/sale_order_invoicing_queued/views/queue_job_views.xml @@ -17,7 +17,7 @@ class="oe_highlight" attrs="{'invisible': [('state', '!=', 'failed')]}"/> From 754cecdf18451646cec46a9ce8b47e5c65e4e8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ana=20Su=C3=A1rez?= Date: Wed, 10 Mar 2021 09:06:55 +0000 Subject: [PATCH 12/35] Translated using Weblate (Spanish) Currently translated at 100.0% (7 of 7 strings) Translation: account-invoicing-13.0/account-invoicing-13.0-sale_order_invoicing_queued Translate-URL: https://translation.odoo-community.org/projects/account-invoicing-13-0/account-invoicing-13-0-sale_order_invoicing_queued/es/ --- sale_order_invoicing_queued/i18n/es.po | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sale_order_invoicing_queued/i18n/es.po b/sale_order_invoicing_queued/i18n/es.po index a8703eb78a4..6159e3b0681 100644 --- a/sale_order_invoicing_queued/i18n/es.po +++ b/sale_order_invoicing_queued/i18n/es.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-08-29 16:09+0000\n" -"PO-Revision-Date: 2019-08-29 16:09+0000\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2021-03-10 10:46+0000\n" +"Last-Translator: Ana Suárez \n" "Language-Team: \n" -"Language: \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: sale_order_invoicing_queued #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing @@ -45,7 +46,7 @@ msgstr "Ventas. Anticipo pago factura" #. module: sale_order_invoicing_queued #: model:ir.model,name:sale_order_invoicing_queued.model_sale_order msgid "Sales Order" -msgstr "" +msgstr "Pedido de venta" #. module: sale_order_invoicing_queued #: code:addons/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py:0 From f6467b32cb01e3376fc3e4d9bc52bdd79eb0e1fc Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Fri, 16 Apr 2021 13:31:01 +0200 Subject: [PATCH 13/35] [FIX] sale_order_invoicing_queued: Proper grouping criteria + compatibility with OCA module The previous group key generator was not properly populated. And also provide compatibility with module sale_order_invoicing_grouping_criteria module. --- sale_order_invoicing_queued/__manifest__.py | 2 +- .../wizards/sale_advance_payment_inv.py | 20 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/sale_order_invoicing_queued/__manifest__.py b/sale_order_invoicing_queued/__manifest__.py index ea86a36a874..a9ad1a7518d 100644 --- a/sale_order_invoicing_queued/__manifest__.py +++ b/sale_order_invoicing_queued/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Enqueue sales order invoicing", - "version": "13.0.2.0.0", + "version": "13.0.2.0.1", "category": "Sales Management", "license": "AGPL-3", "author": "Tecnativa, " "Odoo Community Association (OCA)", diff --git a/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py b/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py index bb985f040c1..059621b01f8 100644 --- a/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py +++ b/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py @@ -1,4 +1,4 @@ -# Copyright 2019-2020 Tecnativa - Pedro M. Baeza +# Copyright 2019-2021 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from collections import defaultdict @@ -20,10 +20,20 @@ def enqueue_invoices(self): sale_orders = order_obj.browse(context.get("active_ids", [])) grouped_orders = defaultdict(lambda: order_obj.browse()) for order in sale_orders: - group_key = ( - order[grouping_key] - for grouping_key in order._get_invoice_grouping_keys() - ) + # If we have `sale_order_invoicing_grouping_criteria` module + # installed, we take that grouping criteria + if hasattr(order, "_get_sale_invoicing_group_key"): + group_key = order._get_sale_invoicing_group_key() + else: + # HACK: This is not exactly doing the same as upstream, as we + # apply fields over order, not invoice vals, but serves for + # standard case and most of the transferred fields + group_key = tuple( + [ + order[grouping_key] + for grouping_key in order._get_invoice_grouping_keys() + ] + ) if order.invoicing_job_ids.filtered( lambda x: x.state in {"pending", "enqueued", "started"} ): From 99b6a4eda03ca62567452584e93d54cefaa5ba2c Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Fri, 16 Apr 2021 19:48:05 +0200 Subject: [PATCH 14/35] [FIX] sale_order_invoicing_queued: Fix mapping fields Order `partner_invoice_id` fields is transferred to `partner_id`, so when seeing grouping keys at order level, we need to remap the grouping key. --- .../wizards/sale_advance_payment_inv.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py b/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py index 059621b01f8..b25bef9ed2c 100644 --- a/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py +++ b/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py @@ -27,10 +27,13 @@ def enqueue_invoices(self): else: # HACK: This is not exactly doing the same as upstream, as we # apply fields over order, not invoice vals, but serves for - # standard case and most of the transferred fields + # standard case and most of the transferred fields mapping them. + # This is done this way for not needing to build 2 times the + # same vals dictionary. + field_mapping = {"partner_id": "partner_invoice_id"} group_key = tuple( [ - order[grouping_key] + order[field_mapping.get(grouping_key, grouping_key)] for grouping_key in order._get_invoice_grouping_keys() ] ) From 67589839a007cdbef3156743b770fbf7241fcf74 Mon Sep 17 00:00:00 2001 From: iwkse Date: Mon, 13 Dec 2021 19:04:20 +0100 Subject: [PATCH 15/35] [14.0] MIG sale_order_invoicing_queued --- sale_order_invoicing_queued/__manifest__.py | 3 ++- sale_order_invoicing_queued/data/job_queue.xml | 17 +++++++++++++++++ .../models/sale_order.py | 3 --- 3 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 sale_order_invoicing_queued/data/job_queue.xml diff --git a/sale_order_invoicing_queued/__manifest__.py b/sale_order_invoicing_queued/__manifest__.py index a9ad1a7518d..f1c688c86ae 100644 --- a/sale_order_invoicing_queued/__manifest__.py +++ b/sale_order_invoicing_queued/__manifest__.py @@ -3,13 +3,14 @@ { "name": "Enqueue sales order invoicing", - "version": "13.0.2.0.1", + "version": "14.0.1.0.0", "category": "Sales Management", "license": "AGPL-3", "author": "Tecnativa, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/account-invoicing", "depends": ["sale", "queue_job"], "data": [ + "data/job_queue.xml", "views/queue_job_views.xml", "views/sale_order_views.xml", "wizards/sale_advance_payment_inv_views.xml", diff --git a/sale_order_invoicing_queued/data/job_queue.xml b/sale_order_invoicing_queued/data/job_queue.xml new file mode 100644 index 00000000000..3b5a94cdac3 --- /dev/null +++ b/sale_order_invoicing_queued/data/job_queue.xml @@ -0,0 +1,17 @@ + + + + + + Invoice Job + + + + + + + create_invoices_job + + + + diff --git a/sale_order_invoicing_queued/models/sale_order.py b/sale_order_invoicing_queued/models/sale_order.py index 4d431453d5b..a0de0a03988 100644 --- a/sale_order_invoicing_queued/models/sale_order.py +++ b/sale_order_invoicing_queued/models/sale_order.py @@ -3,8 +3,6 @@ from odoo import fields, models -from odoo.addons.queue_job.job import job - class SaleOrder(models.Model): _inherit = "sale.order" @@ -17,6 +15,5 @@ class SaleOrder(models.Model): copy=False, ) - @job(default_channel="root.sale_order_invoicing_queued") def create_invoices_job(self, final): self._create_invoices(final=final) From b2a4bdc2d14e0f619ecff7a1779e5591ba594b55 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 14 Dec 2021 13:43:30 +0000 Subject: [PATCH 16/35] [UPD] Update sale_order_invoicing_queued.pot --- .../i18n/sale_order_invoicing_queued.pot | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot b/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot index e1aa36d47bd..ba68394a6c8 100644 --- a/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.pot +++ b/sale_order_invoicing_queued/i18n/sale_order_invoicing_queued.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" @@ -18,17 +18,35 @@ msgstr "" msgid "Cancel" msgstr "" +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__display_name +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__display_name +msgid "Display Name" +msgstr "" + #. module: sale_order_invoicing_queued #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_sale_advance_payment_inv msgid "Enqueue Invoicing" msgstr "" +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__id +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__id +msgid "ID" +msgstr "" + #. module: sale_order_invoicing_queued #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__invoicing_job_ids #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_order_form msgid "Invoicing Jobs" msgstr "" +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv____last_update +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order____last_update +msgid "Last Modified on" +msgstr "" + #. module: sale_order_invoicing_queued #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing msgid "Requeue" From 5c041bb5458d9803470bbfd38d925bc421217a6d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 14 Dec 2021 13:57:37 +0000 Subject: [PATCH 17/35] [UPD] README.rst --- sale_order_invoicing_queued/README.rst | 10 +++++----- .../static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sale_order_invoicing_queued/README.rst b/sale_order_invoicing_queued/README.rst index 4773f235c44..5c12da1c0a3 100644 --- a/sale_order_invoicing_queued/README.rst +++ b/sale_order_invoicing_queued/README.rst @@ -14,13 +14,13 @@ Enqueue sales order invoicing :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--invoicing-lightgray.png?logo=github - :target: https://github.com/OCA/account-invoicing/tree/13.0/sale_order_invoicing_queued + :target: https://github.com/OCA/account-invoicing/tree/14.0/sale_order_invoicing_queued :alt: OCA/account-invoicing .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/account-invoicing-13-0/account-invoicing-13-0-sale_order_invoicing_queued + :target: https://translation.odoo-community.org/projects/account-invoicing-14-0/account-invoicing-14-0-sale_order_invoicing_queued :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/95/13.0 + :target: https://runbot.odoo-community.org/runbot/95/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -74,7 +74,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. @@ -106,6 +106,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/account-invoicing `_ project on GitHub. +This module is part of the `OCA/account-invoicing `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_order_invoicing_queued/static/description/index.html b/sale_order_invoicing_queued/static/description/index.html index 20f98d49851..62e13be80ab 100644 --- a/sale_order_invoicing_queued/static/description/index.html +++ b/sale_order_invoicing_queued/static/description/index.html @@ -367,7 +367,7 @@

Enqueue sales order invoicing

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

Beta License: AGPL-3 OCA/account-invoicing Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/account-invoicing Translate me on Weblate Try me on Runbot

This module allows to enqueue in several jobs the sales orders invoicing process to be executed in paralell on background, which is normally done serially and on foreground.

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

@@ -448,7 +448,7 @@

Maintainers

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

-

This module is part of the OCA/account-invoicing project on GitHub.

+

This module is part of the OCA/account-invoicing project on GitHub.

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

From c91bda70e25ddc4b3118a2281395d4b160357c93 Mon Sep 17 00:00:00 2001 From: Francesco Foresti Date: Thu, 16 Dec 2021 11:53:39 +0000 Subject: [PATCH 18/35] Added translation using Weblate (Italian) --- sale_order_invoicing_queued/i18n/it.po | 72 ++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 sale_order_invoicing_queued/i18n/it.po diff --git a/sale_order_invoicing_queued/i18n/it.po b/sale_order_invoicing_queued/i18n/it.po new file mode 100644 index 00000000000..32c863dc3a8 --- /dev/null +++ b/sale_order_invoicing_queued/i18n/it.po @@ -0,0 +1,72 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_order_invoicing_queued +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: sale_order_invoicing_queued +#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing +msgid "Cancel" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__display_name +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_sale_advance_payment_inv +msgid "Enqueue Invoicing" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__id +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__id +msgid "ID" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__invoicing_job_ids +#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_order_form +msgid "Invoicing Jobs" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv____last_update +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order____last_update +msgid "Last Modified on" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing +msgid "Requeue" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_sale_advance_payment_inv +msgid "Sales Advance Payment Invoice" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: sale_order_invoicing_queued +#: code:addons/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py:0 +#, python-format +msgid "" +"There's already an enqueued job for invoicing the sales order %s. Please " +"wait until it's finished or remove it from the selection." +msgstr "" From fe2c587b43235ad925eecbc114a3d1e381273381 Mon Sep 17 00:00:00 2001 From: Francesco Foresti Date: Thu, 16 Dec 2021 11:56:18 +0000 Subject: [PATCH 19/35] Translated using Weblate (Italian) Currently translated at 100.0% (10 of 10 strings) Translation: account-invoicing-14.0/account-invoicing-14.0-sale_order_invoicing_queued Translate-URL: https://translation.odoo-community.org/projects/account-invoicing-14-0/account-invoicing-14-0-sale_order_invoicing_queued/it/ --- sale_order_invoicing_queued/i18n/it.po | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/sale_order_invoicing_queued/i18n/it.po b/sale_order_invoicing_queued/i18n/it.po index 32c863dc3a8..20a5b3416e2 100644 --- a/sale_order_invoicing_queued/i18n/it.po +++ b/sale_order_invoicing_queued/i18n/it.po @@ -6,62 +6,64 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2021-12-16 14:39+0000\n" +"Last-Translator: Francesco Foresti \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: sale_order_invoicing_queued #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: sale_order_invoicing_queued #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__display_name #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__display_name msgid "Display Name" -msgstr "" +msgstr "Nome da visualizzare" #. module: sale_order_invoicing_queued #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_sale_advance_payment_inv msgid "Enqueue Invoicing" -msgstr "" +msgstr "Metti in coda la fatturazione" #. module: sale_order_invoicing_queued #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__id #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__id msgid "ID" -msgstr "" +msgstr "ID" #. module: sale_order_invoicing_queued #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__invoicing_job_ids #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_order_form msgid "Invoicing Jobs" -msgstr "" +msgstr "Jobs Fatturazione" #. module: sale_order_invoicing_queued #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv____last_update #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: sale_order_invoicing_queued #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing msgid "Requeue" -msgstr "" +msgstr "Rimetti in coda" #. module: sale_order_invoicing_queued #: model:ir.model,name:sale_order_invoicing_queued.model_sale_advance_payment_inv msgid "Sales Advance Payment Invoice" -msgstr "" +msgstr "Fattura Acconto Vendita" #. module: sale_order_invoicing_queued #: model:ir.model,name:sale_order_invoicing_queued.model_sale_order msgid "Sales Order" -msgstr "" +msgstr "Ordine di vendita" #. module: sale_order_invoicing_queued #: code:addons/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py:0 @@ -70,3 +72,5 @@ msgid "" "There's already an enqueued job for invoicing the sales order %s. Please " "wait until it's finished or remove it from the selection." msgstr "" +"Esiste già un job in coda per fatturare l'ordine di vendita %s. Attendi che " +"sia finito o rimuovilo dalla selezione." From 7942149f5aceab0ceb0a4d0851b5ff54c4ca81ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dept=2E=20T=C3=A9cnico?= Date: Wed, 9 Feb 2022 10:26:37 +0000 Subject: [PATCH 20/35] Added translation using Weblate (Catalan) --- sale_order_invoicing_queued/i18n/ca.po | 72 ++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 sale_order_invoicing_queued/i18n/ca.po diff --git a/sale_order_invoicing_queued/i18n/ca.po b/sale_order_invoicing_queued/i18n/ca.po new file mode 100644 index 00000000000..6bd9dfcd269 --- /dev/null +++ b/sale_order_invoicing_queued/i18n/ca.po @@ -0,0 +1,72 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_order_invoicing_queued +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: sale_order_invoicing_queued +#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing +msgid "Cancel" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__display_name +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_sale_advance_payment_inv +msgid "Enqueue Invoicing" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__id +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__id +msgid "ID" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__invoicing_job_ids +#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_order_form +msgid "Invoicing Jobs" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv____last_update +#: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order____last_update +msgid "Last Modified on" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing +msgid "Requeue" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_sale_advance_payment_inv +msgid "Sales Advance Payment Invoice" +msgstr "" + +#. module: sale_order_invoicing_queued +#: model:ir.model,name:sale_order_invoicing_queued.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: sale_order_invoicing_queued +#: code:addons/sale_order_invoicing_queued/wizards/sale_advance_payment_inv.py:0 +#, python-format +msgid "" +"There's already an enqueued job for invoicing the sales order %s. Please " +"wait until it's finished or remove it from the selection." +msgstr "" From 0d5af82f5bf6516b09c9f97c267b739eb02ddcf9 Mon Sep 17 00:00:00 2001 From: mymage Date: Thu, 30 Mar 2023 11:45:25 +0000 Subject: [PATCH 21/35] Translated using Weblate (Italian) Currently translated at 100.0% (10 of 10 strings) Translation: account-invoicing-14.0/account-invoicing-14.0-sale_order_invoicing_queued Translate-URL: https://translation.odoo-community.org/projects/account-invoicing-14-0/account-invoicing-14-0-sale_order_invoicing_queued/it/ --- sale_order_invoicing_queued/i18n/it.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sale_order_invoicing_queued/i18n/it.po b/sale_order_invoicing_queued/i18n/it.po index 20a5b3416e2..376297386d7 100644 --- a/sale_order_invoicing_queued/i18n/it.po +++ b/sale_order_invoicing_queued/i18n/it.po @@ -6,15 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2021-12-16 14:39+0000\n" -"Last-Translator: Francesco Foresti \n" +"PO-Revision-Date: 2023-03-30 13:22+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.3.2\n" +"X-Generator: Weblate 4.14.1\n" #. module: sale_order_invoicing_queued #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_queue_job_sale_order_invoicing @@ -25,7 +25,7 @@ msgstr "Annulla" #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_advance_payment_inv__display_name #: model:ir.model.fields,field_description:sale_order_invoicing_queued.field_sale_order__display_name msgid "Display Name" -msgstr "Nome da visualizzare" +msgstr "Nome visualizzato" #. module: sale_order_invoicing_queued #: model_terms:ir.ui.view,arch_db:sale_order_invoicing_queued.view_sale_advance_payment_inv From 6021f2a4fcab63f0d96a7c54a586aee162420091 Mon Sep 17 00:00:00 2001 From: Francesco Foresti Date: Fri, 7 Apr 2023 11:19:32 +0000 Subject: [PATCH 22/35] Translated using Weblate (Italian) Currently translated at 100.0% (10 of 10 strings) Translation: account-invoicing-14.0/account-invoicing-14.0-sale_order_invoicing_queued Translate-URL: https://translation.odoo-community.org/projects/account-invoicing-14-0/account-invoicing-14-0-sale_order_invoicing_queued/it/ --- sale_order_invoicing_queued/i18n/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sale_order_invoicing_queued/i18n/it.po b/sale_order_invoicing_queued/i18n/it.po index 376297386d7..26dc33f85cd 100644 --- a/sale_order_invoicing_queued/i18n/it.po +++ b/sale_order_invoicing_queued/i18n/it.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-03-30 13:22+0000\n" -"Last-Translator: mymage \n" +"PO-Revision-Date: 2023-04-07 13:24+0000\n" +"Last-Translator: Francesco Foresti \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" @@ -58,7 +58,7 @@ msgstr "Rimetti in coda" #. module: sale_order_invoicing_queued #: model:ir.model,name:sale_order_invoicing_queued.model_sale_advance_payment_inv msgid "Sales Advance Payment Invoice" -msgstr "Fattura Acconto Vendita" +msgstr "Fattura di vendita con pagamento anticipato" #. module: sale_order_invoicing_queued #: model:ir.model,name:sale_order_invoicing_queued.model_sale_order From c1930d4693976bb3acd8f1a4d2f303ca2d0706a2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 11:32:57 +0000 Subject: [PATCH 23/35] [UPD] README.rst --- sale_order_invoicing_queued/README.rst | 15 +++--- .../static/description/index.html | 46 ++++++++++--------- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/sale_order_invoicing_queued/README.rst b/sale_order_invoicing_queued/README.rst index 5c12da1c0a3..a291a53076b 100644 --- a/sale_order_invoicing_queued/README.rst +++ b/sale_order_invoicing_queued/README.rst @@ -2,10 +2,13 @@ Enqueue sales order invoicing ============================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:15516e0069cdb135da984b521dabda0022da82f74db24297ecd154a4db3c0b5e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Enqueue sales order invoicing .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/account-invoicing-14-0/account-invoicing-14-0-sale_order_invoicing_queued :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/95/14.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/account-invoicing&target_branch=14.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module allows to enqueue in several jobs the sales orders invoicing process to be executed in paralell on background, which is normally done @@ -73,7 +76,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/sale_order_invoicing_queued/static/description/index.html b/sale_order_invoicing_queued/static/description/index.html index 62e13be80ab..f58672f9019 100644 --- a/sale_order_invoicing_queued/static/description/index.html +++ b/sale_order_invoicing_queued/static/description/index.html @@ -1,20 +1,20 @@ - + - + Enqueue sales order invoicing