function delclient_exec($Frm, $Err) { if (!$Err) { $client = Client::find($Frm->GetNmValue('id')); if (!$client) { $Frm->_gui->ERR("Клиент не найден"); page_ReloadToSec(2); } $ords = Order::findBy(array('klient_id' => $client["id"])); if ($ords && count($ords)) { $Frm->_gui->ERR("У клиента есть заказы, его нельзя удалить"); page_ReloadToSec(2); } if (Client::delete($client["id"])) { $Frm->_gui->OK("Клиент удален"); } else { $Frm->_gui->ERR("Ошибка при попытке удалить клиента"); } page_reloadToSec("2"); } }
foreach ($orders as $order_id) { $order_id = trim($order_id); if (empty($order_id)) { continue; } $order_info = get_order_info($order_id); if ($order_info['referrer_payment_status'] == 0) { Order::update($order_id, array('referrer_payment_status' => 1, 'referrer_payment_date' => date('Y-m-d H:i:s'))); } } $result[] = 'Оплачено'; break; } if ($bDoUpdate) { Order::update($_GET['order_id'], array($_GET['field'] => $value)); $order_info = Order::find($_GET['order_id']); if ($bDoHistoryUpdate) { $data = array('change_date' => time(), 'change_user_id' => $_SESSION['user']['data']['id'], 'order_id' => $_GET['order_id'], 'filial_id_new' => $order_info['filial_id'], 'klient_id_new' => $order_info['klient_id'], 'vuz_id_new' => $order_info['vuz_id'], 'vuz_user_new' => $order_info['vuz_user'], 'type_id_new' => $order_info['type_id'], 'type_user_new' => $order_info['type_user'], 'napr_id_new' => $order_info['napr_id'], 'disc_id_new' => $order_info['disc_id'], 'disc_user_new' => $order_info['disc_user'], 'time_kln_new' => $order_info['time_kln'], 'cost_kln_new' => $order_info['cost_kln'], 'payment_id_new' => $order_info['payment_id'], 'subject_new' => $order_info['subject'], 'about_kln_new' => $order_info['about_kln'], 'about_mng_new' => $order_info['about_mng'], 'kurs_new' => $order_info['kurs'], 'prakt_pc_new' => $order_info['prakt_pc'], 'pages_min_new' => $order_info['pages_min'], 'pages_max_new' => $order_info['pages_max'], 'src_min_new' => $order_info['src_min'], 'src_max_new' => $order_info['src_max'], 'from_id_new' => $order_info['from_id'], 'oform_new' => $order_info['oform'], 'next_rel_date_new' => $order_info['next_rel_date'], 'status_id_new' => $order_info['status_id'], 'ok_comment_new' => $order_info['ok_comment'], 'ok_comment_date_new' => $order_info['ok_comment_date'], 'payment_comment_new' => $order_info['payment_comment'], 'cost_auth_new' => $order_info['cost_auth'], 'time_auth_new' => $order_info['time_auth'], 'oplata_kln_new' => $order_info['oplata_kln'], 'author_paid_new' => $order_info['author_paid'], 'company_paid_new' => $order_info['company_paid'], 'filial_id_old' => $order_info['filial_id'], 'klient_id_old' => $order_info['klient_id'], 'vuz_id_old' => $order_info['vuz_id'], 'vuz_user_old' => $order_info['vuz_user'], 'type_id_old' => $order_info['type_id'], 'type_user_old' => $order_info['type_user'], 'napr_id_old' => $order_info['napr_id'], 'disc_id_old' => $order_info['disc_id'], 'disc_user_old' => $order_info['disc_user'], 'time_kln_old' => $order_info['time_kln'], 'cost_kln_old' => $order_info['cost_kln'], 'payment_id_old' => $order_info['payment_id'], 'subject_old' => $order_info['subject'], 'about_kln_old' => $order_info['about_kln'], 'about_mng_old' => $order_info['about_mng'], 'kurs_old' => $order_info['kurs'], 'prakt_pc_old' => $order_info['prakt_pc'], 'pages_min_old' => $order_info['pages_min'], 'pages_max_old' => $order_info['pages_max'], 'src_min_old' => $order_info['src_min'], 'src_max_old' => $order_info['src_max'], 'from_id_old' => $order_info['from_id'], 'oform_old' => $order_info['oform'], 'next_rel_date_old' => $order_info['next_rel_date'], 'status_id_old' => $order_info['status_id'], 'ok_comment_old' => $order_info['ok_comment'], 'ok_comment_date_old' => $order_info['ok_comment_date'], 'payment_comment_old' => $order_info['payment_comment'], 'cost_auth_old' => $order_info['cost_auth'], 'time_auth_old' => $order_info['time_auth'], 'oplata_kln_old' => $order_info['oplata_kln'], 'author_paid_old' => $order_info['author_paid'], 'company_paid_old' => $order_info['company_paid']); $data[$_GET['field'] . '_new'] = $_GET['value']; OrderHistory::create($data); } } } break; case 'get': if (!empty($_GET['field'])) { switch ($_GET['field']) { case 'status_id': $result[] = db::get_select("SELECT id, status_name FROM " . TBL_PREF . "orders_status", 'status', '', $_GET['value'], 'class="instantEditNewValue"'); break; case 'referrer_payment_status':
if (!$vis) { $GUI->ERR("Встреча не найдена"); page_reloadSec(); } $kln = kln_get($vis["client_id"]); $ypos = 0; $frm = $GUI->Form("Редактирование встречи №" . $vis["id"], "600", "0"); $frm->OnExecute = "editvisit_exec"; $h = $frm->Hidden($vis["id"]); $h->linkName = "vid"; $frm->Label("Клиент: <b>" . $kln["fio"] . "</b>", 10, $ypos += 10); $b = $frm->Button("Инфо", 520, $ypos, 70); $b->Event = 'window.open("?section=kln&subsection=2&edit=' . $kln["id"] . '");'; $ord = false; if ($vis["order_id"]) { $ord = Order::find($vis["order_id"]); $frm->Label("Заказ: <b>" . $ord["id"] . ". " . utils_crop_text($ord["subject"], 110) . "</b>", 10, $ypos += 30); $b = $frm->Button("Инфо", 520, $ypos, 70); $b->Event = 'window.open("?section=ord&subsection=2&p=1&order=' . $ord["id"] . '");'; } if ($vis["filial_id"] > 0) { // филиал $s = "филиал '" . $data_filials[$vis["filial_id"]]["name"] . "'"; } else { // курьер $s = "с курьером"; } $frm->Label("Место проведения: <b>" . $s . "</b>", 10, $ypos += 30); $frm->Label("Проводит: <b>" . sotr_getFullName($vis["user_id"]) . "</b>", 10, $ypos += 30); $frm->VLine(10, $ypos += 30, 580); $frm->Label("Цель встречи:", 10, $ypos += 20);
function add_order($client_id, &$err) { $err = ""; try { $client = Client::find($client_id); } catch (Exception $e) { $err = "Ошибка - не указан клиент"; return false; } try { $filial = Filial::find($client['filial_id']); } catch (Exception $e) { $filial = Filials::getDefault(); Client::update($client['id'], array('filial_id' => $filial['id'])); db::update(TABLE_ORDERS, array('filial_id' => $filial['id']), 'klient_id = ' . $client['id']); } $pgs = get_min_max_from_str($_SESSION["zf_work_pages"]); // disc id try { $discipline = Discipline::find($_SESSION["zf_work_predm"]); $disc_id = $discipline['id']; } catch (Exception $e) { $discipline = Discipline::findOneBy(array('name' => $_SESSION["zf_work_predm"])); if ($discipline) { $disc_id = $discipline['id']; } else { $disc_id = Discipline::create(array('name' => $_SESSION["zf_work_predm"])); } } $info = $_SESSION["zf_work_dopinfo"]; $worktype_custom = ''; $worktype = null; try { $worktype = Worktypes::find($_SESSION["zf_work_type"]); } catch (Exception $e) { $worktype = Worktypes::findOneBy(array('name' => $_SESSION["zf_work_type"])); if (!$worktype) { $worktype_custom = $_SESSION["zf_work_type"]; $worktype['id'] = null; } } $id = Order::create(array("filial_id" => $filial['id'], "klient_id" => $client['id'], "type_id" => $worktype['id'], "type_user" => $worktype_custom, "disc_id" => $disc_id, "time_kln" => strtotime($_SESSION["zf_work_date"]), "subject" => $_SESSION["zf_work_tema"], "about_kln" => $info, "pages_min" => $pgs["min"], "pages_max" => $pgs["max"])); if ($id > 0) { //////////////////////// // Текст клиенту $txt = "<p>Здравствуйте, " . $client["fio"] . "!</p>"; // Если первый раз if (@$_SESSION["new_klient_added"]) { $txt .= "<p>Мы очень рады, что Вы решили воспользоваться нашими услугами и высоко ценим Ваше доверие!</p>" . "<p>Теперь Вы можете войти в личный кабинет:<br>" . " Логин: " . $client["email"] . "<br>" . " Пароль: " . $client["password"] . "<br></p>"; } else { $txt .= "<p>Спасибо, что Вы с нами! Для постоянных клиентов у нас всегда есть интересные и выгодные предложения!</p>"; } $zak = "<p>Номер заказа: " . $id . "<br>" . "Дата: " . date("d.m.Y") . "<br>"; $zak .= "Вид работы: "; if (!empty($worktype_custom)) { $zak .= $worktype_custom . "<br>"; } else { $zak .= $worktype["name"] . "<br>"; } $zak .= "Дисциплина: "; if ($discipline) { $zak .= $discipline['name'] . "<br>"; } else { $zak .= $_SESSION["zf_work_predm"] . "<br>"; } $zak .= "Тема работы: " . $_SESSION["zf_work_tema"] . "<br>" . "Требования: " . $_SESSION["zf_work_dopinfo"] . "<br>" . "Дата сдачи: " . $_SESSION["zf_work_date"] . "<br>" . "Число страниц: " . $_SESSION["zf_work_pages"] . "<br>" . ($txt .= "<p>Ваш заказ принят, и в ближайшее время наш менеджер свяжется с Вами.</p>" . "<p>Содержание заказа: <br>" . $zak . "</p>"); $txt .= "<p><i>С уважением, компания по написанию студенческих работ.</i></p>"; $email = new Email(); $email->setData(array('email' => $client['email'], 'name' => $client['fio']), "Ваш заказ принят!", $txt, array(), true, array(), array('email' => $filial['email'], 'name' => $filial['name'])); //$m->SMTPDebug = true; if ($email->send()) { $user_send_res = "Письмо клиенту отправлено"; } else { $user_send_res = "Ошибки при отправке письма клиенту: " . $email->ErrorInfo; } //////////////////////// // Текст в приемную заказов $zak .= "<p>Заказчик:<br>"; if (@$_SESSION["new_klient_added"]) { $zak .= "Новая регистрация<br>"; } $zak .= "id: " . $client["id"] . "<br>" . "Имя: " . $client["fio"] . "<br>" . "Почта: " . $client["email"] . "<br>" . "Телефон: " . $client["telnum"] . "<br>" . "Город: " . $client["city"] . "<br>" . "Другие контакты: " . $client["contacts"] . "<br>"; $zak .= $user_send_res; // Прикалываем файлы $files = check_user_files(); $message_id = \Components\Entity\Message::create(array('parent_id' => 0, 'order_id' => $id, 'klient_id' => $client["id"], 'visit_id' => 0, 'tender_id' => 0, 'created' => time(), 'creator_id' => 'k' . $client["id"], 'addr' => 'u' . $filial['id'], 'subject' => "Поступил новый заказ #" . $id, 'text' => $zak, 'prior' => 1, 'uvedom' => 1, 'readed' => 0, 'needansv' => 0, 'basket' => 0)); if (!empty($message_id)) { \Components\Classes\Author::enqueue_message_to_email($message_id, $filial['id'], EmailNotification::TO_MANAGER_ON_CLIENT_CREATED_ORDER); } /* ОТПРАВИТЬ В РЕАЛЬНОМ ВРЕМЕНИ $email = new Email(); $email->setData(array( 'email' => FIRM_ORD_MAIL, 'name' => 'Приемная заказов', ), "Поступил новый заказ #" . $id, $zak, $files, true, array(), array( 'email' => $filial['email'], 'name' => $filial['name'], )); $email->send(); ENDOF ОТПРАВИТЬ В РЕАЛЬНОМ ВРЕМЕНИ */ // move file if (count($files)) { $path = DIR_FS_ORDER_FILES . $id; if (!file_exists($path)) { mkdir($path); } foreach ($files as $f) { $fid = OrderFile::create(array('order_id' => $id, 'creator_id' => 0, 'created' => time(), 'name' => $f["name"], 'size' => $f["size"])); if ($fid > 0) { $ext = substr($f["name"], strrpos($f["name"], ".") + 1); $f_s = fopen($f["path"], "r"); $f_d = fopen($path . "/" . $fid . "." . $ext, "w"); fwrite($f_d, fread($f_s, $f["size"])); fclose($f_s); fclose($f_d); } unlink($f["path"]); } } $path = TMPFILES_PATH . session_id(); if (file_exists($path)) { rmdir($path); } return true; } else { return false; } }
/** * @param int $order_id Номер заказа * @param array $authors_ids id получателей * @param string $sender_id id отправителя с префиксом клиент/сотрудник (н-р "u330") * @param string $subject тема сообщения * @param string $body текст сообщения * @param int $notification_type тип сообщения, из набора EmailNotificationType::$NOTIFICATION_TYPES * @see EmailNotificationType * @return array|bool Добавляет внутреннее сообщение и ставит его в очередь рассылки по cron<br/>Массив ассоциативных массивов с ключами 'name' и 'email' тех, для кого сообщение не было создано или не поставлено в очередь рассылки | false в случае ошибки */ public static function saveMessageAndEnqueueEmail($order_id, array $authors_ids, $sender_id, $subject, $body, $notification_type) { static $order, $manager, $filial, $attachments; // Если не надо пихать в ядро - выходим типа все ок if (!EmailNotificationType::isPersistable($notification_type)) { return array(); } if (!is_array($authors_ids)) { if (is_numeric($authors_ids)) { $authors_ids = array($authors_ids); } else { return false; } } if (empty($order)) { try { $order = Order::find($order_id); } catch (Exception $e) { return false; } } if (empty($manager)) { try { $manager = Employee::find($order['manager_id']); } catch (Exception $e) { return false; } } $replyTo = array('email' => $manager['email'], 'name' => $manager['fio']); $result = array(); foreach ($authors_ids as $id) { if (is_numeric($id)) { try { $author = Employee::find($id); } catch (Exception $e) { continue; } $receiver = array('email' => $author['email'], 'name' => $author['fio']); //Сохраняем уведомление $message_id = Message::create(array('parent_id' => 0, 'order_id' => $order_id, 'klient_id' => $order['klient_id'], 'visit_id' => 0, 'tender_id' => 0, 'created' => time(), 'creator_id' => $sender_id, 'addr' => 'u' . $id, 'subject' => $subject, 'text' => $body, 'prior' => 1, 'uvedom' => 1, 'readed' => 0, 'needansv' => 0, 'basket' => 0)); if (!empty($message_id)) { //Ставим в очередь на отправку по cron $email_notification = enqueue_message_to_email($message_id, $author['email'], $notification_type); } if (empty($email_notification)) { $result[] = $receiver; } } else { $ids = explode(', ', $id); $temp_result = self::saveMessageAndEnqueueEmail($order_id, $ids, $sender_id, $subject, $body, $notification_type); if (count($temp_result)) { array_push($result, $temp_result); } } } return $result; }
public static function makeOrdersDefault($napravl_id) { foreach (db::get_single_values_array("SELECT id FROM " . TABLE_ORDERS . " WHERE napr_id = " . db::input($napravl_id)) as $order_id) { Order::update($order_id, array('napr_id' => self::getDefaultID())); } }
need_data('data_payments'); need_data('data_filials'); const LISTING_PAGE_VIEW = 1; const LISTING_PAGE_EDIT = 2; const LISTING_PAGE_MANAGING = 3; const LISTING_PAGE_FILES = 4; const LISTING_PAGE_CHANGE_HISTORY = 5; const LISTING_PAGE_REMOVE_OR_ASSIGN_AUTHOR = 6; const LISTING_PAGE_NOTIFY = 7; const NOTIFICATION_TYPE_NORMAL = 1; const NOTIFICATION_TYPE_URGENT = 2; page_ScriptNeed("gui_table.js", "gui"); if (isset($_REQUEST["p"])) { $order_id = intval(@$_REQUEST["order"]); try { $order_info = Order::find($order_id); } catch (Exception $e) { $GUI->ERR("Заказ не найден"); page_ReloadSec(); } $GUI->mmenu->selected->selected->caption = "Управление заказом #" . $order_id; if (Roles::isActionAllowed($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Просмотр содержания")) { $GUI->cmdmenu->AddItem("Просмотр содержания", "?section=ord&subsection=2&order=" . $order_id . "&p=1"); } if (Roles::isActionAllowed($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Правка содержания")) { $GUI->cmdmenu->AddItem("Правка содержания", "?section=ord&subsection=2&order=" . $order_id . "&p=2"); } if (Roles::isActionAllowed($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Распределение")) { $GUI->cmdmenu->AddItem("Распределение", "?section=ord&subsection=2&order=" . $order_id . "&p=3"); } if (Roles::isActionAllowed($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Файлы")) {
/** * @deprecated * @param $cid * @return array */ function ord_getByClient($cid) { return Order::findBy(array('klient_id' => intval($cid))); }
public static function create_order($order_parameters) { $result = array('status' => false, 'msg' => ''); $message = array(); if (empty($order_parameters['client_id'])) { $result['msg'] = "Id клиента не указан"; return $result; } if ($order_parameters['work'] == 0 && !strlen($order_parameters['work_usr'])) { $order_parameters['work_usr'] = "******"; // $message[] = "Не указан вид работы"; } if ($order_parameters['disc'] == 0 && !strlen($order_parameters['disc_usr'])) { $order_parameters['disc_usr'] = "******"; // $message[] = "Не указана дисциплина"; } if ($order_parameters['pgmax'] && $order_parameters['pgmax'] < $order_parameters['pgmin']) { $message[] = "Неверно указано макс. число страниц"; } if ($order_parameters['srcmax'] && $order_parameters['srcmax'] < $order_parameters['srcmin']) { $message[] = "Неверно указано макс. число источников"; } if (count($message)) { $result['msg'] = join("\n", $message); return $result; } $date = mktime(); $filial_id = db::get_single_value("SELECT filial_id FROM " . TBL_PREF . "clients WHERE id = " . db::input($order_parameters['client_id']) . ""); if (!$filial_id) { $filial_id = $order_parameters['filial_id']; } if (!$filial_id) { $query = "SELECT ftc.filial_id FROM " . TBL_PREF . "clients c JOIN " . TBL_PREF . "data_city dc ON dc.name = c.city JOIN " . TBL_PREF . "filial_to_city ftc ON ftc.city_id = dc.id" . " WHERE c.id = " . db::input($order_parameters['client_id']) . ""; $filial_id = db::get_single_value($query); } $order_id = Order::create(array("filial_id" => $filial_id, "klient_id" => $order_parameters['client_id'], "vuz_id" => $order_parameters['vuz'], "vuz_user" => $order_parameters['vuz_usr'], "type_id" => $order_parameters['work'], "type_user" => $order_parameters['work_usr'], "napr_id" => $order_parameters['napr'], "disc_id" => $order_parameters['disc'], "disc_user" => $order_parameters['disc_usr'], "time_kln" => $order_parameters['time_kln'], "payment_id" => $order_parameters['opl'], "subject" => $order_parameters['subj'], "about_kln" => $order_parameters['treb'], "kurs" => $order_parameters['kurs'], "prakt_pc" => $order_parameters['prakt'], "pages_min" => $order_parameters['pgmin'], "pages_max" => $order_parameters['pgmax'], "src_min" => $order_parameters['srcmin'], "src_max" => $order_parameters['srcmax'], "from_id" => 4)); // foreach ($_FILES as $file) { // if (is_uploaded_file($file["tmp_name"])) { // $extension = pathinfo($file['name']); // $extension = strtolower($extension['extension']); // // $file_id = \Components\Entity\OrderFile::create() ::attachFile($order_id, 0, $file["name"], $file["size"]); // // if (!$file_id) { // $result['msg'] = "Ошибка при загрузке файла"; // return $result; // } else { // $dir = DIR_FS_ORDER_FILES . $order_id . '/'; // if (!is_dir(DIR_FS_ORDER_FILES)) { // create_path('order_files', DIR_FS_DOCUMENT_ROOT); // } // if (!is_dir($dir)) { // create_path($order_id, DIR_FS_ORDER_FILES); // } // // $file_name = $file_id . '.' . $extension; // // if (!move_uploaded_file($file['tmp_name'], $dir . $file_name)) { // Order::deleteAttachedFile($file_id); // $result['msg'] = "Ошибка при сохранении файла"; // return $result; // } // } // } // } if ($order_id) { //////////////////////// // Текст клиенту $client = Client::find($order_parameters['client_id']); $filial = \Components\Entity\Filial::find($filial_id); $txt = "<p>Здравствуйте" . (empty($client["fio"]) ? "" : ", " . $client["fio"]) . "!</p>"; // Если первый раз if (@$_SESSION["new_klient_added"]) { $txt .= "<p>Мы очень рады, что Вы решили воспользоваться нашими услугами и высоко ценим Ваше доверие!</p>"; } else { $txt .= "<p>Спасибо, что Вы с нами! Для постоянных клиентов у нас всегда есть интересные и выгодные предложения!</p>"; } $zak = "<p>Номер заказа: " . $order_id . "<br>" . "Дата: " . date("d.m.Y") . "<br>"; $zak .= "Вид работы: "; if (!empty($order_parameters['work_usr'])) { $zak .= $order_parameters['work_usr'] . "<br>"; } else { $worktype = \Components\Entity\Worktypes::find($order_parameters['work']); $zak .= $worktype['name'] . "<br>"; } $zak .= "Дисциплина: "; if ($order_parameters['disc_usr']) { $zak .= $order_parameters['disc_usr'] . "<br>"; } else { $discipline = \Components\Entity\Discipline::find($order_parameters['disc']); $zak .= $discipline['name'] . "<br>"; // $zak .= $_SESSION["zf_work_predm"] . "<br>"; } if ($order_parameters['subj']) { $zak .= "Тема работы: " . $order_parameters['subj'] . "<br>"; } if ($order_parameters['treb']) { $zak .= "Требования: " . $order_parameters['treb'] . "<br>"; } if ($order_parameters['time_kln']) { $zak .= "Дата сдачи: " . $order_parameters['time_kln'] . "<br>"; } if ($order_parameters['pgmin'] && $order_parameters['pgmax']) { $zak .= "Число страниц: " . $order_parameters['pgmin'] . "-" . $order_parameters['pgmax'] . "<br>"; } $txt .= "<p>Ваш заказ принят, и в ближайшее время наш менеджер свяжется с Вами.</p>" . "<p>Содержание заказа: <br>" . $zak . "</p>"; $txt .= "<p><i>С уважением, компания по написанию студенческих работ.</i></p>"; $email = new \Components\Classes\Email(); $email->setData(array('email' => $client['email'], 'name' => $client['fio']), "Ваш заказ принят!", $txt, array(), true, array(), array('email' => $filial['email'], 'name' => $filial['name'])); //$m->SMTPDebug = true; $mailErrors = array(); if (!$email->send()) { $mailErrors[] = "Ошибки при отправке письма клиенту: " . $email->ErrorInfo; } //////////////////////// // Текст в приемную заказов $zak .= "<p>Заказчик:<br>"; if (@$_SESSION["new_klient_added"]) { $zak .= "Новая регистрация<br>"; } $zak .= "id: " . $client["id"] . "<br>" . "Имя: " . $client["fio"] . "<br>" . "Почта: " . $client["email"] . "<br>" . "Телефон: " . $client["telnum"] . "<br>" . "Город: " . $client["city"] . "<br>" . "Другие контакты: " . $client["contacts"] . "<br>"; if (!empty($mailErrors)) { $zak .= join('<br>', $mailErrors); } $message_id = \Components\Entity\Message::create(array('parent_id' => 0, 'order_id' => $order_id, 'klient_id' => $client["id"], 'visit_id' => 0, 'tender_id' => 0, 'created' => time(), 'creator_id' => 'k' . $client["id"], 'addr' => 'u' . $filial['user_id'], 'subject' => "Поступил новый заказ #" . $order_id, 'text' => $zak, 'prior' => 1, 'uvedom' => 1, 'readed' => 0, 'needansv' => 0, 'basket' => 0)); if (!empty($message_id)) { \Components\Classes\Author::enqueue_message_to_email($message_id, $filial['user_id'], \Components\Entity\EmailNotification::TO_MANAGER_ON_CLIENT_CREATED_ORDER); } // Прикалываем файлы $files = $_FILES; // move file if (count($files)) { $path = DIR_FS_ORDER_FILES . $order_id; if (!file_exists($path)) { mkdir($path); } foreach ($files as $f) { $fid = \Components\Entity\OrderFile::create(array('order_id' => $order_id, 'creator_id' => 0, 'created' => time(), 'name' => $f["name"], 'size' => $f["size"])); if ($fid > 0) { $ext = substr($f["name"], strrpos($f["name"], ".") + 1); $f_s = fopen($f["tmp_name"], "r"); $f_d = fopen($path . "/" . $fid . "." . $ext, "w"); fwrite($f_d, fread($f_s, $f["size"])); fclose($f_s); fclose($f_d); } // unlink($f["path"]); } } } return self::generate_response(true, "OK", array('id' => $order_id, 'date' => $date)); }
set_time_limit(300); ini_set('memory_limit', '1000M'); switch ($_GET['entity']) { case 'orders': if (!Roles::isActionAllowed($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Скачать базу заказов")) { $GUI->ERR('У вас нету прав'); page_reloadSubSec(); } $export = new MysqlToExcel(); $export->setWorkSheetName('База заказов'); $export->setModuleName('ord'); $export->setSubModuleName('Список'); if (is_director($_SESSION["user"]["data"]["id"])) { $orders = Order::findAll(); } else { $orders = Order::findBy(array('filial_id' => $_SESSION["user"]["data"]["filial_id"])); } $export->setData($orders); $export->writeData(); $export->getOutput('Заказы'); die; break; case 'clients': if (!Roles::isActionAllowed($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Скачать базу клиентов")) { $GUI->ERR('У вас нету прав'); page_reloadSubSec(); } $export = new MysqlToExcel(); $export->setWorkSheetName('База клиентов'); $export->setModuleName('kln'); $export->setSubModuleName('Список');
use Components\Entity\Employee; use Components\Entity\Order; use Components\Classes\db; if (!user_can($GUI->mmenu->selected->id, $GUI->mmenu->selected->selected->id, $_SESSION["user"]["data"]["group_id"], "Удалить")) { $GUI->informer->ERR(PERMISSION_DENIED); page_ReloadSubSec(); } $id = intval($_REQUEST["del"]); if ($_SESSION["user"]["data"]["id"] == $id) { $GUI->ERR("Нельзя удалить себя"); page_ReloadSubSec(); } $employer = Employee::find($id); if ($employer) { if (count(Order::findBy(array('manager_id' => $id)))) { $GUI->informer->ERR("У сотрудника есть назначенные заказы"); page_ReloadSubSec(); } if (db::get_single_value("SELECT COUNT(id) FROM " . TBL_PREF . "data_visits WHERE user_id = '" . $id . "' AND status <> 1")) { $GUI->informer->ERR("У сотрудника есть назначенные встречи"); page_ReloadSubSec(); } $frm = $GUI->Form("В черный список", 300, 260); $t = $frm->Hidden($id); $t->linkName = 'id'; $frm->VLine(10, 180, 280); $frm->Button("Выполнить", 60, 200, 80, true); $frm->OnExecute = "deluser_exec"; $b = $frm->Button("Назад", 160, 200, 80); $b->Event = "document.location.href=\"?" . $GUI->Url(array('section', 'subsection', 'del')) . "edit=" . $id . "\"; return false;";
function assign_order_to_manager($Frm, $Err) { if (!$Err) { $order_id = $Frm->GetNmValueI("order_id"); $manager_id = $Frm->GetNmValueI("manager_id"); Order::update($order_id, array('manager_id' => $manager_id)); $do_msg = \Components\Entity\EmailNotificationType::isPersistable(\Components\Entity\EmailNotification::TO_MANAGERS_ON_MANAGER_CHANGE); if ($do_msg) { $message_id = mls_Send("u" . $manager_id, "u" . $_SESSION["user"]["data"]["id"], "На вас назначен заказ №" . $order_id, "На вас назначен заказ №" . $order_id, 1, 0); Author::enqueue_message_to_email($message_id, array($manager_id), \Components\Entity\EmailNotification::TO_MANAGERS_ON_MANAGER_CHANGE); } $old_manager_id = $Frm->GetNmValueI("old_manager_id"); if ($do_msg && $old_manager_id != 0) { $message_id = mls_Send("u" . $old_manager_id, "u" . $_SESSION["user"]["data"]["id"], "Вы сняты с заказа №" . $order_id, "Вас сняли с заказа №" . $order_id . "<br>Причина: " . $Frm->GetNmValueH("reason"), 1, 0); Author::enqueue_message_to_email($message_id, array($old_manager_id), \Components\Entity\EmailNotification::TO_MANAGERS_ON_MANAGER_CHANGE); } $txt = "Заказ закреплен"; if ($do_msg) { $txt .= ", уведомления отправлены"; } $Frm->_gui->OK($txt); page_reloadAll(); } }
function editvisit_exec($Frm, $Err) { global $vis_statuses; if (!$Err) { $changes = array(); $vis = Meeting::find($Frm->GetNmValueI("vid")); if (!$vis) { $Frm->_gui->ERR("Встреча не найдена"); return false; } $sum = $Frm->GetNmValueI("summa"); $sumf = $Frm->GetNmValueI("summaf"); $targ = $Frm->GetNmValueH("about"); $stat = $Frm->GetNmValueI("status"); $rep = $Frm->GetNmValueH("report"); $dt = explode("-", $Frm->GetNmValue("date")); $dt = mktime(0, 0, 0, $dt[1], $dt[0], $dt[2]); $tms = $Frm->GetNmValueI("start"); $tme = $Frm->GetNmValueI("finish"); if ($stat != 1 && $sumf > 0) { $Frm->_gui->ERR("Фактическая сумма не может быть изменена, если встреча не проведена"); return false; } if ($stat == 1 && $sum > $sumf) { $Frm->_gui->ERR("Фактическая сумма " . $sumf . " " . $GLOBALS["ofc_currency"] . " меньше суммы, которую нужно получить " . $sum . " " . $GLOBALS["ofc_currency"]); return false; } if ($sum != $vis["summa"]) { $changes[] = "'деньги' с " . $vis["summa"] . " на " . $sum . " " . $GLOBALS["ofc_currency"]; } if ($sumf != $vis["summaf"]) { $changes[] = "'деньги фактически' с " . $vis["summaf"] . " на " . $sumf . " " . $GLOBALS["ofc_currency"]; } if ($targ != $vis["about"]) { $changes[] = "'цель'"; } if ($stat != $vis["status"]) { $changes[] = "'статус' с '" . $vis_statuses[$vis["status"]] . "' на '" . $vis_statuses[$stat] . "'"; } if ($rep != $vis["report"]) { $changes[] = "'отчет'"; } if ($dt != $vis["date"]) { $changes[] = "'дата встречи' с " . date("d-m-Y", $vis["date"]) . " на " . date("d-m-Y", $dt); } if ($tms != $vis["tm_start"]) { $changes[] = "'начало' с " . utils_cvt_i2times($vis["tm_start"]) . " на " . utils_cvt_i2times($tms); } if ($tme != $vis["tm_finish"]) { $changes[] = "'окончание' с " . utils_cvt_i2times($vis["tm_finish"]) . " на " . utils_cvt_i2times($tme); } $station_id = 0; $opisanie_klienta = ""; $opisanie_pyti = ""; if ($vis['filial_id'] == -1) { $station_id = $Frm->GetNmValueI("station"); $opisanie_klienta = $Frm->GetNmValueH("opisanie_klienta"); $opisanie_pyti = $Frm->GetNmValueH("opisanie_pyti"); if ($station_id != $vis["station_id"]) { $changes[] = "'станция' с " . get_station_name($vis["station_id"]) . " на " . get_station_name($station_id); } if ($opisanie_klienta != $vis["opisanie_klienta"]) { $changes[] = "'описание клиента' с '" . $vis["opisanie_klienta"] . "' на '" . $opisanie_klienta . "'"; } if ($opisanie_pyti != $vis["opisanie_pyti"]) { $changes[] = "'описание пути' с '" . $vis["opisanie_pyti"] . "' на '" . $opisanie_pyti . "'"; } } if ($sumf > $sum) { $Frm->_gui->ERR("Фактическая сумма не может превышать " . $sum . " " . $GLOBALS["ofc_currency"]); return; } if ($tms > $tme) { $Frm->_gui->ERR("Некорректно задано время"); return; } if ($stat && !$rep) { $Frm->_gui->ERR("Необходим отчет о встрече"); return; } $msg = "Произошли следующие изменения по встрече №" . $vis["id"] . ":<br>"; foreach ($changes as $c) { $msg .= $c . "<br>"; } $msg .= "<a href='?section=vis&subsection=2&visit=" . $vis["id"] . "'>Перейти к просмотру</a>"; Meeting::update($vis["id"], array("date" => $dt, "status" => $stat, "tm_start" => $tms, "tm_finish" => $tme, "about" => $targ, "summa" => $sum, "summaf" => $sumf, "report" => $rep, "opisanie_klienta" => $opisanie_klienta, "opisanie_pyti" => $opisanie_pyti, "station_id" => $station_id)); Order::update($vis["order_id"], array('oplata_kln' => $sumf)); $Frm->_gui->OK("Сохранено"); // Письмо тому кто проводит если статус 0 if (count($changes) && $vis["status"] == 0) { //$to, $from, $subj, $text, $prior, $srok, $parent=0, $order=0, $klient=0, $visit=0, $tender=0 $msg_id = mls_Send("u" . $vis["user_id"], "u" . $_SESSION["user"]["data"]["id"], "Изменение параметров встречи №" . $vis["id"], $msg, 1, 0, 0, $vis["order_id"], $vis["client_id"], $vis["id"], 0); \Components\Classes\Author::enqueue_message_to_email($msg_id, array($vis["user_id"]), \Components\Entity\EmailNotificationType::TO_AUTHOR_ON_ORDER_CHANGE); } } }
die; } else { $_SESSION["cab_ord_answer_info"] = "<span style='color:red;'>Введите текст сообщения</span>"; } } print "<script>\n\tjQuery(function(){\n\tjQuery('#cab_msg_answer').bind('focus', function(){\n\t\tjQuery('#cab_msg_answer_btn').removeAttr('disabled');\n\t\tjQuery('#cab_msg_answer').css('color', 'black');\n\t\tjQuery('#cab_msg_answer').text('');\n\t\tjQuery('#cab_msg_answer').unbind('focus');\n\t});\n});\n</script>\n<div style='margin-top: 10px'>"; if (strlen(@$_SESSION["cab_ord_answer_info"])) { print "<div style='margin-bottom: 5px;'>" . $_SESSION["cab_ord_answer_info"] . "</div>"; $_SESSION["cab_ord_answer_info"] = ""; } else { print "<div>Отправить сообщение менеджеру</div>"; } print "<form method='post'>" . "<div style='margin-bottom: 10px;'>" . "<textarea id='cab_msg_answer' name='cab_msg_answer' maxlength='1000' style='color: silver; width: 100%; height: 100px;'>Сообщение</textarea>" . "</div><input type='submit' id='cab_msg_answer_btn' disabled='disabled' value='Отправить'></form>"; } } else { if (count(Order::findBy(array('klient_id' => $_SESSION["frame"]["client"]["id"])))) { include_once DIR_FS_DOCUMENT_ROOT . "/gui/gui.php"; include_once DIR_FS_MODULES . "/ord/functions.php"; $headers_already_printer = true; $tbl = $GUI->Table("cabinet_orders" . $_SESSION["frame"]["client"]["id"]); $tbl->Width = "100%"; $tbl->DataMYSQL('orders'); $tbl->FilterMYSQL('klient_id = ' . db::input($_SESSION["frame"]["client"]["id"])); $tbl->Pager(CGUI_PAGER_FLAG_SEL | CGUI_PAGER_FLAG_RR | CGUI_PAGER_FLAG_R | CGUI_PAGER_FLAG_FF | CGUI_PAGER_FLAG_F, 10, array(10, 20, 50, 100, 0)); $tbl->RowEvent2 = "document.location.href=\"?order=%var%\""; $r = $tbl->NewColumn(); $r->Caption = '№'; $r->DoSort = true; $r->Key = 'id'; $r = $tbl->NewColumn(); $r->Caption = 'Вид работы';
function deluser_exec($Frm, $Err) { if (!$Err) { if (is_director($_SESSION["user"]['data']['id'])) { $id = $Frm->GetNmValueI('id'); if (count(Order::findBy(array('manager_id' => $id)))) { $Frm->_gui->informer->ERR("У сотрудника есть назначенные заказы"); return; } if (db::get_single_value("SELECT COUNT(id) FROM " . TBL_PREF . "data_visits WHERE user_id = '" . $id . "' AND status <> 1")) { $Frm->_gui->informer->ERR("У сотрудника есть назначенные встречи"); return; } $resone = $Frm->GetNmValueH('reason'); db::query("insert into " . TABLE_USERS_BLACK . " select * from " . TABLE_USERS . " where id= " . $id); EmployeeBlack::update($id, array('comments' => $resone, 'blocked' => 1, 'black_list' => 1, 'removed_by' => $_SESSION['user']['data']['id'], 'removed_time' => time())); Employee::delete($id); $Frm->_gui->informer->OK("Сотрудник перенесен в черный список"); } else { $Frm->_gui->informer->ERR("Перемещать сотрудников в черный список может только руководитель"); } page_reloadSec(); } }