示例#1
0
function addvisit_2_exec($Frm, $Err)
{
    if (!$Err) {
        if (!isset($_SESSION["make_visit_tmp"]["klient"])) {
            $Frm->_gui->ERR("Клиент не определен");
            return;
        }
        $kln = kln_get($_SESSION["make_visit_tmp"]["klient"]);
        if (!$kln) {
            $Frm->_gui->ERR("Клиент не определен");
            return;
        }
        $ord_id = 0;
        if (isset($_SESSION["make_visit_tmp"]["order"]) && intval($_SESSION["make_visit_tmp"]["order"])) {
            $ord_id = intval($_SESSION["make_visit_tmp"]["order"]);
            if (!Order::find($ord_id)) {
                $Frm->_gui->ERR("Заказ не найден");
                return;
            }
        }
        // Проверить время
        $t1 = $Frm->GetNmValue("start");
        $t2 = $Frm->GetNmValue("finish");
        if ($t2 <= $t1) {
            $Frm->_gui->ERR("Некорректно задано время");
            return;
        }
        $dt = explode("-", $_SESSION["make_visit_tmp"]["date"]);
        $dt = mktime(0, 0, 0, $dt[1], $dt[0], $dt[2]);
        $fil = intval($_SESSION["make_visit_tmp"]["filial_id"]);
        if ($fil <= 0) {
            $Frm->_gui->ERR("Некорректный филиал");
            return false;
        }
        $courier_id = $Frm->GetNmValueI("user");
        $visits = db::get_single_value("SELECT COUNT(*) FROM " . TABLE_VISITS . " WHERE user_id = " . db::input($courier_id) . " AND tm_start <= " . db::input($t1) . " AND tm_finish > " . db::input($t1) . " AND date = " . db::input($dt));
        if ($visits) {
            $Frm->_gui->ERR("На это время уже назначена встреча");
            return false;
        }
        $vis_id = Meeting::create(array("user_id" => $courier_id, "date" => $dt, "status" => 0, "tm_start" => $t1, "tm_finish" => $t2, "client_id" => $kln["id"], "order_id" => $ord_id, "filial_id" => $fil, "created" => time(), "creator_id" => $_SESSION["user"]["data"]["id"], "summa" => $_SESSION["make_visit_tmp"]["summa1"], "about" => $_SESSION["make_visit_tmp"]["about"], "opisanie_klienta" => $Frm->GetNmValueH("opisanie_klienta"), "opisanie_pyti" => $Frm->GetNmValueH("opisanie_pyti"), "station_id" => $Frm->GetNmValueI("station")));
        $Frm->_gui->OK("Встреча создана");
        // Создаем сообщение при необходимости
        if ($courier_id != $_SESSION["user"]["data"]["id"]) {
            $prior = 1;
            $msg_id = mls_Send("u" . $courier_id, "u" . $_SESSION["user"]["data"]["id"], "Новая встреча №" . $vis_id, "Вы проводите встречу " . date("d.m.Y", $dt) . " c " . utils_cvt_i2times($t1) . " по " . utils_cvt_i2times($t2) . "." . " <a href='?section=vis&subsection=2&visit=" . $vis_id . "'>Подробнее...</a><br>Внимание! Ответ на данное сообщение обязателен!", $prior, 0, 0, 0, 0, $vis_id, 0);
            if ($msg_id) {
                \Components\Classes\Author::enqueue_message_to_email($msg_id, array($courier_id), \Components\Entity\EmailNotificationType::TO_CLIENT_ON_ORDER_CHANGE);
                Meeting::update($vis_id, array('uved_umsg' => $msg_id));
            }
        }
        page_reloadToSec("2");
    }
}
示例#2
0
                 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':
示例#3
0
文件: edit.php 项目: yonkon/diplom
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);
示例#4
0
文件: Author.php 项目: yonkon/diplom
 /**
  * @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;
 }
示例#5
0
/**
 * @deprecated
 * @param $id
 * @return array
 */
