Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 25 additions & 12 deletions account_ebics_payment_return/models/account_payment_return.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ def _process_pain002(self):

except Exception as e:
_logger.info(
"[FAIL] import file '%s' to bank Statements", self.name, exc_info=True
"[FAIL] import file '%s' to bank Statements",
self.name, exc_info=True
)
self.env.cr.rollback()
self.invalidate_cache()
Expand All @@ -95,14 +96,15 @@ def _on_error_parse_xml_and_cancel(self, err_message):
).text
_logger.info("PAIN002 po_name: %s", po_name)
po_state = root.find(
"./ns:CstmrPmtStsRpt/ns:OrgnlGrpInfAndSts/ns:GrpSts", namespaces={"ns": ns}
"./ns:CstmrPmtStsRpt/ns:OrgnlGrpInfAndSts/ns:GrpSts",
namespaces={"ns": ns}
).text
_logger.info("PAIN002 po_state: %s", po_state)
payment_order = self.env["account.payment.order"].search(
[("name", "=", po_name)]
)
_logger.info("PAIN002 payment_order: %s", payment_order)
if payment_order.state == "generated":
if payment_order.state in ("generated", "uploaded"):
if po_state == "RJCT":
_logger.info(
"RJCT payment order %s with the folowing err: %s",
Expand All @@ -121,13 +123,14 @@ def _on_error_parse_xml_and_cancel(self, err_message):
for t in tx:
if t.find("./ns:TxSts", namespaces={"ns": ns}).text == "RJCT":
# search for payment line
payment_line_ids = payment_order.bank_line_ids.filtered(
lambda r, transaction=t: r.name
== transaction.find(
"./ns:OrgnlEndToEndId", namespaces={"ns": ns}
).text
)[0].payment_line_ids
_logger.info("PAIN002 payment_line_ids: %s", payment_line_ids)
endtoend_id=t.find("./ns:OrgnlEndToEndId",
namespaces={"ns": ns}).text
payment_ids = payment_order.payment_ids.filtered(
lambda l: int(endtoend_id) in l.move_id.mapped("id"))
payment_line_ids = payment_order.payment_line_ids.filtered(
lambda l: payment_ids in l.payment_ids)
_logger.info(f"PAIN002 payments found: {payment_ids.name} "
f"with endtoend_id: {endtoend_id}", )

# free line with message
rsn = t.findall(
Expand All @@ -136,9 +139,19 @@ def _on_error_parse_xml_and_cancel(self, err_message):
rsn_text = []
for r in rsn:
rsn_text.append(r.text)
payment_line_ids.free_line(" ".join(rsn_text))
rsn_txt = " ".join(rsn_text)
_logger.info(f"PAIN002 line free: {rsn_txt} "
f"for lines {payment_line_ids}")
for b in payment_line_ids:
try:
b.free_line(rsn_txt)
_logger.info(f"PAIN002 line free: {rsn_txt}")
except Exception as e:
_logger.error(f"Error freeing line {b.id}: {e}")

payment_order.generated2uploaded()

if payment_order.state == "generated":
payment_order.generated2uploaded()
self.write({"state": "done", "note_process": err_message})

def _unlink_pain002(self):
Expand Down