<?php
include_once("c_personal.php");
include_once(_DIR_TO_ENGINE.'/admin/i_admin_system.php') ;
class c_page_cab_personal_upload extends c_page_cab_personal
{
 public $h1='Загрузка списка сотрудников' ;
 public $objPHPExcel ;
 public $aSheet ;
 public $csv_headers ;
 public $db_headers ;
 public $setting ;
 public $table_name ;
 public $setting_name ;

 public $db_fields=array( 'uid'=>'UID',
                          'name1'=>'Фамилия',
                          'name2'=>'Имя',
                          'name3'=>'Отчество',
                          'obj_name'=>'ФИО',
                          'dr'=>'Дата рождения',
                          'pol'=>'Пол',
                          'tab_number'=>'Табельный номер',
                          'propusk'=>'Пропуск',
                          'driving'=>'Права',
                          '_working_name'=>'Должность',
                          '_org_name'=>'Организация',
                          '_otdels_names'=>'Подразделение',
                          '_otdels_names1'=>'Подразделение1',
                          '_otdels_names2'=>'Подразделение2',
                          '_otdels_names3'=>'Подразделение3',
                          '_otdels_names4'=>'Подразделение4',
                          '_otdels_names5'=>'Подразделение5',
  ) ;

 function block_main()
 { $this->page_title() ;
   $this->setting_name='LS_import_XLS_setting_'.MEMBER()->id ;
   if (!isset($GLOBALS[$this->setting_name]))
   { $id_sect=SETUP_add_section_to_site_setting('Персонал') ;
     SETUP_add_rec_to_site_setting($id_sect,"Настройки импорта персонала для ".MEMBER()->name,1,$this->setting_name,array('hidden'=>1)) ;
   }

   $this->setting=unserialize(stripslashes($GLOBALS[$this->setting_name])) ;
   $this->csv_headers=$this->setting['csv_headers'] ;
   $this->db_headers=$this->setting['db_headers'] ;
   if (!isset($this->setting['set'])) $this->setting['set']=array() ;
   $this->table_name='temp_upload_csv_'.MEMBER()->id ;

   $this->panel_upload_promt() ;
   //damp_array($_POST) ;
   switch($_POST['cmd'])
   { //case 'upload_img': $this->upload_img() ; break ;
     case 'show_temp_table': $this->show_temp_table() ; break ;
     case 'show_setting': $this->show_setting() ; break ;
   }
   //$this->cmd_exec_result['no_default_panel'] ;
 }

 function show_temp_table()
 {   damp_array($this->setting) ;

     ?><h2>Содержимое временной таблицы, созданной на основе загруженного файла</h2><?
     $recs=execSQL('select * from '.$this->table_name,0,1) ;
     print_2x_arr($recs) ;
 }

 function show_setting()
 {
     damp_array($this->setting,1,-1) ;
 }

