function get_conv_report_table_html($table_data) { $html = '<table>'; $html .= '<tr>'; $html .= '<td class="row_top">Номер заказа</td>'; $html .= '<td class="row_top inf_row">ТМП</td>'; $html .= '<td class="row_top inf_row">Ответственный инженер</td>'; $html .= '<td class="row_top inf_row">Неисправность</td>'; $html .= '<td class="row_top inf_row">Дата приема</td>'; $html .= '<td class="row_top inf_row">Статус</td>'; $html .= '<td class="row_top inf_row">Дата и время установки статуса</td>'; $html .= '</tr>'; // Обрабоатываем данные; foreach ($table_data as $key => $data_item) { // Стиль строки; if ($key % 2 != 0) { $class = 'row_1'; } else { $class = 'row_2'; } if (isset($data_item['marker'])) { switch ($data_item['marker']) { case 'MARK': $print = 'color: black;font-weight: bold;'; break; case 'ALERT': $print = 'color: red;font-weight: bold;'; break; } } else { $print = ''; } $html .= '<tr>'; $html .= '<td class="' . $class . ' numm_info" style="' . $print . '" align="center">' . $data_item['numm'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . $data_item['tu'] . ' / ' . $data_item['model'] . ' / ' . $data_item['torg'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_user_full_name(0, $data_item['inj']) . '.</td>'; $html .= '<td class="' . $class . ' inf_row" align="left" width="200px">' . $data_item['a1'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_local_date_time($data_item['date1'], 1) . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="left">' . get_status_name($data_item['status']) . '</td>'; // Для того что бы определить время установки статуса, нам надо перебрать весь dvj этого заказа; $dvj_array = explode("\r\n", $data_item['dvj']); foreach ($dvj_array as $dvj_item) { // Проверяем, содежит ли эта строка данные; if (find_text(get_status_name($data_item['status']), $dvj_item)) { // Если мы нашли такой текст, выводим эту строку для начала; $dvj_temp = explode('|', $dvj_item); } } $html .= '<td class="' . $class . ' inf_row" align="center">' . get_local_date_time($dvj_temp[0], 1) . '</td>'; $html .= '</tr>'; } $html .= '</table>'; return $html; }
function list_talent_comments($talent_id) { $list = ""; $comment_sql = "SELECT\n\t\t*\n\t\tFROM\n\t\ttams_talent_comments\n\t\tWHERE talent_id = {$talent_id}\n\t\tORDER BY talent_comment_id DESC"; $talent_comments = DB::query($comment_sql); if ($talent_comments) { foreach ($talent_comments as $comment) { $list .= '<span class="username" >'; $list .= get_user_full_name($comment['created_by']) . $comment['comment'] . " </span><br/>"; } } return $list; }
<hr /> <span class="style12">1. При наличии деталей ремонт осуществляется в срок до 14 дней, при отсутствии деталей, срок ремонта предварительно согласовывается. <br /> 2. Сервисный центр не несет ответственности за возможную потерю данных и настроек в результате диагностики, замены комплектующих и ремонта оборудования. <br /> 3. Заказчик принимает на себя риск возможной полной или частичной утраты работоспособности аппарата, в процессе ремонта из-за проявления скрытых дефектов и последствий тепловой обработки, а так же его дальнейшую не ремонтопригодность. Сервисный центр устраняет только заявленные клиентом неиправности. <br /> 4. Сервисный центр оставляет за собой право отказа в гарантийном ремонте в случаях: утери гарантийного талона, наличия механических повреждений, нарушения сохранности пломб, повреждениях, связанных с перепадами в электросети и наличия следов проникновения влаги. <br /> 5. Гарантийный ремонт осуществляется в течение 14 рабочих дней.<br /> 6. Оборудование, с согласия клиента принято без разборки и проверки внутренних неисправностей и повреждений. Клиент согласен, что все обнаруженные в процессе технического обслуживания (ремонта) неисправности возникли до сдачи оборудования в ремонт в Сервисный центр. <br /> 7. В случае отказа заказчика в одностороннем порядке от не гарантийного ремонта, после согласования стоимости и началом выполнения работ, заказчиком возмещаются все расходы, понесённые Сервисным центром в целях надлежащего выполнения услуги (ст.32 и 33 Закона РФ ОЗПП) <br /> <b>8. Заказчик обязуется забрать и оплатить отремонтированную аппаратуру в течении 14 дней с момента оповещения о готовности. По истечению 2-х месяцев от указанного срока аппаратура может быть реализована в счёт возмещения убытков Сервисного центра (согласно Правилам бытового обслуживания населения РФ)</b></span> <hr /> --> <table width="1000" border="0" cellspacing="0" cellpadding="0"> <tr> <td><span class="style13">Принял в ремонт: _________________________ // ' . get_user_full_name($_SESSION['user_id']) . '</span></td> <td><div align="right" class="style13"> <p>Сдал в ремонт:_________________________ // ' . $numm_data['fam_z'] . ' ' . $numm_data['name_z'] . '</p> <p align="left">Техника мною получена в надлежащем состоянии, работоспособности и комплектации, претензий не имею ___________ __/__/_____г.</p> </div></td> </tr> <tr> <td width="47%"> </td> <td width="50%"><div align="right" class="style13"> <br> <div align="center"> <table width="498" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="37"> <div align="center" style="">ДА</div>
<p> <div class="box-comments"> <?php if ($client_comments) { foreach ($client_comments as $comment) { ?> <div class="box-comment"> <img class="img-circle img-sm" alt="User Image" src="<?php echo get_user_avatar_url($comment['created_by'], '50'); ?> " /> <div class="comment-text"> <span class="username"> <?php echo get_user_full_name($comment['created_by']); ?> <span class="text-muted pull-right"> <?php echo getDateTime($comment['created_on'], "dtShort"); ?> </span> </span> <?php echo $comment['comment']; ?> </div> </div> <?php } } else {
function show_pko_card($pko_array) { global $db_rs; write_log('Запуск функции вывода списка ПКО', 'pko'); $html = ''; if (count($pko_array) == 0) { $html .= '<div class="page_caption">Список ПКО пуст</div><br><br>'; } foreach ($pko_array as $pko) { // Определение роидтельского дкоумента - если таковой есть; $parent_doc = ''; $doc_parent_temp = explode('=', $pko['selected_numm']); if ($doc_parent_temp[0] == 'parent_doc') { $parent_doc = $doc_parent_temp[1]; } // Цвет блока зависит от состояние документа ПКО; $style = ''; write_log('1', 'pko'); // Новый документ; if ($pko['status'] == '1') { $style = 1; } // Согласованный документ; if ($pko['status'] == '2') { $style = 4; } // Несогласованный документ; if ($pko['status'] == '3') { $style = 2; } // Проведенный документ; if ($pko['status'] == '4') { $style = 3; } write_log('2', 'pko'); $html .= '<div id="pko_' . $pko['id'] . '" class="notification_type_' . $style . ' desk_item" style="min-height: 478px;font-size: 0.85em; padding: 10px 10px 10px 10px; vertical-align:top;">'; $html .= '<table style="border: none;" cellspacing="0" cellpadding="0">'; $html .= '<tr>'; $html .= '<td>ID ПКО</td>'; $html .= '<td><b>' . $pko['id'] . '</b></td>'; $html .= '</tr>'; if ($parent_doc != '') { $html .= '<tr>'; $html .= '<td>Родительский документ РКО</td>'; $html .= '<td onclick="show_rko_window(' . $parent_doc . ', \'new\')" style="cursor: pointer;"><b>' . $parent_doc . '</b></td>'; $html .= '</tr>'; } $html .= '<tr>'; $html .= '<td>Тип оплаты</td>'; $pay_type = 'Наличные'; if ($pko['card_pay'] == '1') { $pay_type = 'Оплата картой'; } $html .= '<td><b>' . $pay_type . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Автор</td>'; $html .= '<td><b>' . get_user_full_name($pko['author_user_id']) . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Дата создания</td>'; $html .= '<td><b>' . date('d.m.Y H:i:s', strtotime($pko['create_date'])) . '</b></td>'; $html .= '</tr>'; if ($pko['accept_date'] != '') { $html .= '<tr>'; $html .= '<td>Согласовал</td>'; $html .= '<td><b>' . get_user_full_name($pko['accepter_user_id']) . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Дата согласования</td>'; $html .= '<td><b>' . date('d.m.Y H:i:s', strtotime($pko['accept_date'])) . '</b></td>'; $html .= '</tr>'; } /* $html .= '<tr>'; $html .= '<td>Исполненитель</td>'; // Если унас нет получателя и мы администрация - мы можем указать получателя; write_log('3', 'pko'); if ($_SESSION['department_id'] == 2 || $_SESSION['department_id'] == 12){ // Здесь мы будем строить выпдашку с пользователями; $sql = "SELECT `users_apps`.`id`, CONCAT(`user_full_name`, ' (', `departments`.`name`, ')') as `name` FROM `users_apps` LEFT JOIN `departments` ON `departments`.`id` = `users_apps`.`dep_id` WHERE `app_id` IN (1, 8) AND `dep_id` != 1 ORDER BY `departments`.`name`;"; write_log($sql, 'pko'); $users = $db_rs->all($sql); $receive_html = '<select id="pko_receiver" onchange="set_new_receiver('.$pko['id'].')" style="height: 39px; text-align: center; background-color: #ffffff; padding: 5px 5px 5px 5px; border-radius: 7px; opacity: 0.9; border: 1px solid #5f5f5f;">'; $receive_html .= '<option value="none" disabled selected>Выберите исполнителя ПКО</option>'; foreach($users as $user){ $receive_html .= '<option value="'.$user['id'].'" '.($pko['receive_user_id'] == $user['id'] ? 'selected': '').'>'.$user['name'].'</option>'; } $receive_html .= '</select>'; } else{ $receive_html = get_user_full_name($pko['receive_user_id']); } $html .= '<td><b>'.$receive_html.'</b></td>'; $html .= '</tr>'; */ /* Если пользоватлеь из блока администрации, то он может видеть кассу и может */ if ($_SESSION['department_id'] == 2) { $html .= '<tr>'; $html .= '<td>Касса документа</td>'; if ($_SESSION['appointment_id'] == 18 && $_SESSION['department_id'] == 2 && $pko['status'] != '4') { // Здесь мы будем строить выпдашку с кассами; $sql = "SELECT `id`, `name` FROM `kassa` WHERE `office` = 'buh' AND `status` = 2;"; write_log($sql, 'pko'); $kassa = $db_rs->all($sql); $kassa_html = '<select id="selected_kassa" onchange="set_new_pko_kassa(' . $pko['id'] . ')" style="height: 39px; text-align: center; background-color: #ffffff; padding: 5px 5px 5px 5px; border-radius: 7px; opacity: 0.9; border: 1px solid #5f5f5f;">'; $kassa_html .= '<option value="0" disabled selected>Выберите кассу для ПКО</option>'; foreach ($kassa as $kassa_item) { $kassa_html .= '<option value="' . $kassa_item['id'] . '" ' . ($pko['kassa_id'] == $kassa_item['id'] ? 'selected' : '') . '>' . $kassa_item['name'] . '</option>'; } $kassa_html .= '</select>'; } else { // Получаем имя кассы; $sql = "SELECT `name` FROM `kassa` WHERE `id` = '" . $pko['kassa_id'] . "';"; $kassa_name = $db_rs->one($sql); $kassa_html = $kassa_name; } $html .= '<td><b>' . $kassa_html . '</b></td>'; $html .= '</tr>'; } if ($pko['receive_date'] != '') { $html .= '<tr>'; $html .= '<td>Дата исполнения</td>'; $html .= '<td><b>' . date('d.m.Y H:i:s', strtotime($pko['receive_date'])) . '</b></td>'; $html .= '</tr>'; } $html .= '<tr>'; $html .= '<td>Дата последних изменений</td>'; $html .= '<td><b>' . date('d.m.Y H:i:s', strtotime($pko['date_last_update'])) . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Основание</td>'; $html .= '<td><b>' . $pko['reason'] . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Платильщик денежных средств</td>'; $receiver = $pko['selected_name']; $html .= '<td><b>' . ($receiver != '' ? '' . $receiver . '' : '') . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Сумма</td>'; $html .= '<td><b>' . number_format($pko['sum'], 2, '.', ' ') . ' руб.</b></td>'; $html .= '</tr>'; $html .= '</table>'; // Редактироват и Удалять можно только Новое и не согласованное ПКО; if ($pko['status'] == '2') { $html .= '<div class="menu_button" onclick="pko_delete(' . $pko['id'] . ')">Удалить</div>'; //$html .= '<div class="menu_button" onclick="create_new_pko('.$pko['id'].')">Редактировать</div>'; } // Кнопка согласования есть только у администрации; if (($_SESSION['department_id'] == 2 || $_SESSION['department_id'] == 12) && $pko['status'] != '4') { if ($pko['status'] == '2') { } if ($pko['status'] == '3' || $pko['status'] == '1') { $can_accept = false; // Теперь сверимся с таблице прав на согласование; $sql = "SELECT * FROM `pko_accepts` WHERE `user_id` = '" . $_SESSION['user_id'] . "' AND `pko_template_id` IS NULL AND `status` != '0';"; write_log($sql, 'pko'); if (count($db_rs->all($sql)) > 0) { $can_accept = true; } // Снова получим родителя тип основания ПКО; $sql = "SELECT `template_id` FROM `pko` WHERE `id` = '" . $pko['id'] . "';"; write_log($sql, 'pko'); $template_id = $db_rs->one($sql); // имещ родителя этого основания; try_again2: $sql = "SELECT `parent_id` FROM `pko_templates` WHERE `id` = '" . $template_id . "' AND `status` != '0';"; $temp_id = $db_rs->one($sql); if ($temp_id != '') { $template_id = $temp_id; goto try_again2; } // Проверяем, можно ли нам его согласовывать; $sql = "SELECT `id` FROM `pko_accepts` WHERE `user_id` = '" . $_SESSION['user_id'] . "' AND `status` !='0' AND `pko_template_id` = '" . $template_id . "';"; // echo $sql; $accept_id = $db_rs->one($sql); if ($accept_id != '') { $can_accept = true; } if ($can_accept == true) { $html .= '<div class="menu_button" onclick="pko_not_accept(' . $pko['id'] . ')">Отказать</div>'; $html .= '<div class="menu_button" onclick="pko_accept(' . $pko['id'] . ')">Согласовать</div>'; } } } // Провести ПКО можно ТОЛЬКО когда оно согласовано if ($pko['status'] == '2') { // Так же для появления кнопки для проведения документа, нужно знать что у ПКО ест ь исполнитель и провести может только исполнитель; if (($pko['receive_user_id'] != '' || $parent_doc != '') && ($parent_doc != '' || $pko['receive_user_id'] == $_SESSION['user_id'] || $_SESSION['user_login'] == 'root')) { // так же нам надо проверить если у пользователя который собирается провести документ - открытая касса; $operator_data = get_kassa_data($_SESSION['user_id']); if ($operator_data['kassa_id'] == 0 && $operator_data['operator_id'] == 0 && $_SESSION['user_login'] != 'admin') { $html .= '<div style="border: 1px solid black; padding: 2px; border-radius: 3px; font-weight: bold; margin: 3px; background-color: red;">Но вы не можете провести этот документ, так как не являетесь оператором кассы с открытым ОД!</div>'; } else { $html .= '<div class="menu_button apply_pko_button" pko_id="' . $pko['id'] . '">Провести документ ПКО</div>'; } } } // Печатать ПКО можно только у проведенного либо у согласованного документа; if ($pko['status'] == '4') { $html .= '<div class="menu_button" onclick="print_pko(' . $pko['id'] . ')">Печать ПКО</div>'; } write_log('Конец загрузки', 'pko'); $html .= '</div>'; } return $html; }
<li><a href="<?php echo site_url('cart/details'); ?> "> <span class="glyphicon glyphicon-shopping-cart"></span> Košarica (<span id="cart-items"><?php echo $this->cart->total_items(); ?> </span>)</a></li> <?php } ?> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> <?php echo get_user_full_name(); ?> <b class="caret"></b></a> <ul class="dropdown-menu"> <?php if (user_is_admin()) { ?> <li><a href="<?php echo site_url('admin/manage'); ?> "><i class="fa fa-users"></i> Upravljaj prodajalce</a></li> <li class="divider"></li> <?php } elseif (!user_is_admin() and !user_is_customer()) { ?>
$html .= '<tr>'; $html .= '<td class="row_top">Номер выдачи</td>'; $html .= '<td class="row_top inf_row">Курьер</td>'; $html .= '<td class="row_top inf_row">Номер заказа</td>'; $html .= '<td class="row_top inf_row">Дата формирования</td>'; $html .= '<td class="row_top inf_row">Операции</td>'; $html .= '</tr>'; foreach ($takes as $key => $later_take) { if ($key % 2 != 0) { $class = 'row_1'; } else { $class = 'row_2'; } $html .= '<tr>'; $html .= '<td class="' . $class . '" align="center">' . $later_take['id'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_user_full_name($later_take['user_id']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . $later_take['numm'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_local_date_time($later_take['take_date'], 1) . '</td>'; $operations = '<div class="end_later_take">'; //$operations .= $elements->input('Укажите номер(-а) чек(-ов)', $later_take['id'].'_later_take_check', '', '', '', '', 'width:6em;'); $operations .= '<div class="page_caption">Какой документ вы приняли от клиента?</div><br><br>'; $operations .= '<label id="sliderLabel"> <input type="checkbox" id="' . $later_take['id'] . '_client_receive_doc" checked/> <span id="slider"> <span id="sliderOn">Квитанция</span> <span id="sliderOff">Расписка</span> <span id="sliderBlock"></span> </span> </label>'; // Крыжик - что мы приняли денежные средства; $operations .= '<br><div class="page_caption" style="display: block;padding-left: 15px;text-indent: -15px;"><input type="checkbox" id="money_paid_cur" late_take_id="' . $later_take['id'] . '" value="card_pay" style="box-shadow: none;height: 23px;padding: 0;margin: -4px;vertical-align: bottom;position: relative;top: -1px;overflow: hidden; width: 2em;" ' . ($pay_type == '1' ? 'checked' : '') . '> Я полностью принял денежные средства</div>';
$sql = "UPDATE `users_apps` SET `dep_id` = '" . $_POST['value'] . "' WHERE `id` = '" . $_POST['user_id'] . "';"; $db_rs->query($sql); echo 'OK'; } // Устанавливаем новую должность; if (isset($_POST['set_new_appointment']) && $_POST['set_new_appointment'] != '') { $sql = "UPDATE `users_apps` SET `app_id` = '" . $_POST['value'] . "' WHERE `id` = '" . $_POST['user_id'] . "';"; $db_rs->query($sql); echo 'OK'; } // Увольнение сотруника; if (isset($_POST['clean_login']) && $_POST['clean_login'] != '') { $sql = "SELECT `type` FROM `users_apps` WHERE `id` = '" . $_POST['user_id'] . "';"; $user_type = $db_rs->one($sql); $user_login = get_user_login($_POST['user_id']); $user_full_name = get_user_full_name($_POST['user_id']); // Но в историю пользователя нам нужно записать это событие; $systems->set_user_history($_POST['user_id'], 'Увольнение ' . ($user_type == '1' ? 'сотрудника' : 'стажера') . ' - ' . $user_full_name); // Если это был аккаунт сотрудника - про делаем приставку OLD; if ($user_type == '1') { $sql = "UPDATE `users_apps` SET `dep_id` = 20, `telegram_auth` = NULL, `phone_number` = NULL, `telegram_auth_code` = NULL, `telegram_id` = NULL, `telegram_code` = NULL, `google_auth` = NULL, `auth_key` = NULL, `user_full_name` = CONCAT('OLD - ', ' ', `user_full_name`), `status` = 'free' WHERE `id` = '" . $_POST['user_id'] . "';"; $db_rs->query($sql); $sql = "UPDATE `users` SET `fam` = CONCAT('OLD - ', ' ', `fam`), `p_numtel` = '' WHERE `login` = '" . $user_login . "';"; $db->query($sql); } // Если это был аккаунт стажера - просто обнуляем все. if ($user_type == '2') { // Удаляем имя в обеих базах; $sql = "UPDATE `users_apps` SET `dep_id` = 20, `phone_number` = NULL, `telegram_auth` = NULL, `telegram_auth_code` = NULL, `telegram_id` = NULL, `telegram_code` = NULL, `google_auth` = NULL, `auth_key` = NULL, `user_full_name` = 'Свободный', `status` = 'free' WHERE `id` = '" . $_POST['user_id'] . "';"; $db_rs->query($sql); $sql = "UPDATE `users` SET `fam` = 'Свободный', `name` = 'Стажер', `g_name` = '' WHERE `login` = '" . $user_login . "';";
$sum_det = 0; $sum_wage = 0; if ($systems->page_rules(1) == true) { $data_report = $systems->get_inj_wage_all_array(date('Y-m-d', $date_from), date('Y-m-d-', $date_to)); } else { $data_report = $systems->get_inj_wage_all_array(date('Y-m-d', $date_from), date('Y-m-d-', $date_to), $_SESSION['user_login']); } // Для привелегированных; foreach ($data_report as $key => $data_item) { if ($key % 2 != 0) { $class = 'row_1'; } else { $class = 'row_2'; } $html .= '<tr>'; $html .= '<td class="' . $class . '" align="center">' . get_user_full_name('', $data_item['inj']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" onclick="show_info_window(' . $data_item['numm'] . ', \'new\')" style="cursor:pointer;" align="center">' . $data_item['numm'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . $data_item['tu'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . $data_item['model'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . ($data_item['sum_pay'] == '' ? 0 : $data_item['sum_pay']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . $data_item['sum_det'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . ($data_item['sum_wage'] == '' ? 0 : $data_item['sum_wage']) . '</td>'; $html .= '</tr>'; $count_sum++; $sum_pay += $data_item['sum_pay'] == '' ? 0 : $data_item['sum_pay']; $sum_det += $data_item['sum_det']; $sum_wage += $data_item['sum_wage'] == '' ? 0 : $data_item['sum_wage']; } // Итоговая строка с суммами; $html .= '<tr>'; $html .= '<td class="row_top"></td>';
} if ($package_data['status'] == '3' || $package_data['status'] == '7') { $style = 3; } if ($style == '') { $style = 1; } // Массив статусов; $status = array(0 => 'Удаленная заявка', 1 => 'Новая заявка', 2 => 'Заявка принята', 3 => 'Заявка выполнена', 4 => 'Отправление подготавливается', 5 => 'Отправление готово к отправке', 6 => 'Отправление передано курьеру', 7 => 'Отправление доставлено', 8 => 'Отправление возвращено', 9 => 'Курьер прибыл на точку', 10 => 'Курьер убыл из точки'); $html .= '<div id="package_' . $desk_id . '" class="notification_type_' . $style . ' desk_item" style="min-height: 478px;font-size: 0.85em; padding: 10px 10px 10px 10px; vertical-align:top;">'; $html .= '<table style="border: none;" cellspacing="0" cellpadding="0">'; $html .= '<tr>'; $html .= '<td>ID Доставки</td>'; $html .= '<td><b>' . $package_data['id'] . '</b></td>'; $html .= '<td>Автор</td>'; $html .= '<td><b>' . get_user_full_name($package_data['author_user_id']) . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Когда нужно доставить</td>'; $html .= '<td><b>' . date('d.m.Y H:i:s', strtotime($package_data['date_need_deliver'])) . '</b></td>'; $html .= '<td>Курьер</td>'; $courier_id = $package_data['courier_id']; $sql = "SELECT `couriers`.`id`, `couriers`.`name`, `couriers_type`.`name` AS `courier_type_name`, `couriers_type`.`id` as `courier_type_id`, `couriers_type`.`max_weight`\n FROM `couriers`, `couriers_type`\n WHERE `couriers`.`courier_type` = `couriers_type`.`id` AND `couriers`.`id` = '" . $courier_id . "' AND `status` != 0;"; $courier_data = $db_rs->row($sql); $html .= '<td><b>' . $courier_data['name'] . ' (' . $courier_data['courier_type_name'] . ')' . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Откуда</td>'; $html .= '<td><b>' . (get_office_name($package_data['from_point']) != '' ? get_office_name($package_data['from_point']) : $package_data['from_point']) . '</b></td>'; $html .= '<td>Что в посылке</td>'; // если у нас в посылке заказ, то надо остаивть на него ссылку;
public function create_numm($handling_id) { global $db_rs, $db; $sql = "SELECT * FROM `handlings` WHERE `id` = '" . $handling_id . "';"; write_log($sql, 'new_remont_numm', 1); $handling_data = $db_rs->row($sql); /* Формируем массив для добавления его в базу */ // Для начала нам надо получить код клиента, если клиент новый, то клиента надо создать; $sql = "SELECT `code` FROM `kontr` WHERE `fam` = '" . $handling_data['client_fam'] . "' AND `name` = '" . $handling_data['client_name'] . "' AND `g_name` = '" . $handling_data['client_otch'] . "';"; write_log($sql, 'new_remont_numm', 1); $exist_code = $db->one($sql); $sql = "SELECT `name` FROM `reklama` WHERE `id` = '" . $handling_data['client_know_from'] . "';"; $reklama_name = $db_rs->one($sql); // Так как полей в массиве очень слишком дохуя, мы будем добавлять только самые важэные поля; $new_data_array = array('tu' => trim($handling_data['client_tech_type']), 'torg' => trim($handling_data['client_tech_producer']), 'model' => trim($handling_data['client_tech_model']), 'ser_no' => trim($handling_data['client_tech_sn']), 'place_h' => date('Y.m.d', strtotime($handling_data['diagnostic_finish_date'])), 'fam_z' => trim($handling_data['client_fam']), 'name_z' => trim($handling_data['client_name']), 'otch_z' => trim($handling_data['client_otch']), 'tel1' => trim($handling_data['client_phone']), 'sex' => trim($handling_data['client_sex']), 'addr' => trim($handling_data['client_address']), 'mts_promo_code' => trim($handling_data['mts_promo_code']), 'ozn_summ' => trim($handling_data['sound_money']), 'date1' => date('Y-m-d H:i:s'), 'saved' => date('Y-m-d H:i:s'), 'saveds' => date('Y-m-d H:i:s'), 'pri' => trim($handling_data['why_me']), 'reklam' => trim($reklama_name), 'a1' => trim($handling_data['type_ob_rem_1']), 'a2' => trim($handling_data['type_ob_rem_2']), 'a3' => trim($handling_data['type_ob_rem_3']), 'a4' => trim($handling_data['type_ob_rem_4']), 'a5' => trim($handling_data['type_ob_rem_5']), 'a6' => trim($handling_data['type_ob_rem_6']), 'a7' => trim($handling_data['type_ob_rem_7']), 'p1' => '', 'p2' => '', 'p3' => '', 'p4' => '', 'p5' => '', 'p6' => '', 'p7' => '', 'kod' => 0, 'dvj' => 'Принято ' . $_SESSION['user_login'] . ' (' . get_user_full_name($_SESSION['user_id'], $_SESSION['user_login']) . ') в ремонт ' . date('d.m.Y H:i:s') . '/ Начала работ (' . $_SESSION['user_login'] . ')', 'who' => $_SESSION['user_login'], 'office' => $_SESSION['office'], 'uni_s' => $_SESSION['user_login'] . ' ' . date('d.m.Y H:i:s')); // Давайте обозначим названия p; // Получаем типы неисправностей; $sql = "SELECT `typ1`, `t1`, `typ2`, `t2`, `typ3`, `t3`, `typ4`, `t4`, `typ5`, `t5`, `typ6`, `t6`, `typ7`, `t7` FROM `type_ob_rem` WHERE `name` = '" . $handling_data['client_tech_type'] . "';"; write_log($sql, 'new_remont_numm', 1); $rem_data_type = $db->row($sql); // Так как нам надо вывести поля в зависимости от выбранного типа техники; // Проверяем наполненность данных и выводим их пользователю; for ($i = 1; $i <= 7; $i++) { if ($rem_data_type['typ' . $i] != '') { $new_data_array['p' . $i] = $rem_data_type['typ' . $i]; } } if ($exist_code == '') { // Слепим сокращеное ФИО; $fio = $new_data_array['fam_z'] . ' ' . substr($new_data_array['name_z'], 0, 2) . '. ' . substr($new_data_array['otch_z'], 0, 2); // Если у нас нет такого клиента - добавляем его; $byear = date('Y') - $handling_data['client_old']; $sql = "INSERT INTO `kontr` VALUES (NULL, 0, 0, '" . $fio . "', '" . $new_data_array['fam_z'] . "', '" . $new_data_array['name_z'] . "', '" . $new_data_array['otch_z'] . "', '" . ($new_data_array['sex'] == '1' ? '2' : '1') . "', '" . $new_data_array['tel1'] . "', '', '" . $byear . date('-m-d') . "', NULL, NULL, NULL, NULL, '" . $handling_data['client_address'] . "', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ')', NOW(), 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', NULL, NULL, NULL, NULL, 'Автоматическое создание клиента (физ.лицо) из новой формы приёма в ремонт. " . date('d.m.Y H:i:s') . "\r\n ФИО:" . $fio . "', '--', NULL, 0, '', NULL, NULL, NULL, NULL, 0, NULL, '', 0, 0, NULL, NULL);"; write_log($sql, 'new_remont_numm', 1); $db->query($sql); $exist_code = mysqli_insert_id($db->link_id); $code_prefix = strtoupper(substr(md5($exist_code), 0, 4)); // Сохраняем этот код у клиента; $sql = "UPDATE `kontr` SET `prefix_ap` = '" . $code_prefix . "' WHERE `code` = '" . $exist_code . "';"; $db->query($sql); } else { // Либо обновим данные клиента; // Дата рождения клиента; $byear = date('Y') - $handling_data['client_old']; $sql = "UPDATE `kontr` SET `phone_m` = '" . $new_data_array['tel1'] . "', `addr_now` = '" . $handling_data['client_address'] . "', `bday` = '" . $byear . date('-m-d') . "' WHERE `code` = '" . $exist_code . "';"; write_log($sql, 'new_remont_numm', 1); $db->query($sql); } /* Генерация кода для просмотра данных о заказе на сайте */ $sql = "SELECT `prefix_ap` FROM `kontr` WHERE `code` = '" . $exist_code . "';"; write_log($sql, 'new_remont_numm', 1); $code_prefix = $db->one($sql); // Если у клиента нет смс кода то надо нам его сгенерировать; if ($code_prefix == '') { // Генерируем код из 4-х символов, самое простое, взять первые 4 символа md5 кода клиента; $code_prefix = strtoupper(substr(md5($exist_code), 0, 4)); // Сохраняем этот код у клиента; $sql = "UPDATE `kontr` SET `prefix_ap` = '" . $code_prefix . "' WHERE `code` = '" . $exist_code . "';"; write_log($sql, 'new_remont_numm', 1); $db->query($sql); } // Записываем код клиента в массив с данными; $new_data_array['kod'] = $exist_code; write_log(print_r($new_data_array, true), 'new_remont_numm', 1); $sql = "SELECT `text` FROM `backin` WHERE `index_i` = '" . $new_data_array['reklam'] . "';"; $new_data_array['reklam'] = $db->one($sql); // Наполяем массив для записи в таблицу о ремонтах; $sql = "\n INSERT INTO `remont` (`status`,`tu`,`torg`,`model`,`ser_no`,`fam_z`,`name_z`,`otch_z`,`tel1`,`tel2`,`faks`,`email`,`addr`,`kod`,`kompl`,`ser_nums`,`kolvs`,`prims`,`reklam`,`pri`,`inj`,`date1`,`date2`,`date3`,`saved`,`saveds`,`diag`,`dso`,`ozn_summ`,`pred_summ`,`prichina`,`sogl_summ`,`gar_rem`,`fast_rem`,\n `printed`,`p1`,`p2`,`p3`,`p4`,`p5`,`p6`,`a1`,`a2`,`a3`,`a4`,`a5`,`a6`,`company`,`pic1`,`pic2`,`memo1`,`memo2`,`summ_det`,`arh`,`dvj`,`who`,`predy`,`uch`,`office`,`office2`,`uni_s`,`summa`,`s_list`,`block`,`dt_block`,`w_use`,`ok_rem`,`womr`,`place_h`,`msg`,`garant_ex`,`ignore_w`,`no_list_parts`,`on_credit`,`is_pay_diag`,`proc_works`,`fix_works`,`proc_parts`,`fix_parts`,`type_pays`,`gar_seller`,`numm_gt`,`share`,`prefix_ap`,`post_ob`,`date_sale`,`label_gar`,`check_unr`)\n VALUES (1, '" . $new_data_array['tu'] . "', '" . $new_data_array['torg'] . "', '" . $new_data_array['model'] . "', '" . $new_data_array['ser_no'] . "',\n '" . $new_data_array['fam_z'] . "', '" . $new_data_array['name_z'] . "', '" . $new_data_array['otch_z'] . "', '" . $new_data_array['tel1'] . "', '', '', '', '" . $new_data_array['addr'] . "', '" . $new_data_array['kod'] . "', '', '', '',\n '" . $new_data_array['prim'] . "', '" . $new_data_array['reklam'] . "', '" . $_SESSION['user_login'] . "', '', NOW(), NULL, NULL, NOW(), NOW(), NULL, 0, '" . $new_data_array['ozn_summ'] . "', 0, '', 0, 0, 0, 0,\n '" . $new_data_array['p1'] . "', '" . $new_data_array['p2'] . "', '" . $new_data_array['p3'] . "', '" . $new_data_array['p4'] . "', '" . $new_data_array['p5'] . "', '" . $new_data_array['p6'] . "',\n '" . $new_data_array['a1'] . "', '" . $new_data_array['a2'] . "', '" . $new_data_array['a3'] . "', '" . $new_data_array['a4'] . "', '" . $new_data_array['a5'] . "', '" . $new_data_array['a6'] . "', 1, 0xFFD8FFE000104A46494600010101004800480000FFFE00134372656174656420776974682047494D50FFDB0043000503040404030504040405050506070C08070707070F0B0B090C110F1212110F111113161C1713141A1511111821181A1D1D1F1F1F13172224221E241C1E1F1EFFDB0043010505050706070E08080E1E1411141E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1EFFC00011080002000203012200021101031101FFC4001500010100000000000000000000000000000008FFC40014100100000000000000000000000000000000FFC40014010100000000000000000000000000000000FFC40014110100000000000000000000000000000000FFDA000C03010002110311003F00B2C007FFD9, 0xFFD8FFE000104A46494600010101004800480000FFFE00134372656174656420776974682047494D50FFDB0043000503040404030504040405050506070C08070707070F0B0B090C110F1212110F111113161C1713141A1511111821181A1D1D1F1F1F13172224221E241C1E1F1EFFDB0043010505050706070E08080E1E1411141E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1EFFC00011080002000203012200021101031101FFC4001500010100000000000000000000000000000008FFC40014100100000000000000000000000000000000FFC40014010100000000000000000000000000000000FFC40014110100000000000000000000000000000000FFDA000C03010002110311003F00B2C007FFD9,\n '', '', NULL, 0, '" . $new_data_array['dvj'] . "', '" . $_SESSION['user_login'] . "', '" . $handling_data['warranty_numm'] . "', NULL, '" . $_SESSION['office'] . "', '" . $_SESSION['office'] . "', '" . $new_data_array['uni_s'] . "', 0, NULL, NULL, NULL, NULL, NULL, 0, '" . $new_data_array['place_h'] . "', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, '', NULL, '" . $code_prefix . "', 0, NULL, '" . $_SESSION['company'] . "', NULL);\n "; write_log($sql, 'new_remont_numm', '1'); $db->query($sql); // Номер нового заказа; $new_numm = mysqli_insert_id($db->link_id); // Закончим формирование запроса; $sql = "UPDATE `handlings` SET `date_finish` = NOW(), `numm` = '" . $new_numm . "' WHERE `id` = '" . $handling_id . "';"; write_log($sql, 'new_remont_numm', '1'); $db_rs->query($sql); /** * Если у нас был промо, надо нам его зафиксировать в базе; */ if ($new_data_array['mts_promo_code'] != '') { $sql = "INSERT INTO `used_promo_codes` (`code`, `action_type`, `numm`, `author_user_id`, `date_use`) VALUES('100230', 'in_tech', '" . $new_numm . "', '" . $_SESSION['user_id'] . "', '" . date('Y-m-d H:i:s') . "');"; write_log($sql, 'new_remont_numm', '1'); $db_rs->query($sql); } return $new_numm; }
if (in_array($work_user, get_desk_boss_id($desk_item_id))) { $systems->send_telegram($work_user, "⚠ Вас выбрали исполнителем для новой заявки №" . $desk_item_id . "\r\n" . "Автор: " . get_user_full_name($_SESSION['user_id']) . "\r\n" . "Текст: " . mb_strimwidth($_POST['desk_text'], 0, 300, '...')); send_notification($work_user, 'Вас выбрали исполнителем для новой заявки №' . $desk_item_id . '<br>Нажмите для перехода в список заявок.', 'service_desk', '', '4', $desk_item_id); } } else { write_log('У нас нет исполнителя заявки', 'create_new_desk'); } // И в любом случае нам надо уведомить руководитель этого отдела; write_log('Получаем руководтиеля отдела', 'create_new_desk'); $dep_boss_array = get_department_boss($_POST['dep_id']); write_log(print_r($dep_boss_array, true), 'create_new_desk'); foreach ($dep_boss_array as $boss_item) { write_log('Уведомляем боссов', 'create_new_desk'); // так же, если у заявки нет исполнителя, то там надо уведомить об руководителя; send_notification($boss_item, 'В вашем отделе появилась новая заявка №' . $desk_item_id . '<br>Нажмите для перехода в список заявок.', 'service_desk', '', '3', $desk_item_id); $systems->send_telegram($boss_item, "⚠ В вашем отделе появилась новая заявка №" . $desk_item_id . "\r\n" . "Автор: " . get_user_full_name($_SESSION['user_id']) . "\r\n" . "Текст: " . mb_strimwidth($_POST['desk_text'], 0, 300, '...')); if ($work_user == '') { send_notification($boss_item, 'У новой заявки №' . $desk_item_id . ' нет исполнителя!<br>Нажмите для перехода в список заявок.', 'service_desk', '', '2', $desk_item_id); $systems->send_telegram($boss_item, "❗ У новой заявки №" . $desk_item_id . " нет исполнителя!"); } } echo 'OK'; } // Получить список доступных для отдела типа заявок; if (isset($_POST['get_desk_types']) && $_POST['get_desk_types'] != '') { // Поулчаем доступные типы заявок; $sql = "SELECT `id`, `desk_type_id`, `name` FROM `service_desk_departments_types` WHERE `department_id` = '" . $_POST['get_desk_types'] . "';"; $desk_types = $db_rs->all($sql); $desk_types_array = array(); $desk_types_array[] = array('caption' => 'Выберите тип заявки', 'value' => '-1', 'selected' => '1', 'disabled' => '1'); foreach ($desk_types as $desk_types_item) {
$sql = "SELECT `kompl` FROM `remont` WHERE `numm` = '" . $numm . "';"; $want_kompl = $db->one($sql); $sql = "UPDATE `remont` SET `inj` = '" . $want_kolvs . "', `kolvs` = '', `kompl` = '' WHERE `numm` = '" . $numm . "';"; $db->query($sql); dvj_write($numm, 'Главный инженер подтвердил смену инженера у заказа: ' . get_user_full_name('', $want_kompl) . '->' . get_user_full_name('', $want_kolvs)); echo 'OK'; } /* Когда главный инженер принудительно меняет инежнера */ if (isset($_POST['full_inj_change']) && $_POST['full_inj_change'] != '') { $numm = $_POST['full_inj_change']; $new_inj = $_POST['new_inj']; // Получаем логин инженера; $new_inj_login = get_user_login($new_inj); $new_inj_full_name = get_user_full_name($new_inj); $current_inj = $systems->get_inj_user_id_in_numm($numm); $current_inj_full_name = get_user_full_name($current_inj); $sql = "UPDATE `remont` SET `inj` = '" . $new_inj_login . "', `kolvs` = '', `kompl` = '' WHERE `numm` = '" . $numm . "';"; $db->query($sql); dvj_write($numm, 'Главный инженер сделал принудительную смену инженера. ' . $current_inj_full_name . ' -> ' . $new_inj_full_name); echo 'OK'; } /* Пагинация */ if (isset($_POST['get_pagination_data']) && $_POST['get_pagination_data'] != '') { // Маркер сессии; $marker = $_POST['marker']; // Полный запрос; $sql = $_SESSION['pagination_' . $marker]; // Номер страницы; $page_num = $_POST['page_num']; // Старнтовый документв пагинации; if ($page_num == 'Все') {
// Ориентируемся на последнюю скобку, так как именно она закрывает автора; $dvj_line_author_temp = $dvj_line_temp[count($dvj_line_temp) - 2]; // Далее нас интересует открывающая скобка, которая закрывает автора слева; $dvj_line_author_temp = explode('(', $dvj_line_author_temp); $dvj_line_author_temp = $dvj_line_author_temp[count($dvj_line_author_temp) - 1]; // Так как у нас может быть несколько авторов через запятую, то вы выпарсим всепх авторов $dvj_line_author_array = explode(',', $dvj_line_author_temp); $dvj_line_author = ''; if (count($dvj_line_author_array) >= 2) { // У нас несколько авторов; foreach ($dvj_line_author_array as $key => $author_line_temp) { $dvj_line_author .= get_user_full_name('', trim($author_line_temp)) . ($key != count($dvj_line_author_array) - 1 ? ', ' : ''); } } else { // Выводим нашего автора строки; $dvj_line_author = get_user_full_name('', trim($dvj_line_author_temp)); } } $dvj .= '<b>' . $dvj_date . '</b><br> - ' . $dvj_line . '<br> Автор: <b>' . $dvj_line_author . '</b><br>' . ($i != 0 ? '<br>' : ''); } $html .= '<div class="info_bordered_field" style="width: 338px; display: inline-block; font-size: 0.7em; overflow-y: auto; height: 220px;"><div class="field_title" style="font-size: 1em;">История заказа</div>' . $dvj . '</div>'; //$html .= '</td>'; //$html .= '</tr>'; //$html .= '</table>'; $html .= '</div>'; /* Логотип компании чей заказ */ if ($numm_data['label_gar'] == 'air') { $current_logo = 'air_logo'; } else { $current_logo = 'logo'; }
$html .= '<td class="row_top inf_row" style="width: 250px;">Операция</td>'; $html .= '</tr>'; // Формируем таблицу для вывода; foreach ($result_array as $key => $result_item) { if ($key % 2 != 0) { $class = 'row_1'; } else { $class = 'row_2'; } $html .= '<tr>'; $html .= '<td class="' . $class . '" style="text-align: center;">' . $result_item['id'] . '</td>'; $html .= '<td class="' . $class . ' inf_row works_defects_name_' . $result_item['id'] . '">' . $result_item['name'] . '</td>'; $html .= '<td class="' . $class . ' inf_row works_defects_price_' . $result_item['id'] . '" style="text-align: center;">' . $result_item['price'] . '</td>'; $html .= '<td class="' . $class . ' inf_row works_defects_time_' . $result_item['id'] . '" style="text-align: center;">' . $result_item['time'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" style="text-align: center;">' . get_user_full_name($result_item['author_user_id']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" style="text-align: center;">' . get_user_full_name($result_item['accepter_user_id']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" style="text-align: center;">' . get_local_date_time($result_item['date_create'], 1) . '</td>'; $html .= '<td class="' . $class . ' inf_row" style="text-align: center;">' . ($result_item['date_accept'] != '' ? get_local_date_time($result_item['date_accept'], 1) : '-') . '</td>'; $buttons = ''; $buttons .= $elements->button_icon('Одобрить', 'ok4', '', 'accept_list_item', 'display: ' . ($result_item['accepter_user_id'] == '' ? 'inline-block' : 'none') . '; margin: 3px;', '', 'show_type="' . $show_type . '" elements_id="' . $result_item['id'] . '"'); $buttons .= $elements->button_icon('Убрать', 'viewer', '', 'unaccept_list_item', 'display: ' . ($result_item['accepter_user_id'] != '' ? 'inline-block' : 'none') . '; margin: 3px;', '', 'show_type="' . $show_type . '" elements_id="' . $result_item['id'] . '"'); $buttons .= $elements->button_icon('Удалить', 'close', '', 'delete_list_item', 'display: inline-block; margin: 3px;', '', 'show_type="' . $show_type . '" elements_id="' . $result_item['id'] . '"'); $html .= '<td class="' . $class . ' inf_row" style="text-align: center;">' . $buttons . '</td>'; $html .= '</tr>'; // Позволяем редактивровать блоки с ценой и сроками; $html .= '<script> $(\'.works_defects_price_' . $result_item['id'] . '\').editable({ callback : function( data ) { if(data.content != false){ // Были изменения надо сохранить; save_works_defects_data(\'price\', ' . $result_item['id'] . ', \'' . $show_type . '\', data.content);
$html .= '<div class="table_head_middle_cell" style="width: 8em;">Инженер</div>'; $html .= '<div class="table_head_middle_cell" style="width: 5em;">Предв. срок рем.</div>'; $html .= '<div class="table_head_middle_cell" style="width: 9em;">Дата добавления</div>'; $html .= '<div class="table_head_right_cell" style="width: 9em;">Операции</div>'; $html .= '</div>'; // Тело таблицы; $html .= '<div class="div_table_body">'; // Смотрим какие уже дефекты у нас обнаружил инеженр; $sql = "SELECT `defects`.`defect`, `defects`.`price`, `defects`.`repair_time`, `diagnostics`.`author_user_id`, `diagnostics`.`date_create` FROM `diagnostics`, `defects` WHERE `diagnostics`.`defect_id` = `defects`.`id` AND `numm` = '" . $numm . "' AND `diagnostics`.`status` != 0;"; $diagnostics_list = $db_rs->all($sql); // Выводим страые запсианные ранее результаты диагностики; if (count($diagnostics_list) > 0) { foreach ($diagnostics_list as $key => $defect) { $defect_name = $defect['defect']; $defect_price = $defect['price']; $defect_inj = get_user_full_name($defect['author_user_id']); $defect_repair_time = $defect['repair_time']; $defect_date = get_local_date_time($defect['date_create'], 1); // Чет нечет; if ($key % 2 != 0) { $class = 'row_1'; } else { $class = 'row_2'; } $html .= '<div id="diag_id_' . $key . '" class="defect_list_line" marker="1">'; // Порядковый номер; $html .= '<div class="diag_number table_body_left_cell ' . $class . '" style="width: 2em;">' . ($key + 1) . '</div>'; $html .= '<div class="diag_name table_body_middle_cell ' . $class . '" style="width: 17em;">' . $defect_name . '</div>'; $html .= '<div class="diag_price table_body_middle_cell ' . $class . '" style="width: 5em;">' . $defect_price . '</div>'; $html .= '<div class="diag_inj table_body_middle_cell ' . $class . '" style="width: 8em;">' . $defect_inj . '</div>'; $html .= '<div class="diag_repair_time table_body_middle_cell ' . $class . '" style="width: 5em;">' . $defect_repair_time . '</div>';
function write_memo($numm, $memo_id, $text) { global $db; $comm_text = "\r" . date('d.m') . ' - ' . $text . '(' . get_user_full_name($_SESSION['user_id']) . ')'; $sql = "UPDATE `remont` SET `memo" . $memo_id . "` = CONCAT(`memo" . $memo_id . "` ,'" . $comm_text . "') WHERE `numm` = '" . $numm . "';"; write_log($sql, 'numm_memo_update_function'); $db->query($sql); return 'OK'; }
echo $html; } // Создаем новый документ для аппеляции; if (isset($_POST['new_justification']) && $_POST['new_justification'] != '') { $parent_id = $_POST['parent_id']; $doc_numm = $_POST['doc_numm']; $sql = "INSERT INTO `justifications` (`parent_id`, `doc_numm`, `author_id`, `date_create`, `date_last_update`, `status`) VALUES('" . $parent_id . "', '" . $doc_numm . "', '" . $_SESSION['user_id'] . "', NOW(), NOW(), '1');"; write_log($sql, 'justification'); $db_rs->query($sql); // После добавления документа, возращаем его в ответ; echo mysqli_insert_id($db_rs->link_id); } // Обновляем статус апелляции; if (isset($_POST['update_status']) && $_POST['update_status'] != '') { // Нам надо сообщить в чат о смене статуса; $author_id = get_user_full_name($_SESSION['user_id']); $just_id = $_POST['justification_id']; $new_status = $_POST['status']; $status = $new_status; if ($status == '1') { $status_text = 'Новое обращение'; } if ($status == '2') { $status_text = 'Апелляция утверждена'; } if ($status == '3') { $status_text = 'Апелляция не утверждена'; } if ($status == '0') { $status_text = 'Апеляция удалена'; }
} // Важно понимать, что у нас есть типы заявок, которые не треуют подтверждения руководителя отдела. Поэтому нам надо проверить все; $sql = "SELECT `desk_type_id` FROM `service_desk_departments_types` WHERE `id` = '" . $_POST['dep_type_id'] . "';"; write_log($sql, 'create_new_desk'); $type_id = $db_rs->one($sql); $sql = "INSERT INTO `service_desk` (`author_user_id`, `author_office`, `type_id`, `department_id`, `date_create`, `date_last_update`, `status`, `desk_text`, `todo_user_id`, `date_dead_line`, `attache`, `parent_id`)\n VALUES('" . $_SESSION['user_id'] . "', '" . $_SESSION['office'] . "', '" . $_POST['dep_type_id'] . "', '" . $_POST['dep_id'] . "', '" . date('Y-m-d H:i:00') . "', '" . date('Y-m-d H:i:00') . "', " . ($type_id == 2 ? '2' : '1') . ", '" . $_POST['desk_text'] . "', " . ($work_user == '' ? 'NULL' : $work_user) . ", '" . $_POST['dead_line_date'] . "', " . ($_POST['attache'] == '' ? 'NULL' : $_POST['attache']) . ", " . ($_POST['parent_id'] == '0' ? 'NULL' : $_POST['parent_id']) . ");"; write_log($sql, 'create_new_desk'); $double = $db_rs->check('service_desk', array('author_user_id', 'author_office', 'type_id', 'department_id', 'date_create', 'date_last_update', 'status', 'desk_text', 'todo_user_id', 'date_dead_line', 'attache', 'parent_id'), array($_SESSION['user_id'], $_SESSION['office'], $_POST['dep_type_id'], $_POST['dep_id'], date('Y-m-d H:i:00'), date('Y-m-d H:i:00'), $type_id == 2 ? '2' : '1', str_replace(',', '', $_POST['desk_text']), $work_user == '' ? 'NULL' : $work_user, $_POST['dead_line_date'], $_POST['attache'] == '' ? 'NULL' : $_POST['attache'], $_POST['parent_id'] == '0' ? 'NULL' : $_POST['parent_id'])); if ($double == true) { $db_rs->query($sql); } // Получаем номер д,авленной завяки; $desk_item_id = mysqli_insert_id($db_rs->link_id); // Если у нас создается вложенная заявка, то нам надо об этом написать в чате головной заявки; if ($_POST['parent_id'] != 0) { write_event_to_desk_chat($_POST['parent_id'], 'Пользователь: ' . get_user_full_name($_SESSION['user_id']) . ' создал вложенную заявку: ' . $desk_item_id); // Так же, при создании вложенной заявки. Все авторы выше стоящих заявок должны стать их наблюдателями; $sql = "SELECT `author_user_id` FROM `service_desk` WHERE `id` = '" . $_POST['parent_id'] . "';"; write_log($sql, 'create_new_desk'); $parent_author = $db_rs->one($sql); $parent_id = $_POST['parent_id']; // Будем добавлять авторов в наблюдатели; again: // Получаем автора выше стоящей заявки; $sql = "INSERT INTO `service_desk_viewers` (`service_desk_id`, `viewer_user_id`, `date_create`) VALUES('" . $desk_item_id . "', '" . $parent_author . "', NOW());"; write_log($sql, 'create_new_desk'); $db_rs->query($sql); // Отправляем уведомление новым наблюдателям; send_notification($parent_author, 'Вас сделали наблюдателем за заявкой №' . $desk_item_id . '<br>Нажмите для перехода в список заявок.', 'service_desk', '', '4', $desk_item_id); // После добавление автора как наблюдателя $sql = "SELECT `parent_id` FROM `service_desk` WHERE `id` = '" . $parent_id . "';";
$class = 'row_1'; } else { $class = 'row_2'; } $html .= '<div id="old_work_id_' . $key . '" class="work_list_line" marker="1" style="margin-bottom: 20px;">'; // Порядковый номер; $html .= '<div class="work_number table_body_left_cell ' . $class . '" style="width: 2em;">' . ($key + 1) . '</div>'; $html .= '<div class="work_name table_body_middle_cell ' . $class . '" style="width: 17em;">' . str_replace(array('[', ']'), '', $work) . '</div>'; $price = str_replace(array('[', ']'), '', $old_works_price_line[$key]); if ($price == '') { $price = 0; } else { $work_price += $price; } $html .= '<div class="work_price table_body_middle_cell ' . $class . '" style="width: 5em;">' . $price . '</div>'; $html .= '<div class="work_inj table_body_middle_cell ' . $class . '" style="width: 8em;">' . get_user_full_name('', str_replace(array('[', ']'), '', $old_works_inj_line[$key])) . '</div>'; $gar_w = str_replace(array('[', ']'), '', $old_works_gar_w[$key]); if ($gar_w == '') { $gar_w = 0; } $html .= '<div class="work_gar table_body_middle_cell ' . $class . '" style="width: 5em;">' . $gar_w . '</div>'; $html .= '<div class="work_date table_body_middle_cell ' . $class . '" style="width: 9em;">' . get_local_date_time($old_works_date_create, 1) . '</div>'; $html .= '<div class="work_oper table_body_right_cell ' . $class . '" style="width: 9em;"><img class="mark_for_delete" title="Пометить на удаление" style="cursor:pointer;" src="/templates/images/icons/close.png" width="24px"></div>'; // Список запчастей; $html .= '<div id="part_list_' . $key . '" part_list_id="' . $key . '" class="work_parts ' . $class . '" style="margin-top: -2px; width: 58.2em;border: 1px solid black;border-width: 0px 1px 1px 1px;min-height: 4em;">'; $html .= $elements->small_title('Список запчастей к данной работе'); $html .= '<div class="part_list">'; /* Грузим работы - Нового формата */ // Получим ID запчастей из резерва; $sql = "SELECT `id_tab` FROM `detals` WHERE `numm_rem` = '" . $numm . "';"; $parts_temp = $db->one($sql);
public function fast_sale_item($fast_sale_data) { global $db_rs, $db; // Была ли скидка по этой продаже?; // Если у нас была скидка при продаже, то должна быть возможность и печать документа РКО скидки; $sql = "SELECT `id` FROM `rko` WHERE `reason` like '%скидка%' and `reason` like '%" . $fast_sale_data['print_doc_num'] . "%'"; $discount = $db_rs->one($sql); $html = ''; $html .= '<div id="fast_sale_' . $fast_sale_data['fast_sale_id'] . '" class="notification_type_3 desk_item" style="vertical-align:top; display: inline-block; margin-left: 0.3em; font-size: 0.8em; border: 1px solid black;border-radius: 8px;margin-top: 0.3em;width: 36em;padding: 10px 10px 10px 10px; cursor: default">'; $html .= '<table style="border: none;" cellspacing="0" cellpadding="0">'; $html .= '<tr>'; $html .= '<td>ID Быстрой продажи</td>'; $html .= '<td><b>' . $fast_sale_data['fast_sale_id'] . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>ID ПКО быстрой продажи</td>'; $html .= '<td><b>' . $fast_sale_data['id'] . '</b></td>'; $html .= '</tr>'; if ($discount != '') { $html .= '<tr>'; $html .= '<td>ID РКО скидки</td>'; $html .= '<td><b>' . $discount . '</b></td>'; $html .= '</tr>'; } $html .= '<tr>'; $html .= '<td>Тип оплаты</td>'; $pay_type = 'Наличные'; if ($fast_sale_data['card_pay'] == '1') { $pay_type = 'Оплата картой'; } $html .= '<td><b>' . $pay_type . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Автор</td>'; $html .= '<td><b>' . get_user_full_name($fast_sale_data['author_user_id']) . '</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Дата создания</td>'; $html .= '<td><b>' . date('d.m.Y H:i:s', strtotime($fast_sale_data['create_date'])) . '</b></td>'; $html .= '</tr>'; /* if ($pko['accept_date'] != ''){ $html .= '<tr>'; $html .= '<td>Согласовал</td>'; $html .= '<td><b>'.get_user_full_name($pko['accepter_user_id']).'</b></td>'; $html .= '</tr>'; $html .= '<tr>'; $html .= '<td>Дата согласования</td>'; $html .= '<td><b>'.date('d.m.Y H:i:s', strtotime($pko['accept_date'])).'</b></td>'; $html .= '</tr>'; } */ /* $html .= '<tr>'; $html .= '<td>Исполненитель</td>'; // Если унас нет получателя и мы администрация - мы можем указать получателя; write_log('3', 'pko'); if ($_SESSION['department_id'] == 2){ // Здесь мы будем строить выпдашку с пользователями; $sql = "SELECT `users_apps`.`id`, CONCAT(`user_full_name`, ' (', `departments`.`name`, ')') as `name` FROM `users_apps` LEFT JOIN `departments` ON `departments`.`id` = `users_apps`.`dep_id` WHERE `app_id` IN (1, 8) AND `dep_id` != 1 ORDER BY `departments`.`name`;"; write_log($sql, 'pko'); $users = $db_rs->all($sql); $receive_html = '<select id="pko_receiver" onchange="set_new_receiver('.$pko['id'].')" style="height: 39px; text-align: center; background-color: #ffffff; padding: 5px 5px 5px 5px; border-radius: 7px; opacity: 0.9; border: 1px solid #5f5f5f;">'; $receive_html .= '<option value="none" disabled selected>Выберите исполнителя ПКО</option>'; foreach($users as $user){ $receive_html .= '<option value="'.$user['id'].'" '.($pko['receive_user_id'] == $user['id'] ? 'selected': '').'>'.$user['name'].'</option>'; } $receive_html .= '</select>'; } else{ $receive_html = get_user_full_name($pko['receive_user_id']); } $html .= '<td><b>'.$receive_html.'</b></td>'; $html .= '</tr>'; */ /* if ($pko['receive_date'] != ''){ $html .= '<tr>'; $html .= '<td>Дата исполнения</td>'; $html .= '<td><b>'.date('d.m.Y H:i:s', strtotime($pko['receive_date'])).'</b></td>'; $html .= '</tr>'; } */ /* $html .= '<tr>'; $html .= '<td>Дата последних изменений</td>'; $html .= '<td><b>'.date('d.m.Y H:i:s', strtotime($pko['date_last_update'])).'</b></td>'; $html .= '</tr>'; */ $html .= '<tr>'; $html .= '<td>Основание</td>'; $html .= '<td><b>' . $fast_sale_data['reason'] . '</b></td>'; $html .= '</tr>'; /* $html .= '<tr>'; $html .= '<td>Платильщик денежных средств</td>'; $receiver = $pko['selected_name']; $html .= '<td><b>'.($receiver != '' ? ''.$receiver.'' : '').'</b></td>'; $html .= '</tr>'; */ $html .= '<tr>'; $html .= '<td>Сумма</td>'; $html .= '<td><b>' . number_format($fast_sale_data['sum'], 2, '.', ' ') . ' руб.</b></td>'; $html .= '</tr>'; // КНопки печати всякой шлюпы; $html .= '</table>'; $html .= '<div class="menu_button" onclick="print_pko(' . $fast_sale_data['id'] . ')">Печать ПКО быстрой продажи</div>'; if ($discount != '') { $html .= '<div class="menu_button" onclick="PrintRKO(' . $discount . ')">Печать РКО скидки</div>'; } // КНопка для показывания содержимого продажи; $html .= '<div class="menu_button" id="show_sale_items" sale_id="' . $fast_sale_data['fast_sale_id'] . '">Что продали?</div>'; //$html .= $this->button('Что продали?', 'show_sale_items', '', '', 1); $html .= '<div id="sale_items_' . $fast_sale_data['fast_sale_id'] . '" hidden>'; // Здесь мы выводи продробност о быстрой продажи; $sql = "SELECT * FROM `fast_sales_items` WHERE `fast_sale_id` = '" . $fast_sale_data['fast_sale_id'] . "';"; $sale_items = $db_rs->all($sql); $items_headers = array('Артикул товара', 'ID товара', 'Наименование товара', 'Количество', 'Цена', 'Сумма'); $items_array = array(); foreach ($sale_items as $item) { $items_array[] = array($item['item_art'], $item['item_index_i'], $item['item_name'], $item['count'], $item['item_price2'], $item['count'] * $item['item_price2']); } $html .= '<br>'; $html .= $this->table($items_headers, $items_array); $html .= '</div>'; $html .= '</div>'; write_log($html, 'show_sales_list_html'); return $html; }
* Отдельная обработка отдельных фильтров с доработкой * * */ /* Статус */ if ($systems->find_text($fields, 'status') == true) { // Далем запрос имени этого статуса; $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $item[$fields] . "';"; $field_name = $db_rs->one($sql); } /* Даты */ if ($systems->find_text($fields, 'date') == true || $systems->find_text($fields, 'saved') == true || $systems->find_text($fields, 'saveds') == true) { $field_name = get_local_date_time($item[$fields]); } /* Инженер и кто принял */ if ($systems->find_text($fields, 'inj') == true || $systems->find_text($fields, 'pri') == true) { $field_name = get_user_full_name('', $item[$fields]); } /* Офисы */ if ($systems->find_text($fields, 'office') == true) { $field_name = $_SESSION['offices'][$item[$fields]]; } /* Боксы */ if ($systems->find_text($fields, 'place_h') == true) { $field_name = get_local_date_time($systems->convert_placeh_to_date($item[$fields])); } /* Результат ремонта */ if ($systems->find_text($fields, 'ok_rem') == true) { switch ($item[$fields]) { case '1': $field_name = 'С ремонтом'; break;
$html .= get_user_full_name($current_unj); } else { $html .= '-'; } // Проверяем есть ли тот кто хочет отказаться от заказа; $sql = "SELECT `kompl` FROM `remont` WHERE `numm` = '" . $numm . "';"; $want_kompl = $db->one($sql); if ($want_kompl != '') { $html .= $elements->caption('Инженер хочет оказаться от исполнения этого заказа!'); } // Проверяем есть ли тот кто хочет выполнять этот заказ; $sql = "SELECT `kolvs` FROM `remont` WHERE `numm` = '" . $numm . "';"; $want_kolvs = $db->one($sql); if ($want_kolvs != '') { $html .= $elements->caption('Данный инженер хочет начать исполнение этого заказа:'); $html .= get_user_full_name('', $want_kolvs); } // Если у нас есть тот кто хочет отказаться и тот кто хочет начать выполнение этого заказа - выводим кнопку для смены; if ($want_kolvs != '' && $want_kompl != '') { $html .= '<br>'; $html .= $elements->button_icon('Подвердить смену инженеров', 'ok', 'accept_inj_change'); } // Если главному инженеру надо тупо сменить инженера у заказа, в этос случае все пожелания об отказе или желании выолпнить - аннулируются; // Выводим ему списко инежнеров где он выберет нужного инженера; $sql = "SELECT `user_full_name` as `name`, `users_apps`.`id` as `id`, `appointments`.`name` as `app_name` FROM `users_apps`, `appointments` WHERE `users_apps`.`app_id` = `appointments`.`id` AND (`appointments`.`name` LIKE '%инженер%' OR `appointments`.`name` LIKE '%модульщик%') OR (`dep_id` = 8 AND `app_id` = 13) GROUP BY `users_apps`.`id`;"; $inj_array = $db_rs->all($sql); $inj_list = array(); $inj_list[] = array('caption' => 'Выберите нового инженера', 'value' => '-1', 'selected' => '1', 'disabled' => '1'); foreach ($inj_array as $inj_item) { $inj_list[] = array('caption' => $inj_item['name'] . ' (' . $inj_item['app_name'] . ')', 'value' => $inj_item['id'], 'selected' => '', 'disabled' => ''); }
public function input_message($chat_id, $from, $from_id, $message_text) { global $bot_info, $db, $db_rs, $systems, $rs; // Из за того что у нас группа, надо ловить сообщения именно боту; //$message_text = str_replace('@'.$bot_info['username'], '', $message_text); // Отлавливаем команд с префиксом; $temp_command = explode(' ', $message_text); $command = strtolower($temp_command[0]); // Проверяем отдел пользователя; $sender_department = get_user_department($systems->user_telegram($from_id, '')); // ОБщаяя обработка команд; switch ($command) { /* * Первое знакомство или запрос помощи; * */ case '/start': case '/help': // Проверяем, знаем ли мы этого пользователя; if ($systems->user_telegram($from_id) == false) { // Если мы не знаем такого пользователя. Гооворим ему как зарегистрироваться; $this->send_message($chat_id, "😥 Уважаемый " . $from . ". Вы пока не зарегистрированный пользователь.\nДля того что бы зарегистрироваться, вам нужно зайти в раздел Telegram в Системе Remontoff.\nИ следовать указанным там инструкциям. Удачи вам!"); } else { // Имя пользователя; $user_full_name = get_user_full_name($systems->user_telegram($from_id)); // Формируем доступные команды; if ($sender_department == '2' || $sender_department == '12') { $command_list = "Вы руководитель и вам доступные следующие команды:\r\n/code - Прислать код для авторизации в системе.\r\n/money - Прислать текущее наличие ДС в кассах.\r\n/plan - Прислать результат выполнения плана на месяц."; } else { $command_list = "Вы обычный пользователь и вам доступные следующие команды:\r\n/code - Прислать код для авторизации в системе."; } // Если такой польователь уже есть; $this->send_message($chat_id, "🙋 Привет " . $user_full_name . "!\r\n 💁" . $command_list); } return true; break; /* * Регистрация; * */ /* * Регистрация; * */ case '/reg': // Если сообщение содержить команду на регистрацию; // Забираем из нее код; $code = $temp_command[1]; // Ищем этот код в базе; $user_id = $systems->get_telegram_reg($code); if ($user_id != false) { // Сохраняем новый telegram id в базе; $systems->save_telegram_id($user_id, $from_id); $this->send_message($chat_id, "🙌 Поздравляем! Вы успешно привязали свою учетную запись к Telegram. Теперь я буду присылать вам важные уведомления. Список доступных команд /help"); return true; } else { // Такой код не найден; $this->send_message($chat_id, "🙅 Введенный вами код для регистрации не найден. Повторите попытку ввода команды. Или попробуйте сгенерировать новый код в разделе Telegram в Системе Remontoff."); return true; } break; /* * Запрос кода авторизации; * */ /* * Запрос кода авторизации; * */ case '/code': // Нам надо имя пользователя; $user_id = $systems->user_telegram($from_id); $sql = "SELECT `user_name` FROM `users_apps` WHERE `id` = '" . $user_id . "';"; $user_name = $db_rs->one($sql); $systems->auth_history($user_name, '', '', '', 'get_code'); $this->gen_user_auth_key($chat_id); return true; break; /* * Деньги с кассах; * */ /* * Деньги с кассах; * */ case '/money': if ($sender_department != '2' && $sender_department != '12') { $this->send_message($chat_id, "🙅 Данная команда для вас запрещена!"); return true; } $result_message = ''; $sql = "SELECT `code`, `name`FROM `office` WHERE `kassa_list` = '1';"; $office = $db->all($sql); $kassa_sum_full = 0; foreach ($office as $temp_array) { // Получаем данные об остатках в кассах; // Остаток на конец операционного дня; $sql = "SELECT `id` FROM `kassa` WHERE `office` = '" . $temp_array['code'] . "';"; $all_cash = $db_rs->all($sql); $kassa_cash_today = 0; foreach ($all_cash as $kassa) { $kassa_cash_today += calc_today_cash($kassa['id'], date('Y-m-d')); } $kassa_cash_yesterday = 0; foreach ($all_cash as $kassa) { $kassa_cash_yesterday += calc_yesterday_cash($kassa['id'], date('Y-m-d')); } $kassa_sum = $kassa_cash_today + $kassa_cash_yesterday; $kassa_sum_full += $kassa_sum; $result_message .= get_office_name($temp_array['code']) . ': ' . get_money_format($kassa_sum) . ' р.' . "\n"; } $result_message .= 'Итого: ' . get_money_format($kassa_sum_full) . 'р.'; $this->send_message($chat_id, $result_message); return true; break; /* * План и выполнение; * */ /* * План и выполнение; * */ case '/plan': if ($sender_department == '2' || $sender_department == '12') { $this->send_message($chat_id, "🕑 Мне необходимо немного времени для расчета плана..."); // Собиарем информаци о планах и факты выполнения; $this->send_message($chat_id, $this->get_money_plan_and_fact()); return true; } else { $this->send_message($chat_id, "🙅 Данная команда для вас запрещена!"); return true; } break; /* * неизвестная команда; * */ /* * неизвестная команда; * */ default: $this->send_message($chat_id, "⚠ Неизвестная комманда."); return true; break; } }
} if ($good_price > 1000) { $user_prize = 200; } if ($good_price <= 1000) { $user_prize = 100; } } else { $user_prize = 0; } } $html .= '<tr>'; $html .= '<td class="' . $class . '" align="center">' . $sales['id'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_local_date_time($sales['date']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_office_name($sales['office']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_user_full_name('', $sales['user_full_name']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . $good_name . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_money_format($sales['item_price3']) . 'р.</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . ($sales['stock'] == '1' ? 'Да' : 'Нет') . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . get_money_format($user_prize) . 'р.</td>'; $html .= '</tr>'; // Считаем суммы тоже; //$sums['sales_count'] += $sales['sales_count']; //$sums['sales_sum'] += $sales['sales_sum']; //$sums['sales_profit'] += $sales['sales_profit']; } /* $html .= '<tr>'; $html .= '<td class="row_top">ИТОГО</td>'; $html .= '<td class="row_top inf_row">'.$sums['sales_count'].'</td>'; $html .= '<td class="row_top inf_row">'.$sums['sales_sum'].'</td>';
$html .= '<td class="' . $class . ' inf_row" align="center">' . ($wage_array['sum_pay'] == '' ? 0 : $wage_array['sum_pay']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . ($wage_array['sum_det'] == '' ? 0 : $wage_array['sum_det']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" align="center">' . ($wage_array['sum_wage'] == '' ? 0 : $wage_array['sum_wage']) . '</td>'; $avr = $wage_array['count'] != 0 && $wage_array['count'] != '' ? $wage_array['sum_pay'] / $wage_array['pay_count'] : 0; $html .= '<td class="' . $class . ' inf_row" align="center">' . ROUND($avr, 0) . '</td>'; $html .= '</tr>'; // Саммируем для последней строки; $count_sum += $wage_array['count']; $sum_pay += $wage_array['sum_pay'] == '' ? 0 : $wage_array['sum_pay']; $sum_det += $wage_array['sum_det']; $sum_wage += $wage_array['sum_wage'] == '' ? 0 : $wage_array['sum_wage']; } } else { $wage_array = $systems->get_inj_wage_summary_array($_SESSION['user_login'], date('Y-m-d', $date_from), date('Y-m-d-', $date_to)); $html .= '<tr>'; $html .= '<td class="row_1" align="center">' . get_user_full_name($_SESSION['user_id']) . '</td>'; $html .= '<td class="row_1 inf_row" align="center">' . $wage_array['count'] . '</td>'; $html .= '<td class="row_1 inf_row" align="center">' . ($wage_array['sum_pay'] == '' ? 0 : $wage_array['sum_pay']) . '</td>'; $html .= '<td class="row_1 inf_row" align="center">' . ($wage_array['sum_det'] == '' ? 0 : $wage_array['sum_det']) . '</td>'; $html .= '<td class="row_1 inf_row" align="center">' . ($wage_array['sum_wage'] == '' ? 0 : $wage_array['sum_wage']) . '</td>'; $avr = $wage_array['count'] != 0 && $wage_array['count'] != '' ? $wage_array['sum_pay'] / $wage_array['pay_count'] : 0; $html .= '<td class="row_1 inf_row" align="center">' . ROUND($avr, 0) . '</td>'; $html .= '</tr>'; // Саммируем для последней строки; $count_sum += $wage_array['count']; $sum_pay += $wage_array['sum_pay'] == '' ? 0 : $wage_array['sum_pay']; $sum_det += $wage_array['sum_det']; $sum_wage += $wage_array['sum_wage'] == '' ? 0 : $wage_array['sum_wage']; } // Итоговая строка с суммами; $html .= '<tr>';
function show_office_extradition_sheet($take_page_data) { // Сначала нам надо проверить можем ли мы показывать пользователю этьот аппарата как выданный, так как у нас документ мог просто открыть ся и кзакрыть; // Даже без выдачи, Но у него типа есть такой комметарий в тексте; $black_list = array(); /* Старый формат выдачи по комментарию */ /* foreach($take_page_data as $item){ $check_change_date = only_dvj_parse($item['dvj'], array(12), 1); // Поулчаем все даты для сравнения; $saved_date = date('Y-m-d', strtotime($item['saved'])); $dvj_date = date('Y-m-d', strtotime($check_change_date['date'])); if ($saved_date != $dvj_date){ $black_list[$item['numm']] = 1; write_log('Чёрный список = '.$item['numm'].' : '.$saved_date.' => '.$dvj_date, 'date_diff'); } else{ write_log($item['numm'].' : '.$saved_date.' => '.$dvj_date, 'date_diff'); } } */ $html = '<div class="page_caption">%itog%</div>'; $html = str_replace('%itog%', 'Всего выдано: <b>' . count($take_page_data) . '</b>', $html); $html .= '<table id="take_items" style="border: 1px solid black" cellspacing="0" cellpadding="0">'; $html .= '<tr>'; $html .= '<td class="row_top" style="padding: 5px;"><b>№ Заказа</b></td>'; $html .= '<td class="row_top" style="padding: 5px;"><b>№ Документа оплаты выдачи</b></td>'; $html .= '<td class="row_top" style="padding: 5px;"><b>Кто выдал</b></td>'; $html .= '<td class="row_top" style="padding: 5px;"><b>Когда выдал</b></td>'; $html .= '<td class="row_top" style="padding: 5px;"><b>Квитанций</b></td>'; $html .= '<td class="row_top" style="padding: 5px;"><b>Доверенностей</b></td>'; $html .= '<td class="row_top" style="padding: 5px;"><b>Статус документов</b></td>'; $html .= '</tr>'; // Забираем данны еи формируем таблицы; foreach ($take_page_data as $key => $item) { if ($black_list[$item['numm']] == '') { /* новый формат выдачи по новой таблице - take_tech. Это более удобный и цивилизованнный способ позволяющий контролировать тип получаемых дкоументов; */ $kvit_doc_count = 2; $dov_doc_count = 0; $rb_kassa_code_id = '-'; // Если у нас есть доверенность - то меняем количество строк; if ($item['client_receive_doc'] == '0') { $kvit_doc_count = 1; $dov_doc_count = 1; } // Если у нас есть документ оплаты, записываем его; if ($item['rb_kassa_code_id'] != '0') { $rb_kassa_code_id = $item['rb_kassa_code_id']; } // Визуальный класс чет нечет; if ($key % 2 != 0) { $class = 'row_1'; } else { $class = 'row_2'; } $html .= '<tr>'; $html .= '<td class="' . $class . '" style="text-align: center;">' . $item['numm'] . '</td>'; $html .= '<td class="' . $class . ' inf_row" style="text-align: center;">' . $rb_kassa_code_id . '</td>'; $html .= '<td class="' . $class . ' inf_row" style="text-align: center;">' . get_user_full_name($item['user_id']) . '</td>'; $html .= '<td class="' . $class . ' inf_row" style="text-align: center;">' . get_local_date_time($item['date'], 1) . '</td>'; $html .= '<td class="kvit ' . $class . ' inf_row" parent_div="' . $item['numm'] . '" style="text-align: center;">' . $kvit_doc_count . '</td>'; $html .= '<td class="dover ' . $class . ' inf_row" parent_div="' . $item['numm'] . '" style="text-align: center;">' . $dov_doc_count . '</td>'; $html .= '<td class="status ' . $class . ' inf_row" id="' . $item['numm'] . '" style="text-align: center;"><img src="/templates/images/icons/ok.png" height="16"></td>'; $html .= '</tr>'; } } if (count($take_page_data) == 0) { $html .= '<tr>'; $html .= '<td>-</td>'; $html .= '<td>-</td>'; $html .= '<td>-</td>'; $html .= '<td>-</td>'; $html .= '<td>-</td>'; $html .= '<td>-</td>'; $html .= '<td>-</td>'; $html .= '</tr>'; } $html .= '</table>'; write_log($html, 'new_take_tech'); return $html; }
<td class="row_top inf_row">ФИО</td> <td class="row_top inf_row">Автор</td> <td class="row_top inf_row">Дата регситрации</td> <td class="row_top inf_row">Дата создания заказа</td> <td class="row_top inf_row">Номер заказа</td> <td class="row_top inf_row">Операции</td>'; $html .= '</tr>'; // Строим таблицу с обращниями; foreach ($current_handlings as $key => $handling) { if ($key % 2 != 0) { $class = 'row_1'; } else { $class = 'row_2'; } $html .= '<tr handling_id="' . $handling['id'] . '" numm="' . $handling['numm'] . '" class="' . $class . ' handling_in_list">'; $html .= '<td align="center">' . $handling['id'] . '</td><td>' . $handling['client_fam'] . ' ' . $handling['client_name'] . ' ' . $handling['client_otch'] . '</td><td>' . get_user_full_name($handling['author_user_id']) . '</td><td align="center">' . get_local_date_time($handling['date_start'], 1) . '</td><td align="center">' . ($handling['date_finish'] != '' ? get_local_date_time($handling['date_finish'], 1) : '-') . '</td> <td align="center">' . ($handling['numm'] != '' ? $handling['numm'] : '-') . '</td>'; // Если у нас нет номера заказа, то даем созможность удалить пользователю это обращение; // Проверяем есть ли у нас оптравление в которых в заказе есть это оращение; $sql = "SELECT `id` FROM `couriers_packages` WHERE `package_handling` = '" . $handling['id'] . "';"; $exist_package = $db_rs->one($sql); if ($handling['numm'] == '' && $exist_package == '') { $html .= '<td align="center" class="' . $class . '"><img class="delete_handling" handling_id="' . $handling['id'] . '" style="cursor:pointer;" src="/templates/images/icons/close.png" title="Удалить обращение" height="16px"></td>'; } else { $html .= '<td align="center">-</td>'; } $html .= '</tr>'; } $html .= '</table>'; echo $html; }