[FIX] account_bank_statement_import_online: correct range filtering

This commit is contained in:
Alexey Pelykh
2020-06-20 07:34:24 +02:00
parent e522ac3396
commit acc27066c4
3 changed files with 38 additions and 36 deletions

View File

@@ -256,7 +256,7 @@ class OnlineBankStatementProvider(models.Model):
date = date.replace(tzinfo=utc) date = date.replace(tzinfo=utc)
date = date.astimezone(utc).replace(tzinfo=None) date = date.astimezone(utc).replace(tzinfo=None)
if date < statement_date_since or date < date_since: if date < statement_date_since:
if 'balance_start' in statement_values: if 'balance_start' in statement_values:
statement_values['balance_start'] = ( statement_values['balance_start'] = (
Decimal( Decimal(
@@ -266,7 +266,7 @@ class OnlineBankStatementProvider(models.Model):
) )
) )
continue continue
elif date >= statement_date_until or date >= date_until: elif date >= statement_date_until:
if 'balance_end_real' in statement_values: if 'balance_end_real' in statement_values:
statement_values['balance_end_real'] = ( statement_values['balance_end_real'] = (
Decimal( Decimal(

View File

@@ -69,30 +69,6 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
self.assertFalse(journal.online_bank_statement_provider_id) self.assertFalse(journal.online_bank_statement_provider_id)
self.assertFalse(self.OnlineBankStatementProvider.search([])) self.assertFalse(self.OnlineBankStatementProvider.search([]))
def test_pull_boundary(self):
journal = self.AccountJournal.create({
'name': 'Bank',
'type': 'bank',
'code': 'BANK',
'bank_statements_source': 'online',
'online_bank_statement_provider': 'dummy',
})
provider = journal.online_bank_statement_provider_id
provider.active = True
provider.with_context(
expand_by=1,
)._pull(
self.now - relativedelta(hours=1),
self.now,
)
statement = self.AccountBankStatement.search(
[('journal_id', '=', journal.id)],
)
self.assertEqual(len(statement), 1)
self.assertEqual(len(statement.line_ids), 12)
def test_pull_mode_daily(self): def test_pull_mode_daily(self):
journal = self.AccountJournal.create({ journal = self.AccountJournal.create({
'name': 'Bank', 'name': 'Bank',
@@ -204,7 +180,11 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
provider.active = True provider.active = True
provider.statement_creation_mode = 'weekly' provider.statement_creation_mode = 'weekly'
provider.with_context(step={'hours': 8})._pull( provider.with_context(
step={'hours': 8},
data_since=self.now - relativedelta(weeks=2),
data_until=self.now,
)._pull(
self.now - relativedelta(weeks=2), self.now - relativedelta(weeks=2),
self.now, self.now,
) )
@@ -215,7 +195,11 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
14 * (24 / 8) 14 * (24 / 8)
) )
provider.with_context(step={'hours': 8})._pull( provider.with_context(
step={'hours': 8},
data_since=self.now - relativedelta(weeks=3),
data_until=self.now - relativedelta(weeks=1),
)._pull(
self.now - relativedelta(weeks=3), self.now - relativedelta(weeks=3),
self.now - relativedelta(weeks=1), self.now - relativedelta(weeks=1),
) )
@@ -226,7 +210,11 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
21 * (24 / 8) 21 * (24 / 8)
) )
provider.with_context(step={'hours': 8})._pull( provider.with_context(
step={'hours': 8},
data_since=self.now - relativedelta(weeks=1),
data_until=self.now,
)._pull(
self.now - relativedelta(weeks=1), self.now - relativedelta(weeks=1),
self.now, self.now,
) )
@@ -432,12 +420,14 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
provider_context = { provider_context = {
'step': {'hours': 24}, 'step': {'hours': 24},
'data_since': datetime(2020, 1, 1), 'data_since': datetime(2020, 1, 1),
'data_until': datetime(2020, 2, 29),
'amount': 1.0, 'amount': 1.0,
'balance_start': 0, 'balance_start': 0,
} }
provider.with_context(**provider_context)._pull( provider.with_context(
**provider_context,
data_until=datetime(2020, 1, 31),
)._pull(
datetime(2020, 1, 1), datetime(2020, 1, 1),
datetime(2020, 1, 31), datetime(2020, 1, 31),
) )
@@ -449,9 +439,12 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
self.assertEqual(statements[0].balance_start, 0.0) self.assertEqual(statements[0].balance_start, 0.0)
self.assertEqual(statements[0].balance_end_real, 30.0) self.assertEqual(statements[0].balance_end_real, 30.0)
provider.with_context(**provider_context)._pull( provider.with_context(
**provider_context,
data_until=datetime(2020, 2, 15),
)._pull(
datetime(2020, 1, 1), datetime(2020, 1, 1),
datetime(2020, 2, 15), datetime(2020, 2, 29),
) )
statements = self.AccountBankStatement.search( statements = self.AccountBankStatement.search(
[('journal_id', '=', journal.id)], [('journal_id', '=', journal.id)],
@@ -463,7 +456,10 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
self.assertEqual(statements[1].balance_start, 31.0) self.assertEqual(statements[1].balance_start, 31.0)
self.assertEqual(statements[1].balance_end_real, 45.0) self.assertEqual(statements[1].balance_end_real, 45.0)
provider.with_context(**provider_context)._pull( provider.with_context(
**provider_context,
data_until=datetime(2020, 2, 29),
)._pull(
datetime(2020, 1, 1), datetime(2020, 1, 1),
datetime(2020, 2, 29), datetime(2020, 2, 29),
) )
@@ -491,6 +487,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
provider.tz = 'UTC' provider.tz = 'UTC'
provider.with_context( provider.with_context(
step={'hours': 1}, step={'hours': 1},
data_since=datetime(2020, 4, 17, 22, 0),
data_until=datetime(2020, 4, 18, 2, 0),
tz='UTC', tz='UTC',
)._pull( )._pull(
datetime(2020, 4, 17, 22, 0), datetime(2020, 4, 17, 22, 0),
@@ -523,6 +521,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
provider.tz = 'Etc/GMT-2' provider.tz = 'Etc/GMT-2'
provider.with_context( provider.with_context(
step={'hours': 1}, step={'hours': 1},
data_since=datetime(2020, 4, 17, 22, 0),
data_until=datetime(2020, 4, 18, 2, 0),
tz='UTC', tz='UTC',
)._pull( )._pull(
datetime(2020, 4, 17, 22, 0), datetime(2020, 4, 17, 22, 0),
@@ -616,6 +616,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase):
provider.active = True provider.active = True
provider.with_context( provider.with_context(
step={'hours': 1}, step={'hours': 1},
data_since=datetime(2020, 4, 18, 0, 0),
data_until=datetime(2020, 4, 18, 4, 0),
timestamp_mode='str', timestamp_mode='str',
)._pull( )._pull(
datetime(2020, 4, 18, 0, 0), datetime(2020, 4, 18, 0, 0),

View File

@@ -15,10 +15,10 @@
<group name="filter"> <group name="filter">
<group name="date_range" colspan="2"> <group name="date_range" colspan="2">
<group> <group>
<field name="date_since"/> <field name="date_since" string="Since (at least)"/>
</group> </group>
<group> <group>
<field name="date_until"/> <field name="date_until" string="Until (at least)"/>
</group> </group>
</group> </group>
</group> </group>