 function panel_upload_promt()
 {  ob_start() ; $cnt_uploads=execSQL_value('select count(*) from '.$this->table_name) ; ob_end_clean()  ;
    ?><div class="sky-form no_box_shadow">
      <form action="" method="POST" enctype="multipart/form-data"><input type="hidden" name="cmd" value="upload_file">
      <p><span class="fz_18">1.</span> Загрузите на сервер файл со списком сотрудников, используя заранее подготовленный файл Excel. <a href="<?echo _PATH_TO_EXT?>/aspmo_personal/demo/members.xls">Образец файла</a></p>
      <?    if ($cnt_uploads) echo '<p>Во временной таблице сейчас загружено <strong>'.$cnt_uploads.'</strong> строк</p>' ;
            if ($_POST['cmd']=='show_panel_upload_file') $this->panel_upload_file();
            else if ($_POST['cmd']=='upload_file') { $this->upload_file(); }
            else {?><button class="button v1" style="float:none;display:inline;" cmd="show_panel_upload_file">Перейти к загрузке файла</button><? }
            if ($cnt_uploads) {?><button class="button v1" style="float:none;display:inline;" cmd="show_temp_table">Посмотреть загруженные данные</button><?}
         ?>
      <br><br></form>
      <?if ($cnt_uploads){?>
      <p><span class="fz_18">2.</span> Произведите сопоставление полей файла XLS и БД ЭСМО</p>
      <?  $this->panel_set_fields() ;
          if ($cnt_uploads){?><button class="button v1" style="float:none;display:inline;" cmd="set_set">Применить сопоставление</button><?}
          ?><br><?
          if ($_POST['cmd']=='set_set') $this->set_set() ;
      ?>
      <br>
      <p><span class="fz_18">3.</span> Импортируйте данные по сотрудникам в БД ЭСМО</p>
      <?if (sizeof($this->setting['set']) and array_search('uid',$this->setting['set'])!==false and $cnt_uploads){?><button class="button v1" style="float:none;display:inline;" cmd="import_from_temp_XLS">Импортировать данные в базу</button><?}
        else {?><div class="alert">Для импорта данных необходимо сопоставить поля UID и Фамилия</div><?}
        if ($_POST['cmd']=='import_from_temp_XLS') $this->import_from_temp_XLS() ;

      ?>
      <!--  пока отключенго, надо тестить и добавить отдельную форму загрузки файла
      <p><span class="fz_18">4.</span> Импортируйте фото сотрудников</p>
          <input type="submit" class="button v1" cmd="upload_img" style="float:none;display:inline;" value="Загрузить архив фото">&nbsp;&nbsp;&nbsp;
          <? if ($_POST['cmd']=='upload_img') $this->upload_img() ;


          ?>
      -->
          <!--<input type="submit" class="button v1" cmd="show_setting" value="Показать конфигурацию импорта">&nbsp;&nbsp;&nbsp;-->

      <?}?>
     </div>
     <style type="text/css">
      span.fz_18{font-size:18px;color:black;}
     </style>
     <?
 }

 function panel_upload_file()
 { ?><div id="panel_upload_promt"><form action="" method="POST" enctype="multipart/form-data"><input type="hidden" name="cmd" value="upload_file">
          <input name="upload_file[]" type="file" size="50">
          <input type="submit" class="button v1" cmd="upload_file" style="float:none;display:inline;" value="Загрузить файл"><br><br>
          <p>На этом этапе данные из файла XLS будут загружены по временную таблицу, в действующую таблицу персонала ничего загружено не будет</p><p><strong>Внимание!</strong><p>
          <div class=comment>Размер файла не более 1М, формат файла - Excel XLS.</div>
   <?
 }

 function upload_img()
 {   ?><h2>Загрузка архива с фото сотрудников</h2><?
     if (sizeof($_FILES))
     { $recs_files=conver_FILES_to_recs($_FILES['upload_file']) ;

       if (sizeof($recs_files[0]))
         { //if ($recs_files[0]['type']=='application/vnd.ms-excel')
           { ?><p>Загружаем архив "<strong><?echo $recs_files[0]['name']?></strong>"</p><?
              $file_name=_DIR_TO_ROOT.'/temp/arh.zip' ;
              move_uploaded_file($recs_files[0]['tmp_name'],$file_name) ;
              $this->unzip_arhive($file_name,_DIR_TO_ROOT.'/temp/images/') ;
              $list_images=get_files_list(_DIR_TO_ROOT.'/temp/images/') ;
              damp_array($list_images,1,-1) ;
              foreach($list_images as $fname)
              {  $uid=execSQL_value('select uid from '.$this->table_name.' where G_PhotoFile like "'.basename($fname).'"') ;
                 if ($uid)
                 { // загружаем фото
                   $rec_personal=execSQL_van('select pkey,obj_name from obj_site_personals where uid="'.$uid.'"') ;
                   // удаляем старое фото
                   execSQL_update('delete from obj_site_personals_image where parent='.$rec_personal['pkey']) ;
                   // добавляем новое фото
                   $cur_file_info=array('name'=>basename($fname),'upl_name'=>$fname) ;
                   $img_reffer=obj_upload_image($rec_personal['_reffer'],$cur_file_info,array('view_upload'=>1,'debug'=>0,'no_clone'=>0)) ;

                   $img_name=execSQL_value('select file_name from obj_site_personals_image where parent='.$rec_personal['pkey'].' order by indx limit 1',0) ;
                   execSQL_update('update obj_site_personals set _image_name="'.$img_name.'" where pkey='.$rec_personal['pkey'],0) ;
                   echo 'Фото загружено в карточку "'.$rec_personal['obj_name'].'"<br><br>' ;

                 }
              }
           }
         }
     }
 }

