diff --git a/contract_update_last_date_invoiced/README.rst b/contract_update_last_date_invoiced/README.rst new file mode 100644 index 0000000000..c0c4417288 --- /dev/null +++ b/contract_update_last_date_invoiced/README.rst @@ -0,0 +1,107 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +========================= +Contract Last Date Update +========================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:0f3f92183c9f2421e63bae9597779426ddde9a4500dc95dec61429ac208eb815 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-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/19.0/contract_update_last_date_invoiced + :alt: OCA/contract +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/contract-19-0/contract-19-0-contract_update_last_date_invoiced + :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=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows users to update the last date invoiced (e.g.: +deletion of invoices). + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +- Go to Invoicing > Customers > Customer Contracts +- Select a contract and click on Update Last Date Invoiced +- Fill in the last date invoiced with the desired value + +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 +------------ + +- Souheil Bejaoui +- Denis Roussel +- `Moduon `__: + + - Eduardo López + +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia + +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-rafaelbn| image:: https://github.com/rafaelbn.png?size=40px + :target: https://github.com/rafaelbn + :alt: rafaelbn +.. |maintainer-Andrii9090| image:: https://github.com/Andrii9090.png?size=40px + :target: https://github.com/Andrii9090 + :alt: Andrii9090 + +Current `maintainers `__: + +|maintainer-rafaelbn| |maintainer-Andrii9090| + +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_update_last_date_invoiced/__init__.py b/contract_update_last_date_invoiced/__init__.py new file mode 100644 index 0000000000..aee8895e7a --- /dev/null +++ b/contract_update_last_date_invoiced/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/contract_update_last_date_invoiced/__manifest__.py b/contract_update_last_date_invoiced/__manifest__.py new file mode 100644 index 0000000000..5e6a5e5295 --- /dev/null +++ b/contract_update_last_date_invoiced/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2022 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Contract Last Date Update", + "summary": """ + This module allows to update the last date invoiced if invoices are deleted.""", + "version": "19.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/contract", + "depends": ["contract"], + "data": [ + "security/security.xml", + "views/contract_views.xml", + "views/contract_line.xml", + "wizards/update_last_date_invoiced.xml", + ], + "maintainers": ["rafaelbn", "Andrii9090"], +} diff --git a/contract_update_last_date_invoiced/i18n/contract_update_last_date_invoiced.pot b/contract_update_last_date_invoiced/i18n/contract_update_last_date_invoiced.pot new file mode 100644 index 0000000000..4f8bd2ed02 --- /dev/null +++ b/contract_update_last_date_invoiced/i18n/contract_update_last_date_invoiced.pot @@ -0,0 +1,83 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_update_last_date_invoiced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.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: contract_update_last_date_invoiced +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +msgid "Cancel" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_line +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__contract_line_id +msgid "Contract Line" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:res.groups,name:contract_update_last_date_invoiced.group_contract_line_update_last_date_invoiced +msgid "Contract: Can update last date invoiced" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_uid +msgid "Created by" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_date +msgid "Created on" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__recurring_next_date +msgid "Date of Next Invoice" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__display_name +msgid "Display Name" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__id +msgid "ID" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__last_date_invoiced +msgid "Last Date Invoiced" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_date +msgid "Last Updated on" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_update_last_date_invoiced +msgid "Update Contract Last Date Invoiced Wizard" +msgstr "" + +#. module: contract_update_last_date_invoiced +#. odoo-python +#: code:addons/contract_update_last_date_invoiced/models/contract_line.py:0 +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_line_form_view +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +msgid "Update Invoice Dates" +msgstr "" diff --git a/contract_update_last_date_invoiced/i18n/es.po b/contract_update_last_date_invoiced/i18n/es.po new file mode 100644 index 0000000000..3e0a409f44 --- /dev/null +++ b/contract_update_last_date_invoiced/i18n/es.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_update_last_date_invoiced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-13 13:07+0000\n" +"PO-Revision-Date: 2025-11-13 14:07+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.5\n" + +#. module: contract_update_last_date_invoiced +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_line +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__contract_line_id +msgid "Contract Line" +msgstr "Línea de contrato" + +#. module: contract_update_last_date_invoiced +#: model:res.groups,name:contract_update_last_date_invoiced.group_contract_line_update_last_date_invoiced +msgid "Contract: Can update last date invoiced" +msgstr "Contrato: Puede actualizar la última fecha facturada" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__recurring_next_date +msgid "Date of Next Invoice" +msgstr "Fecha de la siguiente factura" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__last_date_invoiced +msgid "Last Date Invoiced" +msgstr "Última Fecha Facturada" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_uid +msgid "Last Updated by" +msgstr "Última Actualización por" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_date +msgid "Last Updated on" +msgstr "Última Actualización el" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_update_last_date_invoiced +msgid "Update Contract Last Date Invoiced Wizard" +msgstr "Asistente de Actualización de la Última Fecha de Facturación del Contrato" + +#. module: contract_update_last_date_invoiced +#. odoo-python +#: code:addons/contract_update_last_date_invoiced/models/contract_line.py:0 +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_line_form_view +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +msgid "Update Invoice Dates" +msgstr "Actualizar fechas de factura" diff --git a/contract_update_last_date_invoiced/i18n/fr.po b/contract_update_last_date_invoiced/i18n/fr.po new file mode 100644 index 0000000000..48f875a669 --- /dev/null +++ b/contract_update_last_date_invoiced/i18n/fr.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_update_last_date_invoiced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2022-11-04 16:45+0000\n" +"Last-Translator: Yves Le Doeuff \n" +"Language-Team: none\n" +"Language: fr\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.14.1\n" + +#. module: contract_update_last_date_invoiced +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +msgid "Cancel" +msgstr "Annuler" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_line +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__contract_line_id +msgid "Contract Line" +msgstr "Ligne de contrat" + +#. module: contract_update_last_date_invoiced +#: model:res.groups,name:contract_update_last_date_invoiced.group_contract_line_update_last_date_invoiced +msgid "Contract: Can update last date invoiced" +msgstr "Contrat: Peut mettre à jour la dernière date facturée" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__id +msgid "ID" +msgstr "" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__last_date_invoiced +msgid "Last Date Invoiced" +msgstr "Dernière date facturée" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_date +msgid "Last Updated on" +msgstr "Mis à jour le" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__recurring_next_date +msgid "Recurring Next Date" +msgstr "Date de la prochaine facture" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_update_last_date_invoiced +msgid "Update Contract Last Date Invoiced Wizard" +msgstr "Assistant de mise à jour de la dernière date facturée" + +#. module: contract_update_last_date_invoiced +#. odoo-python +#: code:addons/contract_update_last_date_invoiced/models/contract_line.py:0 +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_line_form_view +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +#, python-format +msgid "Update Last Date Invoiced" +msgstr "Mettre à jour la dernière date facturée" diff --git a/contract_update_last_date_invoiced/i18n/it.po b/contract_update_last_date_invoiced/i18n/it.po new file mode 100644 index 0000000000..8ebfbef5c1 --- /dev/null +++ b/contract_update_last_date_invoiced/i18n/it.po @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_update_last_date_invoiced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-12-21 14:06+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 5.6.2\n" + +#. module: contract_update_last_date_invoiced +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +msgid "Cancel" +msgstr "Annulla" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_line +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__contract_line_id +msgid "Contract Line" +msgstr "Riga contratto" + +#. module: contract_update_last_date_invoiced +#: model:res.groups,name:contract_update_last_date_invoiced.group_contract_line_update_last_date_invoiced +msgid "Contract: Can update last date invoiced" +msgstr "Contratto: si può aggiornare l'ultima data fatturata" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__id +msgid "ID" +msgstr "ID" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__last_date_invoiced +msgid "Last Date Invoiced" +msgstr "Ultima data fatturata" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__recurring_next_date +msgid "Recurring Next Date" +msgstr "Data ricorrente successiva" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_update_last_date_invoiced +msgid "Update Contract Last Date Invoiced Wizard" +msgstr "Procedura guidata aggiornamento ultima data contratto fatturata" + +#. module: contract_update_last_date_invoiced +#. odoo-python +#: code:addons/contract_update_last_date_invoiced/models/contract_line.py:0 +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_line_form_view +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +#, python-format +msgid "Update Last Date Invoiced" +msgstr "Aggiorna ultima data fatturata" diff --git a/contract_update_last_date_invoiced/i18n/nl.po b/contract_update_last_date_invoiced/i18n/nl.po new file mode 100644 index 0000000000..3624540deb --- /dev/null +++ b/contract_update_last_date_invoiced/i18n/nl.po @@ -0,0 +1,86 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * contract_update_last_date_invoiced +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-12-29 17:49+0000\n" +"Last-Translator: Bosd \n" +"Language-Team: none\n" +"Language: nl\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 5.10.4\n" + +#. module: contract_update_last_date_invoiced +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +msgid "Cancel" +msgstr "Annuleren" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_line +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__contract_line_id +msgid "Contract Line" +msgstr "Contractregel" + +#. module: contract_update_last_date_invoiced +#: model:res.groups,name:contract_update_last_date_invoiced.group_contract_line_update_last_date_invoiced +msgid "Contract: Can update last date invoiced" +msgstr "Contract: Kan laatste factuurdatum bijwerken" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__recurring_next_date +msgid "Date of Next Invoice" +msgstr "Datum van volgende factuur" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__display_name +msgid "Display Name" +msgstr "Schermnaam" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__id +msgid "ID" +msgstr "ID" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__last_date_invoiced +msgid "Last Date Invoiced" +msgstr "Laatste factuurdatum" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: contract_update_last_date_invoiced +#: model:ir.model.fields,field_description:contract_update_last_date_invoiced.field_contract_update_last_date_invoiced__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: contract_update_last_date_invoiced +#: model:ir.model,name:contract_update_last_date_invoiced.model_contract_update_last_date_invoiced +msgid "Update Contract Last Date Invoiced Wizard" +msgstr "Wizard laatste factuurdatum contract bijwerken" + +#. module: contract_update_last_date_invoiced +#. odoo-python +#: code:addons/contract_update_last_date_invoiced/models/contract_line.py:0 +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_line_form_view +#: model_terms:ir.ui.view,arch_db:contract_update_last_date_invoiced.contract_update_last_date_invoiced_wizard_form_view +msgid "Update Invoice Dates" +msgstr "Factuurdata bijwerken" diff --git a/contract_update_last_date_invoiced/models/__init__.py b/contract_update_last_date_invoiced/models/__init__.py new file mode 100644 index 0000000000..6143a36501 --- /dev/null +++ b/contract_update_last_date_invoiced/models/__init__.py @@ -0,0 +1 @@ +from . import contract_line diff --git a/contract_update_last_date_invoiced/models/contract_line.py b/contract_update_last_date_invoiced/models/contract_line.py new file mode 100644 index 0000000000..07acca1d04 --- /dev/null +++ b/contract_update_last_date_invoiced/models/contract_line.py @@ -0,0 +1,36 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class ContractLine(models.Model): + _inherit = "contract.line" + + def action_update_last_date_invoiced(self): + self.ensure_one() + context = { + "default_contract_line_id": self.id, + "default_last_date_invoiced": self.last_date_invoiced, + "default_recurring_next_date": self.recurring_next_date, + } + context.update(self.env.context) + return { + "type": "ir.actions.act_window", + "name": self.env._("Update Invoice Dates"), + "res_model": "contract.update.last.date.invoiced", + "view_type": "form", + "view_mode": "form", + "target": "new", + "context": context, + } + + def _update_contract_last_date_invoiced( + self, last_date_invoiced, recurring_next_date + ): + self.write( + { + "last_date_invoiced": last_date_invoiced, + "recurring_next_date": recurring_next_date, + } + ) diff --git a/contract_update_last_date_invoiced/pyproject.toml b/contract_update_last_date_invoiced/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/contract_update_last_date_invoiced/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/contract_update_last_date_invoiced/readme/CONFIGURATION.rst b/contract_update_last_date_invoiced/readme/CONFIGURATION.rst new file mode 100644 index 0000000000..2ea54f3d50 --- /dev/null +++ b/contract_update_last_date_invoiced/readme/CONFIGURATION.rst @@ -0,0 +1,4 @@ +- Access in development mode +- Go to Settings > Users & Companies > Users +- Select the user you want to configure +- Give the user "Contract: Can update last date invoiced?" permission diff --git a/contract_update_last_date_invoiced/readme/CONTRIBUTORS.md b/contract_update_last_date_invoiced/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..0aa79ffd76 --- /dev/null +++ b/contract_update_last_date_invoiced/readme/CONTRIBUTORS.md @@ -0,0 +1,6 @@ +- Souheil Bejaoui \<\> +- Denis Roussel \<\> +- [Moduon](https://www.moduon.team): + - Eduardo López +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/contract_update_last_date_invoiced/readme/DESCRIPTION.md b/contract_update_last_date_invoiced/readme/DESCRIPTION.md new file mode 100644 index 0000000000..6fa5c22730 --- /dev/null +++ b/contract_update_last_date_invoiced/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module allows users to update the last date invoiced (e.g.: +deletion of invoices). diff --git a/contract_update_last_date_invoiced/readme/USAGE.md b/contract_update_last_date_invoiced/readme/USAGE.md new file mode 100644 index 0000000000..4519bde796 --- /dev/null +++ b/contract_update_last_date_invoiced/readme/USAGE.md @@ -0,0 +1,5 @@ +- Go to Invoicing \> Customers \> Customer Contracts +- Select a contract and click on contract line, in the pop-up is a button `Update Last Date Invoiced` +- Fill in the last date invoiced with the desired value + +Note: Make sure the user has the permissions "Contract: Can update last date invoiced". diff --git a/contract_update_last_date_invoiced/security/security.xml b/contract_update_last_date_invoiced/security/security.xml new file mode 100644 index 0000000000..f1d6fe4235 --- /dev/null +++ b/contract_update_last_date_invoiced/security/security.xml @@ -0,0 +1,26 @@ + + + + + Contract: Can update last date invoiced + + + + contract.update.last.date.invoiced.access (in contract_update_last_date_invoiced) + + + + + + + + diff --git a/contract_update_last_date_invoiced/static/description/icon.png b/contract_update_last_date_invoiced/static/description/icon.png new file mode 100644 index 0000000000..1dcc49c24f Binary files /dev/null and b/contract_update_last_date_invoiced/static/description/icon.png differ diff --git a/contract_update_last_date_invoiced/static/description/index.html b/contract_update_last_date_invoiced/static/description/index.html new file mode 100644 index 0000000000..21ad6e9290 --- /dev/null +++ b/contract_update_last_date_invoiced/static/description/index.html @@ -0,0 +1,450 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Contract Last Date Update

