You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.9 KiB
56 lines
1.9 KiB
# Copyright 2019 Camptocamp SA
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
import base64
|
|
import logging
|
|
|
|
from odoo import api, fields, models
|
|
from odoo.exceptions import UserError
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class AccountBankStatementImport(models.TransientModel):
|
|
_inherit = "account.bank.statement.import"
|
|
|
|
check_journal = fields.Boolean(default=True)
|
|
check_message = fields.Char(readonly=True)
|
|
force_journal = fields.Boolean(
|
|
string="Do you want to force this import ?", default=False
|
|
)
|
|
|
|
@api.multi
|
|
def import_file(self):
|
|
""" Override to make the import in 2 step.
|
|
|
|
To provide to user possiblity to bypass the journal check.
|
|
"""
|
|
self.ensure_one()
|
|
currency_code, account_number, stmts_vals = self.with_context(
|
|
active_id=self.ids[0]
|
|
)._parse_file(base64.b64decode(self.data_file))
|
|
if self.check_journal:
|
|
try:
|
|
self._find_additional_data(currency_code, account_number)
|
|
# _find_additional_data() call _check_journal_bank_account()
|
|
# so the self.check_journal value can evolve
|
|
except UserError as u_error:
|
|
if not self.check_journal:
|
|
msg = u_error.args[0]
|
|
_logger.info(msg)
|
|
self.check_message = str(msg)
|
|
action = self.env.ref(
|
|
"account_bank_statement_import."
|
|
"action_account_bank_statement_import"
|
|
).read([])[0]
|
|
action["res_id"] = self.id
|
|
return action
|
|
return super().import_file()
|
|
|
|
def _check_journal_bank_account(self, journal, account_number):
|
|
check = super()._check_journal_bank_account(journal, account_number)
|
|
if self.check_journal:
|
|
self.check_journal = False
|
|
if self.force_journal:
|
|
return True
|
|
return check
|