Merge PR #754 into 16.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2024-12-31 12:49:54 +00:00
3 changed files with 31 additions and 3 deletions

View File

@@ -26,6 +26,10 @@ class OnlineBankStatementProvider(models.Model):
company_id = fields.Many2one(related="journal_id.company_id", store=True) company_id = fields.Many2one(related="journal_id.company_id", store=True)
active = fields.Boolean(default=True) active = fields.Boolean(default=True)
create_statement = fields.Boolean(
default=True,
help="Create statements for the downloaded transactions automatically or not.",
)
name = fields.Char(compute="_compute_name", store=True) name = fields.Char(compute="_compute_name", store=True)
journal_id = fields.Many2one( journal_id = fields.Many2one(
comodel_name="account.journal", comodel_name="account.journal",
@@ -76,11 +80,12 @@ class OnlineBankStatementProvider(models.Model):
) )
statement_creation_mode = fields.Selection( statement_creation_mode = fields.Selection(
selection=[ selection=[
("daily", "Daily statements"), ("daily", "Day"),
("weekly", "Weekly statements"), ("weekly", "Week"),
("monthly", "Monthly statements"), ("monthly", "Month"),
], ],
default="daily", default="daily",
string="Transactions interval to obtain",
required=True, required=True,
) )
api_base = fields.Char() api_base = fields.Char()
@@ -298,6 +303,8 @@ class OnlineBankStatementProvider(models.Model):
"""Final creation of statement if new, else write.""" """Final creation of statement if new, else write."""
AccountBankStatement = self.env["account.bank.statement"] AccountBankStatement = self.env["account.bank.statement"]
is_scheduled = self.env.context.get("scheduled") is_scheduled = self.env.context.get("scheduled")
if not self.create_statement:
return self._online_create_statement_lines(statement_values)
if is_scheduled: if is_scheduled:
AccountBankStatement = AccountBankStatement.with_context( AccountBankStatement = AccountBankStatement.with_context(
tracking_disable=True, tracking_disable=True,
@@ -319,6 +326,17 @@ class OnlineBankStatementProvider(models.Model):
statement.write(statement_values) statement.write(statement_values)
return statement return statement
def _online_create_statement_lines(self, statement_values):
AccountBankStatementLine = self.env["account.bank.statement.line"]
is_scheduled = self.env.context.get("scheduled")
if is_scheduled:
AccountBankStatementLine = AccountBankStatementLine.with_context(
tracking_disable=True,
)
lines = [line[2] for line in statement_values.get("line_ids", [])]
AccountBankStatementLine.create(lines)
return self.env["account.bank.statement"] # Return empty statement
def _get_statement_filtered_lines( def _get_statement_filtered_lines(
self, self,
unfiltered_lines, unfiltered_lines,

View File

@@ -385,6 +385,15 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
self.assertEqual(statements[1].balance_end, 200) self.assertEqual(statements[1].balance_end, 200)
self.assertEqual(len(statements[1].line_ids), 1) 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): def test_unlink_provider(self):
"""Unlink provider should clear fields on journal.""" """Unlink provider should clear fields on journal."""
self.provider.unlink() self.provider.unlink()

View File

@@ -83,6 +83,7 @@
</group> </group>
<group name="configuration" string="Configuration"> <group name="configuration" string="Configuration">
<field name="statement_creation_mode" /> <field name="statement_creation_mode" />
<field name="create_statement" />
<field name="tz" /> <field name="tz" />
</group> </group>
</group> </group>