Exemplo n.º 1
0
     $kassa_id = $rko_data['kassa_id'];
     $author_user = $_SESSION['user_login'] . '_' . $kassa_id;
     $user_office = 'office1';
     $sql = "SELECT `last_operator_id` FROM `kassa` WHERE `id` = '" . $kassa_id . "';";
     $operator_id = $db_rs->one($sql);
 } else {
     if ($_SESSION['user_login'] == 'admin') {
         $kassa_id = $rko_data['kassa_id'];
         if ($kassa_id == '') {
             $kassa_data = get_kassa_data($_SESSION['user_id']);
             $kassa_id = $kassa_data['kassa_id'];
             $operator_id = $kassa_data['operator_id'];
         }
     }
     // Поулчаем ID кассы и оператора;
     $kassa_data = get_kassa_data($_SESSION['user_id']);
     $kassa_id = $kassa_data['kassa_id'];
     $operator_id = $kassa_data['operator_id'];
 }
 $sql = "INSERT INTO `kassa` (`type_m`, `summ`, `doc`, `login`, `primech`, `date_time_p`, `uni_s`, `office`, `wom`, `clientp`)\n            VALUES ('1', -" . $rko_sum . ", '" . ($rko_kontr_code != '' ? $rko_kontr_code : '0') . "', '" . $author_user . "', '" . $rko_reason . "', '" . $date . "', '" . $date_hueit . "', '" . $user_office . "', '" . $rko_pay_type . "', '" . ($clientp != '' ? $clientp : '0') . "');";
 write_log($sql, 'apply_rko');
 //$double = $db->check('kassa', array('type_m', 'summ', 'doc', 'login', 'primech', 'date_time_p', 'uni_s', 'office', 'wom', 'clientp'), array('1', -$rko_sum, ($rko_kontr_code != '' ? $rko_kontr_code : '0'), $author_user, $rko_reason, $date, $date_hueit, $user_office, $rko_pay_type, ($clientp != '' ? $clientp : '0')));
 //if($double == true){
 $db->query($sql);
 //}
 $print_num = mysqli_insert_id($db->link_id);
 /* Опять же, если у нас бухгалтер, ты мо сразу добавляем транщзакцию в нужную кассу */
 //if($_SESSION['appointment_id'] == 18){
 // Зная кассу, давайте посмотрим какой ID у текущего оператора;
 // Определяем doc_type_id;
 switch ($template_id) {
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
 public function black_journal($parent_name, $doc_number, $enter_date = '')
 {
     global $db_rs;
     // Так же, не стоит забывать что документы должны попадать в журнал только в определенное время суток;
     if (date('H') >= 9 && date('H') <= 21) {
         write_log('in_bj', 'black_list');
         // Получаем ID родителя;
         $parent_id = $this->get_parent_id($parent_name);
         // Так же, в первой редакции нашего класса, запись документ в черный список не будет дублироваться;
         $sql = "SELECT `id` FROM `black_journal` WHERE `parent_id` = '" . $parent_id . "' AND `doc_number` = '" . $doc_number . "' AND date(`black_date`) = '" . date('Y-m-d') . "';";
         write_log(date('Y-m-d H:i:s'), 'black_journal_check_exist');
         $exist_doc = $db_rs->one($sql);
         // Если за сегодня такой документ еще не оказывался в черном списке, то нам надо его добавить в список;
         if ($exist_doc == '') {
             // Для инженеров;
             if ($parent_id == 4) {
                 $inj_user_id = $this->get_inj_user_id_in_numm($doc_number);
                 if ($inj_user_id != '') {
                     $sql = "INSERT INTO `black_journal` (`parent_id`, `doc_number`, `black_date`, `black_user_id`) VALUES('" . $parent_id . "', '" . $doc_number . "', NOW(), '" . $inj_user_id . "');";
                     write_log($sql, 'black_list');
                     $db_rs->query($sql);
                 }
             }
             // Для кол центра;
             if ($parent_id == 5) {
                 $sql = "INSERT INTO `black_journal` (`parent_id`, `doc_number`, `black_date`) VALUES('" . $parent_id . "', '" . $doc_number . "', NOW());";
                 write_log($sql, 'black_list');
                 $db_rs->query($sql);
             }
         }
         // Для ОТК;
         if ($parent_id == 6) {
             // Не добавляем запись если она от руководителей или айти, что бы не записать левый офис;
             if ($_SESSION['department_id'] != 2) {
                 $kassa_data = get_kassa_data($_SESSION['user_id']);
                 $sql = "SELECT `operator_user_id` FROM `kassa_operators` WHERE `id` = '" . $kassa_data['operator_id'] . "';";
                 write_log($sql, 'black_list');
                 $otk_user_id = $db_rs->one($sql);
                 // Проверяем есть ли у нас уже записаь от этого пользователя;
                 $sql = "SELECT `id` FROM `black_journal` WHERE `parent_id` = '" . $parent_id . "' AND `black_user_id` = '" . $otk_user_id . "' AND `doc_number` = '" . $doc_number . "' AND date(`black_date`) = '" . date('Y-m-d') . "';";
                 write_log($sql, 'black_list');
                 $exist_id = $db_rs->one($sql);
                 if ($exist_id == '' && $otk_user_id != '') {
                     $sql = "INSERT INTO `black_journal` (`parent_id`, `doc_number`, `black_date`, `black_user_id`, `black_office`, `enter_date`) VALUES('" . $parent_id . "', '" . $doc_number . "', NOW(), '" . $otk_user_id . "', '" . $_SESSION['office'] . "', '" . date('Y-m-d H:i:s', strtotime($enter_date)) . "');";
                     write_log($sql, 'black_list');
                     $db_rs->query($sql);
                 }
             }
         }
     } else {
         write_log('not_in_bj', 'black_list');
     }
     return 'OK';
 }