function ord_get($id)
{
    return Order::find($id);
}
示例#6
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"], "Файлы")) {
示例#7
0
function assign_order_to_author($Frm, $Err)
{
    if (!$Err) {
        $order_id = $Frm->GetNmValueI("order_id");
        try {
            $order_info = Order::find($order_id);
        } catch (Exception $e) {
            ErrorLogger::add('assign_order_to_author', 'Sessia', $_SESSION);
            ErrorLogger::add('assign_order_to_author', 'REQUEST', $_REQUEST);
            ErrorLogger::add('assign_order_to_author', 'GET', $_GET);
            ErrorLogger::add('assign_order_to_author', 'POST', $_POST);
            $Frm->_gui->ERR("Произошла ошибка");
            page_reloadAll();
        }
        $author_id = $Frm->GetNmValueI("author_id");
        $status_id = get_status_id_by_iname("ASSIGNED");
        if (!$status_id) {
            $Frm->_gui->ERR("Статус не найден");
            page_reloadAll();
        }
        Order::update($order_id, array('author_id' => $author_id, 'status_id' => $status_id));
        if ($Frm->GetNmValueI("need_offer")) {
            if (!AuthorOffer::findOneBy(array('order_id' => $order_id, 'author_id' => $author_id))) {
                AuthorOffer::create(array('order_id' => $order_id, 'author_id' => $author_id, 'price' => $order_info['cost_auth'], 'comment' => ''));
            }
        }
        if ($order_info['disc_id'] == 0) {
            $spec = $order_info['disc_user'];
        } else {
            $spec = get_discipline_name($order_info['disc_id']);
        }
        $txt = "Заказ закреплен";
        if (\Components\Entity\EmailNotificationType::isPersistable(\Components\Entity\EmailNotification::TO_AUTHOR_ON_ASSIGN)) {
            $body = "На вас назначен заказ №" . $order_id . ' ' . ucfirst($spec) . "<br>" . "<b>Обязательно подтвердите закрепление за Вами данного заказа</b>, достаточно в ответном письме написать \"OK\"";
            $message_id = mls_Send("u" . $author_id, "u" . $_SESSION["user"]["data"]["id"], "На вас назначен заказ №" . $order_id . ' ' . ucfirst($spec), $body, 1, 0);
            Author::enqueue_message_to_email($message_id, array($author_id), \Components\Entity\EmailNotification::TO_AUTHOR_ON_ASSIGN);
            $txt = "Заказ закреплен, уведомление отправлено";
        }
        $old_author_id = $Frm->GetNmValueI("old_author_id");
        if ($old_author_id != 0) {
            if (\Components\Entity\EmailNotificationType::isPersistable(\Components\Entity\EmailNotification::TO_AUTHOR_ON_UNASSIGN)) {
                $message_id = mls_Send("u" . $old_author_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_author_id), \Components\Entity\EmailNotification::TO_AUTHOR_ON_UNASSIGN);
            }
        }
        //    Author::sendEmail($order_id, array($author_id), 'Закрепление заказа №' . $order_id . ' ' . ucfirst($spec), 'Заказ №' . $order_id . ' ' . ucfirst($spec) . ' закреплен за вами');
        $Frm->_gui->OK($txt);
        redirect('index.php?section=ord&subsection=2&order=' . $order_id . '&p=3');
    }
}
示例#8
0
<?php

use Components\Entity\Order;
use Components\Exceptions\Exception;
use Components\Classes\db;
use Components\Entity\OrderFile;
use Components\Entity\Message;
if (!is_client_logged() || $_SESSION["frame"]["client"]["blocked"]) {
    echo 'Доступ запрещен.';
} else {
    if (isset($_REQUEST["order"])) {
        try {
            $order = Order::find($_REQUEST["order"]);
        } catch (Exception $e) {
            redirect('/frame?type=cabinet');
        }
        if (isset($_POST['add_file'])) {
            if (is_uploaded_file($_FILES["zf_work_file"]["tmp_name"])) {
                // Формируем новое имя файла
                $path = TMPFILES_PATH . session_id();
                if (!file_exists($path)) {
                    @mkdir($path);
                }
                if (file_exists($path)) {
                    $new_name = $path . "/" . $_FILES["zf_work_file"]["name"];
                    if (file_exists($new_name)) {
                        unlink($new_name);
                    }
                    move_uploaded_file($_FILES["zf_work_file"]["tmp_name"], $new_name);
                }
            }