[IMP] account_advanced_protection_features : apply changes proposed by pre-commit
This commit is contained in:
@@ -49,12 +49,9 @@ repos:
|
||||
$(git rev-parse --show-toplevel))"'
|
||||
- id: oca-gen-addon-readme
|
||||
entry:
|
||||
bash -c 'oca-gen-addon-readme
|
||||
--addons-dir=.
|
||||
--branch=$(git symbolic-ref
|
||||
bash -c 'oca-gen-addon-readme --addons-dir=. --branch=$(git symbolic-ref
|
||||
refs/remotes/origin/HEAD | sed "s@^refs/remotes/origin/@@")
|
||||
--repo-name=$(basename $(git rev-parse --show-toplevel))
|
||||
--org-name="Elabore"
|
||||
--repo-name=$(basename $(git rev-parse --show-toplevel)) --org-name="Elabore"
|
||||
--if-source-changed --keep-source-digest'
|
||||
|
||||
- repo: https://github.com/OCA/odoo-pre-commit-hooks
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
*.*~
|
||||
*pyc
|
||||
*pyc
|
||||
|
||||
@@ -3,27 +3,21 @@
|
||||
|
||||
{
|
||||
"name": "account_advanced_protection_features",
|
||||
"version": "16.0.1.0.0",
|
||||
"version": "18.0.1.0.0",
|
||||
"author": "Elabore",
|
||||
"website": "https://elabore.coop",
|
||||
"website": "https://git.elabore.coop/elabore/account-tools",
|
||||
"maintainer": "Quentin Mondot",
|
||||
"license": "AGPL-3",
|
||||
"category": "Tools",
|
||||
"summary": "Add several protection features about accounting",
|
||||
# any module necessary for this one to work correctly
|
||||
"depends": [
|
||||
"base",
|
||||
"account"
|
||||
],
|
||||
"depends": ["base", "account"],
|
||||
"qweb": [],
|
||||
"external_dependencies": {
|
||||
"python": [],
|
||||
},
|
||||
# always loaded
|
||||
"data": [
|
||||
"security/res_groups.xml",
|
||||
"views/account_journal_views.xml"
|
||||
],
|
||||
"data": ["security/res_groups.xml", "views/account_journal_views.xml"],
|
||||
# only loaded in demonstration mode
|
||||
"demo": [],
|
||||
"js": [],
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Project-Id-Version: Odoo Server 18.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-29 08:28+0000\n"
|
||||
"PO-Revision-Date: 2025-08-29 08:28+0000\n"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from odoo import models, _
|
||||
from odoo import _, models
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class AccountBankStatement(models.Model):
|
||||
_inherit = "account.bank.statement"
|
||||
|
||||
@@ -8,12 +9,16 @@ class AccountBankStatement(models.Model):
|
||||
for statement in self:
|
||||
if not statement.journal_id.allow_bank_statement_deletion:
|
||||
raise UserError(
|
||||
_("The deletion of bank statements is not allowed for the journal %s.") % statement.journal_id.display_name
|
||||
_(
|
||||
"The deletion of bank statements is "
|
||||
"not allowed for the journal %s."
|
||||
)
|
||||
% statement.journal_id.display_name
|
||||
)
|
||||
# we delete all the statement lines before deleting the statement itself
|
||||
for line in statement.line_ids:
|
||||
line.unlink()
|
||||
return super(AccountBankStatement, self).unlink()
|
||||
return super().unlink()
|
||||
|
||||
|
||||
class AccountBankStatementLine(models.Model):
|
||||
@@ -23,6 +28,10 @@ class AccountBankStatementLine(models.Model):
|
||||
for line in self:
|
||||
if not line.journal_id.allow_bank_statement_deletion:
|
||||
raise UserError(
|
||||
_("The deletion of bank statement lines is not allowed for the journal %s.") % line.journal_id.display_name
|
||||
_(
|
||||
"The deletion of bank statement lines is "
|
||||
"not allowed for the journal %s."
|
||||
)
|
||||
% line.journal_id.display_name
|
||||
)
|
||||
return super(AccountBankStatementLine, self).unlink()
|
||||
return super().unlink()
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
from odoo import models, fields
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountJournal(models.Model):
|
||||
_inherit = "account.journal"
|
||||
|
||||
prevent_reset_to_draft_sent_invoice = fields.Boolean("Prevent to reset to draft a sent invoice")
|
||||
prevent_deletion_of_posted_account_move = fields.Boolean("Prevent to delete an already posted account move")
|
||||
prevent_reset_to_draft_sent_invoice = fields.Boolean(
|
||||
"Prevent to reset to draft a sent invoice"
|
||||
)
|
||||
prevent_deletion_of_posted_account_move = fields.Boolean(
|
||||
"Prevent to delete an already posted account move"
|
||||
)
|
||||
allow_bank_statement_deletion = fields.Boolean(
|
||||
"Allow bank statements deletion",
|
||||
help="Users with group Show Full Accounting Features (id: group_account_user) will be allowed to delete account bank statements "
|
||||
"and bank statement lines."
|
||||
help="Users with group Show Full Accounting Features (id: group_account_user) "
|
||||
"will be allowed to delete account bank statements "
|
||||
"and bank statement lines.",
|
||||
)
|
||||
|
||||
@@ -1,23 +1,34 @@
|
||||
from odoo import models, api, fields, _
|
||||
from odoo import _, api, models
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = 'account.move'
|
||||
_inherit = "account.move"
|
||||
|
||||
def button_draft(self):
|
||||
if self.is_move_sent and self.journal_id.prevent_reset_to_draft_sent_invoice:
|
||||
raise UserError(_(
|
||||
"You cannot reset to draft this invoice because it has been sent by email."
|
||||
))
|
||||
return super(AccountMove, self).button_draft()
|
||||
raise UserError(
|
||||
_(
|
||||
"You cannot reset to draft this invoice because it "
|
||||
"has been sent by email."
|
||||
)
|
||||
)
|
||||
return super().button_draft()
|
||||
|
||||
@api.ondelete(at_uninstall=False)
|
||||
def _check_posted(self):
|
||||
""" Prevent deletion of an account move if it has already been posted and
|
||||
journal parameter prevent_deletion_of_posted_account_move is activated
|
||||
"""
|
||||
Prevent deletion of an account move if it has already been posted and journal
|
||||
parameter prevent_deletion_of_posted_account_move is activated.
|
||||
"""
|
||||
for rec in self:
|
||||
if rec.posted_before and rec.journal_id.prevent_deletion_of_posted_account_move:
|
||||
raise UserError(_(
|
||||
"You cannot delete this account move because it has already been posted."
|
||||
))
|
||||
if (
|
||||
rec.posted_before
|
||||
and rec.journal_id.prevent_deletion_of_posted_account_move
|
||||
):
|
||||
raise UserError(
|
||||
_(
|
||||
"You cannot delete this account move because it "
|
||||
"has already been posted."
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="group_account_protection_manager" model="res.groups">
|
||||
<field name="name">Access to account advanced protection features</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
<field name="category_id" ref="base.module_category_hidden" />
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
@@ -1,24 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="view_account_journal_form_inherit_prevent_reset_to_draft" model="ir.ui.view">
|
||||
<record
|
||||
id="view_account_journal_form_inherit_prevent_reset_to_draft"
|
||||
model="ir.ui.view"
|
||||
>
|
||||
<field name="name">account.journal.form</field>
|
||||
<field name="model">account.journal</field>
|
||||
<field name="inherit_id" ref="account.view_account_journal_form"/>
|
||||
<field name="inherit_id" ref="account.view_account_journal_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='restrict_mode_hash_table']" position="after">
|
||||
<field
|
||||
name="prevent_deletion_of_posted_account_move"
|
||||
groups="account_advanced_protection_features.group_account_protection_manager"
|
||||
name="prevent_deletion_of_posted_account_move"
|
||||
groups="account_advanced_protection_features.group_account_protection_manager"
|
||||
/>
|
||||
<field
|
||||
name="prevent_reset_to_draft_sent_invoice"
|
||||
groups="account_advanced_protection_features.group_account_protection_manager"
|
||||
attrs="{'invisible': [('type', '!=', 'sale')]}"
|
||||
name="prevent_reset_to_draft_sent_invoice"
|
||||
groups="account_advanced_protection_features.group_account_protection_manager"
|
||||
attrs="{'invisible': [('type', '!=', 'sale')]}"
|
||||
/>
|
||||
<field
|
||||
name="allow_bank_statement_deletion"
|
||||
groups="account_advanced_protection_features.group_account_protection_manager"
|
||||
attrs="{'invisible': [('type', 'not in', ['bank', 'cash'])]}"
|
||||
name="allow_bank_statement_deletion"
|
||||
groups="account_advanced_protection_features.group_account_protection_manager"
|
||||
attrs="{'invisible': [('type', 'not in', ['bank', 'cash'])]}"
|
||||
/>
|
||||
</xpath>
|
||||
</field>
|
||||
|
||||
Reference in New Issue
Block a user