Skip to content

Commit

Permalink
[IMP] account_statement_import_online: add option to enable or disabl…
Browse files Browse the repository at this point in the history
…e statement creation.

Starting from Odoo 16, bank statements are optional. This commit introduces the option to create statements automatically or skip their creation.
  • Loading branch information
carlos-lopez-tecnativa committed Dec 30, 2024
1 parent e383389 commit 0dfe579
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ class OnlineBankStatementProvider(models.Model):

company_id = fields.Many2one(related="journal_id.company_id", store=True)
active = fields.Boolean(default=True)
create_statement = fields.Boolean(
default=True,
help="Create statements automatically or not. Since V16, statements are optional.",
)
name = fields.Char(compute="_compute_name", store=True)
journal_id = fields.Many2one(
comodel_name="account.journal",
Expand Down Expand Up @@ -81,6 +85,7 @@ class OnlineBankStatementProvider(models.Model):
("monthly", "Monthly statements"),
],
default="daily",
string="Transaction Syncronization",
required=True,
)
api_base = fields.Char()
Expand Down Expand Up @@ -298,6 +303,9 @@ def _statement_create_or_write(self, statement_values):
"""Final creation of statement if new, else write."""
AccountBankStatement = self.env["account.bank.statement"]
is_scheduled = self.env.context.get("scheduled")
if not self.create_statement:
self._online_create_statement_lines(statement_values)
return AccountBankStatement # Return empty statement
if is_scheduled:
AccountBankStatement = AccountBankStatement.with_context(
tracking_disable=True,
Expand All @@ -319,6 +327,11 @@ def _statement_create_or_write(self, statement_values):
statement.write(statement_values)
return statement

def _online_create_statement_lines(self, statement_values):
AccountBankStatementLine = self.env["account.bank.statement.line"]
lines = [line[2] for line in statement_values.get("line_ids", [])]
AccountBankStatementLine.create(lines)

def _get_statement_filtered_lines(
self,
unfiltered_lines,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,15 @@ def test_dont_create_empty_statements(self):
self.assertEqual(statements[1].balance_end, 200)
self.assertEqual(len(statements[1].line_ids), 1)

def test_dont_create_statement(self):
self.provider.statement_creation_mode = "monthly"
self.provider.create_statement = False
date_since = datetime(2024, 12, 1)
date_until = datetime(2024, 12, 31, 23, 59, 59)
self.provider.with_context(step={"days": 1})._pull(date_since, date_until)
self._getExpectedStatements(0)
self._getExpectedLines(31)

def test_unlink_provider(self):
"""Unlink provider should clear fields on journal."""
self.provider.unlink()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
</group>
<group name="configuration" string="Configuration">
<field name="statement_creation_mode" />
<field name="create_statement" />
<field name="tz" />
</group>
</group>
Expand Down

0 comments on commit 0dfe579

Please sign in to comment.