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

+
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
+
+
+
+
+- Go to Invoicing > Customers > Invoices and enter an invoice.
+- Click on “Reset to draft”
+- Click on “Cancel entry
+- Try to delete invoice
+
+
+
+
+
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.
+
+
+
+
+
+
+
+- Tecnativa:
+- Víctor Martínez
+- Pedro M. Baeza
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

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

+

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()