 function unzip_arhive($arh_name,$desct_dir)
 {
     $zip = new ZipArchive;
      if ($zip->open($arh_name) === TRUE)
      {   $zip->extractTo($desct_dir);
          $zip->close();
          echo 'Архив '.basename($arh_name).' успешно распакован<br>';
      }
      else { echo 'Ошибка извлечения архива '.basename($arh_name).'<br>'; return ; }

 }

 function upload_file()
  {
    ?><h2>Загрузка файла со списком сотрудников во временную таблицу</h2><?
    if (sizeof($_FILES))
    { $recs_files=conver_FILES_to_recs($_FILES['upload_file']) ;
      if (sizeof($recs_files[0]))
        { //if ($recs_files[0]['type']=='application/vnd.ms-excel')
          { ?><p>Загружаем данные из файла "<strong><?echo $recs_files[0]['name']?></strong>" во временную таблицу</p><?
             $file_name=_DIR_TO_ROOT.'/temp/personal_upload_'.MEMBER()->id.'.xls' ;  $members = array();
             move_uploaded_file($recs_files[0]['tmp_name'],$file_name) ;
             set_include_path(_DIR_TO_ROOT.'/AddOns/PHPExcel/');
             include_once 'PHPExcel/IOFactory.php';
             $this->objPHPExcel = PHPExcel_IOFactory::load($file_name);
             $this->objPHPExcel->setActiveSheetIndex(0);
             $this->aSheet = $this->objPHPExcel->getActiveSheet();
             if (is_object($this->aSheet))
             {
                 // получаем заголовки таблицы
                 $this->csv_headers=$this->upload_headers_from_excel() ;
                 //damp_array($this->csv_headers) ;

                 // создаем временную таблицу для данных
                 $this->create_temp_table($this->table_name) ;

                 // загружаем во временуую таблицу данные
                 $this->upload_recs_from_excel($this->table_name) ;

                 $this->setting['csv_headers']=$this->csv_headers ;
                 $this->setting['db_headers']=$this->db_headers ;
                 update_site_setting($this->setting_name,addslashes(add_data_to_serialize_array('',$this->setting)),array('no_stripslashes'=>1)) ;

             } else return(array('type'=>'error','code'=>'error_parsing_xls','text'=>'Не удалось разобрать XLS файл')) ;
            return(array('type'=>'success','no_default_panel'=>1)) ;
          }
          //else return(array('type'=>'error','code'=>'failed_type','text'=>'Неверный тип файла. Загрузите файл в формате Excel.')) ;
        }
      else return(array('type'=>'error','code'=>'not_uploaded_file','text'=>'Не был выбран файл')) ;
    }
    else return(array('type'=>'error','code'=>'not_uploaded_file','text'=>'Не был выбран файл')) ;
  }

  function convert_field_name($col,$fname)
  {
      $res=str_replace(array(' '),'_',$col.'_'.translit($fname)) ;
      return($res) ;
  }

