From d69faee4187f830845ca53be9da1d5c9ea1f14d6 Mon Sep 17 00:00:00 2001 From: mac Date: Sun, 21 Jun 2026 15:01:58 +0300 Subject: [PATCH] Add cancel deal button in funnel --- ajax/ajax_vue_clients.php | 26 ++++++++++++++++++++++++++ js/crm_vue.js | 8 +++++--- templates/footer.php | 8 ++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/ajax/ajax_vue_clients.php b/ajax/ajax_vue_clients.php index d9d08db..805ed4a 100644 --- a/ajax/ajax_vue_clients.php +++ b/ajax/ajax_vue_clients.php @@ -1913,6 +1913,16 @@ if($request == 'openPrevStep'){ } } $r['steps'] = $arr_steps; + + // Проверяем, есть ли сделка у заявки + $r['has_deal'] = false; + if ($reqId > 0) { + $sql_deal_check = mysql_query("SELECT id FROM deals WHERE (side_one_requisition_id = {$reqId} OR side_two_requisition_id = {$reqId}) AND status != 2 LIMIT 1"); + if ($sql_deal_check && mysql_num_rows($sql_deal_check) > 0) { + $r['has_deal'] = true; + } + } + echo json_encode($r); } catch (Exception $ex){ echo $ex->getMessage(); @@ -2295,6 +2305,22 @@ if($request == 'saveOpenPrevStep'){ } mysql_query($sql_in); + + // Отмена сделки при возврате этапа + $is_cancel_deal = isset($data->is_cancel_deal) ? (int)$data->is_cancel_deal : 0; + if ($is_cancel_deal && $reqId > 0) { + // Находим сделку, связанную с заявкой + $sql_deal = mysql_query("SELECT id FROM deals WHERE (side_one_requisition_id = {$reqId} OR side_two_requisition_id = {$reqId}) AND status != 2 LIMIT 1"); + 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}"); + // Запись в историю + mysql_query("INSERT INTO user_client_events (user_id, req_id, type, name, comment, create_date) VALUES ({$userId}, {$reqId}, 'deal', 'Отмена сделки', 'Сделка отменена при возврате на предыдущий этап', NOW())"); + } + } + if($clientId > 0){ if((int)$funnelId == 0){ $sql_f = "SELECT funnel_id FROM clients WHERE id = {$clientId}"; diff --git a/js/crm_vue.js b/js/crm_vue.js index 3699bdd..921ac3f 100644 --- a/js/crm_vue.js +++ b/js/crm_vue.js @@ -128,6 +128,8 @@ var ac = new Vue({ dealCloseObjects: [], dealCloseAgentCommission: 0, dealCloseSumma: 0, + isOpenPrevDeal: false, + cancelDealOnPrev: false, }, methods: { closedStep: function(id, clientId) { @@ -1210,8 +1212,8 @@ var ac = new Vue({ this.errorTextPrevStep = "Не выбран этап для открытия"; } - if (response.data.res && typeof response.data.res.has_deal !== 'undefined') { - this.isRequisitionHasDeal = response.data.res.has_deal === true; + if (response.data && typeof response.data.has_deal !== 'undefined') { + this.isRequisitionHasDeal = response.data.has_deal === true; } else { this.isRequisitionHasDeal = false; } @@ -1252,7 +1254,7 @@ var ac = new Vue({ now_step_id: now_step_id, is_Other_prev_step: this.is_Other_prev_step, stepInfo: stepInfo, - is_cancel_deal: this.isRequisitionHasDeal ? this.is_cancel_deal : 0 + is_cancel_deal: this.isRequisitionHasDeal ? this.cancelDealOnPrev : 0 }, ) .then((response) => { console.log(response.data); diff --git a/templates/footer.php b/templates/footer.php index fa12c65..6ca8824 100644 --- a/templates/footer.php +++ b/templates/footer.php @@ -5673,6 +5673,14 @@ $user_id = $_SESSION['id'];
+ +
+
+ + +
+
+