From 40a789f42e7fa0efcb9b8eedbfe014259f1f2b08 Mon Sep 17 00:00:00 2001 From: Pcauderlier Date: Tue, 9 Dec 2025 09:05:20 +0100 Subject: [PATCH] Fix: Use Societe->update() in ajaxstatusprospect.php to fire COMPANY_MODIFY trigger --- htdocs/core/ajax/ajaxstatusprospect.php | 28 ++++++++++++++++--------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/htdocs/core/ajax/ajaxstatusprospect.php b/htdocs/core/ajax/ajaxstatusprospect.php index cef9077144b..1b67f29f7f1 100644 --- a/htdocs/core/ajax/ajaxstatusprospect.php +++ b/htdocs/core/ajax/ajaxstatusprospect.php @@ -85,20 +85,28 @@ if ($action === "updatestatusprospect" && $permisstiontoupdate) { $prospectstatic->client = 2; $prospectstatic->loadCacheOfProspStatus(); - $response = ''; - $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET "; - $sql .= "fk_stcomm = ".((int) $idstatus); - $sql .= " WHERE rowid = ".((int) $idprospect); + // Load thirdparty + $prospect = new Client($db); + $result = $prospect->fetch($idprospect); - $resql = $db->query($sql); + if ($result >= 0) { + $oldStatus = $prospect->fk_stcomm; - if (!$resql) { - dol_print_error($db); + // Apply new status + $prospect->fk_stcomm = $idstatus; + + // Update using business logic (fires COMPANY_MODIFY) + $updateResult = $prospect->update($prospect->id, $user); + + if ($updateResult >= 0) { + $response = img_action('', $prospectstatic->cacheprospectstatus[$idstatus]['code'], $prospectstatic->cacheprospectstatus[$idstatus]['picto'], 'class="inline-block valignmiddle paddingright pictoprospectstatus"'); + } else { + dol_syslog(__METHOD__.': Failed to update prospect via update() method', LOG_ERR); + dol_print_error($db); + } } else { - $num = $db->affected_rows($resql); - $response = img_action('', $prospectstatic->cacheprospectstatus[$idstatus]['code'], $prospectstatic->cacheprospectstatus[$idstatus]['picto'], 'class="inline-block valignmiddle paddingright pictoprospectstatus"'); + dol_print_error($db); } - echo json_encode(array('img' => $response)); }