From ec8f5a06354f52b754bf43a686c284365607605c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 18 Nov 2020 14:11:22 +0100 Subject: [PATCH 1/7] [ADD] account_move_force_removal: Allow force removal account moves --- account_move_force_removal/README.rst | 85 ++++ account_move_force_removal/__init__.py | 1 + account_move_force_removal/__manifest__.py | 13 + .../i18n/account_move_force_removal.pot | 19 + account_move_force_removal/models/__init__.py | 3 + .../models/account_move.py | 13 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 2 + account_move_force_removal/readme/USAGE.rst | 4 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 434 ++++++++++++++++++ account_move_force_removal/tests/__init__.py | 4 + account_move_force_removal/tests/test_move.py | 52 +++ 13 files changed, 634 insertions(+) create mode 100644 account_move_force_removal/README.rst create mode 100644 account_move_force_removal/__init__.py create mode 100644 account_move_force_removal/__manifest__.py create mode 100644 account_move_force_removal/i18n/account_move_force_removal.pot create mode 100644 account_move_force_removal/models/__init__.py create mode 100644 account_move_force_removal/models/account_move.py create mode 100644 account_move_force_removal/readme/CONTRIBUTORS.rst create mode 100644 account_move_force_removal/readme/DESCRIPTION.rst create mode 100644 account_move_force_removal/readme/USAGE.rst create mode 100644 account_move_force_removal/static/description/icon.png create mode 100644 account_move_force_removal/static/description/index.html create mode 100644 account_move_force_removal/tests/__init__.py create mode 100644 account_move_force_removal/tests/test_move.py diff --git a/account_move_force_removal/README.rst b/account_move_force_removal/README.rst new file mode 100644 index 000000000..bda74c381 --- /dev/null +++ b/account_move_force_removal/README.rst @@ -0,0 +1,85 @@ +========================== +Account Move Force Removal +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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--financial--tools-lightgray.png?logo=github + :target: https://github.com/OCA/account-financial-tools/tree/13.0/account_move_force_removal + :alt: OCA/account-financial-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/account-financial-tools-13-0/account-financial-tools-13-0-account_move_force_removal + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/92/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows you to delete account moves, which is prevented in Odoo by default. +You must care yourself about the numbering sequence doing this. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +#. Go to Invoicing > Customers > Invoices and enter an invoice. +#. Click on "Reset to draft" +#. Click on "Cancel entry +#. Try to delete invoice + +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 `_: + + * Víctor Martínez + * 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-financial-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_move_force_removal/__init__.py b/account_move_force_removal/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/account_move_force_removal/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_move_force_removal/__manifest__.py b/account_move_force_removal/__manifest__.py new file mode 100644 index 000000000..4397bf2ba --- /dev/null +++ b/account_move_force_removal/__manifest__.py @@ -0,0 +1,13 @@ +# Copyright 2020 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +{ + "name": "Account Move Force Removal", + "summary": """Allow force removal account moves""", + "version": "13.0.1.0.0", + "category": "Account", + "license": "AGPL-3", + "website": "https://github.com/OCA/account-financial-tools", + "author": "Tecnativa, Odoo Community Association (OCA)", + "depends": ["account"], +} diff --git a/account_move_force_removal/i18n/account_move_force_removal.pot b/account_move_force_removal/i18n/account_move_force_removal.pot new file mode 100644 index 000000000..986b175c4 --- /dev/null +++ b/account_move_force_removal/i18n/account_move_force_removal.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_move_force_removal +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_move_force_removal +#: model:ir.model,name:account_move_force_removal.model_account_move +msgid "Journal Entries" +msgstr "" diff --git a/account_move_force_removal/models/__init__.py b/account_move_force_removal/models/__init__.py new file mode 100644 index 000000000..3bd27c056 --- /dev/null +++ b/account_move_force_removal/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +from . import account_move diff --git a/account_move_force_removal/models/account_move.py b/account_move_force_removal/models/account_move.py new file mode 100644 index 000000000..9a70e7492 --- /dev/null +++ b/account_move_force_removal/models/account_move.py @@ -0,0 +1,13 @@ +# Copyright 2020 Tecnativa - Víctor Martínez +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +from odoo import models + + +class AccountMove(models.Model): + _inherit = "account.move" + + def unlink(self): + cancelled_moves = self.filtered(lambda m: m.state == "cancel") + super(AccountMove, cancelled_moves.with_context(force_delete=True)).unlink() + return super(AccountMove, self - cancelled_moves).unlink() diff --git a/account_move_force_removal/readme/CONTRIBUTORS.rst b/account_move_force_removal/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..5fb713053 --- /dev/null +++ b/account_move_force_removal/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza diff --git a/account_move_force_removal/readme/DESCRIPTION.rst b/account_move_force_removal/readme/DESCRIPTION.rst new file mode 100644 index 000000000..5f0c79047 --- /dev/null +++ b/account_move_force_removal/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module allows you to delete account moves, which is prevented in Odoo by default. +You must care yourself about the numbering sequence doing this. diff --git a/account_move_force_removal/readme/USAGE.rst b/account_move_force_removal/readme/USAGE.rst new file mode 100644 index 000000000..6d501c3ca --- /dev/null +++ b/account_move_force_removal/readme/USAGE.rst @@ -0,0 +1,4 @@ +#. Go to Invoicing > Customers > Invoices and enter an invoice. +#. Click on "Reset to draft" +#. Click on "Cancel entry +#. Try to delete invoice diff --git a/account_move_force_removal/static/description/icon.png b/account_move_force_removal/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/account_move_force_removal/static/description/index.html b/account_move_force_removal/static/description/index.html new file mode 100644 index 000000000..b001ec200 --- /dev/null +++ b/account_move_force_removal/static/description/index.html @@ -0,0 +1,434 @@ + + + + + + +Account Move Force Removal + + + +
+

