fix cancel feal
This commit is contained in:
parent
b8cf8ef96e
commit
c25df9f6df
@ -2314,20 +2314,50 @@ if($request == 'saveOpenPrevStep'){
|
||||
if ($sql_deal && mysql_num_rows($sql_deal) > 0) {
|
||||
$row_deal = mysql_fetch_assoc($sql_deal);
|
||||
$dealId = (int)$row_deal['id'];
|
||||
// Ставим статус 2 (отменена)
|
||||
mysql_query("UPDATE deals SET status = 2 WHERE id = {$dealId}");
|
||||
// Обнуляем deal_id у связанных заявок
|
||||
$linkedReqs = array_filter(array_map('intval', [$row_deal['side_one_requisition_id'], $row_deal['side_two_requisition_id']]));
|
||||
if (!empty($linkedReqs)) {
|
||||
mysql_query("UPDATE requisitions SET deal_id = NULL WHERE id IN (" . implode(',', $linkedReqs) . ")");
|
||||
|
||||
// Проверяем: отменяем сделку только если переходим на этап ДО этапа создания сделки
|
||||
$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;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Ставим cancel = 1 на все события сделки
|
||||
if ($dealId > 0) {
|
||||
mysql_query("UPDATE user_client_events SET cancel = 1 WHERE deal_id = {$dealId}");
|
||||
mysql_query("UPDATE user_object_events SET cancel = 1 WHERE deal_id = {$dealId}");
|
||||
|
||||
if ($shouldCancel) {
|
||||
// Ставим статус 2 (отменена)
|
||||
mysql_query("UPDATE deals SET status = 2 WHERE id = {$dealId}");
|
||||
// Обнуляем deal_id у связанных заявок
|
||||
$linkedReqs = array_filter(array_map('intval', [$row_deal['side_one_requisition_id'], $row_deal['side_two_requisition_id']]));
|
||||
if (!empty($linkedReqs)) {
|
||||
mysql_query("UPDATE requisitions SET deal_id = NULL WHERE id IN (" . implode(',', $linkedReqs) . ")");
|
||||
}
|
||||
// Ставим cancel = 1 на все события сделки
|
||||
if ($dealId > 0) {
|
||||
mysql_query("UPDATE user_client_events SET cancel = 1 WHERE deal_id = {$dealId}");
|
||||
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, 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())");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Запись в историю об отмене
|
||||
mysql_query("INSERT INTO user_client_events (user_id, req_id, deal_id, type, name, comment, create_date) VALUES ({$userId}, {$reqId}, {$dealId}, 'deal', 'Отмена сделки', 'Сделка отменена при возврате на предыдущий этап', NOW())");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user