request; if($request == 'save_steps_client'){ $tempid = 0; $userId = $data->user_id; $stepId = $data->step_id; $agency_id = $data->agency_id; $stepName = $data->step_name; $complexRoomId = $data->complex_room_id; $complexStatusId = $data->complex_status_id; $transactionAmount = $data->transaction_amount; $selectedRoomName = $data->selected_room_name; $clientId = 0; if(isset($data->client_id)){ $clientId = $data->client_id; } $reqId = 0; if(isset($data->req_id)){ $reqId = $data->req_id; } $adjacentId = 0; if(isset($data->adjacent_id)){ $adjacentId = (int)$data->adjacent_id; } $funnelId = $data->funnel_id; $next_step_select = $data->next_step_select; $nextStep = $data->next_step; $values = $data->values; $activites_close_step_val = $data->activites_close_step_val; $next_id = 0; $stage = ''; $is_closet = $data->is_closet; if(is_object($next_step_select)){ $next_id = $next_step_select -> id -> id; } $fields_models = $data->field_models; $resVal = json_decode($values, true); foreach($resVal as $key => $poles){ $resultName = preg_replace('/"([^"]*)"/', '«$1»', $poles['name']); $resultName = str_replace("\"", "", $resultName); $resultName = str_replace("'", "’", $resultName); $resVal[$key]['name'] = $resultName; if($poles['type'] == 'expenses'){ if(isset($poles['value']['comment']) && !empty($poles['value']['comment'])){ $result = preg_replace('/"([^"]*)"/', '«$1»', $poles['value']['comment']); $result = str_replace("\"", "", $result); $result = str_replace("'", "’", $result); $resVal[$key]['value']['comment'] = $result; } } } $events_client = $resVal; $date = time(); $create_at = date('Y-m-d H:i:s'); $history_requisition = []; if ($reqId) { $sql = "SELECT `client_id`, `complex_room_id`, `complex_status_id`, `reservation_updated_at` FROM `requisitions` WHERE id = {$reqId}"; $requisition = mysql_fetch_assoc(mysql_query($sql)); $req_complex_room_id = $requisition['complex_room_id']; $req_complex_status_id = $requisition['complex_status_id']; $req_reservation_updated_at = $requisition['reservation_updated_at']; $history_requisition = [ 'step_id' => $stepId, 'complex_room_id' => $req_complex_room_id ?: 'NULL', 'complex_status_id' => $req_complex_status_id ?: 'NULL', 'reservation_updated_at' => $req_reservation_updated_at ?: 'NULL', ]; if ($complexRoomId) { mysql_query("UPDATE `requisitions` SET `complex_room_id` = $complexRoomId, `object_id` = 0 WHERE id = {$reqId}"); } if ($complexStatusId) { mysql_query("UPDATE `requisitions` SET `complex_status_id` = $complexStatusId WHERE id = {$reqId}"); } if ($complexRoomId && $complexStatusId) { $complexStatus = new ComplexStatus((int)$complexStatusId); $create_date = (new DateTime("now"))->format('Y-m-d H:i:s'); if ($complexStatus->status === 'sold') { mysql_query("UPDATE `requisitions` SET `reservation_updated_at` = '{$create_date}' WHERE id = {$reqId}"); $complexStatus->updateRoomsStatus([ 'new_status_id' => $complexStatusId, 'complex_room_id' => $complexRoomId ], false, false); $sql = "SELECT requisitions.`id` AS req_id, requisitions.`client_id`, users.* FROM `requisitions` LEFT JOIN `users` ON users.`id` = requisitions.`who_work` WHERE `complex_room_id` = {$complexRoomId} AND requisitions.`id` <> $reqId AND requisitions.`deleted` = 0 "; $requisitions = $complexStatus::$db->query($sql)->fetchAll(); foreach($requisitions as $req) { $text = "Заявка была исключена из очереди на бронирование."; $req_id = $req['req_id']; $client_id = $req['client_id']; $user_id = $_SESSION['id']; $create_date = (new DateTime("now"))->format('Y-m-d H:i:s'); $complexStatus::$db->query("INSERT INTO `user_client_events` ( `user_id`, `req_id`, `client_id`, `type`, `comment`, `create_date` ) VALUES ( $user_id, $req_id, $client_id, 'comment', '{$text}', '{$create_date}' ) "); if($req['telegramm_notice'] && $req['telegramm_notice'] == 1 && $req['telegramm_chat_id'] && $req['telegramm_chat_id'] > 0 ){ $text = "Заявка ID $req_id была исключена из очереди на бронирование."; $complex = new Complex(); $complex->sendMessageToTelegram($req['telegramm_chat_id'], $text); } if($req['max_notice'] && $req['max_notice'] == 1 && $req['max_user_id'] && $req['max_user_id'] > 0 ){ $text = "Заявка ID $req_id была исключена из очереди на бронирование."; $complex = new Complex(); $complex->sendMessageToMax($req['max_user_id'], $text); } mysql_query("UPDATE `requisitions` SET `complex_status_id` = 0, `complex_room_id` = NULL WHERE id = {$req_id}"); } } else { $sql_funnel_step = mysql_query("SELECT `is_select_room` FROM funnel_steps WHERE id = {$stepId}"); $funnel_step = mysql_fetch_assoc($sql_funnel_step); if ($funnel_step['is_select_room']) { $text = $text = "Выбран объект: $selectedRoomName
Статус объекта: $complexStatus->name"; if ($complexStatus->status === 'reservation') { $old_complex_status = new ComplexStatus((int)$req_complex_status_id); if (!$old_complex_status->status || ($old_complex_status->status && $old_complex_status->status !== 'reservation')) { $complex = new Complex(); $reservations = $complex->get_room_reservations($complexRoomId); $position = count($reservations) + 1; mysql_query("UPDATE `requisitions` SET `position` = $position WHERE id = {$reqId}"); } $booking_date = new DateTime("now"); if (!empty($complexStatus->booking_day)) { $booking_date = $booking_date->modify('+' . $complexStatus->booking_day . ' day'); } if (!empty($complexStatus->booking_hour)) { $booking_date = $booking_date->modify('+' . $complexStatus->booking_hour . ' hour'); } $text .= ", до " . $booking_date->format('d.m.Y H:i:s') . "."; $complexStatus->updateRoomsStatus([ 'new_status_id' => $complexStatusId, 'complex_room_id' => $complexRoomId ], false, false); } $reservation_updated_at = (new DateTime("now"))->format('Y-m-d H:i:s'); mysql_query("UPDATE `requisitions` SET `reservation_updated_at` = '{$reservation_updated_at}' WHERE id = {$reqId}"); $client_id = $requisition['client_id']; $user_id = $_SESSION['id']; $complexStatus::$db->query("INSERT INTO `user_client_events` ( `user_id`, `req_id`, `client_id`, `type`, `comment`, `create_date` ) VALUES ( $user_id, $reqId, $client_id, 'comment', '{$text}', '{$create_date}' ) "); } } } if ($complexRoomId) { $complex = new Complex(); $complex->generate_room_reservations_positions($complexRoomId); } } $sql = "SELECT `id`, `step_id`, `next_id`, `values`, `history_requisition` FROM clients_funnel_step WHERE client_id = ".$clientId; if($adjacentId > 0){ $sql = "SELECT `id`, `step_id`, `next_id`, `values`, `funnel_id` FROM adjacent_funnels WHERE id = ".$adjacentId; } else if($clientId <= 0 && $reqId > 0){ $sql = "SELECT `id`, `step_id`, `next_id`, `values`, `history_requisition` FROM clients_funnel_step WHERE req_id = ".$reqId; } $prev_id = 0; $prev_next_id = 0; $q = mysql_query($sql); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_assoc($q); $prev_id = (int)$r['step_id']; $prev_next_id = (int)$r['next_id']; $resVal['prev_id'] = $prev_id; $resVal['prev_next_id'] = $prev_next_id; $resVal['next_step_select'] = $next_step_select; // var_dump($r['values']); if(!empty($r['values'])){ $valarr = json_decode($r['values'],true); } else { $valarr = array(); } $historyRequisition = !empty($r['history_requisition']) ? json_decode($r['history_requisition'], true) : []; // Create a combined array $combined = !empty($historyRequisition) ? [[$history_requisition], $historyRequisition] : [[$history_requisition]]; $flattenedArray = []; $stepIds = []; foreach ($combined as $subArray) { foreach ($subArray as $item) { // If it's an object, cast to array if (!in_array($item['step_id'], $stepIds)) { $flattenedArray[] = is_object($item) ? (array) $item : $item; $stepIds[] = $item['step_id']; } } } $historyRequisition = json_encode($flattenedArray, JSON_UNESCAPED_UNICODE); $valarr[$stepId] = clearInputElement(json_encode($resVal, JSON_UNESCAPED_UNICODE)); $val = json_encode($valarr, JSON_UNESCAPED_UNICODE); $sql=''; if($adjacentId > 0){ $sql = "UPDATE adjacent_funnels SET step_id = ".$stepId.", next_id = '".$next_id."', `prev_id` = '".$prev_id."', `prev_next_id` = '".$prev_next_id."', `values` = '".$val."' WHERE id = ".$adjacentId; } else if($clientId > 0){ $sql = "UPDATE clients_funnel_step SET step_id = ".$stepId.", next_id = '".$next_id."', `prev_id` = '".$prev_id."', `prev_next_id` = '".$prev_next_id."', `values` = '".$val."', `history_requisition` = '{$historyRequisition}', `transaction_amount` = '$transactionAmount' WHERE client_id = ".$clientId; } else if($clientId == 0 && $reqId > 0){ $sql = "UPDATE clients_funnel_step SET step_id = ".$stepId.", next_id = '".$next_id."', `prev_id` = '".$prev_id."', `prev_next_id` = '".$prev_next_id."', `values` = '".$val."', `history_requisition` = '{$historyRequisition}', `transaction_amount` = '$transactionAmount' WHERE req_id = ".$reqId; } } else { $resVal['prev_id'] = $prev_id; $resVal['prev_next_id'] = $prev_next_id; $resVal['next_step_select'] = $next_step_select; $valarr[$stepId] = clearInputElement(json_encode($resVal, JSON_UNESCAPED_UNICODE)); $val = json_encode($valarr, JSON_UNESCAPED_UNICODE); $historyRequisition = json_encode([$history_requisition], JSON_UNESCAPED_UNICODE); $sql = "INSERT INTO clients_funnel_step SET step_id = ".$stepId.", client_id = ".$clientId.", next_id = '".$next_id."', `prev_id` = '".$prev_id."', `prev_next_id` = '".$prev_next_id."', `values` = '".$val."', `history_requisition` = '{$historyRequisition}', `transaction_amount` = '$transactionAmount'"; if($clientId == 0 && $reqId > 0){ $sql = "INSERT INTO clients_funnel_step SET step_id = ".$stepId.", req_id = ".$reqId.", next_id = '".$next_id."', `prev_id` = '".$prev_id."', `prev_next_id` = '".$prev_next_id."', `values` = '".$val."', `history_requisition` = '{$historyRequisition}', `transaction_amount` = '$transactionAmount'"; } } //if($reqId > 0 && $adjacentId == 0){ $section = 'client'; $parentId = 'client_id = '.$clientId; $pole_parent = 'client_id'; $pole_parent_val = $clientId; if($adjacentId > 0){ $section = 'adjacent'; $parentId = 'adjacent_id = '.$adjacentId; $pole_parent = 'adjacent_id'; $pole_parent_val = $adjacentId; } else if($reqId > 0){ $section = 'req'; $parentId = 'req_id = '.$reqId; $pole_parent = 'req_id'; $pole_parent_val = $reqId; } $base_event = array(); $numders_event = array(); $sql_base_event = "SELECT * FROM steps_data WHERE section='{$section}' AND step_id = {$stepId} AND {$parentId} AND del = 0"; $q_base_event = mysql_query($sql_base_event); while($r_base_event = mysql_fetch_assoc($q_base_event)){ $base_event[$r_base_event['number']] = $r_base_event; } foreach($events_client as $number => $event){ $numders_event[] = (int)$number; $name_pole = Docs::stringToTranslit($event['name']); $value_pole = mysql_real_escape_string($event['value']); if(($event['type'] == 'file' || $event['type'] == 'checkbox' || $event['type'] == 'select') && !empty($event['value'])){ $value_pole = mysql_real_escape_string(json_encode($event['value'], JSON_UNESCAPED_UNICODE)); } if(isset($base_event[$number])){ if($base_event[$number]['type'] != $event['type'] || $base_event[$number]['pole_name_en'] != $name_pole || $base_event[$number]['value'] != $value_pole){ $sql_up_step = "UPDATE steps_data_req SET type = '{$event['type']}', pole_name_en = '{$name_pole}', name= '{$event['name']}', value='{$value_pole}', del=0 WHERE step_id = {$stepId} AND {$parentId} AND number = {$number}"; mysql_query($sql_up_step); } } else { $sql_save_step = "INSERT INTO steps_data (step_id, {$pole_parent}, section, type, number, pole_name_en, name, value) VALUES ({$stepId}, {$pole_parent_val}, '{$section}', '{$event['type']}', '{$number}', '{$name_pole}', '{$event['name']}', '{$value_pole}')"; // echo $sql_save_step."\n"; mysql_query($sql_save_step); } } if(!empty($numders_event)){ $sql_updel_step = "UPDATE steps_data SET del = 1 WHERE step_id = {$stepId} AND {$parentId} AND section = '{$section}' AND number NOT IN (".implode(',', $numders_event).")"; mysql_query($sql_updel_step); } else { $sql_updel_step = "UPDATE steps_data SET del = 1 WHERE step_id = {$stepId} AND {$parentId} AND section = '{$section}'"; mysql_query($sql_updel_step); } //} if(!mysql_query($sql)){ echo mysql_error(); } else { if($adjacentId == 0){ if($is_closet == 'Закрыт'){ if($clientId == 0){ mysql_query("UPDATE requisitions SET stage = '8', deleted=1, confirm=1 WHERE id = {$reqId}"); $autosearch_instce = new AutoSearch(); $autosearch_instce->deleteFilterByReq($reqId, $userId); } else { mysql_query("UPDATE clients SET stage = '8', deleted=1, confirm=1 WHERE id = {$clientId}"); } } else { if($clientId == 0){ mysql_query("UPDATE requisitions SET stage = '2', deleted=0, confirm=1 WHERE id = {$reqId}"); } else { mysql_query("UPDATE clients SET stage = '2', deleted=0, confirm=1 WHERE id = {$clientId}"); } } } $close = false; $nextEtap = 0; if($next_id != 0){ $nextEtap = (int)$next_id; } else if(!empty($nextStep)){ $nextEtap = (int)$nextStep[0]; } if($nextEtap != 0){ //'c «» на «»' $sqlname = mysql_query("SELECT `name`, `id` FROM funnel_steps WHERE id = {$nextEtap}"); $nextName = mysql_fetch_assoc($sqlname); } if(!empty($activites_close_step_val)){ if($reqId > 0){ mysql_query("DELETE FROM requisitions_activities WHERE req_id = {$reqId}"); foreach($activites_close_step_val as $a) { $sql_in = "INSERT INTO requisitions_activities SET req_id = {$reqId}, activity_id={$a}"; mysql_query($sql_in); } } else if($clientId > 0){ mysql_query("DELETE FROM clients_activities WHERE client_id = {$clientId}"); foreach($activites_close_step_val as $a) { $sql_in = "INSERT INTO clients_activities SET client_id = {$clientId}, activity_id={$a}"; mysql_query($sql_in); } } } //Отправлять ли уведомление $sqlStep = "SELECT is_mes, users_mes, name FROM funnel_steps WHERE id = {$stepId}"; $qStep = mysql_query($sqlStep); $rStep = mysql_fetch_assoc($qStep); if($rStep['is_mes'] > 0){ $users_mes = json_decode($rStep['users_mes'], true); if(!empty($users_mes)){ $req = false; $client = false; $who_work = 0; $user1 = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id = {$userId}")); $post = "Сотрудник"; if ($user1['agency'] == 1) { $post = "Агенство"; } else if ($user1['manager'] == 1) { $post = "Менеджер"; } $text = "".$post . " " . trim($user1['last_name'] . ' ' . $user1['first_name'] . ' ' . $user1['middle_name'])."
закрыл(а) этап «".$stepName."» "; if($clientId == 0 && $reqId > 0){ $req = mysql_fetch_assoc(mysql_query("SELECT * FROM requisitions WHERE id = {$reqId}")); $who_work = $req['who_work']; $text .= "
по заявке ".$req['name']."
"; if($nextEtap != 0 ){ $text .= "Заявка перешла на этап «".$nextName['name']."»
"; } $client_req = mysql_fetch_assoc(mysql_query("SELECT * FROM clients WHERE id = {$req['client_id']}")); $text .="Клиент: ".$client_req['fio']." тел. ".$client_req['phone']; if($req['type_id'] == 2 && $req['object_id'] > 0){ $obj = mysql_fetch_assoc(mysql_query("SELECT id, adres, stoim, type, komnat FROM objects WHERE id = {$req['object_id']}")); if($obj){ switch ($obj['type']) { case 1: if ($obj['komnat'] == 1 && $obj['studio_flag']) { $type = "Квартира-студия"; } else { $type = "$obj[komnat]-комнатная квартира"; } break; case 2: $type = "Комната в $obj[komnat]-комнатной квартире"; break; case 3: $type = "$obj[komnat]-комнатный дом"; break; case 4: if ($obj['komnat'] == 0) { $type = "Помещение"; } else { $type = "$obj[komnat]-комнатное помещение"; } break; case 5: $type = "Часть дома"; break; case 6: $type = "Комплекс"; break; case 7: $type = "Участок"; break; default: $type = "$obj[komnat]-комнатная квартира"; } $text .= '
Объект: ID:'.$obj['id'].' '.$obj['adres'].', '.$type.' '.$obj['stoim']; } } if($req['deleted'] > 0){ /*if($req['confirm'] == 10){ $text .= "
Закрыта. Совершена сделка на ".$req['summa']." руб"; } else { $denial = mysql_fetch_assoc(mysql_query("SELECT name FROM denial_work WHERE id = {$req['denial']}")); $text .= "
Закрыта. ".$denial['name']; }*/ $close = true; } } else if ($clientId > 0) { $client = mysql_fetch_assoc(mysql_query("SELECT * FROM clients WHERE id = {$clientId}")); $who_work = $client['who_work']; $text .= "
по клиенту: ".$client['fio']. " тел. ".$client['phone']; if($nextEtap !=0 ){ $text .= "
Клиент перешел на этап «".$nextName['name']."»"; } if($client['deleted'] > 0){ $close = true; } } $text = htmlspecialchars($text); $userMes = array(); $send = 0; if($close){ $tempid = time(); $send = 1; } // $user_id_mes = false; foreach ($users_mes as $key => $user_id_mes_) { unset($user_id_mes); if ($users_mes[$key] === 'manager') { $managerWhoWork = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id = {$who_work}")); $user_id_mes = $managerWhoWork['id_manager']; } else if($users_mes[$key] == 0){ $user_id_mes = $who_work; } else { $user_id_mes = $user_id_mes_; } if(!in_array($user_id_mes, $userMes) && $user_id_mes != $_SESSION['id']){ $sqlMesIn = "INSERT INTO step_notify_closure SET user_id = {$user_id_mes}, from_id={$userId}, step_id={$stepId}, text='{$text}', send={$send}, temp_id={$tempid}"; mysql_query($sqlMesIn); $userMes[] = $user_id_mes; } } } /* if($_SESSION['id'] == 5238){ var_dump($userMes); }*/ } //Отправка уведомлений по смежным воронкам if($adjacentId > 0){ $text = ''; $who_work = 0; if($clientId > 0 && $reqId == 0){ $sql_req_client = "SELECT * FROM clients WHERE id = {$clientId}"; } else if ($reqId > 0){ $sql_req_client = "SELECT * FROM requisitions WHERE id = {$reqId}"; } $q_req_client = mysql_query($sql_req_client); //$users_mes = array(); if($r_req_client = mysql_fetch_assoc($q_req_client)){ $sql_f = "SELECT * FROM funnel WHERE id = {$r['funnel_id']}"; $q_f = mysql_query($sql_f); $name_funel = ''; if($r_f = mysql_fetch_assoc($q_f)){ $name_funel = $r_f['name']; } if(!empty($name_funel)){ $text_funnel .= "в смежной воронке «".$name_funel."»
"; } $user1 = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id = {$userId}")); $post = "Сотрудник"; if ($user1['agency'] == 1) { $post = "Агенство"; } else if ($user1['manager'] == 1) { $post = "Менеджер"; } $text = "".$post . " " . trim($user1['last_name'] . ' ' . $user1['first_name'] . ' ' . $user1['middle_name'])."
закрыл(а) этап «".$stepName."» "; if($clientId == 0 && $reqId > 0){ $who_work = $r_req_client['who_work']; $text .= "
по заявке ".$r_req_client['name']."
"; if($nextEtap !=0 ){ $text .= "Заявка перешла на этап «".$nextName['name']."»
"; } $text .= $text_funnel; $client_req = mysql_fetch_assoc(mysql_query("SELECT * FROM clients WHERE id = {$r_req_client['client_id']}")); $text .="Клиент: ".$client_req['fio']." тел. ".$client_req['phone']; if($req['type_id'] == 2 && $req['object_id'] > 0){ $obj = mysql_fetch_assoc(mysql_query("SELECT id, adres, stoim, type, komnat FROM objects WHERE id = {$r_req_client['object_id']}")); if($obj){ switch ($obj['type']) { case 1: if ($obj['komnat'] == 1 && $obj['studio_flag']) { $type = "Квартира-студия"; } else { $type = "$obj[komnat]-комнатная квартира"; } break; case 2: $type = "Комната в $obj[komnat]-комнатной квартире"; break; case 3: $type = "$obj[komnat]-комнатный дом"; break; case 4: switch ($obj['type_category']){ case 1: $type = "Офис"; break; case 2: $type = "Склад"; break; case 3: $type = "Торговая площадь"; break; case 4: $type = "Производство"; break; case 5: $type = "Помещение свободного назначения"; break; case 6: $type = "Здание"; break; case 7: $type = "Гараж"; break; case 8: $type = "Готовый бизнес"; break; case 9: $type = "Коммерческая земля"; break; default: $type = "Помещение"; } break; case 5: $type = "Часть дома"; break; case 6: $type = "Комплекс"; break; case 7: $type = "Участок"; break; default: $type = "$obj[komnat]-комнатная квартира"; } $text .= '
Объект: ID:'.$obj['id'].' '.$obj['adres'].', '.$type.' '.$obj['stoim']; } } /* if($r_req_client['deleted'] > 0){ /*if($req['confirm'] == 10){ $text .= "
Закрыта. Совершена сделка на ".$req['summa']." руб"; } else { $denial = mysql_fetch_assoc(mysql_query("SELECT name FROM denial_work WHERE id = {$req['denial']}")); $text .= "
Закрыта. ".$denial['name']; } //$close = true; }*/ } else if ($clientId > 0) { $who_work = $r_req_client['who_work']; $text .= "
по клиенту: ".$client['fio']. " тел. ".$client['phone']; if($nextEtap !=0 ){ $text .= "
Клиент перешел на этап «".$nextName['name']."»"; } $text .= $text_funnel; /* if($client['deleted'] > 0){ $close = true; }*/ } $text = htmlspecialchars($text); if($who_work > 0){ $sqlMesIn = "INSERT INTO step_notify_closure SET user_id = {$who_work}, from_id={$userId}, step_id={$stepId}, text='{$text}', send=0"; mysql_query($sqlMesIn); } /* $userMes = array(); $send = 0; if($close){ $tempid = time(); $send = 1; } // $user_id_mes = false; foreach ($users_mes as $key => $user_id_mes_) { unset($user_id_mes); if ($users_mes[$key] === 'manager') { $managerWhoWork = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE id = {$who_work}")); $user_id_mes = $managerWhoWork['id_manager']; } else if($users_mes[$key] == 0){ $user_id_mes = $who_work; } else { $user_id_mes = $user_id_mes_; } if(!in_array($user_id_mes, $userMes) && $user_id_mes != $_SESSION['id']){ $sqlMesIn = "INSERT INTO step_notify_closure SET user_id = {$user_id_mes}, from_id={$userId}, step_id={$stepId}, text='{$text}', send={$send}, temp_id={$tempid}"; mysql_query($sqlMesIn); $userMes[] = $user_id_mes; } } } /* if($_SESSION['id'] == 5238){ var_dump($userMes); }*/ } } $text = ''; //Кастомные поля в закрытии этапа if($clientId == 0 && $reqId > 0){ if(!empty($fields_models)){ // var_dump($fields_models); $linkingClass = new LinkingClass(); $reqClass = new Requisitions(null, true); $fields_req = $reqClass->get_req_fields($agency_id, $reqId); $arrFields_models = (array)$fields_models; foreach($fields_models as $key => $field_models) { $arrField = explode("_", $key, 2); $typeField = 1; if($arrField[0] == 'modelp'){ $typeField = 2; } $fieldId = $arrField[1]; if(is_numeric($fieldId)){ $value = json_encode($field_models, JSON_UNESCAPED_UNICODE); $field_id = (int)$arrField[1]; //Поиск поля и запись текста // var_dump($fields_req['fields']); foreach($fields_req['fields'] as $fr){ if($fr['id'] === $field_id){ // var_dump($fr); if($fr['is_podgroup'] > 0){ if($fr['is_podgroup_multiselect'] == 1){ $values = json_decode($value, true); $tempTitle = ''; $tempText = ''; if(!empty($values)){ foreach($fr['podgroups'] as $pd){ if(in_array($pd['id'], $values)){ if($tempTitle != '') $tempTitle .= ', '; $tempTitle .= clearInputElement($pd['title']); // $text .= '