  function create_temp_table($table_name)
  {   echo 'Очищаем временную таблицу<br>' ;
      execSQL_update('DROP TABLE IF EXISTS '.$table_name) ;
      $arr_sql=array() ;
      if (sizeof($this->csv_headers)) foreach($this->csv_headers as $col=>$col_name)
      {   $this->db_headers[$col]=$this->convert_field_name($col,$col_name) ;
          $arr_sql[]=$this->db_headers[$col].' VARCHAR(64)  CHARACTER SET utf8 COLLATE utf8_general_ci  NOT NULL DEFAULT ""' ;
      }
      if (sizeof($this->db_fields)) foreach($this->db_fields as $esmo_name=>$esmo_title)
          $arr_sql[]=$esmo_name.' VARCHAR(64)  CHARACTER SET utf8 COLLATE utf8_general_ci  NOT NULL DEFAULT ""' ;

      // добавляем в таблицу служебные поля
      //if (array_search('obj_name',$this->setting['set'])===false) $arr_sql[]='obj_name VARCHAR(64)  CHARACTER SET utf8 COLLATE utf8_general_ci  NOT NULL DEFAULT ""' ;
      $arr_sql[]='parent int(11) NOT NULL DEFAULT 0' ;
      $arr_sql[]='parent2 int(11) NOT NULL DEFAULT 0' ;
      $arr_sql[]='parent3 int(11) NOT NULL DEFAULT 0' ;
      $arr_sql[]='working int(11) NOT NULL DEFAULT 0' ;
      //$arr_sql[]='dr VARCHAR(12)  CHARACTER SET utf8 COLLATE utf8_general_ci  NOT NULL DEFAULT ""' ;
      $arr_sql[]='age int(11)  NOT NULL DEFAULT 0' ;

      $sql_create='CREATE TABLE  '.$table_name.' ('.implode(',',$arr_sql).') ENGINE = INNODB' ;
      execSQL_update($sql_create,array('debug'=>0)) ;
      echo 'Временная таблица успешно иницилизирована<br>' ;
      //damp_array($arr_sql) ;
  }



 //==========================================================================================================================================================================
   // ЗАГРУЗКА СОТРУДНИКОВ ИЗ EXCEL
   //==========================================================================================================================================================================
   function upload_headers_from_excel()
   { $rowIterator = $this->objPHPExcel->getActiveSheet()->getRowIterator();
     $arr_row_names=array() ;
     foreach($rowIterator as $row)
     { $cellIterator = $row->getCellIterator();
       $cur_row=$row->getRowIndex() ;
       $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set
       if ($cur_row==1) foreach ($cellIterator as $cell) $arr_row_names[$cell->getColumn()]=str_replace("\n",'',$cell->getCalculatedValue()) ;  // первая строка - заголовки
       else break ;
     }
     return($arr_row_names) ;
  }

  function upload_recs_from_excel($table_name)
  {  $rowIterator = $this->objPHPExcel->getActiveSheet()->getRowIterator();
     $arr=array() ;
     foreach($rowIterator as $row)
     { $cellIterator = $row->getCellIterator();
       $cur_row=$row->getRowIndex() ;
       $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set
       $rec=array() ;
       if ($cur_row>1) foreach ($cellIterator as $cell) $rec[$cell->getColumn()]='"'.$cell->getFormattedValue().'"';

       if (sizeof($rec)) $arr[]='('.implode(',',$rec).')' ;
       if (sizeof($arr)==500)
       {  $sql='INSERT INTO '.$table_name.' ('.implode(',',$this->db_headers).') VALUES '.implode(', ',$arr).';' ;
          execSQL_update($sql,array('debug'=>0)) ;
          $arr=array() ;
       }
       //if ($cur_row>4) break ;

     }
     if (sizeof($arr))
     {  $sql='INSERT INTO '.$table_name.' ('.implode(',',$this->db_headers).') VALUES '.implode(', ',$arr).';' ;
        execSQL_update($sql,array('debug'=>0)) ;
     }
     $cnt=execSQL_value('select count(*) from '.$table_name) ;
     echo 'Загружено <strong>'.$cnt.'</strong> записей из файла XLS<br>' ;
     //$name=LOGS()->reg_file_log('import_personals',$text) ;
     //LOGS()->reg_log('Импорт сотрудников','<a target=_blank href="'.$name.'">Отчет</a>') ;
     //return($members) ;
  }

