mirror of
https://github.com/OCA/bank-statement-import.git
synced 2025-01-20 12:37:43 +02:00
[IMP] account_bank_statement_import_online: black, isort, prettier
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
"version": "13.0.1.0.0",
|
||||
"author": "CorporateHub, Odoo Community Association (OCA)",
|
||||
"maintainers": ["alexey-pelykh"],
|
||||
"website": "https://github.com/OCA/bank-statement-import/",
|
||||
"website": "https://github.com/OCA/bank-statement-import",
|
||||
"license": "AGPL-3",
|
||||
"category": "Accounting",
|
||||
"summary": "Online bank statements update",
|
||||
|
||||
@@ -47,7 +47,9 @@ class OnlineBankStatementProvider(models.Model):
|
||||
),
|
||||
)
|
||||
service = fields.Selection(
|
||||
selection=lambda self: self._selection_service(), required=True, readonly=True,
|
||||
selection=lambda self: self._selection_service(),
|
||||
required=True,
|
||||
readonly=True,
|
||||
)
|
||||
interval_type = fields.Selection(
|
||||
selection=[
|
||||
@@ -60,14 +62,19 @@ class OnlineBankStatementProvider(models.Model):
|
||||
required=True,
|
||||
)
|
||||
interval_number = fields.Integer(
|
||||
string="Scheduled update interval", default=1, required=True,
|
||||
string="Scheduled update interval",
|
||||
default=1,
|
||||
required=True,
|
||||
)
|
||||
update_schedule = fields.Char(
|
||||
string="Update Schedule", compute="_compute_update_schedule",
|
||||
string="Update Schedule",
|
||||
compute="_compute_update_schedule",
|
||||
)
|
||||
last_successful_run = fields.Datetime(string="Last successful pull")
|
||||
next_run = fields.Datetime(
|
||||
string="Next scheduled pull", default=fields.Datetime.now, required=True,
|
||||
string="Next scheduled pull",
|
||||
default=fields.Datetime.now,
|
||||
required=True,
|
||||
)
|
||||
statement_creation_mode = fields.Selection(
|
||||
selection=[
|
||||
@@ -186,7 +193,8 @@ class OnlineBankStatementProvider(models.Model):
|
||||
break
|
||||
raise
|
||||
statement_date = provider._get_statement_date(
|
||||
statement_date_since, statement_date_until,
|
||||
statement_date_since,
|
||||
statement_date_until,
|
||||
)
|
||||
if not data:
|
||||
data = ([], {})
|
||||
@@ -307,11 +315,21 @@ class OnlineBankStatementProvider(models.Model):
|
||||
return relativedelta(days=1, hour=0, minute=0, second=0, microsecond=0)
|
||||
elif self.statement_creation_mode == "weekly":
|
||||
return relativedelta(
|
||||
weeks=1, weekday=MO, hour=0, minute=0, second=0, microsecond=0,
|
||||
weeks=1,
|
||||
weekday=MO,
|
||||
hour=0,
|
||||
minute=0,
|
||||
second=0,
|
||||
microsecond=0,
|
||||
)
|
||||
elif self.statement_creation_mode == "monthly":
|
||||
return relativedelta(
|
||||
months=1, day=1, hour=0, minute=0, second=0, microsecond=0,
|
||||
months=1,
|
||||
day=1,
|
||||
hour=0,
|
||||
minute=0,
|
||||
second=0,
|
||||
microsecond=0,
|
||||
)
|
||||
|
||||
def _get_statement_date(self, date_since, date_until):
|
||||
|
||||
@@ -18,7 +18,8 @@ class OnlineBankStatementProviderDummy(models.Model):
|
||||
self.ensure_one()
|
||||
if self.service != "dummy":
|
||||
return super()._obtain_statement_data(
|
||||
date_since, date_until,
|
||||
date_since,
|
||||
date_until,
|
||||
) # pragma: no cover
|
||||
|
||||
if self.env.context.get("crash", False):
|
||||
|
||||
@@ -85,7 +85,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
provider.statement_creation_mode = "daily"
|
||||
|
||||
provider.with_context(step={"hours": 2})._pull(
|
||||
self.now - relativedelta(days=1), self.now,
|
||||
self.now - relativedelta(days=1),
|
||||
self.now,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(self.AccountBankStatement.search([("journal_id", "=", journal.id)])), 2
|
||||
@@ -107,7 +108,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
provider.statement_creation_mode = "weekly"
|
||||
|
||||
provider.with_context(step={"hours": 8})._pull(
|
||||
self.now - relativedelta(weeks=1), self.now,
|
||||
self.now - relativedelta(weeks=1),
|
||||
self.now,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(self.AccountBankStatement.search([("journal_id", "=", journal.id)])), 2
|
||||
@@ -129,7 +131,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
provider.statement_creation_mode = "monthly"
|
||||
|
||||
provider.with_context(step={"hours": 8})._pull(
|
||||
self.now - relativedelta(months=1), self.now,
|
||||
self.now - relativedelta(months=1),
|
||||
self.now,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(self.AccountBankStatement.search([("journal_id", "=", journal.id)])), 2
|
||||
@@ -179,7 +182,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
data_since=self.now - relativedelta(weeks=2),
|
||||
data_until=self.now,
|
||||
)._pull(
|
||||
self.now - relativedelta(weeks=2), self.now,
|
||||
self.now - relativedelta(weeks=2),
|
||||
self.now,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
@@ -193,7 +197,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
data_since=self.now - relativedelta(weeks=3),
|
||||
data_until=self.now - relativedelta(weeks=1),
|
||||
)._pull(
|
||||
self.now - relativedelta(weeks=3), self.now - relativedelta(weeks=1),
|
||||
self.now - relativedelta(weeks=3),
|
||||
self.now - relativedelta(weeks=1),
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
@@ -207,7 +212,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
data_since=self.now - relativedelta(weeks=1),
|
||||
data_until=self.now,
|
||||
)._pull(
|
||||
self.now - relativedelta(weeks=1), self.now,
|
||||
self.now - relativedelta(weeks=1),
|
||||
self.now,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
@@ -296,7 +302,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
provider.statement_creation_mode = "weekly"
|
||||
|
||||
provider.with_context(crash=True, scheduled=True)._pull(
|
||||
self.now - relativedelta(hours=1), self.now,
|
||||
self.now - relativedelta(hours=1),
|
||||
self.now,
|
||||
)
|
||||
self.assertFalse(
|
||||
self.AccountBankStatement.search([("journal_id", "=", journal.id)])
|
||||
@@ -319,7 +326,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
|
||||
with self.assertRaises(Exception):
|
||||
provider.with_context(crash=True)._pull(
|
||||
self.now - relativedelta(hours=1), self.now,
|
||||
self.now - relativedelta(hours=1),
|
||||
self.now,
|
||||
)
|
||||
|
||||
def test_pull_httperror(self):
|
||||
@@ -339,9 +347,11 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
|
||||
with self.assertRaises(HTTPError):
|
||||
provider.with_context(
|
||||
crash=True, exception=HTTPError(None, 500, "Error", None, None),
|
||||
crash=True,
|
||||
exception=HTTPError(None, 500, "Error", None, None),
|
||||
)._pull(
|
||||
self.now - relativedelta(hours=1), self.now,
|
||||
self.now - relativedelta(hours=1),
|
||||
self.now,
|
||||
)
|
||||
|
||||
def test_pull_no_balance(self):
|
||||
@@ -360,12 +370,17 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
provider.statement_creation_mode = "daily"
|
||||
|
||||
provider.with_context(
|
||||
step={"hours": 2}, balance_start=0, amount=100.0, balance=False,
|
||||
step={"hours": 2},
|
||||
balance_start=0,
|
||||
amount=100.0,
|
||||
balance=False,
|
||||
)._pull(
|
||||
self.now - relativedelta(days=1), self.now,
|
||||
self.now - relativedelta(days=1),
|
||||
self.now,
|
||||
)
|
||||
statements = self.AccountBankStatement.search(
|
||||
[("journal_id", "=", journal.id)], order="date asc",
|
||||
[("journal_id", "=", journal.id)],
|
||||
order="date asc",
|
||||
)
|
||||
self.assertFalse(statements[0].balance_start)
|
||||
self.assertFalse(statements[0].balance_end_real)
|
||||
@@ -421,24 +436,30 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
}
|
||||
|
||||
provider.with_context(
|
||||
**provider_context, data_until=datetime(2020, 1, 31),
|
||||
**provider_context,
|
||||
data_until=datetime(2020, 1, 31),
|
||||
)._pull(
|
||||
datetime(2020, 1, 1), datetime(2020, 1, 31),
|
||||
datetime(2020, 1, 1),
|
||||
datetime(2020, 1, 31),
|
||||
)
|
||||
statements = self.AccountBankStatement.search(
|
||||
[("journal_id", "=", journal.id)], order="date asc",
|
||||
[("journal_id", "=", journal.id)],
|
||||
order="date asc",
|
||||
)
|
||||
self.assertEqual(len(statements), 1)
|
||||
self.assertEqual(statements[0].balance_start, 0.0)
|
||||
self.assertEqual(statements[0].balance_end_real, 30.0)
|
||||
|
||||
provider.with_context(
|
||||
**provider_context, data_until=datetime(2020, 2, 15),
|
||||
**provider_context,
|
||||
data_until=datetime(2020, 2, 15),
|
||||
)._pull(
|
||||
datetime(2020, 1, 1), datetime(2020, 2, 29),
|
||||
datetime(2020, 1, 1),
|
||||
datetime(2020, 2, 29),
|
||||
)
|
||||
statements = self.AccountBankStatement.search(
|
||||
[("journal_id", "=", journal.id)], order="date asc",
|
||||
[("journal_id", "=", journal.id)],
|
||||
order="date asc",
|
||||
)
|
||||
self.assertEqual(len(statements), 2)
|
||||
self.assertEqual(statements[0].balance_start, 0.0)
|
||||
@@ -447,12 +468,15 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
self.assertEqual(statements[1].balance_end_real, 45.0)
|
||||
|
||||
provider.with_context(
|
||||
**provider_context, data_until=datetime(2020, 2, 29),
|
||||
**provider_context,
|
||||
data_until=datetime(2020, 2, 29),
|
||||
)._pull(
|
||||
datetime(2020, 1, 1), datetime(2020, 2, 29),
|
||||
datetime(2020, 1, 1),
|
||||
datetime(2020, 2, 29),
|
||||
)
|
||||
statements = self.AccountBankStatement.search(
|
||||
[("journal_id", "=", journal.id)], order="date asc",
|
||||
[("journal_id", "=", journal.id)],
|
||||
order="date asc",
|
||||
)
|
||||
self.assertEqual(len(statements), 2)
|
||||
self.assertEqual(statements[0].balance_start, 0.0)
|
||||
@@ -480,7 +504,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
data_until=datetime(2020, 4, 18, 2, 0),
|
||||
tz="UTC",
|
||||
)._pull(
|
||||
datetime(2020, 4, 17, 22, 0), datetime(2020, 4, 18, 2, 0),
|
||||
datetime(2020, 4, 17, 22, 0),
|
||||
datetime(2020, 4, 18, 2, 0),
|
||||
)
|
||||
|
||||
statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)])
|
||||
@@ -513,7 +538,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
data_until=datetime(2020, 4, 18, 2, 0),
|
||||
tz="UTC",
|
||||
)._pull(
|
||||
datetime(2020, 4, 17, 22, 0), datetime(2020, 4, 18, 2, 0),
|
||||
datetime(2020, 4, 17, 22, 0),
|
||||
datetime(2020, 4, 18, 2, 0),
|
||||
)
|
||||
|
||||
statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)])
|
||||
@@ -545,7 +571,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
data_since=datetime(2020, 4, 18, 0, 0),
|
||||
data_until=datetime(2020, 4, 18, 4, 0),
|
||||
)._pull(
|
||||
datetime(2020, 4, 17, 22, 0), datetime(2020, 4, 18, 2, 0),
|
||||
datetime(2020, 4, 17, 22, 0),
|
||||
datetime(2020, 4, 18, 2, 0),
|
||||
)
|
||||
|
||||
statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)])
|
||||
@@ -572,7 +599,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
provider = journal.online_bank_statement_provider_id
|
||||
provider.active = True
|
||||
provider.with_context(step={"hours": 1}, timestamp_mode="date")._pull(
|
||||
datetime(2020, 4, 18, 0, 0), datetime(2020, 4, 18, 4, 0),
|
||||
datetime(2020, 4, 18, 0, 0),
|
||||
datetime(2020, 4, 18, 4, 0),
|
||||
)
|
||||
|
||||
statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)])
|
||||
@@ -602,7 +630,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
|
||||
data_until=datetime(2020, 4, 18, 4, 0),
|
||||
timestamp_mode="str",
|
||||
)._pull(
|
||||
datetime(2020, 4, 18, 0, 0), datetime(2020, 4, 18, 4, 0),
|
||||
datetime(2020, 4, 18, 0, 0),
|
||||
datetime(2020, 4, 18, 4, 0),
|
||||
)
|
||||
|
||||
statement = self.AccountBankStatement.search([("journal_id", "=", journal.id)])
|
||||
|
||||
@@ -10,10 +10,14 @@ class OnlineBankStatementPullWizard(models.TransientModel):
|
||||
_description = "Online Bank Statement Pull Wizard"
|
||||
|
||||
date_since = fields.Datetime(
|
||||
string="Since", required=True, default=fields.Datetime.now,
|
||||
string="Since",
|
||||
required=True,
|
||||
default=fields.Datetime.now,
|
||||
)
|
||||
date_until = fields.Datetime(
|
||||
string="Until", required=True, default=fields.Datetime.now,
|
||||
string="Until",
|
||||
required=True,
|
||||
default=fields.Datetime.now,
|
||||
)
|
||||
provider_ids = fields.Many2many(
|
||||
string="Providers",
|
||||
@@ -25,7 +29,7 @@ class OnlineBankStatementPullWizard(models.TransientModel):
|
||||
|
||||
def action_pull(self):
|
||||
self.ensure_one()
|
||||
self.with_context(active_test=False,).provider_ids._pull(
|
||||
self.date_since, self.date_until
|
||||
)
|
||||
self.with_context(
|
||||
active_test=False,
|
||||
).provider_ids._pull(self.date_since, self.date_until)
|
||||
return {"type": "ir.actions.act_window_close"}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
../../../../account_bank_statement_import_online
|
||||
6
setup/account_bank_statement_import_online/setup.py
Normal file
6
setup/account_bank_statement_import_online/setup.py
Normal file
@@ -0,0 +1,6 @@
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['setuptools-odoo'],
|
||||
odoo_addon=True,
|
||||
)
|
||||
Reference in New Issue
Block a user