diff --git a/contract_invoice_force_date/README.rst b/contract_invoice_force_date/README.rst new file mode 100644 index 0000000000..c63abe3930 --- /dev/null +++ b/contract_invoice_force_date/README.rst @@ -0,0 +1,100 @@ +=========================== +Contract Invoice Force Date +=========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:273df0ecaddc984d18706a149eb06a39fe986bb34c5bd1035a6c04e0d736be6d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fcontract-lightgray.png?logo=github + :target: https://github.com/OCA/contract/tree/18.0/contract_invoice_force_date + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-18-0/contract-18-0-contract_invoice_force_date + :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/contract&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Allow the user to set a different date on the generated invoice than the +contract's recurring date. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +1. Go to *Accounting* > Customers/Vendors > Manually invoice contracts +2. In the popup, choose invoicing date to select contracts to invoice +3. If contracts are available to invoice, you can set **Date to set on + Invoice** |img.png| +4. **Create Invoices** +5. The invoices are generated with the date chosen |img_1.png| + +.. |img.png| image:: https://raw.githubusercontent.com/OCA/contract/18.0/contract_invoice_force_date/static/img/invoice_wizard.png +.. |img_1.png| image:: https://raw.githubusercontent.com/OCA/contract/18.0/contract_invoice_force_date/static/img/invoice.png + +Changelog +========= + +18.0.1.0.0 (2026-02-13) +----------------------- + +- Add module + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* ACSONE SA/NV + +Contributors +------------ + +- Tobias Zehntner tobias.zehntner@acsone.eu (https://www.acsone.eu) + +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/contract `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/contract_invoice_force_date/__init__.py b/contract_invoice_force_date/__init__.py new file mode 100644 index 0000000000..5cb1c49143 --- /dev/null +++ b/contract_invoice_force_date/__init__.py @@ -0,0 +1 @@ +from . import wizards diff --git a/contract_invoice_force_date/__manifest__.py b/contract_invoice_force_date/__manifest__.py new file mode 100644 index 0000000000..a528ee5875 --- /dev/null +++ b/contract_invoice_force_date/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2026 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Contract Invoice Force Date", + "summary": """Choose invoicing date when manually invoicing contracts""", + "version": "18.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/contract", + "depends": [ + "contract", + ], + "data": [ + "wizards/contract_manually_create_invoice.xml", + ], +} diff --git a/contract_invoice_force_date/pyproject.toml b/contract_invoice_force_date/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/contract_invoice_force_date/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/contract_invoice_force_date/readme/CONTRIBUTORS.md b/contract_invoice_force_date/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..bf0f2b8122 --- /dev/null +++ b/contract_invoice_force_date/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- Tobias Zehntner (https://www.acsone.eu) diff --git a/contract_invoice_force_date/readme/DESCRIPTION.md b/contract_invoice_force_date/readme/DESCRIPTION.md new file mode 100644 index 0000000000..605c631c44 --- /dev/null +++ b/contract_invoice_force_date/readme/DESCRIPTION.md @@ -0,0 +1 @@ +Allow the user to set a different date on the generated invoice than the contract's recurring date. diff --git a/contract_invoice_force_date/readme/HISTORY.md b/contract_invoice_force_date/readme/HISTORY.md new file mode 100644 index 0000000000..83202fd65b --- /dev/null +++ b/contract_invoice_force_date/readme/HISTORY.md @@ -0,0 +1,3 @@ +## 18.0.1.0.0 (2026-02-13) + +- Add module diff --git a/contract_invoice_force_date/readme/USAGE.md b/contract_invoice_force_date/readme/USAGE.md new file mode 100644 index 0000000000..42bd677708 --- /dev/null +++ b/contract_invoice_force_date/readme/USAGE.md @@ -0,0 +1,9 @@ +To use this module, you need to: + +1. Go to *Accounting* > Customers/Vendors > Manually invoice contracts +1. In the popup, choose invoicing date to select contracts to invoice +1. If contracts are available to invoice, you can set **Date to set on Invoice** +![img.png](../static/img/invoice_wizard.png) +1. **Create Invoices** +1. The invoices are generated with the date chosen +![img_1.png](../static/img/invoice.png) diff --git a/contract_invoice_force_date/static/description/icon.png b/contract_invoice_force_date/static/description/icon.png new file mode 100644 index 0000000000..3a0328b516 Binary files /dev/null and b/contract_invoice_force_date/static/description/icon.png differ diff --git a/contract_invoice_force_date/static/description/index.html b/contract_invoice_force_date/static/description/index.html new file mode 100644 index 0000000000..79e64d92db --- /dev/null +++ b/contract_invoice_force_date/static/description/index.html @@ -0,0 +1,450 @@ + + + + + +Contract Invoice Force Date + + + +
+