  function panel_set_fields()
  { ?><h2>Сопоставление столбцов файла XLS и полей БД</h2><form><?
    ?><table class="basic fz_small full" id="panel_set_fields">
       <tr>
           <th>Столбец XLS</th><?if (sizeof($this->csv_headers)) foreach($this->csv_headers as $col=>$fname){?><th><?echo $fname?></th><?}?>
       </tr>
       <tr>
           <th>Поле ЭСМО</th><?if (sizeof($this->csv_headers)) foreach($this->csv_headers as $col=>$fname)
            { ?><td><select name="<?echo $col?>"><option value=""></option><?
              if (sizeof($this->db_fields)) foreach($this->db_fields as $fname=>$ftitle) {?><option value="<?echo $fname?>" <?if ($this->setting['set'][$col]==$fname) echo 'selected'?>><?echo $ftitle?></option><?}
              ?></select></td><?}?>
       </tr>
       <tr>
           <th>Число заданных значений</th>
           <?if (sizeof($this->csv_headers)) foreach($this->csv_headers as $col=>$fname){?><td><? echo execSQL_value('select count('.$this->db_headers[$col].') from '.$this->table_name.'  where '.$this->db_headers[$col].'!=""');?></td><?}?>
       </tr>
       <tr>
           <th>Число пустых значений</th>
           <?if (sizeof($this->csv_headers)) foreach($this->csv_headers as $col=>$fname){?><td><? echo execSQL_value('select count('.$this->db_headers[$col].') from '.$this->table_name.' where '.$this->db_headers[$col].'=""');?></td><?}?>
       </tr>
       <tr>
           <th>Число уникальных значений</th>
           <?if (sizeof($this->csv_headers)) foreach($this->csv_headers as $col=>$fname){?><td><? echo execSQL_value('select count(distinct('.$this->db_headers[$col].')) from '.$this->table_name.' where '.$this->db_headers[$col].'!=""');?></td><?}?>
       </tr>
      </table>
      </form>
      <script type="text/javascript">
         $j('table#panel_set_fields select').change(function(){send_ajax_request({cmd:'aspmo_personal/set_fields_XLS_ESMO',account_id:<?echo MEMBER()->id?>,el_name:$j(this).attr('name'),el_value:$j(this).val()});})
       </script>
    <?
  }

  function set_set()
  {   ?><br><h3>Применяем сопоставление полей для временной таблицы</h3><?
      //damp_array($this->setting,1,-1) ;
      if (sizeof($this->setting['set'])) foreach($this->setting['set'] as $col=>$fname) if ($fname and isset($this->setting['db_headers'][$col]))
        execSQL_update('update '.$this->table_name.' set '.$fname.'='.$this->setting['db_headers'][$col]) ;

       //damp_array($this->setting['set'],1,-1) ;
       //damp_array($this->db_headers,1,-1) ;
      if (array_search('obj_name',$this->setting['set'])===false)
      {   ?><strong>Формирование ФИО на основе Ф+И+О</strong>: <?
          $arr=array() ;
          if ($fname1=$this->db_headers[array_search('name1',$this->setting['set'])])  $arr[]=$fname1 ;
          if ($fname2=$this->db_headers[array_search('name2',$this->setting['set'])]) {$arr[]='" "' ; $arr[]=$fname2 ; } ;
          if ($fname3=$this->db_headers[array_search('name3',$this->setting['set'])]) {$arr[]='" "' ; $arr[]=$fname3 ; } ;
          if (sizeof($arr)) $cnt=execSQL_update('update '.$this->table_name.' set obj_name=trim(concat('.implode(',',$arr).'))') ;
          echo 'Обработано '.$cnt.' записей во временном файле<br>' ;
      }


      $fname=$this->db_headers[array_search('dr',$this->setting['set'])] ;
      if ($fname!==false and array_search('dr',$this->setting['set'])!==false)
      { ?><strong>Форматирование даты рождения</strong>: <?
        $cnt=execSQL_update('update '.$this->table_name.' set dr=replace('.$fname.',"/",".")') ;
        $cnt+=execSQL_update('update '.$this->table_name.' set dr=replace('.$fname.',"-",".")') ;
        echo 'Обработано '.$cnt.' записей во временном файле<br>' ;
      }

  }

