Exemple #1
0
 if ($remont_date_int < $dateP) {
     $_SESSION['proeb'][] = array($temp_data['inj'], $print_numm, $remont_date, only_dvj_parse($temp_data['dvj'], array(3, 32)));
     // Проблемные документы добавляем в черный лист;
     $systems->black_journal(basename($_SERVER['SCRIPT_NAME'], ".php"), $temp_data['numm']);
 }
 // Сколько заказов должен сделать инженер сегодня-завтра+5 дней.
 $date = $date_from;
 $date = strtotime($date);
 //echo strtotime(date("Y-m-d")).' | '.$remont_date_int."<br>";
 // Циклично добавляем данные в массивы;
 for ($i = 1; $i <= $days_between; $i++) {
     $date_temp = strtotime($date_from);
     $date = strtotime("+" . ($i - 1) . " day", $date_temp);
     //echo date('Y-m-d', $date).'<br>';
     if ($date == $remont_date_int) {
         $_SESSION['prognoz_' . $i][] = array($temp_data['inj'], $print_numm, $remont_date, only_dvj_parse($temp_data['dvj'], array(3, 32)));
     }
 }
 /*
 if ($date == $remont_date_int){
     $_SESSION['prognoz_1'][] = array($temp_data['inj'], $print_numm, $remont_date, only_dvj_parse($temp_data['dvj'], array(3, 32)));
 }
 
 $date = strtotime("+1 day", $date);
 if ($remont_date_int == $date){
     $_SESSION['prognoz_2'][] = array($temp_data['inj'], $print_numm, $remont_date, only_dvj_parse($temp_data['dvj'], array(3, 32)));
 }
 
 $date = strtotime("+1 day", $date);
 if ($remont_date_int == $date){
     $_SESSION['prognoz_3'][] = array($temp_data['inj'], $print_numm, $remont_date, only_dvj_parse($temp_data['dvj'], array(3, 32)));
function dealers_table($all_orders, $dealer)
{
    global $db, $db_rs, $elements, $systems;
    // Заголовок;
    $html = '<div style="display: inline-block; margin-right: 10px; vertical-align: top;">';
    $html .= '<p class="itog_title">' . $dealer . '</p>';
    // Готовим временные массивы;
    $time_1_status_3 = time() - 3600;
    $time_2_status_3 = time() - 7200;
    $time_1_array = array();
    $time_2_array = array();
    $time_3_array = array();
    $special_table = array();
    foreach ($all_orders as $all_orders_array) {
        $order_numm = $all_orders_array['numm'];
        $order_status = $all_orders_array['status'];
        $order_datetime = $all_orders_array['saved'];
        $order_summ = $all_orders_array['summa'];
        /*
         * Здесь у нас блок временной корректтировки заказов;
         * */
        switch ($order_status) {
            /*
             * Новая концепция сдвигов по ТЗ от Данила;
             * */
            case '8':
            case '41':
                $order_datetime = date('d.m.Y 10:00:00', strtotime("+1 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                break;
            case '9':
            case '26':
                $order_datetime = date('d.m.Y 11:00:00', strtotime("+1 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                break;
            case '52':
            case '55':
                $order_datetime = date('d.m.Y 14:00:00', strtotime("+1 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                break;
            case '25':
                $order_datetime = date('d.m.Y 10:00:00', strtotime("+5 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                break;
            case '46':
                $order_datetime = date('d.m.Y 10:00:00', strtotime("+10 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                break;
            case '53':
                $order_datetime = date('d.m.Y 14:00:00', strtotime("+5 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                break;
            case '56':
                $order_datetime = date('d.m.Y 15:00:00', strtotime("+5 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                break;
            case '27':
                $order_datetime = date('d.m.Y 12:00:00', strtotime("+1 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Подсчет количества раз смены статуса;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                if ($status_count >= 3 && round_math($status_count, 3) == 1) {
                    // Меняем статус на более далекий;
                    $new_status = '28';
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
            case '28':
                $order_datetime = date('d.m.Y 12:00:00', strtotime("+10 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Подсчет количества раз смены статуса;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                if ($status_count >= 4 && round_math($status_count, 4) == 1) {
                    // Меняем статус на более далекий;
                    $new_status = '58';
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
            case '42':
                $order_datetime = date('d.m.Y 10:00:00', strtotime("+1 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Подсчет количества раз смены статуса;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                if ($status_count >= 3 && round_math($status_count, 3) == 1) {
                    // Меняем статус на более далекий;
                    $new_status = '43';
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
            case '43':
                $order_datetime = date('d.m.Y 10:00:00', strtotime("+10 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Подсчет количества раз смены статуса;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                if ($status_count >= 4 && round_math($status_count, 4) == 1) {
                    // Меняем статус на более далекий;
                    $new_status = '62';
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
            case '47':
                $order_datetime = date('d.m.Y 11:00:00', strtotime("+1 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Подсчет количества раз смены статуса;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                if ($status_count >= 3 && round_math($status_count, 3) == 1) {
                    // Меняем статус на более далекий;
                    $new_status = '48';
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
            case '48':
            case '49':
                $order_datetime = date('d.m.Y 14:00:00', strtotime("+10 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Подсчет количества раз смены статуса;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                if ($status_count >= 4 && round_math($status_count, 4) == 1) {
                    // Меняем статус на более далекий;
                    if ($order_status == '48') {
                        $new_status = '59';
                    }
                    if ($order_status == '49') {
                        $new_status = '61';
                    }
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
            case '54':
            case '57':
                $order_datetime = date('d.m.Y 15:00:00', strtotime("+10 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Подсчет количества раз смены статуса;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                if ($status_count >= 4 && round_math($status_count, 4) == 1) {
                    // Меняем статус на более далекий;
                    if ($order_status == '54') {
                        $new_status = '60';
                    }
                    if ($order_status == '57') {
                        $new_status = '62';
                    }
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
                /* Остатки старого сдвига по времени - либо не описанные статусы */
                /*
                 * Сдвиг отображения на 1 день;
                 * */
            /* Остатки старого сдвига по времени - либо не описанные статусы */
            /*
             * Сдвиг отображения на 1 день;
             * */
            case '45':
            case '50':
                $order_datetime = date('d.m.Y 12:00:00', strtotime("+1 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Костыльный алгоримт смещения статуса автоматически, если не мы имели статус 27.42.45 - 7 и более раз;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                if ($status_count >= 7 && round_math($status_count, 7) == 1) {
                    // Меняем статус на более далекий;
                    $new_status = '';
                    if ($order_status == '45') {
                        $new_status = '46';
                    }
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
                /*
                 * Сдвиг на 7 дней;
                 * */
            /*
             * Сдвиг на 7 дней;
             * */
            case '51':
                $order_datetime = date('d.m.Y 12:00:00', strtotime("+7 day", strtotime(date('d.m.Y', strtotime($order_datetime)))));
                // Костыльный алгоримт смещения статуса автоматически, если не мы имели статус 27.42.45 - 7 и более раз;
                $current_dvj = $all_orders_array['dvj'];
                $status_count = only_dvj_parse($current_dvj, array($order_status));
                // Если мы больше 4-х раз переносили на неделю, значит нам пора перемещать заказ в архив;
                // Проверяем, прошли ли у нас равные отрезки времени;
                if ($status_count >= 4 && round_math($status_count, 4) == 1) {
                    // Меняем статус на более далекий;
                    $new_status = 70;
                    // Надо проверить если заказ в 12-м статусе (внезапно) ему не нужно менять статус;
                    $sql = "SELECT `status` FROM `remont` WHERE `numm` = '" . $order_numm . "';";
                    $exist_status = $db->one($sql);
                    if ($exist_status != '12') {
                        // Получаем текст будущего статуса;
                        $sql = "SELECT `name` FROM `status` WHERE `id` = '" . $new_status . "';";
                        $status_name = $db_rs->one($sql);
                        dvj_write($order_numm, 'Автосмена статуса на *' . $status_name . '*' . $new_status . '.');
                        $sql = "UPDATE `remont` SET `status` = '" . $new_status . "' WHERE `numm` = '" . $order_numm . "';";
                        $db->query($sql);
                    }
                }
                break;
        }
        // Что будем добавлять в массивы;
        // Проверяем суммы;
        $numm_item = '<div style="display: inline-block;' . ($order_summ >= 5000 ? 'font-weight: bold;' : '') . '" class="numm_info">' . $order_numm . '</div>';
        // Так как у нас есть отдельная таблица, мы в отдельный массив будем собирать данные;
        switch ($order_status) {
            // Эти статусы отправляются в отдельную таблицу для аналитики пиздеца;
            case '13':
            case '50':
            case '51':
            case '14':
            case '15':
            case '20':
            case '24':
            case '17':
                $special_table[] = $order_numm;
                break;
            default:
                /*
                 * Обработка временных разделений на 3 блока приоритета;
                 * */
                if (strtotime($order_datetime) >= $time_1_status_3) {
                    if (strtotime($order_datetime) <= strtotime(date('d.m.Y H:i:s'))) {
                        $time_1_array[] = $numm_item;
                        //'('.$order_status.') - '. $order_datetime;
                    }
                }
                if (strtotime($order_datetime) >= $time_2_status_3 && strtotime($order_datetime) <= $time_1_status_3) {
                    if (strtotime($order_datetime) <= strtotime(date('d.m.Y H:i:s'))) {
                        $time_2_array[] = $numm_item;
                        // '(' . $order_status . ') - ' . $order_datetime;
                    }
                }
                if (strtotime($order_datetime) <= $time_2_status_3) {
                    if (strtotime($order_datetime) <= strtotime(date('d.m.Y H:i:s'))) {
                        $time_3_array[] = $numm_item;
                        // '(' . $order_status . ') - ' . $order_datetime;
                        // Проблемные документы добавляем в черный лист;
                        $systems->black_journal(basename($_SERVER['SCRIPT_NAME'], ".php"), $order_numm);
                    }
                }
                break;
        }
    }
    /*
     * Собрав данные, выводим их исходя из роли пользователя;
     * */
    $html .= call_center_table($time_1_array, $time_2_array, $time_3_array);
    /*
     * Так же некоторым пользователям надо выводить дополнительную таблицу;
     * */
    if ($_SESSION['department_id'] == 2 || $_SESSION['department_id'] == 12 || $_SESSION['user_login'] == 'N') {
        $html .= '<br><br>';
        $html .= $elements->small_title('Таблица проблемных заказов (' . count($special_table) . ')');
        $html .= call_option_table($special_table);
    }
    $html .= '</div>';
    return $html;
}