[IMP] improved handling of statements without transactions

This commit is contained in:
Luc De Meyer 2023-04-01 18:25:32 +02:00
parent 48f24e5bee
commit 4caff0c858
4 changed files with 26 additions and 15 deletions

View File

@ -3,7 +3,7 @@
{ {
"name": "EBICS banking protocol", "name": "EBICS banking protocol",
"version": "15.0.1.1.1", "version": "15.0.1.1.2",
"license": "LGPL-3", "license": "LGPL-3",
"author": "Noviat", "author": "Noviat",
"website": "https://www.noviat.com", "website": "https://www.noviat.com",

View File

@ -87,7 +87,7 @@ class EbicsFile(models.Model):
return super(EbicsFile, self).unlink() return super(EbicsFile, self).unlink()
def set_to_draft(self): def set_to_draft(self):
return self.write({"state": "draft"}) return self.write({"state": "draft", "note": False})
def set_to_done(self): def set_to_done(self):
return self.write({"state": "done"}) return self.write({"state": "done"})
@ -219,10 +219,11 @@ class EbicsFile(models.Model):
error_cnt += 1 error_cnt += 1
elif notif["type"] == "warning": elif notif["type"] == "warning":
warning_cnt += 1 warning_cnt += 1
parts = [notif[k] for k in notif if k in ("message", "details")] parts = [
notif[k] for k in notif if k in ("message", "details") and notif[k]
]
self.note_process += "\n".join(parts) self.note_process += "\n".join(parts)
self.note_process += "\n\n" self.note_process += "\n\n"
self.note_process += "\n"
if error_cnt: if error_cnt:
self.note_process += ( self.note_process += (
_("Number of errors detected during import: %s: ") % error_cnt _("Number of errors detected during import: %s: ") % error_cnt
@ -233,8 +234,9 @@ class EbicsFile(models.Model):
_("Number of watnings detected during import: %s: ") % warning_cnt _("Number of watnings detected during import: %s: ") % warning_cnt
) )
if st_cnt: if st_cnt:
if self.note_process:
self.note_process += "\n\n" self.note_process += "\n\n"
self.note_process += _("%s bank statements have been imported: ") % st_cnt self.note_process += _("%s bank statement(s) have been imported: ") % st_cnt
self.note_process += "\n" self.note_process += "\n"
for st_data in sts_data: for st_data in sts_data:
self.note_process += ("\n%s, %s (%s)") % ( self.note_process += ("\n%s, %s (%s)") % (
@ -293,6 +295,8 @@ class EbicsFile(models.Model):
"account.action_bank_statement_tree" "account.action_bank_statement_tree"
) )
result_action["context"] = safe_eval(result_action["context"]) result_action["context"] = safe_eval(result_action["context"])
transactions = False
statement_ids = [] statement_ids = []
notifications = [] notifications = []
for i, wiz_vals in enumerate(wiz_vals_list, start=1): for i, wiz_vals in enumerate(wiz_vals_list, start=1):
@ -315,7 +319,10 @@ class EbicsFile(models.Model):
fn=statement_filename, fn=statement_filename,
) )
wiz.import_single_file(file_data, result) wiz.import_single_file(file_data, result)
if not result["statement_ids"]: if result["statement_ids"]:
transactions = True
statement_ids.extend(result["statement_ids"])
elif not result.get("no_transactions"):
message = msg_hdr.format(_("Warning")) message = msg_hdr.format(_("Warning"))
message += _( message += _(
"You have already imported this file, or this file " "You have already imported this file, or this file "
@ -327,8 +334,7 @@ class EbicsFile(models.Model):
"message": message, "message": message,
} }
] ]
else: transactions = True
statement_ids.extend(result["statement_ids"])
notifications.extend(result["notifications"]) notifications.extend(result["notifications"])
except UserError as e: except UserError as e:
@ -352,6 +358,10 @@ class EbicsFile(models.Model):
} }
] ]
if not transactions:
message = _("This file doesn't contain any transaction.")
notifications = [{"type": "warning", "message": message, "details": ""}]
self.note = message
result_action["context"]["notifications"] = notifications result_action["context"]["notifications"] = notifications
result_action["domain"] = [("id", "in", statement_ids)] result_action["domain"] = [("id", "in", statement_ids)]
return self._process_result_action(result_action) return self._process_result_action(result_action)

View File

@ -1,10 +1,10 @@
# Copyright 2020-2022 Noviat. # Copyright 2009-2023 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lpgl). # License LGPL-3 or later (http://www.gnu.org/licenses/lpgl).
{ {
"name": "account_ebics with OCA Bank Statement Imoort", "name": "account_ebics with OCA Bank Statement Imoort",
"summary": "Use OCA Bank Statement Import with account_ebics", "summary": "Use OCA Bank Statement Import with account_ebics",
"version": "15.0.1.0.0", "version": "15.0.1.0.1",
"author": "Noviat", "author": "Noviat",
"website": "https://www.noviat.com", "website": "https://www.noviat.com",
"category": "Hidden", "category": "Hidden",

View File

@ -1,4 +1,4 @@
# Copyright 2009-2020 Noviat. # Copyright 2009-2023 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lpgl). # License LGPL-3 or later (http://www.gnu.org/licenses/lpgl).
import logging import logging
@ -53,8 +53,9 @@ class AccountStatementImport(models.TransientModel):
break break
if not transactions: if not transactions:
message = _("This file doesn't contain any transaction.") message = _("This file doesn't contain any transaction.")
st_line_ids = [] result["notifications"].append(
notifications = {"type": "warning", "message": message, "details": ""} {"type": "warning", "message": message, "details": ""}
return st_line_ids, [notifications] )
result["no_transactions"] = True
return super()._create_bank_statements(stmts_vals, result) return super()._create_bank_statements(stmts_vals, result)