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

# 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