diff --git a/account_advanced_protection_features/README.rst b/account_advanced_protection_features/README.rst index a172b41..9d72191 100644 --- a/account_advanced_protection_features/README.rst +++ b/account_advanced_protection_features/README.rst @@ -3,9 +3,12 @@ account_advanced_protection_features ==================================== This module adds several protection features about accounting : -* Forbid to delete an invoice that has already been validated -* Forbid to reset to draft an invoice that has already been sent by email -* Allow bank statements and bank statement lines deletion + +* Forbid bank statements and bank statement lines deletion. You can allow it per journal. +* Forbid manual bank statement lines creation. You can allow it per journal. + +* Per journal, add the option to forbid to delete an invoice that has already been validated. +* Per journal, add the option to forbid to reset to draft an invoice that has already been sent by email. Installation ============ diff --git a/account_advanced_protection_features/__manifest__.py b/account_advanced_protection_features/__manifest__.py index ac5740f..184e833 100644 --- a/account_advanced_protection_features/__manifest__.py +++ b/account_advanced_protection_features/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - "name": "account_advanced_protection_features", + "name": "Account advanced protection features", "version": "16.0.1.0.0", "author": "Elabore", "website": "https://elabore.coop", diff --git a/account_advanced_protection_features/i18n/fr.po b/account_advanced_protection_features/i18n/fr.po index 67d8167..8e18afa 100644 --- a/account_advanced_protection_features/i18n/fr.po +++ b/account_advanced_protection_features/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.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" +"POT-Creation-Date: 2026-01-20 16:50+0000\n" +"PO-Revision-Date: 2026-01-20 16:50+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -25,6 +25,11 @@ msgstr "Accès aux fonctionnalités avancées de protection des journaux" msgid "Allow bank statements deletion" msgstr "Autoriser la suppression de relevé bancaire" +#. module: account_advanced_protection_features +#: model:ir.model.fields,field_description:account_advanced_protection_features.field_account_journal__allow_bank_statement_line_creation +msgid "Allow manual bank statement lines creation" +msgstr "Autoriser l'ajout manuelle des lignes de relevé bancaire" + #. module: account_advanced_protection_features #: model:ir.model,name:account_advanced_protection_features.model_account_bank_statement msgid "Bank Statement" @@ -35,6 +40,13 @@ msgstr "Relevé bancaire" msgid "Bank Statement Line" msgstr "Ligne de relevé de compte" +#. module: account_advanced_protection_features +#: model:ir.model.fields,help:account_advanced_protection_features.field_account_journal__allow_bank_statement_line_creation +msgid "" +"If unchecked, users will not be allowed to manually create bank statement " +"lines for this journal." +msgstr "Si décoché, les utilisateurs ne seront pas autorisés à créer des lignes de relevé bancaire pour ce journal." + #. module: account_advanced_protection_features #: model:ir.model,name:account_advanced_protection_features.model_account_journal msgid "Journal" @@ -45,6 +57,16 @@ msgstr "" msgid "Journal Entry" msgstr "Pièce comptable" +#. module: account_advanced_protection_features +#. odoo-python +#: code:addons/account_advanced_protection_features/models/account_bank_statement.py:0 +#: code:addons/account_advanced_protection_features/models/account_bank_statement.py:0 +#, python-format +msgid "" +"Manual creation of bank statement lines is not allowed for the journal %s." +msgstr "" +"La création manuelle de lignes de relevé bancaire n'est pas autorisée pour le journal %s." + #. module: account_advanced_protection_features #: model:ir.model.fields,field_description:account_advanced_protection_features.field_account_journal__prevent_deletion_of_posted_account_move msgid "Prevent to delete an already posted account move" @@ -66,15 +88,18 @@ msgstr "" #. module: account_advanced_protection_features #. odoo-python #: code:addons/account_advanced_protection_features/models/account_bank_statement.py:0 +#: code:addons/account_advanced_protection_features/models/account_bank_statement.py:0 #, python-format msgid "" "The deletion of bank statement lines is not allowed for the journal %s." msgstr "" -"La suppression des lignes de relevé bancaire n'est pas autorisée pour le journal %s." +"La suppression des lignes de relevé bancaire n'est pas autorisée pour le " +"journal %s." #. module: account_advanced_protection_features #. odoo-python #: code:addons/account_advanced_protection_features/models/account_bank_statement.py:0 +#: code:addons/account_advanced_protection_features/models/account_bank_statement.py:0 #, python-format msgid "The deletion of bank statements is not allowed for the journal %s." msgstr "" @@ -93,8 +118,10 @@ msgstr "" #. module: account_advanced_protection_features #. odoo-python #: code:addons/account_advanced_protection_features/models/account_move.py:0 +#: code:addons/account_advanced_protection_features/models/account_move.py:0 #, python-format -msgid "You cannot delete this account move because it has already been posted." +msgid "" +"You cannot delete this account move because it has already been posted." msgstr "" "Vous ne pouvez pas supprimer cette pièce comptable car elle à déjà été " "confirmée." @@ -102,6 +129,7 @@ msgstr "" #. module: account_advanced_protection_features #. odoo-python #: code:addons/account_advanced_protection_features/models/account_move.py:0 +#: code:addons/account_advanced_protection_features/models/account_move.py:0 #, python-format msgid "" "You cannot reset to draft this invoice because it has been sent by email." diff --git a/account_advanced_protection_features/models/account_bank_statement.py b/account_advanced_protection_features/models/account_bank_statement.py index 79093b3..f7b4dbe 100644 --- a/account_advanced_protection_features/models/account_bank_statement.py +++ b/account_advanced_protection_features/models/account_bank_statement.py @@ -1,4 +1,4 @@ -from odoo import models, _ +from odoo import api, models, _ from odoo.exceptions import UserError class AccountBankStatement(models.Model): @@ -19,6 +19,19 @@ class AccountBankStatement(models.Model): class AccountBankStatementLine(models.Model): _inherit = "account.bank.statement.line" + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + journal_id = vals.get("journal_id") + if journal_id: + journal = self.env["account.journal"].browse(journal_id) + if not journal.allow_bank_statement_line_creation: + raise UserError( + _("Manual creation of bank statement lines is not allowed for the journal %s.") + % journal.display_name + ) + return super().create(vals_list) + def unlink(self): for line in self: if not line.journal_id.allow_bank_statement_deletion: diff --git a/account_advanced_protection_features/models/account_journal.py b/account_advanced_protection_features/models/account_journal.py index 94755d2..8c3a0b9 100644 --- a/account_advanced_protection_features/models/account_journal.py +++ b/account_advanced_protection_features/models/account_journal.py @@ -10,3 +10,7 @@ class AccountJournal(models.Model): help="Users with group Show Full Accounting Features (id: group_account_user) will be allowed to delete account bank statements " "and bank statement lines." ) + allow_bank_statement_line_creation = fields.Boolean( + "Allow manual bank statement lines creation", + help="If unchecked, users will not be allowed to manually create bank statement lines for this journal." + ) diff --git a/account_advanced_protection_features/tests/__init__.py b/account_advanced_protection_features/tests/__init__.py index f15da20..22c6cf9 100644 --- a/account_advanced_protection_features/tests/__init__.py +++ b/account_advanced_protection_features/tests/__init__.py @@ -1 +1,2 @@ from . import test_account_move +from . import test_account_bank_statement diff --git a/account_advanced_protection_features/tests/test_account_bank_statement.py b/account_advanced_protection_features/tests/test_account_bank_statement.py new file mode 100644 index 0000000..090a679 --- /dev/null +++ b/account_advanced_protection_features/tests/test_account_bank_statement.py @@ -0,0 +1,40 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase +from odoo.exceptions import UserError + + +class TestBankStatementLineCreation(TransactionCase): + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.bank_journal = cls.env["account.journal"].search( + [("type", "=", "bank")], limit=1 + ) + cls.partner = cls.env["res.partner"].create({"name": "Test Partner"}) + + def test_create_blocks_creation_when_not_allowed(self): + """Test that create raises UserError when creation is not allowed.""" + self.bank_journal.allow_bank_statement_line_creation = False + + with self.assertRaises(UserError): + self.env["account.bank.statement.line"].create({ + "journal_id": self.bank_journal.id, + "amount": 100.0, + "payment_ref": "Test", + "date": "2024-01-01", + }) + + def test_create_allows_creation_when_allowed(self): + """Test that create works when creation is allowed.""" + self.bank_journal.allow_bank_statement_line_creation = True + + line = self.env["account.bank.statement.line"].create({ + "journal_id": self.bank_journal.id, + "amount": 100.0, + "payment_ref": "Test", + "date": "2024-01-01", + }) + + self.assertTrue(line.exists()) diff --git a/account_advanced_protection_features/views/account_journal_views.xml b/account_advanced_protection_features/views/account_journal_views.xml index 4e3b367..f3b8e35 100644 --- a/account_advanced_protection_features/views/account_journal_views.xml +++ b/account_advanced_protection_features/views/account_journal_views.xml @@ -20,6 +20,11 @@ groups="account_advanced_protection_features.group_account_protection_manager" attrs="{'invisible': [('type', 'not in', ['bank', 'cash'])]}" /> + diff --git a/account_usability_misc/README.rst b/account_usability_misc/README.rst index 02b8169..333bcf9 100644 --- a/account_usability_misc/README.rst +++ b/account_usability_misc/README.rst @@ -13,11 +13,9 @@ Use Odoo normal module installation procedure to install Description =========== -- Removes the right to unlink bank statements and bank statement lines for all users - Changes some french translation - On reconcile view : filter account move lines by defaut with journal type -- Hide Create button in Bank Statement tree view -- Create a technical group with unlink righ on bank statements and bank statement lines +- On bills list view (i.e factures fournisseurs) : add the column Message attachment count (i.e nombre de pièces jointes) Known issues / Roadmap ====================== diff --git a/account_usability_misc/__manifest__.py b/account_usability_misc/__manifest__.py index 664c96f..cac53d2 100644 --- a/account_usability_misc/__manifest__.py +++ b/account_usability_misc/__manifest__.py @@ -10,14 +10,11 @@ 'depends': [ 'account', 'base', - 'account_reconcile_oca', - 'account_statement_base', + 'account_reconcile_oca' ], 'data': [ 'views/account_search.xml', - 'views/account_tree_view.xml', - 'views/bank_statement_line_views.xml', - 'views/bank_statement_views.xml', + 'views/account_tree_view.xml' ], 'installable': True, 'auto_install': False, diff --git a/account_usability_misc/views/bank_statement_line_views.xml b/account_usability_misc/views/bank_statement_line_views.xml deleted file mode 100644 index 5400d71..0000000 --- a/account_usability_misc/views/bank_statement_line_views.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - account.bank.statement.line.tree.inherit.hide.create - account.bank.statement.line - - - - false - - - - - - - - account.bank.statement.line.kanban.inherit.hide.create - account.bank.statement.line - - - - false - - - - - - diff --git a/account_usability_misc/views/bank_statement_views.xml b/account_usability_misc/views/bank_statement_views.xml deleted file mode 100644 index 5349dea..0000000 --- a/account_usability_misc/views/bank_statement_views.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - account.bank.statement.tree - account.bank.statement - - - - false - - - - \ No newline at end of file