fix cancel feal

This commit is contained in:
mac 2026-06-22 15:20:24 +03:00
parent b8cf8ef96e
commit c25df9f6df

View File

@ -2314,6 +2314,26 @@ if($request == 'saveOpenPrevStep'){
if ($sql_deal && mysql_num_rows($sql_deal) > 0) {
$row_deal = mysql_fetch_assoc($sql_deal);
$dealId = (int)$row_deal['id'];
// Проверяем: отменяем сделку только если переходим на этап ДО этапа создания сделки
$shouldCancel = true;
$dealFunnelId = isset($prevName['funnel_id']) ? (int)$prevName['funnel_id'] : 0;
if ($dealFunnelId > 0) {
// Находим этап создания сделки (create_deal = 1) в этой воронке
$sqlCreateStep = mysql_query("SELECT order_number FROM funnel_steps WHERE funnel_id = {$dealFunnelId} AND create_deal = 1 LIMIT 1");
if ($sqlCreateStep && mysql_num_rows($sqlCreateStep) > 0) {
$createStepRow = mysql_fetch_assoc($sqlCreateStep);
$createStepOrder = (int)$createStepRow['order_number'];
// Находим order_number этапа, на который переходим
$targetOrder = isset($prevName['order_number']) ? (int)$prevName['order_number'] : 0;
// Отменяем, только если целевой этап РАНЬШЕ этапа создания сделки
if ($targetOrder >= $createStepOrder) {
$shouldCancel = false;
}
}
}
if ($shouldCancel) {
// Ставим статус 2 (отменена)
mysql_query("UPDATE deals SET status = 2 WHERE id = {$dealId}");
// Обнуляем deal_id у связанных заявок
@ -2327,7 +2347,17 @@ if($request == 'saveOpenPrevStep'){
mysql_query("UPDATE user_object_events SET cancel = 1 WHERE deal_id = {$dealId}");
}
// Запись в историю об отмене
mysql_query("INSERT INTO user_client_events (user_id, req_id, deal_id, type, name, comment, create_date) VALUES ({$userId}, {$reqId}, {$dealId}, 'deal', 'Отмена сделки', 'Сделка отменена при возврате на предыдущий этап', NOW())");
mysql_query("INSERT INTO user_client_events (user_id, req_id, deal_id, type, name, comment, create_date, schedule_date) VALUES ({$userId}, {$reqId}, {$dealId}, 'deal', 'Отмена сделки', 'Сделка отменена при возврате на предыдущий этап', NOW(), NOW())");
// Запись об отмене в историю объектов
$objIds = array_filter(array_map('intval', [isset($row_deal['side_one_object_id']) ? $row_deal['side_one_object_id'] : 0, isset($row_deal['side_two_object_id']) ? $row_deal['side_two_object_id'] : 0]));
if (!empty($objIds)) {
foreach ($objIds as $objId) {
if ($objId > 0) {
mysql_query("INSERT INTO user_object_events (user_id, object_id, deal_id, type, comment, create_date, schedule_date) VALUES ({$userId}, {$objId}, {$dealId}, 'deal', 'Сделка отменена при возврате на предыдущий этап', NOW(), NOW())");
}
}
}
}
}
}