Exemple #1
0
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':
Exemple #3
0
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);
Exemple #4
0
 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>" . "&nbsp;Логин: " . $client["email"] . "<br>" . "&nbsp;Пароль: " . $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;
     }
 }
Exemple #5
0
 /**
  * @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;
 }
Exemple #6
0
 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()));
     }
 }
Exemple #7
0
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"], "Файлы")) {
Exemple #8
0
/**
 * @deprecated
 * @param $cid
 * @return array
 */
function ord_getByClient($cid)
{
    return Order::findBy(array('klient_id' => intval($cid)));
}
Exemple #9
0
 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));
 }
Exemple #10
0
 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('Список');
Exemple #11
0
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;";
Exemple #12
0
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();
    }
}
Exemple #13
0
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);
        }
    }
}
Exemple #14
0
                 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 = 'Вид работы';
Exemple #15
0
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();
    }
}