mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
1
account_move_force_removal/__init__.py
Normal file
1
account_move_force_removal/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import models
|
||||
13
account_move_force_removal/__manifest__.py
Normal file
13
account_move_force_removal/__manifest__.py
Normal file
@@ -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"],
|
||||
}
|
||||
3
account_move_force_removal/models/__init__.py
Normal file
3
account_move_force_removal/models/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html
|
||||
|
||||
from . import account_move
|
||||
13
account_move_force_removal/models/account_move.py
Normal file
13
account_move_force_removal/models/account_move.py
Normal file
@@ -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()
|
||||
4
account_move_force_removal/readme/CONTRIBUTORS.rst
Normal file
4
account_move_force_removal/readme/CONTRIBUTORS.rst
Normal file
@@ -0,0 +1,4 @@
|
||||
* `Tecnativa <https://www.tecnativa.com>`_:
|
||||
|
||||
* Víctor Martínez
|
||||
* Pedro M. Baeza
|
||||
2
account_move_force_removal/readme/DESCRIPTION.rst
Normal file
2
account_move_force_removal/readme/DESCRIPTION.rst
Normal file
@@ -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.
|
||||
4
account_move_force_removal/readme/USAGE.rst
Normal file
4
account_move_force_removal/readme/USAGE.rst
Normal file
@@ -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
|
||||
BIN
account_move_force_removal/static/description/icon.png
Normal file
BIN
account_move_force_removal/static/description/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
4
account_move_force_removal/tests/__init__.py
Normal file
4
account_move_force_removal/tests/__init__.py
Normal file
@@ -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
|
||||
52
account_move_force_removal/tests/test_move.py
Normal file
52
account_move_force_removal/tests/test_move.py
Normal file
@@ -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()
|
||||
@@ -0,0 +1 @@
|
||||
../../../../account_move_force_removal
|
||||
6
setup/account_move_force_removal/setup.py
Normal file
6
setup/account_move_force_removal/setup.py
Normal file
@@ -0,0 +1,6 @@
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['setuptools-odoo'],
|
||||
odoo_addon=True,
|
||||
)
|
||||
Reference in New Issue
Block a user