protected function check_type_the_document_and_payment_date() { /* !!!!!! для работы check_type_the_document_and_payment_date() 1. установить нулевые переменные в первых строка обхода спецификаций спецификации должны храниться в Object вида : $this->specificate 2. при переборе позиций установить $this->get_position_approval_bigest_date(); позиции должны храниться в Object вида : $this->position $this->approval_date = 0;// timestamp старшей даты утверждения макета $this->one_position_is_not_approval = 0; // флаг оповещает о неутвержденной позиции */ // классы HTML для подсветки ячеек таблиц и сигнализации о просроченных сроках по датам // $this->red_flag_date_limit = ' class_background_red limit'; // $this->red_flag_date_shipping_date = ' class_background_red shipping_date'; // $this->red_flag_date_date_approval = ' class_background_red date_approval'; // $this->red_flag_date_work_days = ' class_background_red work_days'; // $this->red_flag_date_payment = ' class_background_red payment_date'; // $this->red_flag_date_shipping_date_redactor_id = ' class_background_yellow redactor_id'; $this->red_flag_date_limit = ''; $this->red_flag_date_shipping_date = ''; $this->red_flag_date_date_approval = ''; $this->red_flag_date_work_days = ''; $this->red_flag_date_payment = ''; // если = 1, заказ оплачен в достаточном размере $this->specificate['enabled_start_work']; // дата оплаты $this->specificate['payment_date']; // $this->specificate['payment_date_timestamp']; // дата лимита по оплате $this->specificate['shipping_date_limit']; // $this->specificate['shipping_date_limit_timestamp']; $specificate_shipping_date_need_edit = 0; $this->work_days = ''; $this->specificate_shipping_date = ''; $this->specificate_shipping_date_timestamp = 0; // if($this->specificate['id'] == 112){ // echo $this->specificate_shipping_date_timestamp.'<br>'; // echo '$this->approval_date = '.$this->approval_date.'<br>'; // echo '$this->one_position_is_not_approval = '.$this->one_position_is_not_approval.'<br>'; // } switch ($this->specificate['date_type']) { case 'days': // ПО РАБОЧИМ ДНЯМ // если счёт оплачен в достаточном размере if ($this->specificate['enabled_start_work'] == 1) { if (!$this->one_position_is_not_approval) { // если все позиции с утверждённым макетом if ($this->approval_date > 0) { // проверяем наличие старшей даты утв. макета // высчитываем дату сдачи $this->specificate_shipping_date_timestamp = strtotime(goOnSomeWorkingDays(date('Y-m-d H:i:s', $this->approval_date), $this->specificate['work_days'] + 2, '+')); $this->specificate_shipping_date = date('d.m.Y', $this->specificate_shipping_date_timestamp); // перезаписываем дату сдачи в случае её не совпадения if (strtotime($this->specificate['shipping_date']) != $this->specificate_shipping_date_timestamp) { $this->db_edit_one_val(CAB_BILL_AND_SPEC_TBL, 'shipping_date', $this->specificate['id'], date('Y-m-d', $this->specificate_shipping_date_timestamp)); } } } } $this->work_days = $this->specificate['work_days']; break; default: // ПО ДАТЕ // 1. проверка на оплату // проверка при недостаточной оплате if ($this->specificate['enabled_start_work'] != 1) { // проверка на предупреждение // echo (strtotime($this->specificate['shipping_date_limit']).' - '.(time()+ 24*60*60)).' *** <br>'; if (strtotime($this->specificate['shipping_date_limit']) - (strtotime(date('d.m.Y', time())) + 24 * 60 * 60) <= 0) { $this->red_flag_date_limit = ' class_background_orange limit'; $this->red_flag_date_payment = ' class_background_orange payment_date'; $this->red_flag_date_shipping_date = ' class_background_orange shipping_date'; } else { if (strtotime($this->specificate['shipping_date_limit']) - strtotime(date('d.m.Y', time())) < 0) { echo $this->specificate['shipping_date_limit'] . ' --- ' . date('d.m.Y', time()); $this->red_flag_date_limit = ' class_background_red limit'; $this->red_flag_date_payment = ' class_background_red payment_date'; $this->red_flag_date_shipping_date = ' class_background_red shipping_date'; $specificate_shipping_date_need_edit = 1; } } } else { if ($this->specificate['enabled_start_work'] == 1) { // проверка при достаточной оплате // проверка на просрочку оплате // echo strtotime($this->specificate['payment_date']).' - '.strtotime($this->specificate['shipping_date_limit']).' = '.(strtotime($this->specificate['shipping_date_limit'])-strtotime($this->specificate['payment_date'])).'<br>'; if (strtotime($this->specificate['shipping_date_limit']) - strtotime($this->specificate['payment_date']) < 0) { $this->red_flag_date_limit = ' class_background_red limit'; $this->red_flag_date_payment = ' class_background_red payment_date'; $this->red_flag_date_shipping_date = ' class_background_red shipping_date'; $specificate_shipping_date_need_edit = 1; } } } // 2. проверка на дату утверждения макета // если како-либо макет не утверждён if ($this->approval_date == 0) { // на утверждение осталось менее суток if (strtotime($this->specificate['shipping_date_limit']) - time() + 24 * 60 * 60 < 24 * 60 * 60) { $this->red_flag_date_limit = ' class_background_orange limit'; $this->red_flag_date_date_approval = ' class_background_orange date_approval'; $this->red_flag_date_shipping_date = ' class_background_orange shipping_date'; } else { if (strtotime($this->specificate['shipping_date_limit']) - time() < 24 * 60 * 60) { // утверждение профакали $this->red_flag_date_limit = ' class_background_red limit'; $this->red_flag_date_date_approval = ' class_background_red date_approval'; $this->red_flag_date_shipping_date = ' class_background_red shipping_date'; $specificate_shipping_date_need_edit = 1; } } } else { if ($this->approval_date > 0) { // макет утвердили, но профакали дату if (strtotime($this->specificate['shipping_date_limit']) - $this->approval_date < 0) { $this->red_flag_date_limit = ' class_background_red limit'; $this->red_flag_date_date_approval = ' class_background_red date_approval'; $this->red_flag_date_shipping_date = ' class_background_red shipping_date'; $specificate_shipping_date_need_edit = 1; } } } // высчитываем дату сдачи $this->specificate_shipping_date_timestamp = strtotime($this->specificate['shipping_date']); $this->specificate_shipping_date = date('d.m.Y', $this->specificate_shipping_date_timestamp); // открываем редактирование даты сдачи по дакументу // для снаба в критические моменты, // при этом данные в самом документе остаются неизменными // для админа на время тестирования редактирование разрешено всегда if ($specificate_shipping_date_need_edit == 1 && (int) $this->user_access == 8 || (int) $this->user_access == 1) { $this->specificate_shipping_date = '<input type="text" name="date_of_delivery_of_the_specificate" class="date_of_delivery_of_the_specificate" value="' . $this->specificate_shipping_date . '" data-id="' . $this->specificate['id'] . '">'; } if ($this->specificate['shipping_date_redactor_id'] != 0) { $this->red_flag_date_shipping_date = ' class_background_yellow shipping_date'; $this->specificate_shipping_date .= '<br>' . $this->get_user_name_Database_Html($this->specificate['shipping_date_redactor_id']); } break; } }
static function getSpecificationsDates($inDataArr) { global $mysqli; global $user_id; //print_r($inDataArr); $inDataArr = (array) $inDataArr; $newDataArr = array(); foreach ($inDataArr['ids'] as $key => $data) { //echo $data->row_id.' - <br>'; $dataArr[$data->row_id] = $data->row_id; } if (isset($dataArr)) { $query = "SELECT dop.id id, dop.row_id row_id, shipping_date, shipping_time, shipping_type, work_days, shipping_redactor_id, shipping_redactor_access FROM `" . RT_MAIN_ROWS . "` main \n\t\t\t\t LEFT JOIN `" . RT_DOP_DATA . "` dop\n\t\t\t\t ON main.id = dop.row_id\n\t\t\t\t WHERE dop.id IN('" . implode("','", $dataArr) . "') ORDER BY main.sort"; $result = $mysqli->query($query) or die($mysqli->error); if ($result->num_rows > 0) { // SELECT * FROM `os__rt_dop_data` WHERE `id` IN ('681','743','1003','1027') ORDER BY `shipping_type` DESC // не понадобилось // $day_num_count = 0; // $max_day_num = '0'; // $defined_date = $expired_date = false; // $max_date = '1970-01-01 00:00:01'; // $cur_date = '2015-10-21 00:00:01';//date("Y-m-d H:i:s"); while ($row = $result->fetch_assoc()) { // echo '<pre>'; print_r($row); echo '</pre>'; // не понадобилось //if($row['standart']!='' && $row['standart']!='0') $day_num_count++; $value = $shablon = $shablon_en = ''; if (isset($user_id) && $row['shipping_redactor_id'] != $user_id && $row['shipping_redactor_access'] == '1') { $who = 'АДМИН'; } else { if (isset($user_id) && $row['shipping_redactor_id'] == $user_id && $row['shipping_redactor_access'] != '8') { $who = 'вы'; } else { if ($row['shipping_redactor_access'] == '8') { $who = 'СНАБ'; } else { $who = ''; } } } // если установленна дата выбираем её, иначе количество рабочих дней if ($row['shipping_type'] != 'none') { if ($row['shipping_type'] == 'date') { $value = $row['shipping_date']; $shablon = 'дата'; $shablon_en = 'date'; } else { if ($row['shipping_type'] == 'rd') { $value = $row['work_days']; $shablon = 'р/д'; $shablon_en = 'days'; } } $newDataArr[] = array('row_id' => $row['row_id'], 'value' => $value, 'shablon' => $shablon, 'shablon_en' => $shablon_en, 'who' => $who); } // не понадобилось // определяем максимальное значение установленных рабочих дней в $row['standart'] // if($row['standart']>$max_day_num) $max_day_num = $row['standart']; // $some_date = $row['shipping_date'].' '.$row['shipping_time']; // если определенна хотябы одна дата // if($some_date>'1970-01-01') $defined_date = true; // определяем максимальное значение установленных дат в $row['shipping_date'] и $row['shipping_time'] // if($some_date>$max_date) $max_date = $some_date; } $outDataArr['data'] = $newDataArr; $outDataArr['all_positions'] = $result->num_rows; $outDataArr['defined_positions'] = count($newDataArr); $outDataArr['min_allowed_date'] = substr(goOnSomeWorkingDays(date("Y-m-d H:i:s"), 3, '+'), 0, 10); //,time()+60*60*24* // если не во всех расчетах установлен срок изготовления содаем флаг undefined_days_warn // if(count($dataArr)>$day_num_count) $outDataArr['undefined_days_warn'] = 1; // если определенна хотябы одна дата /* if($defined_date){ $outDataArr['defined_date'] = 1; // если количество рабочих дней между текущей и максимальной датой меньше // максимального установленного срока в рабочих днях то устанавливаем флаг if($cur_date > $max_date) $outDataArr['expired_date'] = 1; else{ // определяем количество дней между текущей и максимальной датой $outDataArr['working_days_range'] = getWorkingDays($cur_date,$max_date); if($max_day_num > $outDataArr['working_days_range']) $outDataArr['expired_date'] = 1; } }*/ // мексмальное установленное количество рабочих дней // $outDataArr['max_day_num'] = $max_day_num; // мексмально установленная дата // $outDataArr['max_date'] = substr($max_date,0,10); // $outDataArr['cur_date'] = substr($cur_date,0,10); } } // print_r($outDataArr); return json_encode($outDataArr); }