'.$fr['title'].': '.clearInputElement($pd['title']).'

'; if(isset($arrFields_models['modelp_'.$pd['id']])){ $val = $arrFields_models['modelp_'.$pd['id']]; if(isset($pd['params']['items'])){ foreach($pd['params']['items'] as $item){ if($item['value'] == $arrFields_models['modelp_'.$pd['id']]){ $val = $item['name']; } } //$val = $pd['params']['items'][$arrFields_models['modelp_'.$value]]['name']; } $tempText .= '

'.$pd['title'].': '.clearInputElement($val).'

'; } } } if(!empty($tempTitle)){ $text .= '

'.$fr['title'].': '.$tempTitle.'

'; } if(!empty($tempText)){ $text .= $tempText; } } } else { foreach($fr['podgroups'] as $pd){ if($pd['id'] == (int)$value){ //var_dump($pd); $text .= '

'.$fr['title'].': '.clearInputElement($pd['title']).'

'; if(isset($arrFields_models['modelp_'.$value])){ $val = $arrFields_models['modelp_'.$value]; if(isset($pd['params']['items'])){ foreach($pd['params']['items'] as $item){ if($item['value'] == $arrFields_models['modelp_'.$value]){ $val = $item['name']; } } //$val = $pd['params']['items'][$arrFields_models['modelp_'.$value]]['name']; } $text .= '

