[14.0]account_ebics - fix stack trace when using Odoo OE statement import

This commit is contained in:
Luc De Meyer 2022-08-05 12:29:47 +02:00
parent 3e6c5d5b55
commit 35d281d7f7
2 changed files with 51 additions and 36 deletions

View File

@ -3,7 +3,7 @@
{
"name": "EBICS banking protocol",
"version": "14.0.1.0.3",
"version": "14.0.1.0.4",
"license": "LGPL-3",
"author": "Noviat",
"website": "www.noviat.com",

View File

@ -168,44 +168,59 @@ class EbicsFile(models.Model):
return False
return True
def _process_result_action(self, res):
def _process_result_action(self, res, parser="oca"):
notifications = []
st_line_ids = []
statement_ids = []
if res.get("context"):
notifications = res["context"].get("notifications", [])
st_line_ids = res["context"].get("statement_line_ids", [])
if notifications:
for notif in notifications:
parts = []
for k in ["type", "message", "details"]:
if notif.get(k):
msg = "{}: {}".format(k, notif[k])
parts.append(msg)
self.note_process += "\n".join(parts)
sts_data = []
if parser == "oca":
if res.get("context"):
notifications = res["context"].get("notifications", [])
st_line_ids = res["context"].get("statement_line_ids", [])
if notifications:
for notif in notifications:
parts = []
for k in ["type", "message", "details"]:
if notif.get(k):
msg = "{}: {}".format(k, notif[k])
parts.append(msg)
self.note_process += "\n".join(parts)
self.note_process += "\n"
self.note_process += "\n"
self.note_process += "\n"
if st_line_ids:
self.flush()
self.env.cr.execute(
"""
SELECT DISTINCT
absl.statement_id,
abs.name, abs.date, abs.company_id,
rc.name AS company_name
FROM account_bank_statement_line absl
INNER JOIN account_bank_statement abs
ON abs.id = absl.statement_id
INNER JOIN res_company rc
ON rc.id = abs.company_id
WHERE absl.id IN %s
ORDER BY date, company_id
""",
(tuple(st_line_ids),),
)
sts_data = self.env.cr.dictfetchall()
else:
sts_data = []
if st_line_ids:
self.flush()
self.env.cr.execute(
"""
SELECT DISTINCT
absl.statement_id,
abs.name, abs.date, abs.company_id,
rc.name AS company_name
FROM account_bank_statement_line absl
INNER JOIN account_bank_statement abs
ON abs.id = absl.statement_id
INNER JOIN res_company rc
ON rc.id = abs.company_id
WHERE absl.id IN %s
ORDER BY date, company_id
""",
(tuple(st_line_ids),),
)
sts_data = self.env.cr.dictfetchall()
elif parser == "oe":
if res.get("res_id"):
st_ids = res["res_id"]
else:
st_ids = res["domain"][2]
statements = self.env["account.bank.statement"].browse(st_ids)
for statement in statements:
sts_data.append(
{
"statement_id": statement.id,
"date": statement.date,
"name": statement.name,
"company_name": statement.company_id.name,
}
)
st_cnt = len(sts_data)
if st_cnt:
self.note_process += _("%s bank statements have been imported: ") % st_cnt
@ -414,7 +429,7 @@ class EbicsFile(models.Model):
_("No financial journal found for Company Bank Account %s")
% bank_account
)
return self._process_result_action(res)
return self._process_result_action(res, parser="oe")
@staticmethod
def _unlink_camt053(self):