  function import_from_temp_XLS()
  { ?><h2>Импортируем данные из временной таблицы XLS в таблицу персонала ЭСМО</h2><?
    $arr=array_flip($this->setting['set']) ;

    ?><h3>Синхронизация списка организаций</h3><?
    $arr_names=execSQL_row('select distinct(_org_name),t2.pkey
                                from '.$this->table_name.' t1
                                left join obj_site_personals t2 on t2.obj_name=t1._org_name and t2.clss=207 and t2.level=2 and t2.client_id='.MEMBER()->id.'
                                where t1._org_name!=""') ;

    if (sizeof($arr_names)) foreach($arr_names as $name=>$id)
    {  if (!$id)
       { echo 'Добавляем новую организацию - "<strong>'.$name.'</strong>"<br>' ;
           $id=adding_rec_to_table(PERSONAL()->table_name,array('clss'=>207,'parent'=>1,'obj_name'=>$name,'level'=>2,'parent1'=>1,'client_id'=>MEMBER()->id)) ;
           $arr_names[$name]=$id ;
       }
       execSQL_update('update '.$this->table_name.' set parent2='.$arr_names[$name].' where _org_name="'.$name.'"') ;
    }

    ?><h3>Синхронизация списка подразделений</h3><?
    $arr_names=execSQL('select distinct(_otdels_names) as name,t1.parent2,t2.pkey,t2.parent
                        from '.$this->table_name.' t1
                        left join obj_site_personals t2 on t2.obj_name=t1._otdels_names and t2.clss=208 and t2.level=3 and t2.client_id='.MEMBER()->id.'
                        where t1._otdels_names!=""',0,1) ;
    if (sizeof($arr_names)) foreach($arr_names as $rec)
    {  if (!$rec['pkey'])
       { echo 'Добавляем новое позразделение - "<strong>'.$rec['name'].'</strong>"<br>' ;
           $id=adding_rec_to_table(PERSONAL()->table_name,array('clss'=>208,'parent'=>$rec['parent2'],'parent1'=>1,'parent2'=>$rec['parent2'],'obj_name'=>$rec['name'],'level'=>3,'client_id'=>MEMBER()->id)) ;
       } else $id=$rec['pkey'] ;
       execSQL_update('update '.$this->table_name.' set parent3='.$id.' where _otdels_names="'.$rec['name'].'" and parent2='.$rec['parent2']) ;
    }

    execSQL_update('update '.$this->table_name.' set parent=parent3 where parent3>0 and parent2>0') ;
    execSQL_update('update '.$this->table_name.' set parent=parent2 where parent3=0 and parent2>0') ;
    execSQL_update('update '.$this->table_name.' set parent=1 where parent3=0 and parent2=0') ;

    //$arr_work_names=execSQL_row('select id,obj_name from obj_site_list where clss=20 and parent='._IL('IL_works')->list_id) ;
    ?><h3>Синхронизация списка должностей</h3><?
    $arr_names=execSQL('select distinct(_working_name) as name,t2.id
                          from '.$this->table_name.' t1
                          left join obj_site_list t2 on t2.obj_name=t1._working_name and t2.clss=20 and t2.parent='._IL('IL_works')->list_id.'
                          where t1._working_name!=""',0,1) ;

    if (sizeof($arr_names)) foreach($arr_names as $rec)
    {  if (!$rec['id'])
         { echo 'Добавляем новую должность - "<strong>'.$rec['name'].'</strong>"<br>' ;
           $id=_IL('IL_works')->get_id_of_value(trim($rec['name']),array('append_value_is_not_found'=>1)) ;
         } else $id=$rec['id'] ;
         execSQL_update('update '.$this->table_name.' set working='.$id.' where _working_name="'.$rec['name'].'"',0) ;
    }


    ?><h3>Обновляем данные существующих сотрудников</h3><?


    $recs_update=execSQL('select t1.uid,t1.propusk,t1.obj_name,t1.parent2,t1.parent3,t1.working,t1.dr,
                                 t2.uid as _uid,t2.obj_name as _obj_name,t2.parent2 as _parent2,t2.parent3 as _parent3,t2.working as _working,t2.dr as _dr,t2.pkey
                          from '.$this->table_name.' t1 
                          left join obj_site_personals t2 on t2.uid=t1.uid 
                          where t1.uid>0 and t2.pkey>0 and (
                                t1.propusk!=t2.propusk or 
                                t1.obj_name!=t2.obj_name or 
                                t1.parent2!=t2.parent2 or 
                                t1.parent3!=t2.parent3 or 
                                t1.working!=t2.working or 
                                t1.dr!=t2.dr ) and t2.client_id='.MEMBER()->id.'
                                ',0) ;
      //return ;
    if (sizeof($recs_update)) foreach($recs_update as $data) if ($data['uid'])
    { $rec=array() ;
      $rec['clss']=211 ;
      $rec['parent']=$data['parent'] ;
      $rec['parent1']=1 ;
      $rec['parent2']=$data['parent2'] ;
      $rec['parent3']=$data['parent3'] ;
      $rec['propusk']=$data['propusk'] ;
      $rec['uid']=$data['uid'] ;
      $rec['obj_name']=$data['obj_name'] ;
      $rec['working']=$data['working'] ;
      $rec['client_id']=MEMBER()->id ;
      list($rec['dr'],$rec['age'])=$this->get_dr_age($data['dr']) ;
      update_rec_in_table(PERSONAL()->table_name,$rec,'pkey='.$data['pkey']) ;
      echo 'Обновили данные сотрудника - "<strong>'.$rec['obj_name'].'</strong>" [UID='.$data['uid'].']<br>' ;

    }

    $recs_create=execSQL('select t1.* from '.$this->table_name.' t1 left join obj_site_personals t2 on t2.uid=t1.uid and t2.client_id='.MEMBER()->id.' where t1.uid>0 and t2.pkey is null');
    if (sizeof($recs_create)) foreach($recs_create as $data)
    { $rec=array() ;
      $rec['clss']=211 ;
      $rec['parent']=$data['parent'] ;
      $rec['parent1']=1 ;
      $rec['parent2']=$data['parent2'] ;
      $rec['parent3']=$data['parent3'] ;
      $rec['propusk']=$data['propusk'] ;
      $rec['uid']=$data['uid'] ;
      $rec['obj_name']=$data['obj_name'] ;
      $rec['working']=$data['working'] ;
      $rec['client_id']=MEMBER()->id ;
      list($rec['dr'],$rec['age'])=$this->get_dr_age($data['dr']) ;
      adding_rec_to_table(PERSONAL()->table_name,$rec) ;
      echo 'Добавляем нового сотрудника - "<strong>'.$rec['obj_name'].'</strong>" [UID='.$data['uid'].']<br>' ;
      //$cnt_adding++ ;
    }
  }

   function prepare_propusk_num($value)
   {
      //return(substr($value,4,8)) ;
       return($value) ;
   }

   // дата идет в формате 01/01/10, переводим в формат обычной даты
   function get_dr_age($str_data)
   {  $str_data=str_replace(array('/','-'),'.',$str_data) ;
      list($date,$time)=explode(' ',$str_data) ;
      $arr=explode('.',$date) ;
      $dr='' ; $age=0 ;
      if (sizeof($arr)==3)
       { $now_year=(int)date('y') ;
         $_y=(int)$arr[2] ;
         if (strlen($arr[2])==4)  $yaer=$_y ;
         else if ($now_year>$_y)  $yaer=(int)'20'.$arr[2] ;
         else                     $yaer=(int)'19'.$arr[2] ;
         // измнено для выгрузки из лукойла
         $month=(int)$arr[1] ;
         $day=(int)$arr[0] ;
         $dr=sprintf("%02d.%02d.%04d", $day, $month, $yaer);
         $tt = mktime(0,0,0,$month,$day,date('Y'));   // дата день рождения в этом году
         $now_year=(int)date('Y') ;
         $age=$now_year-$yaer ;
         if (time()<$tt) $age=$age-1 ;
       }
      return(array($dr,$age)) ;
   }


}



?>