Fix null req after cancel

This commit is contained in:
mac 2026-06-21 15:20:12 +03:00
parent d69faee418
commit d490bcade9
2 changed files with 58 additions and 1 deletions

View File

@ -2310,12 +2310,17 @@ if($request == 'saveOpenPrevStep'){
$is_cancel_deal = isset($data->is_cancel_deal) ? (int)$data->is_cancel_deal : 0; $is_cancel_deal = isset($data->is_cancel_deal) ? (int)$data->is_cancel_deal : 0;
if ($is_cancel_deal && $reqId > 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"); $sql_deal = mysql_query("SELECT id, side_one_requisition_id, side_two_requisition_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) { if ($sql_deal && mysql_num_rows($sql_deal) > 0) {
$row_deal = mysql_fetch_assoc($sql_deal); $row_deal = mysql_fetch_assoc($sql_deal);
$dealId = (int)$row_deal['id']; $dealId = (int)$row_deal['id'];
// Ставим статус 2 (отменена) // Ставим статус 2 (отменена)
mysql_query("UPDATE deals SET status = 2 WHERE id = {$dealId}"); 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) . ")");
}
// Запись в историю // Запись в историю
mysql_query("INSERT INTO user_client_events (user_id, req_id, type, name, comment, create_date) VALUES ({$userId}, {$reqId}, 'deal', 'Отмена сделки', 'Сделка отменена при возврате на предыдущий этап', NOW())"); mysql_query("INSERT INTO user_client_events (user_id, req_id, type, name, comment, create_date) VALUES ({$userId}, {$reqId}, 'deal', 'Отмена сделки', 'Сделка отменена при возврате на предыдущий этап', NOW())");
} }

View File

@ -74,6 +74,31 @@ var complexobjectspage = new Vue({
}, },
openObjectDeal(objectId) {
var self = this;
$.ajax({
url: '/ajax/ajax_vue_requisitions.php',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ request: 'get_deal_by_object', object_id: objectId }),
success: function(response) {
var res = typeof response === 'string' ? JSON.parse(response) : response;
if (res.deals && res.deals.length > 0) {
var tryCount = 0;
function tryOpenDeal() {
if (typeof window.editDeal === 'function') {
window.editDeal(0, res.deals[0]);
} else if (tryCount < 20) {
tryCount++;
setTimeout(tryOpenDeal, 200);
}
}
tryOpenDeal();
}
}
});
},
toggle_form_search() { toggle_form_search() {
(this.show_form) ? this.show_form = false: this.show_form = true; (this.show_form) ? this.show_form = false: this.show_form = true;
}, },
@ -190,6 +215,33 @@ var complexobjectspage = new Vue({
console.log(response.data); console.log(response.data);
this.complex = response.data; this.complex = response.data;
// Проверяем сделки для объектов
if (this.complex.objects && Object.keys(this.complex.objects).length > 0) {
var objectIds = [];
for (var k in this.complex.objects) {
objectIds.push(this.complex.objects[k].id);
}
var self = this;
$.ajax({
url: '/ajax/ajax_vue_requisitions.php',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ request: 'get_deals_by_objects', object_ids: objectIds }),
success: function(resp) {
var res = typeof resp === 'string' ? JSON.parse(resp) : resp;
if (res.deals_by_object) {
for (var objId in res.deals_by_object) {
for (var k in self.complex.objects) {
if (self.complex.objects[k].id == objId) {
self.$set(self.complex.objects[k], 'has_deal', 1);
}
}
}
}
}
});
}
//alert(this.is_budget); //alert(this.is_budget);
setTimeout(() => { setTimeout(() => {