Contract Invoice Force Date

+ + +

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

+

Allow the user to set a different date on the generated invoice than the +contract’s recurring date.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Accounting > Customers/Vendors > Manually invoice contracts
  2. +
  3. In the popup, choose invoicing date to select contracts to invoice
  4. +
  5. If contracts are available to invoice, you can set Date to set on +Invoice img.png
  6. +
  7. Create Invoices
  8. +
  9. The invoices are generated with the date chosen img_1.png
  10. +
+
+
+

Changelog

+
+

18.0.1.0.0 (2026-02-13)

+
    +
  • Add module
  • +
+
+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
+
+ +
+

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/contract project on GitHub.

+

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

+
+
+
+ + diff --git a/contract_invoice_force_date/static/img/invoice.png b/contract_invoice_force_date/static/img/invoice.png new file mode 100644 index 0000000000..5ecf6da5d5 Binary files /dev/null and b/contract_invoice_force_date/static/img/invoice.png differ diff --git a/contract_invoice_force_date/static/img/invoice_wizard.png b/contract_invoice_force_date/static/img/invoice_wizard.png new file mode 100644 index 0000000000..ddec74a592 Binary files /dev/null and b/contract_invoice_force_date/static/img/invoice_wizard.png differ diff --git a/contract_invoice_force_date/tests/__init__.py b/contract_invoice_force_date/tests/__init__.py new file mode 100644 index 0000000000..e1b1e42889 --- /dev/null +++ b/contract_invoice_force_date/tests/__init__.py @@ -0,0 +1 @@ +from . import test_contract_manual_invoice diff --git a/contract_invoice_force_date/tests/test_contract_manual_invoice.py b/contract_invoice_force_date/tests/test_contract_manual_invoice.py new file mode 100644 index 0000000000..935032db59 --- /dev/null +++ b/contract_invoice_force_date/tests/test_contract_manual_invoice.py @@ -0,0 +1,24 @@ +# Copyright 2026 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +from dateutil.relativedelta import relativedelta + +from odoo.addons.contract.tests.test_contract import TestContractBase + + +class TestContractInvoicing(TestContractBase): + """ + Tests for forced date on manual contract invoicing + """ + + def test_contract_manual_invoice_force_date(self): + tomorrow = self.today + relativedelta(days=1) + wizard = self.env["contract.manually.create.invoice"].create( + {"invoice_date": self.today} + ) + wizard.invoice_date_forced = tomorrow + action = wizard.create_invoice() + invoices = self.env["account.move"].search(action["domain"]) + for invoice in invoices: + self.assertEqual(invoice.invoice_date, tomorrow) diff --git a/contract_invoice_force_date/wizards/__init__.py b/contract_invoice_force_date/wizards/__init__.py new file mode 100644 index 0000000000..2e56cd6d03 --- /dev/null +++ b/contract_invoice_force_date/wizards/__init__.py @@ -0,0 +1 @@ +from . import contract_manually_create_invoice diff --git a/contract_invoice_force_date/wizards/contract_manually_create_invoice.py b/contract_invoice_force_date/wizards/contract_manually_create_invoice.py new file mode 100644 index 0000000000..d8f3547fb8 --- /dev/null +++ b/contract_invoice_force_date/wizards/contract_manually_create_invoice.py @@ -0,0 +1,20 @@ +# Copyright 2026 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ContractManuallyCreateInvoice(models.TransientModel): + _inherit = "contract.manually.create.invoice" + + invoice_date_forced = fields.Date( + "Date to set on Invoice", + help="If specified, this date will be set on the generated invoices instead of " + "the contract's recurring date.", + ) + + def _create_invoices(self): + invoices = super()._create_invoices() + if self.invoice_date_forced: + invoices.write({"invoice_date": self.invoice_date_forced}) + return invoices diff --git a/contract_invoice_force_date/wizards/contract_manually_create_invoice.xml b/contract_invoice_force_date/wizards/contract_manually_create_invoice.xml new file mode 100644 index 0000000000..bcf8af932e --- /dev/null +++ b/contract_invoice_force_date/wizards/contract_manually_create_invoice.xml @@ -0,0 +1,20 @@ + + + + + contract.manually.create.invoice + + + + + + + + diff --git a/contract_invoice_force_date_queue/README.rst b/contract_invoice_force_date_queue/README.rst new file mode 100644 index 0000000000..5c8cfef290 --- /dev/null +++ b/contract_invoice_force_date_queue/README.rst @@ -0,0 +1,90 @@ +================================= +Contract Invoice Force Date Queue +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:8e145a66bc9513caaac6df3295680f8699e2b8b47ed9dbf5e978c70b107610a4 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fcontract-lightgray.png?logo=github + :target: https://github.com/OCA/contract/tree/18.0/contract_invoice_force_date_queue + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-18-0/contract-18-0-contract_invoice_force_date_queue + :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/contract&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Ensure forced invoice dates are applied when invoices are generated with +job queues. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + + This module does not impact the user interface. + +Changelog +========= + +18.0.1.0.0 (2026-02-13) +----------------------- + +- Add module + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* ACSONE SA/NV + +Contributors +------------ + +- Tobias Zehntner tobias.zehntner@acsone.eu (https://www.acsone.eu) + +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/contract `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/contract_invoice_force_date_queue/__init__.py b/contract_invoice_force_date_queue/__init__.py new file mode 100644 index 0000000000..aee8895e7a --- /dev/null +++ b/contract_invoice_force_date_queue/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/contract_invoice_force_date_queue/__manifest__.py b/contract_invoice_force_date_queue/__manifest__.py new file mode 100644 index 0000000000..fa09e59715 --- /dev/null +++ b/contract_invoice_force_date_queue/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2026 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Contract Invoice Force Date Queue", + "summary": """Bridge between contract_invoice_force_date and contract_queue_job""", + "version": "18.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/contract", + "depends": [ + "contract_invoice_force_date", + "contract_queue_job", + ], + "auto_install": True, +} diff --git a/contract_invoice_force_date_queue/models/__init__.py b/contract_invoice_force_date_queue/models/__init__.py new file mode 100644 index 0000000000..acc8a06b73 --- /dev/null +++ b/contract_invoice_force_date_queue/models/__init__.py @@ -0,0 +1 @@ +from . import contract_contract diff --git a/contract_invoice_force_date_queue/models/contract_contract.py b/contract_invoice_force_date_queue/models/contract_contract.py new file mode 100644 index 0000000000..e128f1a37b --- /dev/null +++ b/contract_invoice_force_date_queue/models/contract_contract.py @@ -0,0 +1,24 @@ +# Copyright 2026 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class ContractContract(models.Model): + _inherit = "contract.contract" + + @api.model + def _job_prepare_context_before_enqueue_keys(self): + """ + Keys to keep in context of stored jobs + """ + return ( + *super()._job_prepare_context_before_enqueue_keys(), + "invoice_date_forced", + ) + + def _recurring_create_invoice(self, date_ref=False): + moves = super()._recurring_create_invoice(date_ref=date_ref) + if invoice_date := self.env.context.get("invoice_date_forced", False): + moves.write({"invoice_date": invoice_date}) + return moves diff --git a/contract_invoice_force_date_queue/pyproject.toml b/contract_invoice_force_date_queue/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/contract_invoice_force_date_queue/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/contract_invoice_force_date_queue/readme/CONTRIBUTORS.md b/contract_invoice_force_date_queue/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..bf0f2b8122 --- /dev/null +++ b/contract_invoice_force_date_queue/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- Tobias Zehntner (https://www.acsone.eu) diff --git a/contract_invoice_force_date_queue/readme/DESCRIPTION.md b/contract_invoice_force_date_queue/readme/DESCRIPTION.md new file mode 100644 index 0000000000..57b13ce697 --- /dev/null +++ b/contract_invoice_force_date_queue/readme/DESCRIPTION.md @@ -0,0 +1 @@ +Ensure forced invoice dates are applied when invoices are generated with job queues. diff --git a/contract_invoice_force_date_queue/readme/HISTORY.md b/contract_invoice_force_date_queue/readme/HISTORY.md new file mode 100644 index 0000000000..83202fd65b --- /dev/null +++ b/contract_invoice_force_date_queue/readme/HISTORY.md @@ -0,0 +1,3 @@ +## 18.0.1.0.0 (2026-02-13) + +- Add module diff --git a/contract_invoice_force_date_queue/readme/USAGE.md b/contract_invoice_force_date_queue/readme/USAGE.md new file mode 100644 index 0000000000..11a4782c95 --- /dev/null +++ b/contract_invoice_force_date_queue/readme/USAGE.md @@ -0,0 +1 @@ +> This module does not impact the user interface. diff --git a/contract_invoice_force_date_queue/static/description/icon.png b/contract_invoice_force_date_queue/static/description/icon.png new file mode 100644 index 0000000000..3a0328b516 Binary files /dev/null and b/contract_invoice_force_date_queue/static/description/icon.png differ diff --git a/contract_invoice_force_date_queue/static/description/index.html b/contract_invoice_force_date_queue/static/description/index.html new file mode 100644 index 0000000000..0a73e50546 --- /dev/null +++ b/contract_invoice_force_date_queue/static/description/index.html @@ -0,0 +1,443 @@ + + + + + +Contract Invoice Force Date Queue + + + +
+

