mirror of
https://github.com/OCA/bank-statement-import.git
synced 2025-01-20 12:37:43 +02:00
@@ -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,
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user