From 95f7427a89b79205ea0ffaf2a36a4a77cd1df0fc Mon Sep 17 00:00:00 2001 From: Alexey Pelykh Date: Sat, 25 Apr 2020 08:15:54 +0200 Subject: [PATCH] [MIG] account_bank_statement_import_online: Backport to 11.0 --- .../__manifest__.py | 2 +- .../models/account_journal.py | 12 ++-- .../models/online_bank_statement_provider.py | 29 +++++--- .../online_bank_statement_provider_dummy.py | 9 +-- ...st_account_bank_statement_import_online.py | 68 ++++++++----------- .../views/account_journal.xml | 11 ++- .../online_bank_statement_pull_wizard.py | 4 +- 7 files changed, 65 insertions(+), 70 deletions(-) diff --git a/account_bank_statement_import_online/__manifest__.py b/account_bank_statement_import_online/__manifest__.py index eecfd845..597993b2 100644 --- a/account_bank_statement_import_online/__manifest__.py +++ b/account_bank_statement_import_online/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Online Bank Statements', - 'version': '12.0.1.4.1', + 'version': '11.0.1.0.0', 'author': 'Brainbean Apps, ' 'Dataplug, ' diff --git a/account_bank_statement_import_online/models/account_journal.py b/account_bank_statement_import_online/models/account_journal.py index 9fdc2302..d91649d4 100644 --- a/account_bank_statement_import_online/models/account_journal.py +++ b/account_bank_statement_import_online/models/account_journal.py @@ -12,6 +12,9 @@ _logger = logging.getLogger(__name__) class AccountJournal(models.Model): _inherit = 'account.journal' + bank_statements_source = fields.Selection( + selection_add=[('online', 'Online (OCA)')], + ) online_bank_statement_provider = fields.Selection( selection=lambda self: self.env[ 'account.journal' @@ -24,11 +27,6 @@ class AccountJournal(models.Model): copy=False, ) - def __get_bank_statements_available_sources(self): - result = super().__get_bank_statements_available_sources() - result.append(('online', _('Online (OCA)'))) - return result - @api.model def _selection_online_bank_statement_provider(self): return self.env[ @@ -70,7 +68,7 @@ class AccountJournal(models.Model): @api.model def create(self, vals): - rec = super().create(vals) + rec = super(AccountJournal, self).create(vals) if 'bank_statements_source' in vals \ or 'online_bank_statement_provider' in vals: rec._update_online_bank_statement_provider_id() @@ -78,7 +76,7 @@ class AccountJournal(models.Model): @api.multi def write(self, vals): - res = super().write(vals) + res = super(AccountJournal, self).write(vals) if 'bank_statements_source' in vals \ or 'online_bank_statement_provider' in vals: self._update_online_bank_statement_provider_id() diff --git a/account_bank_statement_import_online/models/online_bank_statement_provider.py b/account_bank_statement_import_online/models/online_bank_statement_provider.py index 2d44a0d4..9a93a6c7 100644 --- a/account_bank_statement_import_online/models/online_bank_statement_provider.py +++ b/account_bank_statement_import_online/models/online_bank_statement_provider.py @@ -11,8 +11,8 @@ from pytz import timezone, utc from sys import exc_info from odoo import models, fields, api, _ -from odoo.addons.base.models.res_bank import sanitize_account_number -from odoo.addons.base.models.res_partner import _tz_get +from odoo.addons.base.res.res_bank import sanitize_account_number +from odoo.addons.base.res.res_partner import _tz_get _logger = logging.getLogger(__name__) @@ -24,6 +24,7 @@ class OnlineBankStatementProvider(models.Model): company_id = fields.Many2one( related='journal_id.company_id', + readonly=True, store=True, ) active = fields.Boolean() @@ -43,9 +44,11 @@ class OnlineBankStatementProvider(models.Model): ) currency_id = fields.Many2one( related='journal_id.currency_id', + readonly=True, ) account_number = fields.Char( - related='journal_id.bank_account_id.sanitized_acc_number' + related='journal_id.bank_account_id.sanitized_acc_number', + readonly=True, ) tz = fields.Selection( selection=_tz_get, @@ -220,15 +223,17 @@ class OnlineBankStatementProvider(models.Model): statement = AccountBankStatement.search([ ('journal_id', '=', provider.journal_id.id), ('state', '=', 'open'), - ('date', '=', statement_date), + ('date', '=', fields.Date.to_string(statement_date)), ], limit=1) if not statement: statement_values.update({ 'name': provider.journal_id.sequence_id.with_context( - ir_sequence_date=statement_date, + ir_sequence_date=fields.Date.to_string( + statement_date + ), ).next_by_id(), 'journal_id': provider.journal_id.id, - 'date': statement_date, + 'date': fields.Date.to_string(statement_date), }) statement = AccountBankStatement.with_context( journal_id=provider.journal_id.id, @@ -269,7 +274,7 @@ class OnlineBankStatementProvider(models.Model): date = date.replace(tzinfo=utc) date = date.astimezone(provider_tz).replace(tzinfo=None) - line_values['date'] = date + line_values['date'] = fields.Datetime.to_string(date) unique_import_id = line_values.get('unique_import_id') if unique_import_id: @@ -315,7 +320,8 @@ class OnlineBankStatementProvider(models.Model): def _schedule_next_run(self): self.ensure_one() self.last_successful_run = self.next_run - self.next_run += self._get_next_run_period() + self.next_run = fields.Datetime.from_string(self.next_run) \ + + self._get_next_run_period() @api.multi def _get_statement_date_since(self, date): @@ -413,12 +419,13 @@ class OnlineBankStatementProvider(models.Model): providers.mapped('journal_id.name') )) for provider in providers.with_context({'scheduled': True}): - date_since = ( + next_run = fields.Datetime.from_string(provider.next_run) + date_since = fields.Datetime.from_string( provider.last_successful_run ) if provider.last_successful_run else ( - provider.next_run - provider._get_next_run_period() + next_run - provider._get_next_run_period() ) - date_until = provider.next_run + date_until = next_run provider._pull(date_since, date_until) _logger.info('Scheduled pull of online bank statements complete.') diff --git a/account_bank_statement_import_online/tests/online_bank_statement_provider_dummy.py b/account_bank_statement_import_online/tests/online_bank_statement_provider_dummy.py index 93b812e9..34f84d46 100644 --- a/account_bank_statement_import_online/tests/online_bank_statement_provider_dummy.py +++ b/account_bank_statement_import_online/tests/online_bank_statement_provider_dummy.py @@ -17,10 +17,11 @@ class OnlineBankStatementProviderDummy(models.Model): def _obtain_statement_data(self, date_since, date_until): self.ensure_one() if self.service != 'dummy': - return super()._obtain_statement_data( - date_since, - date_until, - ) # pragma: no cover + return super(OnlineBankStatementProviderDummy, self) \ + ._obtain_statement_data( + date_since, + date_until, + ) # pragma: no cover if self.env.context.get('crash', False): exception = self.env.context.get( diff --git a/account_bank_statement_import_online/tests/test_account_bank_statement_import_online.py b/account_bank_statement_import_online/tests/test_account_bank_statement_import_online.py index e8685190..048da677 100644 --- a/account_bank_statement_import_online/tests/test_account_bank_statement_import_online.py +++ b/account_bank_statement_import_online/tests/test_account_bank_statement_import_online.py @@ -2,7 +2,7 @@ # Copyright 2019-2020 Dataplug (https://dataplug.io) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from datetime import date, datetime +from datetime import datetime from dateutil.relativedelta import relativedelta from psycopg2 import IntegrityError from urllib.error import HTTPError @@ -15,9 +15,9 @@ from odoo import fields class TestAccountBankAccountStatementImportOnline(common.TransactionCase): def setUp(self): - super().setUp() + super(TestAccountBankAccountStatementImportOnline, self).setUp() - self.now = fields.Datetime.now() + self.now = fields.Datetime.from_string(fields.Datetime.now()) self.AccountJournal = self.env['account.journal'] self.OnlineBankStatementProvider = self.env[ 'online.bank.statement.provider' @@ -34,10 +34,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase): 'type': 'bank', 'code': 'BANK', }) - with common.Form(journal) as journal_form: - journal_form.bank_statements_source = 'online' - journal_form.online_bank_statement_provider = 'dummy' - journal_form.save() + journal.bank_statements_source = 'online' + journal.online_bank_statement_provider = 'dummy' with self.assertRaises(IntegrityError), mute_logger('odoo.sql_db'): journal.online_bank_statement_provider_id.unlink() @@ -48,10 +46,8 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase): 'type': 'bank', 'code': 'BANK', }) - with common.Form(journal) as journal_form: - journal_form.bank_statements_source = 'online' - journal_form.online_bank_statement_provider = 'dummy' - journal_form.save() + journal.bank_statements_source = 'online' + journal.online_bank_statement_provider = 'dummy' self.assertTrue(journal.online_bank_statement_provider_id) journal.unlink() @@ -63,16 +59,12 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase): 'type': 'bank', 'code': 'BANK', }) - with common.Form(journal) as journal_form: - journal_form.bank_statements_source = 'online' - journal_form.online_bank_statement_provider = 'dummy' - journal_form.save() + journal.bank_statements_source = 'online' + journal.online_bank_statement_provider = 'dummy' self.assertTrue(journal.online_bank_statement_provider_id) - with common.Form(journal) as journal_form: - journal_form.bank_statements_source = 'undefined' - journal_form.save() + journal.bank_statements_source = 'undefined' self.assertFalse(journal.online_bank_statement_provider_id) self.assertFalse(self.OnlineBankStatementProvider.search([])) @@ -512,10 +504,10 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase): lines = statement.mapped('line_ids').sorted() self.assertEqual(len(lines), 4) - self.assertEqual(lines[0].date, date(2020, 4, 17)) - self.assertEqual(lines[1].date, date(2020, 4, 17)) - self.assertEqual(lines[2].date, date(2020, 4, 18)) - self.assertEqual(lines[3].date, date(2020, 4, 18)) + self.assertEqual(lines[0].date, '2020-04-17') + self.assertEqual(lines[1].date, '2020-04-17') + self.assertEqual(lines[2].date, '2020-04-18') + self.assertEqual(lines[3].date, '2020-04-18') def test_tz_non_utc(self): journal = self.AccountJournal.create({ @@ -544,10 +536,10 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase): lines = statement.mapped('line_ids').sorted() self.assertEqual(len(lines), 4) - self.assertEqual(lines[0].date, date(2020, 4, 18)) - self.assertEqual(lines[1].date, date(2020, 4, 18)) - self.assertEqual(lines[2].date, date(2020, 4, 18)) - self.assertEqual(lines[3].date, date(2020, 4, 18)) + self.assertEqual(lines[0].date, '2020-04-18') + self.assertEqual(lines[1].date, '2020-04-18') + self.assertEqual(lines[2].date, '2020-04-18') + self.assertEqual(lines[3].date, '2020-04-18') def test_other_tz_to_utc(self): journal = self.AccountJournal.create({ @@ -577,10 +569,10 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase): lines = statement.mapped('line_ids').sorted() self.assertEqual(len(lines), 4) - self.assertEqual(lines[0].date, date(2020, 4, 17)) - self.assertEqual(lines[1].date, date(2020, 4, 17)) - self.assertEqual(lines[2].date, date(2020, 4, 18)) - self.assertEqual(lines[3].date, date(2020, 4, 18)) + self.assertEqual(lines[0].date, '2020-04-17') + self.assertEqual(lines[1].date, '2020-04-17') + self.assertEqual(lines[2].date, '2020-04-18') + self.assertEqual(lines[3].date, '2020-04-18') def test_timestamp_date_only(self): journal = self.AccountJournal.create({ @@ -608,10 +600,10 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase): lines = statement.line_ids self.assertEqual(len(lines), 4) - self.assertEqual(lines[0].date, date(2020, 4, 18)) - self.assertEqual(lines[1].date, date(2020, 4, 18)) - self.assertEqual(lines[2].date, date(2020, 4, 18)) - self.assertEqual(lines[3].date, date(2020, 4, 18)) + self.assertEqual(lines[0].date, '2020-04-18') + self.assertEqual(lines[1].date, '2020-04-18') + self.assertEqual(lines[2].date, '2020-04-18') + self.assertEqual(lines[3].date, '2020-04-18') def test_timestamp_date_only(self): journal = self.AccountJournal.create({ @@ -639,7 +631,7 @@ class TestAccountBankAccountStatementImportOnline(common.TransactionCase): lines = statement.line_ids self.assertEqual(len(lines), 4) - self.assertEqual(lines[0].date, date(2020, 4, 18)) - self.assertEqual(lines[1].date, date(2020, 4, 18)) - self.assertEqual(lines[2].date, date(2020, 4, 18)) - self.assertEqual(lines[3].date, date(2020, 4, 18)) + self.assertEqual(lines[0].date, '2020-04-18') + self.assertEqual(lines[1].date, '2020-04-18') + self.assertEqual(lines[2].date, '2020-04-18') + self.assertEqual(lines[3].date, '2020-04-18') diff --git a/account_bank_statement_import_online/views/account_journal.xml b/account_bank_statement_import_online/views/account_journal.xml index 4b7de788..554c6466 100644 --- a/account_bank_statement_import_online/views/account_journal.xml +++ b/account_bank_statement_import_online/views/account_journal.xml @@ -101,14 +101,11 @@ account.journal -
- dashboard.bank_statements_source != 'online_sync' and dashboard.bank_statements_source != 'online' -
- - dashboard.bank_statements_source != 'online_sync' and dashboard.bank_statements_source != 'online' + + dashboard.bank_statements_source == 'file_import' - - dashboard.bank_statements_source != 'online_sync' and dashboard.bank_statements_source != 'online' + + dashboard.bank_statements_source == 'file_import'
diff --git a/account_bank_statement_import_online/wizards/online_bank_statement_pull_wizard.py b/account_bank_statement_import_online/wizards/online_bank_statement_pull_wizard.py index 68bff3f7..b4984c3f 100644 --- a/account_bank_statement_import_online/wizards/online_bank_statement_pull_wizard.py +++ b/account_bank_statement_import_online/wizards/online_bank_statement_pull_wizard.py @@ -33,7 +33,7 @@ class OnlineBankStatementPullWizard(models.TransientModel): self.with_context( active_test=False, ).provider_ids._pull( - self.date_since, - self.date_until + fields.Datetime.from_string(self.date_since), + fields.Datetime.from_string(self.date_until) ) return {'type': 'ir.actions.act_window_close'}