Contract Invoice Force Date Queue

+ + +

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

+

Ensure forced invoice dates are applied when invoices are generated with +job queues.

+

Table of contents

+ +
+

Usage

+
+This module does not impact the user interface.
+
+
+

Changelog

+
+

18.0.1.0.0 (2026-02-13)

+
    +
  • Add module
  • +
+
+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
+
+ +
+

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/contract project on GitHub.

+

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

+
+
+
+ + diff --git a/contract_invoice_force_date_queue/tests/__init__.py b/contract_invoice_force_date_queue/tests/__init__.py new file mode 100644 index 0000000000..2ece1ce615 --- /dev/null +++ b/contract_invoice_force_date_queue/tests/__init__.py @@ -0,0 +1 @@ +from . import test_contract_manual_invoice_queue diff --git a/contract_invoice_force_date_queue/tests/test_contract_manual_invoice_queue.py b/contract_invoice_force_date_queue/tests/test_contract_manual_invoice_queue.py new file mode 100644 index 0000000000..ad8dbde5c5 --- /dev/null +++ b/contract_invoice_force_date_queue/tests/test_contract_manual_invoice_queue.py @@ -0,0 +1,45 @@ +# Copyright 2026 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +from dateutil.relativedelta import relativedelta + +from odoo.addons.contract.tests.test_contract import TestContractBase +from odoo.addons.queue_job.tests.common import JobMixin + + +class TestContractInvoicing(TestContractBase, JobMixin): + """ + Tests for forced date on manual contract invoicing + """ + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env["ir.config_parameter"].sudo().set_param("contract.queue.job", "true") + + def test_contract_manual_invoice_force_date(self): + job_counter = self.job_counter() + tomorrow = self.today + relativedelta(days=1) + wizard = self.env["contract.manually.create.invoice"].create( + {"invoice_date": self.today} + ) + wizard.invoice_date_forced = tomorrow + wizard.create_invoice_queued() + self.assertEqual(job_counter.count_created(), 2) + self.perform_jobs(job_counter) + invoices = ( + self.env["account.move.line"] + .search( + [ + ( + "contract_line_id", + "in", + self.contract.contract_line_ids.ids, + ) + ] + ) + .mapped("move_id") + ) + for invoice in invoices: + self.assertEqual(invoice.invoice_date, tomorrow) diff --git a/contract_invoice_force_date_queue/wizards/__init__.py b/contract_invoice_force_date_queue/wizards/__init__.py new file mode 100644 index 0000000000..2e56cd6d03 --- /dev/null +++ b/contract_invoice_force_date_queue/wizards/__init__.py @@ -0,0 +1 @@ +from . import contract_manually_create_invoice diff --git a/contract_invoice_force_date_queue/wizards/contract_manually_create_invoice.py b/contract_invoice_force_date_queue/wizards/contract_manually_create_invoice.py new file mode 100644 index 0000000000..393371f6da --- /dev/null +++ b/contract_invoice_force_date_queue/wizards/contract_manually_create_invoice.py @@ -0,0 +1,14 @@ +# Copyright 2026 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class ContractManuallyCreateInvoice(models.TransientModel): + _inherit = "contract.manually.create.invoice" + + def create_invoice_queued(self): + return super( + ContractManuallyCreateInvoice, + self.with_context(invoice_date_forced=self.invoice_date_forced), + ).create_invoice_queued()