Account Move Force Removal

+ + +

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

+

This module allows you to delete account moves, which is prevented in Odoo by default. +You must care yourself about the numbering sequence doing this.

+

Table of contents

+ +
+

Usage

+
    +
  1. Go to Invoicing > Customers > Invoices and enter an invoice.
  2. +
  3. Click on “Reset to draft”
  4. +
  5. Click on “Cancel entry
  6. +
  7. Try to delete invoice
  8. +
+
+
+

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:
      +
    • Víctor Martínez
    • +
    • Pedro M. Baeza
    • +
    +
  • +
+
+
+

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-financial-tools project on GitHub.

+

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

+
+
+
+ + diff --git a/account_move_force_removal/tests/__init__.py b/account_move_force_removal/tests/__init__.py new file mode 100644 index 000000000..a7aa32c01 --- /dev/null +++ b/account_move_force_removal/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2020 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) + +from . import test_move diff --git a/account_move_force_removal/tests/test_move.py b/account_move_force_removal/tests/test_move.py new file mode 100644 index 000000000..7fee734ec --- /dev/null +++ b/account_move_force_removal/tests/test_move.py @@ -0,0 +1,52 @@ +# Copyright 2020 Tecnativa - Víctor Martínez +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +from odoo.exceptions import UserError +from odoo.tests import Form +from odoo.tests.common import SavepointCase + + +class TestMove(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner = cls.env["res.partner"].create( + {"name": "Test customer", "customer_rank": 1} + ) + cls.journal = cls.env["account.journal"].create( + { + "name": "Test journal", + "type": "sale", + "code": "test-sale-jorunal", + "company_id": cls.env.company.id, + } + ) + cls.product = cls.env["product.product"].create( + {"name": "Test product", "type": "service"} + ) + invoice = Form( + cls.env["account.move"].with_context( + default_type="out_invoice", default_company_id=cls.env.company.id + ) + ) + invoice.partner_id = cls.partner + invoice.journal_id = cls.journal + with invoice.invoice_line_ids.new() as line_form: + line_form.name = cls.product.name + line_form.product_id = cls.product + line_form.quantity = 1.0 + line_form.price_unit = 10 + invoice = invoice.save() + invoice.action_post() + cls.invoice = invoice + + def test_remove_invoice_error(self): + # Delete invoice while name isn't / + with self.assertRaises(UserError): + self.invoice.unlink() + + def test_ok_invoice_error(self): + # Delete invoice (previously draft + camcel) + self.invoice.button_draft() + self.invoice.button_cancel() + self.invoice.unlink() From 7709d6f6f7b07cc0539732eec190d7120818531f Mon Sep 17 00:00:00 2001 From: tafaRU Date: Mon, 26 Apr 2021 10:38:52 +0200 Subject: [PATCH 2/7] [MIG] account_move_force_removal: Migration to 14.0 --- account_move_force_removal/__manifest__.py | 2 +- account_move_force_removal/readme/CONTRIBUTORS.rst | 1 + account_move_force_removal/tests/test_move.py | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/account_move_force_removal/__manifest__.py b/account_move_force_removal/__manifest__.py index 4397bf2ba..1957bfcfb 100644 --- a/account_move_force_removal/__manifest__.py +++ b/account_move_force_removal/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Account Move Force Removal", "summary": """Allow force removal account moves""", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "category": "Account", "license": "AGPL-3", "website": "https://github.com/OCA/account-financial-tools", diff --git a/account_move_force_removal/readme/CONTRIBUTORS.rst b/account_move_force_removal/readme/CONTRIBUTORS.rst index 5fb713053..5d1cd2f83 100644 --- a/account_move_force_removal/readme/CONTRIBUTORS.rst +++ b/account_move_force_removal/readme/CONTRIBUTORS.rst @@ -2,3 +2,4 @@ * Víctor Martínez * Pedro M. Baeza +* Alex Comba diff --git a/account_move_force_removal/tests/test_move.py b/account_move_force_removal/tests/test_move.py index 7fee734ec..5d90d8a9b 100644 --- a/account_move_force_removal/tests/test_move.py +++ b/account_move_force_removal/tests/test_move.py @@ -24,6 +24,11 @@ class TestMove(SavepointCase): cls.product = cls.env["product.product"].create( {"name": "Test product", "type": "service"} ) + account_type = cls.env.ref("account.data_account_type_other_income") + cls.income_account = cls.env["account.account"].search( + [("user_type_id", "=", account_type.id)], limit=1 + ) + invoice = Form( cls.env["account.move"].with_context( default_type="out_invoice", default_company_id=cls.env.company.id @@ -36,6 +41,7 @@ class TestMove(SavepointCase): line_form.product_id = cls.product line_form.quantity = 1.0 line_form.price_unit = 10 + line_form.account_id = cls.income_account invoice = invoice.save() invoice.action_post() cls.invoice = invoice From a60c5b6da2e068c08c8f77a5cd9b4ff00bf21a3b Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 3 May 2021 13:29:54 +0000 Subject: [PATCH 3/7] [UPD] Update account_move_force_removal.pot --- .../i18n/account_move_force_removal.pot | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/account_move_force_removal/i18n/account_move_force_removal.pot b/account_move_force_removal/i18n/account_move_force_removal.pot index 986b175c4..a59147812 100644 --- a/account_move_force_removal/i18n/account_move_force_removal.pot +++ b/account_move_force_removal/i18n/account_move_force_removal.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" @@ -14,6 +14,21 @@ msgstr "" "Plural-Forms: \n" #. module: account_move_force_removal -#: model:ir.model,name:account_move_force_removal.model_account_move -msgid "Journal Entries" +#: model:ir.model.fields,field_description:account_move_force_removal.field_account_move__display_name +msgid "Display Name" +msgstr "" + +#. module: account_move_force_removal +#: model:ir.model.fields,field_description:account_move_force_removal.field_account_move__id +msgid "ID" +msgstr "" + +#. module: account_move_force_removal +#: model:ir.model,name:account_move_force_removal.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: account_move_force_removal +#: model:ir.model.fields,field_description:account_move_force_removal.field_account_move____last_update +msgid "Last Modified on" msgstr "" From 0b5538877c0ebaafdfaf9f7afe32514d6c8074ff Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 3 May 2021 13:43:27 +0000 Subject: [PATCH 4/7] [UPD] README.rst --- account_move_force_removal/README.rst | 11 ++++++----- .../static/description/index.html | 7 ++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/account_move_force_removal/README.rst b/account_move_force_removal/README.rst index bda74c381..9c092d489 100644 --- a/account_move_force_removal/README.rst +++ b/account_move_force_removal/README.rst @@ -14,13 +14,13 @@ Account Move Force Removal :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--financial--tools-lightgray.png?logo=github - :target: https://github.com/OCA/account-financial-tools/tree/13.0/account_move_force_removal + :target: https://github.com/OCA/account-financial-tools/tree/14.0/account_move_force_removal :alt: OCA/account-financial-tools .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/account-financial-tools-13-0/account-financial-tools-13-0-account_move_force_removal + :target: https://translation.odoo-community.org/projects/account-financial-tools-14-0/account-financial-tools-14-0-account_move_force_removal :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/92/13.0 + :target: https://runbot.odoo-community.org/runbot/92/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -47,7 +47,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. @@ -66,6 +66,7 @@ Contributors * Víctor Martínez * Pedro M. Baeza +* Alex Comba Maintainers ~~~~~~~~~~~ @@ -80,6 +81,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/account-financial-tools `_ project on GitHub. +This module is part of the `OCA/account-financial-tools `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_move_force_removal/static/description/index.html b/account_move_force_removal/static/description/index.html index b001ec200..2143a227b 100644 --- a/account_move_force_removal/static/description/index.html +++ b/account_move_force_removal/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module allows you to delete account moves, which is prevented in Odoo by default. You must care yourself about the numbering sequence doing this.