'.$pd['title'].': '.clearInputElement($val).'

'; } } } } } else if($fr['type'] == 2){ $val = $value; if(isset($fr['params']['items'])){ foreach($fr['params']['items'] as $item){ if($item['value'] == $value){ $val = $item['name']; } } //$val = $pd['params']['items'][$arrFields_models['modelp_'.$value]]['name']; } $text .= '

'.$fr['title'].': '.clearInputElement($val).'

'; } else if($fr['type'] == 3){ $val = ''; $vals = json_decode($value, true); if(isset($fr['params']['items'])){ foreach($vals as $v){ foreach($fr['params']['items'] as $item){ if($item['value'] == $v){ if($val != '') $val .= ', '; $val .= $item['name']; } } //$val = $pd['params']['items'][$arrFields_models['modelp_'.$value]]['name']; } } $text .= '

'.$fr['title'].': '.$val.'

'; } else if($fr['type'] == 4){ $text .= '

'.$fr['title'].': '; if($value == 1){ $text .= 'Да

'; } else { $text .= 'Нет

'; } } else { $text .= '

'.$fr['title'].': '.clearInputElement($value).'

'; } //var_dump($text); // break; } } $sql_req_data = "SELECT id FROM requisition_data WHERE req_id = {$reqId} AND field_id = {$field_id} AND type = {$typeField}"; $q_req_data = mysql_query($sql_req_data); if(mysql_num_rows($q_req_data) > 0){ $r_req_data = mysql_fetch_assoc($q_req_data); $sql_up_req_data = "UPDATE requisition_data SET value = '$value' where req_id = {$reqId} AND field_id = {$field_id} AND type = {$typeField}"; mysql_query($sql_up_req_data); } else { $sql_in = "INSERT INTO requisition_data SET ". " req_id=$reqId, ". " field_id=$field_id, ". " type=$typeField, ". " value='$value'"; mysql_query($sql_in); } } else if(!empty($fieldId)){ $field = $linkingClass->field_find($fieldId); //var_dump($field); if(isset($field['ident'])){ //Поиск доп поля в заявке $req_dop = mysql_fetch_assoc(mysql_query("SELECT * FROM requisitions WHERE id={$reqId}")); if(isset($req_dop[$field['ident']]) && !empty($req_dop[$field['ident']])){ if(isset($field['table'])){ $sql_dop_table = "SELECT id FROM `{$field['table']}` WHERE `{$field['ident']}` = {$req_dop[$field['ident']]}"; $q_dop_table = mysql_query($sql_dop_table); if(mysql_num_rows($q_dop_table) > 0){ $sql_in_dop_field = "UPDATE `{$field['table']}` SET `$fieldId`= '{$field_models}' WHERE `{$field['ident']}` = {$req_dop[$field['ident']]}"; mysql_query($sql_in_dop_field); } else { if($field['table'] == 'object_prices'){ $user = new User(); $user->get($_SESSION['id']); $agency_id = $user->agencyId; } $sql_in_dop_field = "INSERT INTO `{$field['table']}` SET `{$field['ident']}` = {$req_dop[$field['ident']]}, `$fieldId`= '{$field_models}'"; if(isset($agency_id)){ $sql_in_dop_field .= ", agency_id = {$agency_id}"; } mysql_query($sql_in_dop_field); } $text .= '

'.$field['title'].': '.clearInputElement($field_models).'

'; } else { } } else { } } else { // echo $field_id; if($fieldId == 'client_contract'){ // $value = json_encode($field_models, JSON_UNESCAPED_UNICODE); $sql_person = "SELECT * FROM `persons_contract` WHERE req_id={$reqId} AND client_id = {$field_models->id}"; //echo $sql_person; $q_person = mysql_query($sql_person); if(mysql_num_rows($q_person) == 0){ $sql_in_person = "INSERT INTO `persons_contract` set req_id={$reqId}, client_id = {$field_models->id}, name='Лицо по договору'"; mysql_query($sql_in_person); } $text .= '

'.$field['title'].': '.clearInputElement($field_models->name).'

'; //$field_models } else { $sql_in_dop_field = "UPDATE `requisitions` SET `$fieldId`= '{$field_models}' WHERE id={$reqId}"; //echo $sql_in_dop_field; mysql_query($sql_in_dop_field); $text .= '

'.$field['title'].': '.clearInputElement($field_models).'

'; } } } } } } else if ($clientId > 0 && $reqId == 0) { } //Запись событий этапа if(!empty($events_client)){ unset($events_client['prev_id']); unset($events_client['prev_next_id']); unset($events_client['next_step_select']); //$text = ''; foreach($events_client as $event){ if($event['type'] == 'select'){ $text .= ''; } else if($event['type'] == 'date'){ $text .= '

'.$event['name'].': '.date('d.m.Y', strtotime($event['value'])).'

'; } else if($event['type'] == 'checkbox'){ $text .= ''; /* if($event['value'] == 1){ $text .= '

'.$event['name'].': Да

'; } else { $text .= '

'.$event['name'].': Нет

'; }*/ } else if($event['type'] == 'file' && isset($event['value']['guid'])){ $doc_q = mysql_query("SELECT * FROM funnel_files WHERE guid = '".$event['value']['guid']."' and etap_id = {$stepId} and client_id = '".$clientId."'"); if($reqId > 0){ $doc_q = mysql_query("SELECT * FROM funnel_files WHERE guid = '".$event['value']['guid']."' and etap_id = {$stepId} and req_id = '".$reqId."'"); } if(mysql_num_rows($doc_q) > 0){ $doc = mysql_fetch_assoc($doc_q); $name_doc = 'https://uf.joywork.ru/upload/funnels/clients/'.$clientId.'/'.$doc['guid'].'.'.$doc['type']; if($reqId > 0){ $name_doc = 'https://uf.joywork.ru/upload/funnels/req/'.$reqId.'/'.$doc['guid'].'.'.$doc['type']; } $text .= '

'.$event['name'].': '.$doc['name'].'

'; } } else if($event['type'] == 'deposit' && (int)$event['value'] > 0){ $text .= '

'.$event['name'].': '.clearInputElement($event['value']).'

