[FIX] Synchronise partner from statement line to accounting entries

We need to look at the reconcile_data to find the partner as the manual_partner_id can contain the information of an auxiliary line
pull/788/head
Florian da Costa 2025-01-21 15:26:03 +01:00
parent 8c34bd0d89
commit 82eb24b736
1 changed files with 29 additions and 11 deletions

View File

@ -984,20 +984,38 @@ class AccountBankStatementLine(models.Model):
if self._context.get("skip_account_move_synchronization"): if self._context.get("skip_account_move_synchronization"):
return return
if not any(f_name in changed_fields for f_name in ("manual_partner_id",)): # we actually check reconcile_data to find the partner of the liquidity lines
# because the written manual_partner_id is not always related to the liquidity
# line...
if not any(f_name in changed_fields for f_name in ("reconcile_data",)):
return return
for st_line in self.with_context(skip_account_move_synchronization=True): for st_line in self.with_context(skip_account_move_synchronization=True):
liquidity_lines, suspense_lines, _other_lines = st_line._seek_for_lines() data = st_line.reconcile_data_info.get("data", [])
line_vals = {"partner_id": st_line.manual_partner_id.id} partner_id = False
line_ids_commands = [(1, liquidity_lines.id, line_vals)] for line_data in data:
if suspense_lines: if line_data["kind"] == "liquidity":
line_ids_commands.append((1, suspense_lines.id, line_vals)) partner_id = (
st_line_vals = {"line_ids": line_ids_commands} line_data.get("partner_id")
if st_line.move_id.partner_id != st_line.manual_partner_id: and line_data.get("partner_id")[0]
st_line_vals["partner_id"] = st_line.manual_partner_id.id or False
st_line.move_id.write(st_line_vals) )
st_line.write({"partner_id": st_line.manual_partner_id.id}) break
if st_line.partner_id.id != partner_id:
(
liquidity_lines,
suspense_lines,
_other_lines,
) = st_line._seek_for_lines()
line_vals = {"partner_id": partner_id}
line_ids_commands = [(1, liquidity_lines.id, line_vals)]
if suspense_lines:
line_ids_commands.append((1, suspense_lines.id, line_vals))
st_line_vals = {"line_ids": line_ids_commands}
if st_line.move_id.partner_id.id != partner_id:
st_line_vals["partner_id"] = partner_id
st_line.move_id.write(st_line_vals)
st_line.write({"partner_id": partner_id})
def _synchronize_to_moves(self, changed_fields): def _synchronize_to_moves(self, changed_fields):
"""We take advantage of this method to call the custom method that does """We take advantage of this method to call the custom method that does