コード例 #1
0
ファイル: cabinet_class.php プロジェクト: apelburg/test
 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;
     }
 }
コード例 #2
0
ファイル: agreement_class.php プロジェクト: apelburg/test
 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);
 }