Table of contents

@@ -397,7 +397,7 @@ You must care yourself about the numbering sequence doing this.

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.

@@ -416,6 +416,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
  • Pedro M. Baeza
  • +
  • Alex Comba <alex.comba@agilebg.com>
  • @@ -425,7 +426,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

    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-financial-tools project on GitHub.

    +

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

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

    From e5f1c60474620b00bb0a7c97d9e893e9bfb6b1a1 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 4 Aug 2021 08:31:11 +0200 Subject: [PATCH 5/7] [FIX] account_move_force_removal: Make tests resilient On an integration enviroment, the test may fail searching for an account that belongs to other company. Now we specifically look the an account in current company. --- account_move_force_removal/tests/test_move.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/account_move_force_removal/tests/test_move.py b/account_move_force_removal/tests/test_move.py index 5d90d8a9b..660fb8a24 100644 --- a/account_move_force_removal/tests/test_move.py +++ b/account_move_force_removal/tests/test_move.py @@ -24,9 +24,14 @@ class TestMove(SavepointCase): cls.product = cls.env["product.product"].create( {"name": "Test product", "type": "service"} ) + cls.company = cls.env.company account_type = cls.env.ref("account.data_account_type_other_income") cls.income_account = cls.env["account.account"].search( - [("user_type_id", "=", account_type.id)], limit=1 + [ + ("user_type_id", "=", account_type.id), + ("company_id", "=", cls.company.id), + ], + limit=1, ) invoice = Form( From a61ba7a5efa203e65b6afc04a258b79f90b28066 Mon Sep 17 00:00:00 2001 From: angel Date: Wed, 20 Apr 2022 13:33:44 +0200 Subject: [PATCH 6/7] [IMP] account_move_force_removal: black, isort, prettier --- .../odoo/addons/account_move_force_removal | 1 + setup/account_move_force_removal/setup.py | 6 ++++++ 2 files changed, 7 insertions(+) create mode 120000 setup/account_move_force_removal/odoo/addons/account_move_force_removal create mode 100644 setup/account_move_force_removal/setup.py diff --git a/setup/account_move_force_removal/odoo/addons/account_move_force_removal b/setup/account_move_force_removal/odoo/addons/account_move_force_removal new file mode 120000 index 000000000..c240a17f3 --- /dev/null +++ b/setup/account_move_force_removal/odoo/addons/account_move_force_removal @@ -0,0 +1 @@ +../../../../account_move_force_removal \ No newline at end of file diff --git a/setup/account_move_force_removal/setup.py b/setup/account_move_force_removal/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/account_move_force_removal/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 3632f6fb19059203deeb29d642aef9efc351ef7e Mon Sep 17 00:00:00 2001 From: angel Date: Wed, 20 Apr 2022 13:43:15 +0200 Subject: [PATCH 7/7] [15.0][MIG] account_move_force_removal: Migration to 15.0 --- account_move_force_removal/__manifest__.py | 2 +- account_move_force_removal/readme/CONTRIBUTORS.rst | 4 ++++ account_move_force_removal/tests/test_move.py | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/account_move_force_removal/__manifest__.py b/account_move_force_removal/__manifest__.py index 1957bfcfb..e22d58473 100644 --- a/account_move_force_removal/__manifest__.py +++ b/account_move_force_removal/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Account Move Force Removal", "summary": """Allow force removal account moves""", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "category": "Account", "license": "AGPL-3", "website": "https://github.com/OCA/account-financial-tools", diff --git a/account_move_force_removal/readme/CONTRIBUTORS.rst b/account_move_force_removal/readme/CONTRIBUTORS.rst index 5d1cd2f83..f6525642a 100644 --- a/account_move_force_removal/readme/CONTRIBUTORS.rst +++ b/account_move_force_removal/readme/CONTRIBUTORS.rst @@ -3,3 +3,7 @@ * Víctor Martínez * Pedro M. Baeza * Alex Comba + +* `Sygel `__: + + * Ángel García de la Chica Herrera diff --git a/account_move_force_removal/tests/test_move.py b/account_move_force_removal/tests/test_move.py index 660fb8a24..73b5a8bee 100644 --- a/account_move_force_removal/tests/test_move.py +++ b/account_move_force_removal/tests/test_move.py @@ -3,10 +3,10 @@ from odoo.exceptions import UserError from odoo.tests import Form -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase -class TestMove(SavepointCase): +class TestMove(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass()