Merge PR #1095 into 13.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2020-11-25 17:03:02 +00:00
12 changed files with 103 additions and 0 deletions

View File

@@ -0,0 +1 @@
from . import models

View 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"],
}

View File

@@ -0,0 +1,3 @@
# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html
from . import account_move

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

View File

@@ -0,0 +1,4 @@
* `Tecnativa <https://www.tecnativa.com>`_:
* Víctor Martínez
* Pedro M. Baeza

View 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.

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View 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

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

View File

@@ -0,0 +1 @@
../../../../account_move_force_removal

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)