'; if($clientId > 0){ $who_work = $userId; $sql_cl = "SELECT id, who_work FROM clients WHERE id = {$clientId}"; $q_cl = mysql_query($sql_cl); $r_cl = mysql_fetch_assoc($q_cl); if($r_cl['who_work'] > 0){ $who_work = (int)$r_cl['who_work']; } $sql_d = "SELECT id FROM deposits_clients_req WHERE client_id = {$clientId} AND funnel_id={$funnelId} AND step_id = {$stepId}"; $q_d = mysql_query($sql_d); $deposit = (int)$event['value']; if(mysql_num_rows($q_d) > 0){ $id_d = mysql_result($q_d, 0); $sql_up_d = "UPDATE deposits_clients_req SET deposit = {$deposit}, created_at= NOW(), user_id={$who_work} WHERE id = {$id_d}"; mysql_query($sql_up_d); } else { $sql_in_d = "INSERT INTO deposits_clients_req SET deposit = {$deposit}, funnel_id={$funnelId}, step_id={$stepId}, user_id={$who_work}, client_id={$clientId}"; mysql_query($sql_in_d); } } if($reqId > 0){ /** * 28.07.2023 Игорь по согласованию со Станиславом сказал задатки на ответственных фиксировать */ $who_work = $userId; $sql_req = "SELECT id, who_work FROM requisitions WHERE id = {$reqId}"; $q_req = mysql_query($sql_req); $r_req = mysql_fetch_assoc($q_req); if($r_req['who_work'] > 0){ $who_work = (int)$r_req['who_work']; } $sql_d = "SELECT id, deposit FROM deposits_clients_req WHERE req_id = {$reqId} AND funnel_id={$funnelId} AND step_id = {$stepId}"; $q_d = mysql_query($sql_d); $deposit = (int)$event['value']; if(mysql_num_rows($q_d) > 0){ $r_d = mysql_fetch_assoc($q_d); $id_d = (int)$r_d['id']; $sql_up_d = "UPDATE deposits_clients_req SET deposit = {$deposit}, created_at= NOW(), user_id={$who_work} WHERE id = {$id_d}"; mysql_query($sql_up_d); if((int)$r_d['deposit'] != $deposit){ $text_deposit = "Изменено: {$event['name']} с {$r_d['deposit']} на {$deposit}"; $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_deposit}', 1)"; mysql_query($sql_event); } } else { $sql_in_d = "INSERT INTO deposits_clients_req SET deposit = {$deposit}, funnel_id={$funnelId}, step_id = {$stepId}, user_id={$who_work}, req_id={$reqId}"; mysql_query($sql_in_d); $text_deposit = "Добавлено: {$event['name']} - {$deposit}"; $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_deposit}', 1)"; mysql_query($sql_event); } } } else if ($event['type'] == 'commission' && (int)$event['value'] > 0 && $reqId > 0){ // Только для заявок $text .= '

'.$event['name'].': '.clearInputElement($event['value']).'

'; $sql_req = "SELECT expected_commission FROM requisitions WHERE id = {$reqId}"; $q_req = mysql_query($sql_req); $r_req = mysql_fetch_assoc($q_req); $text_commission = ''; if(empty($r_req['expected_commission'])){ $text_commission = "Добавлено: {$event['name']} - {$event['value']}"; $sql_up = "UPDATE requisitions SET expected_commission = {$event['value']} WHERE id = {$reqId}"; if(mysql_query($sql_up)) { $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_commission}', 1)"; mysql_query($sql_event); } } else if ($r_req['expected_commission'] != $event['value']) { $text_commission = "Изменено: {$event['name']} с {$r_req['expected_commission']} на {$event['value']}"; $sql_up = "UPDATE requisitions SET expected_commission = {$event['value']} WHERE id = {$reqId}"; if(mysql_query($sql_up)) { $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_commission}', 1)"; mysql_query($sql_event); } } } else if ($event['type'] == 'expenses' && (float)$event['value']['summa'] > 0 && $reqId > 0){ // Только для заявок $text .= '

'.$event['name'].': '.$event['value']['summa']; if(!empty($event['value']['comment'])){ $text .= ' Комментарий: '.clearInputElement($event['value']['comment']); } $sql_ex = "SELECT * FROM expenses_req WHERE req_id = {$reqId} AND funnel_id = {$funnelId} AND step_id = {$stepId}"; $q_ex = mysql_query($sql_ex); if(mysql_num_rows($q_ex) > 0){ $r_ex = mysql_fetch_assoc($q_ex); $comment = mysql_real_escape_string($event['value']['comment']); $sql_up = "UPDATE expenses_req SET amount = '{$event['value']['summa']}', comment = '{$comment}' where id = {$r_ex['id']}"; mysql_query($sql_up); $amount = rtrim(rtrim((float)$r_ex['amount'], '0'), '.'); if($amount != (float)$event['value']['summa']){ $text_expenses = "Изменено: {$event['label']} с {$amount} на {$event['value']['summa']}"; if(!empty($event['value']['comment'])){ $text_expenses .= " Добавлен комментарий: ".$event['value']['comment']; } $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_expenses}', 1)"; mysql_query($sql_event); } } else { $comment = mysql_real_escape_string($event['value']['comment']); $sql_in = "INSERT INTO `expenses_req`(`user_id`, `req_id`, `amount`, `comment`, `funnel_id`, `step_id`) VALUES ({$userId}, {$reqId}, {$event['value']['summa']}, '{$comment}', {$funnelId}, {$stepId})"; mysql_query($sql_in); $text_expenses = "Добавлено: {$event['name']} - {$event['value']['summa']}"; if(!empty($event['value']['comment'])){ $text_expenses .= " Добавлен комментарий: ".$event['value']['comment']; } $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_expenses}', 1)"; mysql_query($sql_event); } } else { $text .= '

'.$event['name'].': '.clearInputElement($event['value']).'

'; } } // $text = clearInputElement($text); } if($text != ''){ $sql_e = "INSERT INTO user_client_events SET user_id = {$userId}, client_id = {$clientId}, type='step', name = '{$stepName}', comment = '{$text}'"; if($reqId > 0){ $sql_e = "INSERT INTO user_client_events SET user_id = {$userId}, req_id = {$reqId}, type='step', name = '{$stepName}', comment = '{$text}'"; } if(!mysql_query($sql_e)){ echo mysql_error(); } } //Запись события перехода на этап if($nextEtap != 0){ //'c «» на «»' $dop_text = 'c «'.$stepName.'» на «'.$nextName['name'].'»'; // echo "INSERT INTO `events_clients` SET user_id = {$userId}, client_id = {$clientId}, event='stageedit', read=1, dop_text='{$dop_text}'"; $sql_in_ev = "INSERT INTO `events_clients` SET user_id = {$userId}, client_id = {$clientId}, event='stageedit', `read`=1, from_id = 0, dop_text='{$dop_text}'"; $in_history = "INSERT INTO `steps_history`(`client_id`, `step_id`, `date`, `type`, `user_id`, `created_at`) VALUES ({$clientId}, {$stepId}, {$date}, 1, {$userId}, '{$create_at}')"; if($reqId > 0){ $sql_in_ev = "INSERT INTO `events_clients` SET user_id = {$userId}, req_id = {$reqId}, event='stageedit', `read`=1, from_id = 0, dop_text='{$dop_text}'"; $in_history = "INSERT INTO `steps_history`(`req_id`, `step_id`, `date`, `type`, `user_id`, `created_at`) VALUES ({$reqId}, {$stepId}, {$date}, 1, {$userId}, '{$create_at}')"; } mysql_query($sql_in_ev); mysql_query($in_history); //Запись дополнительных ответственных $sql_cl = "SELECT id, doer_clients, doers, who_work, funnel_id FROM clients WHERE id = {$clientId}"; $q_cl = mysql_query($sql_cl); $client = mysql_fetch_assoc($q_cl); if($client['doer_clients'] > 0){ $doers = json_decode(html_entity_decode($client['doers']), true); foreach($doers as $doer_id => $doer){ if($doer == 1){ $sql_up_doer = "INSERT INTO doers_emp_client (user_id, client_id, funnel_id, step_id, step_name, who_work, doer_id, confirm, start_date) ". "values ({$userId}, {$clientId}, ".$client['funnel_id'].", {$nextEtap}, '".$nextName['name']."', ".$client['who_work'].", {$doer_id}, 1, NOW())"; mysql_query($sql_up_doer); } } } } } if($adjacentId > 0){ $res['client_id'] = $clientId; $res['req_id'] = $reqId; $res['adjacent_id'] = $adjacentId; } else if($clientId > 0){ $res = get_class_etap($clientId, $funnelId); $cl = new Clients(); $cl->prev_step_event($clientId, $res['stageId']); } else if($reqId > 0) { $req = new Requisitions(null, true); $res = $req->get_class_etap($reqId, $funnelId); //if($_SESSION['id'] == 5238){ $req->prev_step_event($reqId, $res['stageId']); // } } $res['tempid'] = $tempid; if($agency_id == 13154 && $reqId > 0 && $funnelId == 699 && $stepId == 4447){ $w = new WebHookSend($agency_id, 3, $reqId, 'req'); } if($reqId > 0 && $funnelId > 0){ $dataWhook = array('action'=>'close_step','funnel_id'=>$funnelId, 'step_id'=>$stepId, 'new_step_id'=>$res['stageId'], 'req_id'=>$reqId, 'section'=>'req'); $w_in = new WebHookIn(null, $agency_id); $w_in->check_send($dataWhook); } echo json_encode($res); exit(); } if($request == 'save_check_list'){ $userId = $_SESSION['id']; $stepId = $data->step_id; $clientId = 0; if(isset($data->client_id)){ $clientId = $data->client_id; } $reqId = 0; if(isset($data->req_id)){ $reqId = $data->req_id; } $funnelId = $data->funnel_id; $values = $data->values; $pole = $data->pole; $resVal = json_decode($values, true); $events_client[] = $resVal[$pole]; $sql_st = "SELECT name FROM funnel_steps WHERE id=$stepId"; $q_st = mysql_query($sql_st); $r_st = mysql_fetch_assoc($q_st); $stepName = $r_st['name']; $sql = "SELECT `id`, `step_id`, `next_id`, `values` FROM clients_funnel_step WHERE client_id = ".$clientId; if($clientId == 0){ $sql = "SELECT `id`, `step_id`, `next_id`, `values` FROM clients_funnel_step WHERE req_id = ".$reqId; } //echo $sql; $prev_id = 0; $prev_next_id = 0; $next_id = 0; $q = mysql_query($sql); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_assoc($q); // var_dump($r['values']); if(!empty($r['values'])){ $valarr = json_decode($r['values'],true); $valArr = deClearInputElements($valarr); $valArrStep = array(); if(isset($valArr[$stepId])){ $valArrStep = json_decode($valArr[$stepId],true); } $valArrStep[$pole] = $resVal[$pole]; } else { $valarr = array(); } $valarr[$stepId] = clearInputElement(json_encode($valArrStep, JSON_UNESCAPED_UNICODE)); $val = json_encode($valarr, JSON_UNESCAPED_UNICODE); $sql = ''; if($clientId > 0) { $sql = "UPDATE clients_funnel_step SET `values` = '".$val."' WHERE client_id = ".$clientId; } else if($clientId <= 0 && $reqId > 0){ $sql = "UPDATE clients_funnel_step SET `values` = '".$val."' WHERE req_id = ".$reqId; } } else { $valarr[$stepId] = clearInputElement(json_encode($resVal, JSON_UNESCAPED_UNICODE)); $val = json_encode($valarr, JSON_UNESCAPED_UNICODE); $sql = "INSERT INTO clients_funnel_step SET step_id = 0, client_id = ".$clientId.", next_id = 0, `prev_id` = 0, `prev_next_id` = 0, `values` = '".$val."'"; if($clientId == 0 && $reqId > 0){ $sql = "INSERT INTO clients_funnel_step SET step_id = 0, req_id = ".$reqId.", next_id = 0, `prev_id` = 0, `prev_next_id` = 0, `values` = '".$val."'"; } } if(!mysql_query($sql)){ echo mysql_error(); } //Запись событий этапа if(!empty($events_client)){ unset($events_client['prev_id']); unset($events_client['prev_next_id']); unset($events_client['next_step_select']); $text = ''; foreach($events_client as $event){ if($event['type'] == 'select'){ $text .= ''; } else if($event['type'] == 'date'){ $text .= '

'.$event['name'].': '.date('d.m.Y', strtotime($event['value'])).'

'; } else if($event['type'] == 'checkbox'){ $text .= ''; } else if($event['type'] == 'file' && isset($event['value']['guid'])){ $doc_q = mysql_query("SELECT * FROM funnel_files WHERE guid = '".$event['value']['guid']."' and etap_id = {$stepId} and client_id = '".$clientId."'"); if($reqId > 0){ $doc_q = mysql_query("SELECT * FROM funnel_files WHERE guid = '".$event['value']['guid']."' and etap_id = {$stepId} and req_id = '".$reqId."'"); } if(mysql_num_rows($doc_q) > 0){ $doc = mysql_fetch_assoc($doc_q); $name_doc = 'https://uf.joywork.ru/upload/funnels/clients/'.$clientId.'/'.$doc['guid'].'.'.$doc['type']; if($reqId > 0){ $name_doc = 'https://uf.joywork.ru/upload/funnels/req/'.$reqId.'/'.$doc['guid'].'.'.$doc['type']; } $text .= '

'.$event['name'].': '.$doc['name'].'

'; } } else if($event['type'] == 'deposit' && (int)$event['value'] > 0){ $text .= '

'.$event['name'].': '.clearInputElement($event['value']).'

'; if($clientId > 0){ /** * 28.07.2023 Игорь по согласованию со Станиславом сказал задатки на ответственных фиксировать */ $who_work = $userId; $sql_cl = "SELECT id, who_work FROM clients WHERE id = {$clientId}"; $q_cl = mysql_query($sql_cl); $r_cl = mysql_fetch_assoc($q_cl); if($r_cl['who_work'] > 0){ $who_work = (int)$r_cl['who_work']; } $sql_d = "SELECT id FROM deposits_clients_req WHERE client_id = {$clientId} AND funnel_id={$funnelId} AND step_id = {$stepId}"; $q_d = mysql_query($sql_d); $deposit = (int)$event['value']; if(mysql_num_rows($q_d) > 0){ $id_d = mysql_result($q_d, 0); $sql_up_d = "UPDATE deposits_clients_req SET deposit = {$deposit}, created_at= NOW(), user_id={$who_work} WHERE id = {$id_d}"; mysql_query($sql_up_d); } else { $sql_in_d = "INSERT INTO deposits_clients_req SET deposit = {$deposit}, funnel_id={$funnelId}, step_id={$stepId}, user_id={$who_work}, client_id={$clientId}"; mysql_query($sql_in_d); } } if($reqId > 0){ /** * 28.07.2023 Игорь по согласованию со Станиславом сказал задатки на ответственных фиксировать */ $who_work = $userId; $sql_req = "SELECT id, who_work FROM requisitions WHERE id = {$reqId}"; $q_req = mysql_query($sql_req); $r_req = mysql_fetch_assoc($q_req); if($r_req['who_work'] > 0){ $who_work = (int)$r_req['who_work']; } $sql_d = "SELECT id FROM deposits_clients_req WHERE req_id = {$reqId} AND funnel_id={$funnelId} AND step_id = {$stepId}"; $q_d = mysql_query($sql_d); $deposit = (int)$event['value']; if(mysql_num_rows($q_d) > 0){ $id_d = mysql_result($q_d, 0); $sql_up_d = "UPDATE deposits_clients_req SET deposit = {$deposit}, created_at= NOW(), user_id={$who_work} WHERE id = {$id_d}"; mysql_query($sql_up_d); } else { $sql_in_d = "INSERT INTO deposits_clients_req SET deposit = {$deposit}, funnel_id={$funnelId}, step_id = {$stepId}, user_id={$who_work}, req_id={$reqId}"; mysql_query($sql_in_d); } } } else { $text .= '

'.$event['name'].': '.clearInputElement($event['value']).'

'; } } // $text = clearInputElement($text); if($text != ''){ $sql_e = "INSERT INTO user_client_events SET user_id = {$userId}, client_id = {$clientId}, type='step', checklist=1, name = '{$stepName}', comment = '{$text}'"; if($reqId > 0){ $sql_e = "INSERT INTO user_client_events SET user_id = {$userId}, req_id = {$reqId}, type='step', checklist=1, name = '{$stepName}', comment = '{$text}'"; } if(!mysql_query($sql_e)){ echo mysql_error(); } } } /* $res = get_class_etap($clientId, $funnelId); echo json_encode($res);*/ echo 1; exit(); } if($request == 'saveUpdateUser'){ $userId = $data->user_id; $doers = $data->doers; $clientId = 0; $reqId = 0; if(isset($data->client_id)){ $clientId = (int)$data->client_id; } if(isset($data->req_id)){ $reqId = (int)$data->req_id; } $userObj = $data->user_obj; $objects = $data->objects; $agency = array(); if($clientId > 0 || $reqId > 0){ foreach($doers as $doer){ if($doer->id != $userId){ /* if($doer -> isManager !== false){ $agency[$doer ->manager ->id] = 0; $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$userId.", ".$clientId.", ".$doer ->manager ->id.", 'transmitted_parallel')"; mysql_query($sql_conf); }*/ // if($doer->isAgents !== false){ // foreach($doer->agents as $ag){ $agency[$doer->id] = 0; $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$userId.", ".$clientId.", ".$doer->id.", 'transmitted_parallel')"; if($reqId > 0){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`) VALUES (".$userId.", ".$reqId.", ".$doer->id.", 'transmitted_parallel')"; } mysql_query($sql_conf); // } // } } } // doers = только партнёры (в дополнение к ответственному who_work). // Если реальных партнёров нет (список пуст или содержит только самого инициатора) — // не трогаем doers/requisition_doers/clients_doers: инициатор уже видит заявку через who_work/user_id. if (!empty($agency)) { $sql = "UPDATE clients SET doers_confirm = 0, doer_clients= 0, doers = '". clearInputElement(json_encode($agency))."' WHERE id = ".$clientId; if($reqId > 0){ $sql = "UPDATE requisitions SET doers_confirm = 0, doer_clients= 0, doers = '". clearInputElement(json_encode($agency))."' WHERE id = ".$reqId; } // echo $sql; if(!mysql_query($sql)){ echo mysql_error(); } else { //пишем в отдельную таблицу if($clientId > 0){ mysql_query("DELETE FROM clients_doers WHERE client_id = {$clientId}"); foreach($agency as $key => $agent){ $sql_i = "INSERT INTO clients_doers (client_id, user_id, confirm) VALUES (" . $clientId . ", ". $key . ", " . $agent . ")"; if(!mysql_query($sql_i)) { echo mysql_error(); } } } if($reqId > 0){ //сначала чистим mysql_query("DELETE FROM requisition_doers WHERE requisition_id = {$reqId}"); //потом вставлям новое foreach($agency as $key => $agent){ $sql_i = "INSERT INTO requisition_doers (requisition_id, user_id, confirm) VALUES (" . $reqId . ", ". $key . ", " . $agent . ")"; if(!mysql_query($sql_i)) { echo mysql_error(); } } } } } //Передача объекта if($userObj != 'no'){ $sql_user = "SELECT id, phone, agency_name, first_name, last_name, middle_name, agency FROM users WHERE id = ".(int)$userObj; $q_user = mysql_query($sql_user); $r_user = mysql_fetch_assoc($q_user); $sobstv = trim($r_user['last_name'] . ' ' . $r_user['first_name'] . ' ' . $r_user['middle_name']); if($r_user['agency'] == 1){ $sobstv = $sobstv . ', агентство ' . $r_user['agency_name']; } $dop_text = "Переданы объект(ы): "; foreach ($objects as $object) { $sql_up = "UPDATE objects SET id_add_user = '".(int)$userObj."', phone='".$r_user['phone']."', sobstv='".$sobstv."' WHERE id = ".$object->id; if($dop_text != 'Переданы объект(ы): ') $dop_text .= ', '; $dop_text .= $object->nazv.' ('.$object->adres.' '.$object->dom.')'; if(mysql_query($sql_up)){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$userId.", ".$clientId.", ".(int)$userObj.", 'update', '".$dop_text."', '1')"; mysql_query($sql_conf); } } //$sql_up = "UPDATE objects SET id_add_user = '".(int)$userObj."', phone='".$r_user['phone']."', sobstv='".$sobstv."' WHERE id = ".$object; //echo $sql_up; //mysql_query($sql_up); } } } //Объекты клиента для передачи if($request == 'get_objects'){ $clientId = $data->client_id; $is_confirm = false; $return_null = false; if(isset($data->is_confirm)){ $is_confirm = (bool)$data->is_confirm; } $objects = []; $sql = "SELECT * FROM `client_objects` WHERE client_id = {$clientId}"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $objects[] = (int)$r['object_id']; } if(!empty($objects)){ if($is_confirm){ $sql_con = "SELECT * FROM client_confirm_objects WHERE client_id = {$clientId} AND status = 0"; $q_con = mysql_query($sql_con); if(mysql_num_rows($q_con) > 0){ $return_null = true; } } if(!$return_null){ $sql_o = "SELECT id, nazv, adres, dom FROM objects WHERE id in (".implode(',', $objects).")"; $q_o = mysql_query($sql_o); $res = []; while ($r_o = mysql_fetch_assoc($q_o)) { $res[] = $r_o; } echo json_encode($res); exit(); } else { echo 0; exit(); } } else { echo 0; exit(); } } //Данные, ранее сохраненные, по этапу if($request == 'openDetailsStep'){ /*if($_SESSION['id'] == 5238){ error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1); }*/ $clientId = 0; if(isset($data->client_id)){ $clientId = $data->client_id; } $stepId = $data->step_id; $req_id = 0; if(isset($data->req_id)){ $req_id = $data->req_id; } $adjacent_id = 0; if(isset($data->adjacent_id)){ $adjacent_id = (int)$data->adjacent_id; } $section = 'client'; $parentId = 'client_id = '.$clientId; $pole_parent = 'client_id'; $pole_parent_val = $clientId; if($adjacent_id > 0) { $section = 'adjacent'; $parentId = 'adjacent_id = '.$adjacent_id; $pole_parent = 'adjacent_id'; $pole_parent_val = $adjacent_id; } else if($req_id > 0) { $section = 'req'; $parentId = 'req_id = '.$req_id; $pole_parent = 'req_id'; $pole_parent_val = $req_id; } $sql = "SELECT * FROM `clients_funnel_step` WHERE client_id = {$clientId}"; if($clientId == 0){ $sql = "SELECT req.`complex_room_id`, req.`complex_status_id`, cfs.*, cr.`id` AS room_id, cr.`type` AS room_type, cr.`number` AS room_number, cr.`floor_id` AS room_floor_id, cr.`total_amount` AS room_total_amount, cf.`complex_entrance_id` AS room_complex_entrance_id, ch.`id` AS house_id, ch.`name` AS house_name, cl.`id` AS complex_id, cl.`name` AS complex_name, MAX(c_house_p_i.url) as plan_url FROM `requisitions` AS req LEFT JOIN `clients_funnel_step` AS cfs ON cfs.req_id = req.id LEFT JOIN `complex_rooms` AS cr ON cr.id = req.complex_room_id LEFT JOIN `complex_floors` AS cf ON cf.id = cr.floor_id LEFT JOIN `complex_entrances` AS ce ON ce.id = cf.complex_entrance_id LEFT JOIN `complex_houses` AS ch ON ch.id = ce.complex_house_id LEFT JOIN `complex_list` AS cl ON cl.id = ch.complex_id LEFT JOIN `complex_rooms_plans` AS c_room_p ON c_room_p.room_id = cr.id LEFT JOIN `complex_house_plans_images` AS c_house_p_i ON c_room_p.plan_id = c_house_p_i.plan_id AND c_house_p_i.position = 1 WHERE req.`id` = {$req_id}"; } if($adjacent_id > 0){ $sql = "SELECT * FROM adjacent_funnels WHERE id = {$adjacent_id}"; } $base_event = array(); $numders_event = array(); $sql_base_event = "SELECT * FROM steps_data WHERE section='{$section}' AND step_id = {$stepId} AND {$parentId} AND del = 0 order by number"; $q_base_event = mysql_query($sql_base_event); while($r_base_event = mysql_fetch_assoc($q_base_event)){ $base_event[$r_base_event['number']] = $r_base_event; } //Проверка на смежную воронку if($adjacent_id == 0){ $sqla = "SELECT * FROM adjacent_funnels WHERE"; if($req_id > 0){ $sqla .= " req_id = {$req_id}"; } else if($client_id > 0){ $sqla .= "client_id = {$client_id}"; } //echo $sqla; $adjacent_funnels = array(); $qa = mysql_query($sqla); if(mysql_num_rows($qa) > 0){ while($ra = mysql_fetch_assoc($qa)){ if($ra['step_id_active'] > -1){ $ra['users'] = array(); $sql_funnel = "SELECT * FROM funnel WHERE id = {$ra['funnel_id']}"; $q_funnel = mysql_query($sql_funnel); $funnel = mysql_fetch_assoc($q_funnel); $funnel_sql_steps = "SELECT * FROM funnel_steps WHERE id=$stepId"; $close_step = false; $close_step_active = false; $funnel_step = mysql_query($funnel_sql_steps); $step = mysql_fetch_assoc($funnel_step); //if($_SESSION['id'] == 5238){ /* error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1);*/ $pole_prev = json_decode(htmlspecialchars_decode($step['pole_prev']), true); //var_dump($pole_prev); if(isset($pole_prev['steps_close_main_funnel']) && !empty($pole_prev['steps_close_main_funnel'])){ foreach($pole_prev['steps_close_main_funnel'] as $funnel_step){ if($funnel_step['funnel'] == $funnel['id']){ $close_step = $funnel_step['step']; } } } // } if($close_step){ $funnelClass = new Funnel(); $res = $funnelClass->get_class_etap(array(), $req_id, $funnel['id'], $adjacent_id); foreach($res['bar'] as $bar_step){ if($bar_step['id'] == $close_step){ if($bar_step['isActive'] > 0){ $close_step_active = true; } } } } $ra['funnel_name'] = $funnel['name']; $ra['who_work'] = (int)$ra['who_work']; $ra['users'][] = array('code'=>0, 'name'=>'Весь отдел (общие)'); $ra['save_whowork_adjacent'] = false; $ra['load_save_whowork_adjacent'] = false; if(!empty($funnel['users_no_see'])){ $ids_users = json_decode($funnel['users_no_see']); if(!empty($ids_users)){ $sql_users = "SELECT * FROM users WHERE id in (".implode(',', $ids_users).")"; $q_users = mysql_query($sql_users); while($r_users = mysql_fetch_assoc($q_users)){ $fio = trim($r_users['last_name'] . ' ' . $r_users['first_name'] . ' ' . $r_users['middle_name']); $ra['users'][] = array('code'=>(int)$r_users['id'], 'name'=>$fio); } } } if(!$close_step_active){ $adjacent_funnels[] = $ra; } } } if(count($adjacent_funnels) > 0){ $stepArr = array(); $stepArr['adjacent_funnels'] = $adjacent_funnels; $stepArr['no_close_step'] = true; echo json_encode($stepArr, JSON_UNESCAPED_UNICODE); exit(); } } } try{ $q = mysql_query($sql); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_assoc($q); if(!empty($r['values'])){ /*if($r['req_id'] == 598157){ var_dump($r['values']); }*/ //$r['values'] = str_replace("\n"," ",$r['values']); $str_value = htmlspecialchars_decode($r['values']); $str_value = str_replace("\\n", " ", $str_value); $str_value = str_replace("\n", " ", $str_value); $str_value = str_replace("\\\"", "", $str_value); // $str_value = str_replace("\\", "", $str_value); $str_value = stripcslashes($str_value); $str_value = str_replace(['"{', '}"'], ['{', '}'], $str_value); $str_value = str_replace("\\", "-", $str_value); $valarr = json_decode($str_value,true); // $r['values'] = str_replace("\\","/",$r['values']); // $valarr = json_decode($r['values'],true); /*if($r['req_id'] == 598157){ var_dump($valarr); }*/ $arr = $valarr; if(isset($arr[$stepId])){ $temp_step = $arr[$stepId]; foreach ($temp_step as $step_key => $step) { if($step['type'] == "checkbox"){ if(isset($step['value']) && !empty($step['value'])){ foreach($step['value'] as $key => $task){ $date_task = date('Y-m-d H:i:s', strtotime($task['date'])); $sql_tsk = "SELECT id FROM user_client_events WHERE type = '{$task['type']}' and schedule_date='{$date_task}'"; if($req_id > 0){ $sql_tsk .= " and req_id = {$req_id}"; } else if($client_id > 0){ $sql_tsk .= " and client_id = {$client_id}"; } //echo $sql_tsk."\n"; $q_tsk = mysql_query($sql_tsk); if(mysql_num_rows($q_tsk) == 0){ unset($temp_step[$step_key]['value'][$key]); } } } } } if(isset($temp_step['next_step_select']) && !is_array($temp_step['next_step_select'])){ if($temp_step['next_step_select'] > 0){ $sql_s = "SELECT * FROM funnel_steps WHERE id = {$temp_step['next_step_select']} AND deleted=0"; //echo $sql_s."\n"; $q_s = mysql_query($sql_s); if(mysql_num_rows($q_s) > 0){ $r_s = mysql_fetch_assoc($q_s); $temp_next = array(); $temp_next['id'] = array('id'=>$r_s['id'], 'name'=>$r_s['name']); // $temp_next['name'] = $r_s['name']; $temp_step['next_step_select'] = $temp_next; //var_dump($temp_step['next_step_select']); } else { $temp_step['next_step_select'] = ''; } } else { // unset('next') $temp_step['next_step_select'] = ''; } $r = array_merge($r, $temp_step); } } } echo json_encode($r, JSON_UNESCAPED_UNICODE); exit(); } else { echo 0; exit(); } } catch (Exception $ex){ echo $ex->getMessage(); exit(); } } // Определение предыдущего этапа для открытия if($request == 'openPrevStep'){ $reqId = 0; $clientId = 0; if(isset($data->client_id)){ $clientId = $data->client_id; } if(isset($data->req_id)){ $reqId = $data->req_id; } $adjacentId = 0; if(isset($data->adjacent_id)){ $adjacentId = (int)$data->adjacent_id; } $funnelId = 0; $stepId = 0; if($adjacentId > 0){ $sql = "SELECT cfs.*, fs.name FROM `adjacent_funnels` as `cfs` LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id WHERE cfs.id = {$adjacentId}"; $sql_funnel = "SELECT funnel_id, step_id FROM adjacent_funnels WHERE id = {$adjacentId}"; } else if($clientId > 0){ $sql = "SELECT cfs.*, fs.name FROM `clients_funnel_step` as `cfs` LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id WHERE cfs.client_id = {$clientId}"; $sql_funnel = "SELECT funnel_id, step_id FROM clients WHERE id = {$clientId}"; } else if($reqId > 0){ $sql = "SELECT cfs.*, fs.name FROM `clients_funnel_step` as `cfs` LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id WHERE cfs.req_id = {$reqId}"; $sql_funnel = "SELECT funnel_id, step_id FROM requisitions WHERE id = {$reqId}"; } $funnelId = 0; $q_funnel = mysql_query($sql_funnel); $r_funnel = mysql_fetch_assoc($q_funnel); if($r_funnel['funnel_id']) { $funnelId = (int)$r_funnel['funnel_id']; $stepId = (int)$r_funnel['step_id']; } $steps = array(); $temp_steps = array(); //echo $sql; $funnel_sql = "SELECT * FROM funnel_steps WHERE funnel_id = " . $funnelId . " and deleted=0 order by order_number, branch"; /*if($_SESSION['id'] == 5238){ echo $funnel_sql; }*/ $funnel_step = mysql_query($funnel_sql); while ($step = mysql_fetch_assoc($funnel_step)) { $steps[] = $step; $st = deClearInputElements($step); $next_step = json_decode($st['next_step'], true); if($st['next_step_change'] == "Всегда один" && !empty($next_step) && isset($next_step[0])){ $temp_steps[$next_step[0]] = $step['id']; } } /* if($_SESSION['id'] == 5238){ var_dump($temp_steps); }*/ $r = array(); try{ $q = mysql_query($sql); if(mysql_num_rows($q) > 0){ $r['res'] = mysql_fetch_assoc($q); } else { $r['res'] = 0; } $arr_steps = array(); foreach($steps as $step) { $step_temp = array(); //if(isset($r['res']['step_id']) && ) if($step['id'] == $stepId){ //$steps[] = array('id'=>$step['id'], 'name'=>$step['name']); break; } else if($step['next_step_change'] == "Всегда один" || $step['main'] == 1) { $step_temp = array('id'=>$step['id'], 'name'=>$step['name']); if($step['main'] == 1) { $step_temp['prev_step'] = 0; } else if(isset($temp_steps[$step['id']])){ $step_temp['prev_step'] = (int)$temp_steps[$step['id']]; } if(isset($step_temp['prev_step'])){ $arr_steps[] = $step_temp; } } } $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(); exit(); } } //Сопряженные поля if($request == 'openLinkingStep'){ $reqId = 0; $clientId = 0; $step_id = 0; $agency_id = (int)$data->agency_id; $linking_steps = array(); if(isset($data->client_id)){ $clientId = $data->client_id; } if(isset($data->req_id)){ $reqId = $data->req_id; } if(isset($data->step_id)){ $step_id = (int)$data->step_id; } $linkingClass = new LinkingClass(); $fields = $linkingClass->getFixFields(); $forms = $linkingClass->getFixetForm(); //$fields = array(); $req = array(); //типы заявок для заявок if($reqId > 0){ $sql_req = "SELECT * FROM requisitions WHERE id = {$reqId}"; $req = mysql_fetch_assoc(mysql_query($sql_req)); } $sql_check = "SELECT * FROM linking_steps_client_req WHERE step_id = {$step_id}"; if($reqId > 0){ $sql_check .= " AND is_req > 0"; $reqClass = new Requisitions(); $fields_req = $reqClass->get_req_fields($agency_id, $reqId); //($fields_req); $linking_steps['values'] = $fields_req['values']; } $linking_steps['forms'] = array(); if($clientId > 0) { $sql_check .= " AND is_client > 0"; } $q_check = mysql_query($sql_check); while($r_check = mysql_fetch_assoc($q_check)){ //var_dump($r_check); if(is_numeric($r_check['field_id'])){ if($reqId > 0){ foreach($fields_req['fields'] as $key => $fr){ $req_types = array(); // echo $key."\n"; //var_dump($fr); if($fr['id'] == $r_check['field_id']){ //var_dump($fr['req_type']); if($fr['req_type'] === 0 || empty($field['req_type'])){ //var_dump($fr['req_type']); $fr['is_required'] = $r_check['is_required']; $fr['view_next'] = !empty($r_check['view_next']) ? json_decode($r_check['view_next'], true) : null; $r_check = $fr; $linking_steps['fields'][] = $r_check; } else if(!empty($fr['req_type'])){ $req_types = json_decode($fr['req_type'], true); // var_dump($req_types); if(in_array((int)$req['type_id'], $req_types)){ $fr['is_required'] = $r_check['is_required']; $fr['view_next'] = !empty($r_check['view_next']) ? json_decode($r_check['view_next'], true) : null; $r_check = $fr; $linking_steps['fields'][] = $r_check; } } // var_dump($fr); break; } } } } else { foreach($fields as $field){ $req_types = array(); if($reqId > 0){ if($field['is_req'] > 0 && $r_check['field_id'] == $field['id']){ if(isset($field['table'])){ if(isset($req[$field['ident']]) && !empty($req[$field['ident']])){ $sql_dop_table = "SELECT {$field['id']} FROM `{$field['table']}` WHERE `{$field['ident']}` = {$req[$field['ident']]}"; //echo $sql_dop_table; $q_dop_table = mysql_query($sql_dop_table); $r_dop_table = mysql_fetch_assoc($q_dop_table); if($r_dop_table){ $linking_steps['values']['model_'.$field['id']] = $r_dop_table[$field['id']]; } } } else { if(isset($req[$field['id']])){ $linking_steps['values']['model_'.$field['id']] = $req[$field['id']]; } else if($field['id'] == 'client_contract'){ $result = null; $sql_d = "SELECT * FROM persons_contract WHERE req_id = {$reqId} ORDER by id DESC limit 1"; $q_d = mysql_query($sql_d); if(mysql_num_rows($q_d) > 0){ $r_d = mysql_fetch_assoc($q_d); $sql_cl = "SELECT fio, phone, email FROM clients WHERE id = {$r_d['client_id']}"; $q_cl = mysql_query($sql_cl); $r_cl = mysql_fetch_assoc($q_cl); // Маскируем контактные данные клиента, если у пользователя включено скрытие mask_client_contacts_inplace($r_cl); $client_name = $r_cl['phone'].' '.$r_cl['fio']; $result = array('id' => $r_d['client_id'], 'name' => $client_name, 'color'=>'#000'); } $linking_steps['values']['model_'.$field['id']] = $result; } } if($field['req_type'] === 0 || empty($field['req_type'])){ $field['is_required'] = $r_check['is_required']; $field['view_next'] = !empty($r_check['view_next']) ? json_decode($r_check['view_next'], true) : null; $linking_steps['fields'][] = $field; } else if(!empty($field['req_type'])){ $req_types = json_decode($field['req_type'], true); if(in_array((int)$req['type_id'], $req_types)){ $field['is_required'] = $r_check['is_required']; $field['view_next'] = !empty($r_check['view_next']) ? json_decode($r_check['view_next'], true) : null; $linking_steps['fields'][] = $field; } } break; } } } } } $sql_check = "SELECT * FROM linkingform_steps_client_req WHERE step_id = {$step_id}"; if($reqId > 0){ $sql_check .= " AND is_req > 0"; } if($clientId > 0) { $sql_check .= " AND is_client > 0"; } $q_check = mysql_query($sql_check); while($r_check = mysql_fetch_assoc($q_check)){ foreach($forms as $form){ $req_types = array(); if($reqId > 0){ if($form['is_req'] > 0 && $r_check['form_id'] == $form['id']){ if($form['req_type'] === 0 || empty($form['req_type'])){ $linking_steps['forms'][] = $form; } else if(!empty($form['req_type'])){ $req_types = json_decode($form['req_type'], true); if(in_array((int)$req['type_id'], $req_types)){ $linking_steps['forms'][] = $form; } } break; } } } } //var_dump($linking_steps['values']); //$linking_steps['value'] = array(); echo json_encode($linking_steps, JSON_UNESCAPED_UNICODE); exit(); } //Сохранение открытия этапа. if($request == 'saveOpenPrevStep'){ /*error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1);*/ $nowStepId = (int)$data->now_step_id; $userId = $data->user_id; $reqId = 0; $clientId = 0; $stepId = 0; $is_Other_prev_step = (int)$data->is_Other_prev_step; $stepInfo = $data->stepInfo; if(isset($data->client_id)){ $clientId = $data->client_id; } if(isset($data->req_id)){ $reqId = $data->req_id; } $adjacentId = 0; if(isset($data->adjacent_id)){ $adjacentId = (int)$data->adjacent_id; } $id = $data->step_id; $sql = "SELECT cfs.*, fs.name, fs.stage, fs.funnel_id FROM `clients_funnel_step` as `cfs` LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id "; if($clientId > 0){ $sql .= " WHERE cfs.client_id = {$clientId}"; } else if ($reqId > 0){ $sql .= " WHERE cfs.req_id = {$reqId}"; } if($adjacentId > 0){ $sql = "SELECT cfs.*, fs.name, fs.stage, fs.funnel_id FROM `adjacent_funnels` as `cfs` LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id WHERE cfs.id = {$adjacentId}"; } $q = mysql_query($sql); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_assoc($q); $funnelId = $r['funnel_id']; $id = $r['id']; $stepId = (int)$r['step_id']; $is_other = false; if($is_Other_prev_step > 0){ $is_other = true; } if(!empty($r['values']) || $is_other){ $valarr = json_decode(str_replace(["\n","\t","\r"],"",$r['values']),true); $arr = deClearInputElements($valarr); $stepArr = json_decode(str_replace(["\n","\t","\r"],"",$arr[$r['step_id']]),true); if(isset($stepArr['prev_id']) || $is_other){ $prev_id = false; $prev_next_id = 0; if($is_other){ //var_dump($stepInfo); $prev_id = $stepInfo->prev_step; $prev_next_id = $stepInfo->id; } else if(isset($stepArr['prev_id'])) { $prev_id = (int)$stepArr['prev_id']; $prev_next_id = $stepArr['prev_next_id']; } if($prev_id !== false){ $sql = "UPDATE clients_funnel_step SET step_id = ".$prev_id.", next_id = '".$prev_next_id."' WHERE id = ".$id; if($adjacentId > 0){ $sql = "UPDATE adjacent_funnels SET step_id = ".$prev_id.", next_id = '".$prev_next_id."' WHERE id = ".$adjacentId; } // echo $sql; mysql_query($sql); $sqlSelectRequisition = mysql_query("SELECT `complex_room_id` FROM `requisitions` WHERE id = {$reqId}"); $requisition = mysql_fetch_assoc($sqlSelectRequisition); if ($requisition['complex_room_id']) { $complex = new Complex(); $complex->generate_room_reservations_positions($requisition['complex_room_id']); } $historyRequisition = !empty($r['history_requisition']) ? json_decode($r['history_requisition']) : []; $currentComplexData = (object)[]; $newHistoryRequisition = []; foreach ($historyRequisition as $history) { if ($history->step_id == $stepId) { $currentComplexData = $history; } if ($history->step_id != $stepId) { $newHistoryRequisition[] = $history; } } $newHistoryRequisition = json_encode($newHistoryRequisition, JSON_UNESCAPED_UNICODE); $sqlClientsFunnelStepUpdate = "UPDATE `clients_funnel_step` SET `history_requisition` = '{$newHistoryRequisition}' WHERE `id` = $id"; mysql_query($sqlClientsFunnelStepUpdate); if ($currentComplexData) { if (array_key_exists('complex_room_id', $currentComplexData) || array_key_exists('complex_status_id', $currentComplexData) || array_key_exists('reservation_updated_at', $currentComplexData)) { mysql_query("UPDATE `requisitions` SET `complex_room_id` = $currentComplexData->complex_room_id, `complex_status_id` = $currentComplexData->complex_status_id, `reservation_updated_at` = '{$currentComplexData->reservation_updated_at}' WHERE id = {$reqId}"); } else { mysql_query("UPDATE `requisitions` SET `complex_room_id` = NULL, `complex_status_id` = NULL, `reservation_updated_at` = NULL WHERE id = {$reqId}"); } if (!empty($currentComplexData->complex_room_id)) { $complex = new Complex(); $complex->generate_room_reservations_positions($currentComplexData->complex_room_id); } } foreach ($stepArr as $step) { if(isset($step['type']) && $step['type'] == 'deposit'){ if($clientId > 0 && $stepId > 0){ $sql_del = "DELETE FROM deposits_clients_req WHERE client_id={$clientId} AND funnel_id = {$funnelId} AND step_id = {$stepId}"; mysql_query($sql_del); } else if($reqId > 0 && $stepId > 0) { $sql_del = "DELETE FROM deposits_clients_req WHERE req_id={$reqId} AND funnel_id = {$funnelId} AND step_id = {$stepId}"; $text_deposit = "Удалено: {$step['name']} при повторном открытии этапа «{$r['name']}»"; $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_deposit}', 1)"; mysql_query($sql_del); mysql_query($sql_event); } } else if (isset($step['type']) && $step['type'] == 'commission'){ $sql_up = "UPDATE requisitions SET expected_commission = NULL WHERE id = {$reqId}"; mysql_query($sql_up); $text_commission = "Удалено: {$step['name']} при повторном открытии этапа «{$r['name']}»"; $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_commission}', 1)"; mysql_query($sql_event); } else if (isset($step['type']) && $step['type'] == 'expenses'){ $sql_del = "DELETE FROM expenses_req WHERE req_id={$reqId} AND funnel_id = {$funnelId} AND step_id = {$stepId}"; $text_expenses = "Удалено: {$step['name']} при повторном открытии этапа «{$r['name']}»"; $sql_event = "INSERT INTO events_clients (user_id, from_id, req_id, `event`, dop_text, `read`) VALUES ({$userId}, {$userId}, {$reqId}, 'update', '{$text_expenses}', 1)"; mysql_query($sql_del); mysql_query($sql_event); } } $sqlname = mysql_query("SELECT `name`, `id`, `funnel_id`,`stage` FROM funnel_steps WHERE id = ".$prev_id); $prev = mysql_fetch_assoc($sqlname); if($prev['stage'] == 'В работе' && $adjacentId == 0){ if($clientId > 0){ $sql_open = "UPDATE clients SET deleted = 0, stage = 1, confirm = 1 WHERE id = ".$clientId; } else if($reqId > 0){ $sql_open = "UPDATE requisitions SET deleted = 0, stage = 1, confirm = 1 WHERE id = ".$reqId; } mysql_query($sql_open); } $prev_etap = $nowStepId; if($adjacentId > 0){ $prev_etap = $r['step_id_active']; } $sqlname = mysql_query("SELECT `name`, `id`, `funnel_id`,`stage` FROM funnel_steps WHERE id = {$prev_etap}"); $prevName = mysql_fetch_assoc($sqlname); $dop_text = 'c «'.$prevName['name'].'» на «'.$r['name'].'» (Этап открыт повторно)'; if($clientId > 0){ $sql_in ="INSERT INTO `events_clients` SET user_id = {$userId}, client_id = {$clientId}, event='stageedit', `read`=1, from_id = 0, dop_text='{$dop_text}'"; } else if($reqId >0){ $sql_in ="INSERT INTO `events_clients` SET user_id = {$userId}, req_id = {$reqId}, event='stageedit', `read`=1, from_id = 0, dop_text='{$dop_text}'"; } 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, 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) { $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 у связанных заявок $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())"); } } } } } } if($clientId > 0){ if((int)$funnelId == 0){ $sql_f = "SELECT funnel_id FROM clients WHERE id = {$clientId}"; $q_f = mysql_query($sql_f); $r_f = mysql_fetch_assoc($q_f); if($r_f['funnel_id'] > 0) $funnelId = (int)$r_f['funnel_id']; } $res = get_class_etap($clientId, $funnelId); $cl = new Clients(); $cl->prev_step_event($clientId, $res['stageId']); echo json_encode($res); } else if ($reqId > 0){ $req = new Requisitions(null, true); $res = $req->get_class_etap($reqId, $funnelId); $req->prev_step_event($reqId, $res['stageId'], true); echo 1; } else { echo 1; } exit(); } else { echo 0; exit(); } } } else { echo 0; exit(); } // $sql = "UPDATE clients_funnel_step SET step_id = ".$stepId.", next_id = '".$next_id."' WHERE id = ".$id; if ($reqId) { mysql_query("UPDATE `requisitions` SET `complex_room_id` = NULL, `complex_status_id` = NULL WHERE id = {$reqId}"); } } } //Дополнительные настройки при закрытии этапа if($request == 'get_pole_dop_details'){ $result = array(); $req_id = 0; $client_id = 0; $pole_dop = $data->pole_dop; $user_id = $data->user_id; if(isset($data->req_id)){ $req_id = (int)$data->req_id; } if(isset($data->client_id)){ $client_id = $data->client_id; } if(isset($pole_dop->add_contract_close_step) && $pole_dop->add_contract_close_step > 0){ $parent_id = 0; $type_contract = ''; if($client_id > 0){ $parent_id = $client_id; $type_contract = 'client'; } else if ($req_id>0){ $parent_id = $req_id; $type_contract = 'req'; } $result['add_contract_close_step'] = array('parent_id'=>$parent_id, 'type'=>$type_contract); } if(isset($pole_dop->add_activity_close_step) && $pole_dop->add_activity_close_step){ $user = new User(); $user->get($user_id); //Теги $arrActivities = array(); $arrActivitiesName = array(); $arrActivitiesVal = array(); $sql_adv = "SELECT * FROM `activities` WHERE `user_id` = '".$user->id."' OR `manager_id` = '".$user->id."'"; if ($user->id_manager) $sql_adv .= " OR `manager_id` = '".$user->id_manager."' OR `user_id` = '".$user->id_manager."'"; // if ($this->agencyId) $sql_adv .= " OR `manager_id` = '".$user->agencyId."' OR `user_id` = '".$user->agencyId."'"; $sql_adv .= ' ORDER BY `name`'; $q_adv = mysql_query($sql_adv); $rows_adv = mysql_num_rows($q_adv); if ($rows_adv > 0) { while ($r_adv = mysql_fetch_assoc($q_adv)) { $arrActivities[] = array('id'=>$r_adv['id'], 'name'=>trim($r_adv['name'])); $arrActivitiesName['act'.$r_adv['id']] = trim($r_adv['name']); //$arrActivitiesVal[] = $r_adv['id']; } } //теги текущей заявки или клиента $sql_a = ''; if($req_id > 0){ $sql_a = "SELECT * FROM requisitions_activities WHERE req_id = {$req_id}"; } else if($client_id > 0){ $sql_a = "SELECT * FROM clients_activities WHERE client_id = {$client_id}"; } $q_a = mysql_query($sql_a); while($r_a = mysql_fetch_assoc($q_a)){ $arrActivitiesVal[] = $r_a['activity_id']; } $result['add_activity_close_step'] = array('on'=>1,'activites'=>$arrActivities, 'activities_name'=>$arrActivitiesName, 'activities_val'=>$arrActivitiesVal); } if($req_id > 0 && $client_id == 0){ $sql_req = "SELECT *, (SELECT heir FROM requisitions_type WHERE id = requisitions.type_id) as heir FROM requisitions WHERE id={$req_id}"; $q_req = mysql_query($sql_req); $req = mysql_fetch_assoc($q_req); if(isset($pole_dop->advert_close) && $pole_dop->advert_close > 0){ if(($req['type_id'] == 2 || $req['heir'] == 2) && $req['object_id'] > 0){ $sql_obj = "SELECT * FROM objects WHERE id = {$req['object_id']}"; $q_obj = mysql_query($sql_obj); $obj = mysql_fetch_assoc($q_obj); $result['object'] = $obj; } } if(isset($pole_dop->avtopoisk_close) && $pole_dop->avtopoisk_close > 0){ $autosearch_instce = new AutoSearch(); if($req['type_id'] == 1 || $req['heir'] == 1 || $req['type_id'] == 4 || $req['heir'] == 4){ $req['autoSearchEnabled'] = 0; if ($filter = $autosearch_instce->getFilterByReq($req['id'], $user_id, false)) { if (isset($filter['id'])) { $req['autosearch_id'] = intval($filter['id']); $req['autosearch'] = [ 'active' => intval($filter['is_active']), 'count' => $filter['count'], 'is_search' => intval($filter['is_search']), 'is_reverse' => intval($filter['is_reverse']), 'total' => $filter['total'], 'error' => $filter['error'] ]; if($req['autosearch_id'] > 0){ $req['autoSearchEnabled'] = 1; } $info = ''; $comment = ''; $info_ar = $autosearch_instce->getFilterInfo($filter, true, true); foreach ($info_ar as $key => $filter) { if (isset($filter['label']) && isset($filter['value'])) { if ($key === "comment") $comment = '' . $filter['label'] . ': ' . $filter['value']; else $info .= ' ' . $filter['label'] . ': ' . $filter['value'] . ';'; } $req['autosearch']['filter'][$key] = [ 'id' => $filter['id'], 'label' => $filter['label'], 'value' => $filter['value'] ]; } if (!empty($filter['geo'])) { $geo = (array)json_decode($filter['geo'], true); $geo = array_filter(array_map(function($item) { return !empty($item); }, $geo)); $req['autosearch']['filter']['geo'] = [ 'id' => 'geo', 'label' => 'Гео', 'value' => declOfNum(count($geo), ['%d уточнение', '%d уточнения', '%d уточнений']) ]; $info .= ' Гео: ' . declOfNum(count($geo), ['%d уточнение', '%d уточнения', '%d уточнений']). ';'; } if (!empty($info)) { $req['autosearch_info'] = rtrim(trim($info), ';'); $req['autosearch_comment'] = trim($comment) ."
". 'ID фильтра: ' . $req['autosearch_id']; } } } $result['req'] = $req; } } } echo json_encode($result); } //Установка автопоиска в этапе if($request == 'set_autosearch_pole_dop'){ /*error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1);*/ $req_id = $data->req_id; $autosearch_enabled = $data->autosearch_enabled; $user_id = $data->user_id; $asfilter_id = $data->asfilter_id; $sql_req = "SELECT *, (SELECT heir FROM requisitions_type WHERE id = requisitions.type_id) as heir FROM requisitions WHERE id={$req_id}"; $q_req = mysql_query($sql_req); $req = mysql_fetch_assoc($q_req); $autosearch_instce = new AutoSearch(); if ($req['type_id'] == 1 || $req['heir'] == 1 || $req['type_id'] == 4 || $req['heir'] == 4) { if ($autosearch_enabled == 1 && intval($req['object_id']) > 0) { $objToFilter = $autosearch_instce->syncObjectToFilter( intval($req['asfilter_id']), intval($req['object_id']), intval($req['id']), (intval($req['asfilter_id']) > 0) ); if ($objToFilter['success']) $req['asfilter_id'] = $objToFilter['filter_id']; else $errors = array_merge($errors, $objToFilter['errors']); } else if ($autosearch_enabled == 0) { $res = $autosearch_instce->deleteFilter(intval($asfilter_id), $user_id); $req['asfilter_id'] = '0'; } mysql_query("UPDATE requisitions SET asfilter_id = {$req['asfilter_id']} WHERE id = {$req['id']}"); echo json_encode($req); } } //Получение объекта if($request == 'get_object_pole_dop'){ $object_id = $data->object_id; $sql_obj = "SELECT * FROM objects WHERE id = {$object_id}"; $q_obj = mysql_query($sql_obj); $obj = mysql_fetch_assoc($q_obj); echo json_encode($obj); exit(); } //смена имени файла if($request == 'edit_file_name'){ $guid = $data->guid; $name = $data->name; $sql = "UPDATE clients_files SET name = '{$name}' WHERE guid = '{$guid}'"; mysql_query($sql); } //Добавление партнера if($request == 'savePartnerUser'){ $userId = $data->user_id; $doers = $data->doers; $clientId =$data->client_id; $reqId = $data->req_id; $doers_old = array(); $sql = "SELECT c.doers, c.doers_confirm, c.funnel_id, c.stage, c.step_id, c.deleted, c.who_work, f.name FROM clients as c LEFT JOIN funnel_steps as f on f.id = c.step_id WHERE c.id = ".$clientId; if($reqId > 0){ $sql = "SELECT c.doers, c.doers_confirm, c.funnel_id, c.stage, c.step_id, c.deleted, c.who_work, f.name FROM requisitions as c LEFT JOIN funnel_steps as f on f.id = c.step_id WHERE c.id = ".$reqId; } $q = mysql_query($sql); $client = mysql_fetch_assoc($q); if(!empty($client['doers'])){ $doers_old = json_decode(html_entity_decode($client['doers']), true); } /* if ($_SESSION['id'] == 21484) { var_dump($doers_old); }*/ $confirm = 1; /*foreach($doers_old as $doer_old){ if($doer == 0) $confirm = 0; }*/ $arrayStage = array( 1=>"Новый", 2=>"В работе", 3=>"Презентация", 4=>"Показ", 5=>"Бронь", 6=>"Подаем на ипотеку", 7=>"Сделка", 8=>"Закрыт" ); $agency = array(); if (isset($doers_old[$userId])){ $agency[$userId] = 1; } foreach($doers as $doer){ //var_dump($doer); if(isset($doer->code)) $doer = $doer->code; if($doer != $userId){ if(isset($doers_old[$doer])){ $agency[$doer] = $doers_old[$doer]; } else { $agency[$doer] = 0; $confirm = 0; $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$userId.", ".$clientId.", ".$doer.", 'transmitted_parallel')"; if($reqId > 0){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`) VALUES (".$userId.", ".$reqId.", ".$doer.", 'transmitted_parallel')"; } mysql_query($sql_conf); if($client['funnel_id'] == 0){ $step_id = $client['stage']; $step_name = $arrayStage[$step_id]; } else { $step_id = $client['step_id']; $step_name = $client['name']; } $sql_stap = "INSERT INTO `doers_emp_client` (`user_id`, `doer_id`, `who_work`, `client_id`, `funnel_id`, `step_id`, `step_name`,`start_date`) VALUES ". "(".$userId.", ".$doer.",".$client['who_work'].", ".$clientId.", ".$client['funnel_id'].", ".$step_id.", '".$step_name."', NOW())"; if($reqId > 0){ $sql_stap = "INSERT INTO `doers_emp_client` (`user_id`, `doer_id`, `who_work`, `req_id`, `funnel_id`, `step_id`, `step_name`,`start_date`) VALUES ". "(".$userId.", ".$doer.",".$client['who_work'].", ".$reqId.", ".$client['funnel_id'].", ".$step_id.", '".$step_name."', NOW())"; } mysql_query($sql_stap); } } } foreach($doers_old as $doer_id => $doer){ if(!isset($agency[$doer_id])){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$userId.", ".$clientId.", ".$doer_id.", 'parallel_del', 1,1)"; if($reqId > 0){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$userId.", ".$reqId.", ".$doer_id.", 'parallel_del', 1,1)"; } mysql_query($sql_conf); $sql_s = "SELECT id FROM doers_emp_client WHERE user_id = ".$userId." and client_id=".$clientId." and doer_id = ".$doer_id." order by id desc"; //echo $sql_s; if($reqId > 0){ $sql_s = "SELECT id FROM doers_emp_client WHERE user_id = ".$userId." and req_id=".$reqId." and doer_id = ".$doer_id." order by id desc"; } $q_s = mysql_query($sql_s); $r_s = mysql_fetch_assoc($q_s); $sql_up = "UPDATE doers_emp_client SET end_date = NOW() WHERE id = ".$r_s['id']; //echo $sql_up; mysql_query($sql_up); } } $count = 0; foreach($agency as $key => $agent){ // if($key != $userId){ $count++; // } } $doers_up = clearInputElement(json_encode($agency)); if ($_SESSION['id'] == 21484) { var_dump($doers_up); var_dump($agency); } $doer_clients = 1; if ($count == 0){ $doers_up = ''; $doer_clients = 0; } $sql = "UPDATE clients SET doers_confirm = ".$confirm.", doer_clients = ".$doer_clients.", doers = '". $doers_up."' WHERE id = ".$clientId; // echo $sql; if($reqId > 0){ $sql = "UPDATE requisitions SET doers_confirm = ".$confirm.", doer_clients = ".$doer_clients.", doers = '". $doers_up."' WHERE id = ".$reqId; } if(!mysql_query($sql)){ echo mysql_error(); } else { //пишем в отдельную таблицу if($clientId > 0){ mysql_query("DELETE FROM clients_doers WHERE client_id = {$clientId}"); foreach($agency as $key => $agent){ $sql_i = "INSERT INTO clients_doers (client_id, user_id, confirm) VALUES (" . $clientId . ", ". $key . ", " . $agent . ")"; if(!mysql_query($sql_i)) { echo mysql_error(); } } } if($reqId > 0){ //сначала чистим mysql_query("DELETE FROM requisition_doers WHERE requisition_id = {$reqId}"); //потом вставлям новое foreach($agency as $key => $agent){ $sql_i = "INSERT INTO requisition_doers (requisition_id, user_id, confirm) VALUES (" . $reqId . ", ". $key . ", " . $agent . ")"; if(!mysql_query($sql_i)) { echo mysql_error(); } } } } } /** * Добавление собственника объекта */ if($request == 'save_client_req_bind'){ $user_id = (int)$data->user_id; $agency_id = (int)$data->agency_id; $req_id = $data->req_id; $client_id = (int)$data->client_id; $object_id = (int)$data->object_id; $funnel_id = (int)$data->funnel_id; $rez = array(); if($client_id > 0 && $object_id > 0 && $user_id > 0) { $objectArr = array(); $sql_cl = "SELECT id, objects, fio FROM clients WHERE id in ({$client_id})"; $q_cl = mysql_query($sql_cl); while($r_cl = mysql_fetch_assoc($q_cl)){ if(!empty($r_cl['objects'])){ $arrObj = json_decode(html_entity_decode($r_cl['objects']), ENT_QUOTES); foreach($arrObj as $oneObj){ $objectArr[] = strval($oneObj); } if(!in_array($object_id,$objectArr)){ $objectArr[] = strval($object_id); } } else { $objectArr[] = strval($object_id); } if(!empty($objectArr)){ $clclass = new Clients(); $clclass->update_objects($r_cl['id'], null, $objectArr); $objList = htmlentities(json_encode($objectArr)); $up_client = "UPDATE clients SET objects='$objList' where id = {$r_cl['id']}"; mysql_query($up_client); } $client_fio = $r_cl['fio']; } if($req_id !== null && $client_id > 0){ if($req_id == 'new'){ $req_funnel_id = $funnel_id; $params = array(); $params['user_id'] = $user_id; $params['funnel_id'] = $req_funnel_id; $params['name'] = "Реализация объекта для ".$client_fio; $params['opis'] = "Создана из объекта ID: ".$object_id; $params['type_id'] = 2; $params['object_id'] = $object_id; $params['asfilter_id'] = 'NULL'; $params['req_id'] = 0; $params['client_id'] = $client_id; $params['who_work'] = $user_id; $params['priority'] = 0; $params['confirm'] = 1; $params['hot'] = 0; $params['source'] = 0; $params['employee_id'] = 0; $reqcl = new Requisitions(null, true); $result = $reqcl->add_edit($params); if(!isset($result['error'])){ $com = 'Добавлена заявка ID '.$result; $sql = "INSERT INTO user_object_events(user_id, object_id, create_date, type, address, sum, schedule_date, comment, calendar_view) VALUES({$user_id}, '{$object_id}', NOW(), 'comment', NULL, NULL, NULL, '$com', '1')"; // file_put_contents(__DIR__.'/log_obj.txt', $sql. "\n", FILE_APPEND); mysql_query($sql); } } else { $params = array(); $params['add_obj'] = 1; $params['object_id'] = $object_id; $params['req_id'] = $req_id; $reqcl = new Requisitions(null, true); $result = $reqcl->add_edit($params); if(!isset($result['error'])){ $com = 'Пивязан к заявке ID '.$result; $sql = "INSERT INTO user_object_events(user_id, object_id, create_date, type, address, sum, schedule_date, comment, calendar_view) VALUES({$user_id}, '{$object_id}', NOW(), 'comment', NULL, NULL, NULL, '$com', '1')"; // file_put_contents(__DIR__.'/log_obj.txt', $sql. "\n", FILE_APPEND); mysql_query($sql); } } $sql_req = "SELECT id, funnel_id, stage FROM requisitions WHERE object_id = $object_id AND (type_id = 2 or type_id in (SELECT id FROM requisitions_type WHERE heir = 2 AND agency_id = {$agency_id})) AND deleted = 0 AND cancel = 0 LIMIT 1"; //echo $sql_req; $q_req = mysql_query($sql_req); if(mysql_num_rows($q_req) > 0){ $req = mysql_fetch_assoc($q_req); } if($req != null){ $rez['html'] = '
' .'
' .'
' .'
{{ step.name }}
'; } } } echo json_encode($rez); exit(); } /** * Сохранение настроек передачи клиента */ if($request == 'save_confirm_client_object_req'){ $user_id = (int)$data->user_id; $client_id = (int)$data->client_id; $is_confirm_object = (int)$data->is_confirm_object; $is_confirm_req = (int)$data->is_confirm_req; $who_work = 0; $new_who_work = (int)$data->new_who_work; if($client_id != 0){ $sql_cl = "SELECT id, who_work FROM clients WHERE id = {$client_id}"; $q_cl = mysql_query($sql_cl); $cl = mysql_fetch_assoc($q_cl); $who_work = $cl['who_work']; $sql = "INSERT INTO `client_confirm_objects`(`client_id`, `confirm_objects`, `confirm_req`, `who_work`, `new_who_work`, `user_id`) VALUES ({$client_id}, {$is_confirm_object}, {$is_confirm_req}, {$who_work}, {$new_who_work}, {$user_id})"; $q = mysql_query($sql); } exit(); } /** * Сохранение настроек вида страницы * */ if($request == 'set_view_page'){ $user_id = $_SESSION['id']; $view = $data->view; $sql = "SELECT * FROM user_views_page WHERE user_id = {$user_id}"; $q = mysql_query($sql); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_assoc($q); $sql_up = "UPDATE user_views_page SET view_client = '{$view}' WHERE id = {$r['id']}"; mysql_query($sql_up); } else { $sql_in = "INSERT INTO user_views_page (user_id, view_client) values ({$user_id}, '{$view}')"; mysql_query($sql_in); } }