+ +

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

+

This module allows users to update the last date invoiced (e.g.: +deletion of invoices).

+

Table of contents

+ +
+

Usage

+
    +
  • Go to Invoicing > Customers > Customer Contracts
  • +
  • Select a contract and click on Update Last Date Invoiced
  • +
  • Fill in the last date invoiced with the desired value
  • +
+
+
+

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

+ +
+
+

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 maintainers:

+

rafaelbn Andrii9090

+

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_update_last_date_invoiced/tests/__init__.py b/contract_update_last_date_invoiced/tests/__init__.py new file mode 100644 index 0000000000..2cefac43fb --- /dev/null +++ b/contract_update_last_date_invoiced/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_contract_update_last_date_invoiced diff --git a/contract_update_last_date_invoiced/tests/test_contract_update_last_date_invoiced.py b/contract_update_last_date_invoiced/tests/test_contract_update_last_date_invoiced.py new file mode 100644 index 0000000000..70225dd8e1 --- /dev/null +++ b/contract_update_last_date_invoiced/tests/test_contract_update_last_date_invoiced.py @@ -0,0 +1,55 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from datetime import date + +from odoo.addons.base.tests.common import BaseCommon + + +class TestContractLine(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.contract = cls.env["contract.contract"].create( + { + "name": "Test Contract", + "partner_id": cls.partner.id, + } + ) + cls.contract_line = cls.env["contract.line"].create( + { + "name": "Test Contract Line", + "contract_id": cls.contract.id, + "date_start": date(2024, 2, 1), + "last_date_invoiced": date(2024, 2, 1), + "recurring_next_date": date(2024, 3, 1), + } + ) + cls.wizard = cls.env["contract.update.last.date.invoiced"].create( + { + "contract_line_id": cls.contract_line.id, + "last_date_invoiced": "2024-02-15", + "recurring_next_date": "2024-03-15", + } + ) + + def test_action_update_last_date_invoiced(self): + action = self.contract_line.action_update_last_date_invoiced() + self.assertEqual( + action["context"]["default_recurring_next_date"], + self.contract_line.recurring_next_date, + ) + + def test_update_last_date_invoiced(self): + new_last_date = date(2024, 2, 15) # Convert to date + new_next_date = date(2024, 3, 15) + self.contract_line._update_contract_last_date_invoiced( + new_last_date, new_next_date + ) + self.assertEqual(self.contract_line.last_date_invoiced, new_last_date) + self.assertEqual(self.contract_line.recurring_next_date, new_next_date) + + def test_update_last_date_invoiced_wizard(self): + self.wizard.update_last_date_invoiced() + self.assertEqual(self.contract_line.last_date_invoiced, date(2024, 2, 15)) + self.assertEqual(self.contract_line.recurring_next_date, date(2024, 3, 15)) diff --git a/contract_update_last_date_invoiced/views/contract_line.xml b/contract_update_last_date_invoiced/views/contract_line.xml new file mode 100644 index 0000000000..98d5e38249 --- /dev/null +++ b/contract_update_last_date_invoiced/views/contract_line.xml @@ -0,0 +1,39 @@ + + + + + contract.line + contract.line.form (in contract_update_last_date_invoiced) + + + +
+
+
+
+
+ + + + + + +
+
+
diff --git a/contract_update_last_date_invoiced/views/contract_views.xml b/contract_update_last_date_invoiced/views/contract_views.xml new file mode 100644 index 0000000000..36f8eaec47 --- /dev/null +++ b/contract_update_last_date_invoiced/views/contract_views.xml @@ -0,0 +1,16 @@ + + + + contract.contract.form.inherit + contract.contract + + + + + + + + diff --git a/contract_update_last_date_invoiced/wizards/__init__.py b/contract_update_last_date_invoiced/wizards/__init__.py new file mode 100644 index 0000000000..c0fc923190 --- /dev/null +++ b/contract_update_last_date_invoiced/wizards/__init__.py @@ -0,0 +1 @@ +from . import update_last_date_invoiced diff --git a/contract_update_last_date_invoiced/wizards/update_last_date_invoiced.py b/contract_update_last_date_invoiced/wizards/update_last_date_invoiced.py new file mode 100644 index 0000000000..05495edaca --- /dev/null +++ b/contract_update_last_date_invoiced/wizards/update_last_date_invoiced.py @@ -0,0 +1,25 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class PrgEditLastDateInvoicedWizard(models.TransientModel): + _name = "contract.update.last.date.invoiced" + _description = "Update Contract Last Date Invoiced Wizard" + + contract_line_id = fields.Many2one( + comodel_name="contract.line", + string="Contract Line", + required=True, + ondelete="cascade", + ) + last_date_invoiced = fields.Date() + recurring_next_date = fields.Date(string="Date of Next Invoice") + + def update_last_date_invoiced(self): + for wizard in self: + wizard.contract_line_id._update_contract_last_date_invoiced( + wizard.last_date_invoiced, wizard.recurring_next_date + ) + return True diff --git a/contract_update_last_date_invoiced/wizards/update_last_date_invoiced.xml b/contract_update_last_date_invoiced/wizards/update_last_date_invoiced.xml new file mode 100644 index 0000000000..e4006915f3 --- /dev/null +++ b/contract_update_last_date_invoiced/wizards/update_last_date_invoiced.xml @@ -0,0 +1,29 @@ + + + + + contract.update.last.date.invoiced.form (in contract_update_last_date_invoiced) + contract.update.last.date.invoiced + +
+ + + + + + +
+
+
+
diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000000..b4db471c5f --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +odoo-addon-contract @ git+https://github.com/OCA/contract@refs/pull/1312/head#subdirectory=contract