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