2 Commits

Author SHA1 Message Date
e1f1d748ff [IMP] account_usability_misc: do not hide bank statement lines creation buttons
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m35s
2026-01-21 10:16:04 +01:00
fefd9a6a34 IMP] account_advanced_protection_features: add option allow_bank_statement_line_creation 2026-01-21 10:15:50 +01:00
2 changed files with 29 additions and 25 deletions

View File

@@ -19,19 +19,18 @@ class AccountBankStatement(models.Model):
class AccountBankStatementLine(models.Model): class AccountBankStatementLine(models.Model):
_inherit = "account.bank.statement.line" _inherit = "account.bank.statement.line"
# This function is called when a user opens the form to create a new bank statement line @api.model_create_multi
@api.model def create(self, vals_list):
def default_get(self, fields_list): for vals in vals_list:
res = super().default_get(fields_list) journal_id = vals.get("journal_id")
journal_id = self._context.get('default_journal_id') or res.get('journal_id') if journal_id:
if journal_id: journal = self.env["account.journal"].browse(journal_id)
journal = self.env["account.journal"].browse(journal_id) if not journal.allow_bank_statement_line_creation:
if not journal.allow_bank_statement_line_creation: raise UserError(
raise UserError( _("Manual creation of bank statement lines is not allowed for the journal %s.")
_("Manual creation of bank statement lines is not allowed for the journal %s.") % journal.display_name
% journal.display_name )
) return super().create(vals_list)
return res
def unlink(self): def unlink(self):
for line in self: for line in self:

View File

@@ -14,22 +14,27 @@ class TestBankStatementLineCreation(TransactionCase):
) )
cls.partner = cls.env["res.partner"].create({"name": "Test Partner"}) cls.partner = cls.env["res.partner"].create({"name": "Test Partner"})
def test_default_get_blocks_creation_when_not_allowed(self): def test_create_blocks_creation_when_not_allowed(self):
"""Test that default_get raises UserError when creation is not allowed.""" """Test that create raises UserError when creation is not allowed."""
self.bank_journal.allow_bank_statement_line_creation = False self.bank_journal.allow_bank_statement_line_creation = False
with self.assertRaises(UserError): with self.assertRaises(UserError):
self.env["account.bank.statement.line"].with_context( self.env["account.bank.statement.line"].create({
default_journal_id=self.bank_journal.id "journal_id": self.bank_journal.id,
).default_get(["journal_id", "amount", "payment_ref"]) "amount": 100.0,
"payment_ref": "Test",
"date": "2024-01-01",
})
def test_default_get_allows_creation_when_allowed(self): def test_create_allows_creation_when_allowed(self):
"""Test that default_get works when creation is allowed.""" """Test that create works when creation is allowed."""
self.bank_journal.allow_bank_statement_line_creation = True self.bank_journal.allow_bank_statement_line_creation = True
# Should not raise line = self.env["account.bank.statement.line"].create({
result = self.env["account.bank.statement.line"].with_context( "journal_id": self.bank_journal.id,
default_journal_id=self.bank_journal.id "amount": 100.0,
).default_get(["journal_id", "amount", "payment_ref"]) "payment_ref": "Test",
"date": "2024-01-01",
})
self.assertIsInstance(result, dict) self.assertTrue(line.exists())