<?php
// входной скрипт для URL https://dev.kvzrm.ru/services/esmo_gateway/upload_persons/
// внимание! по умолчанию сервис возвращает структурированный ответ по выполенными операциям
// для просмотра лога импорта надо либо передать опцию show_log, либо после приема сервиса достать лог из файла _DIR_TO_ROOT.'/logs/import_trace_'.$arr_result['session_uid'].'.html'
include_once('c_services_esmo_gateway_upload_persons.php');
class c_services_esmo_gateway_upload_persons_1c extends c_services_esmo_gateway_upload_persons
{
  function upload_source_file_to_db()
  {  // переносим данные XLS во временную таблицу
      // свой класс для парсинга xml файла 1с так как там блоки сотрудников находяттся в блоке [data]
      include_once(_DIR_EXT.'/esmo_gateway/i_xml_1c_to_db_import.php') ;
      $XML_to_DB = new i_xml_1c_to_db_import(array('uid'=>$this->session_uid)) ;
      $XML_to_DB->XML_fname=$this->setting['upload_fname'] ;  // /temp/0_a34d0deb97e04aa9409668dddf7666f6.xlsx
      $result=$XML_to_DB->import() ;
      //$this->setting['view_source']=1 ;
      if ($this->setting['view_source'])
      {  ?><strong>Прочитанный файл XLS, первые 10 строк с данными</strong><?
         $recs=execSQL('select * from '.$XML_to_DB->table.' limit 10') ;
         print_2x_arr($recs) ;
      }
      return($XML_to_DB) ;
  }

  // тут происходит постобрабтка данных из XML файла
  // так как в временную таблицы данные были загружены как есть
  // теперь их надо перенести в таблицы ФЛ и СО в допустимом для импорта виде
  function parse_source_DB_to_table_fl()
  { echo '<strong>Формируем промежуточную таблицу ФЛ</strong><br>' ;
    $recs=execSQL('select * from '.$this->table_source,0,1) ;
      if (_sizeof($recs)) foreach($recs as $rec)
      {   $uid=$rec['FizicheskoeLitso'] ;
          $arr_name=array() ;
          if ($rec['Familiya']) $arr_name[]=$rec['Familiya'] ;
          if ($rec['Imya'])     $arr_name[]=$rec['Imya'] ;
          if ($rec['Otchestvo'])$arr_name[]=$rec['Otchestvo'] ;
          $name=implode(' ',$arr_name) ;
          $dr=date('d.m.Y',strtotime($rec['DataRozhdeniya'])) ;

          $data=array('uid'=>$uid,
                      'obj_name'=>$name,
                      'dr'=>(isset($rec['DataRozhdeniya']))? $dr:null,
                      'age'=>(isset($rec['DataRozhdeniya']))?  ENGINE()->get_age_by_dr($dr):null,
                      'tab_number'=>(isset($rec['TabelnyyNomer']))? $rec['TabelnyyNomer']:null,
                      'pol'=>(isset($rec['Pol']))? (($rec['Pol']=='Мужской')? 0:1):null,
                      'enabled'=>($rec['Fired'])? 0:1,
                   ) ;
          // режим REPLACE нужен для защиты от дубликатов UID
          if ($uid!="") multiSQL_insert($this->table_fz,array('mode'=>'REPLACE'))->append($data) ;
          else if (!$uid) echo '<div class="red">Отсутствует UID ФЛ ['.$rec['Name'].']</div>' ;
          //else if (!$rec['Org']) echo '<div class="red">В исходных данных отсутствует организация [UID '.$rec['UID'].']</div>' ;

      }
       multiSQL_insert($this->table_fz)->flush() ;
  }

  function parse_source_DB_to_table_so()
  {  echo '<strong>Формируем промежуточную таблицу СО</strong><br>' ;
     $recs=execSQL('select * from '.$this->table_source,0,1) ;
      if (_sizeof($recs)) foreach($recs as $rec)
      {   $uid=$rec['Sotrudnik'] ;
          $arr_name=array() ;
          if ($rec['Familiya']) $arr_name[]=$rec['Familiya'] ;
          if ($rec['Imya'])     $arr_name[]=$rec['Imya'] ;
          if ($rec['Otchestvo'])$arr_name[]=$rec['Otchestvo'] ;
          $name=implode(' ',$arr_name) ;
          $data=array('uid'=>$uid,
                      'uid_fl'=>$rec['FizicheskoeLitso'],
                      'obj_name'=>$name,
                      'org_name'=>(isset($rec['Organizatsiya']))? $rec['Organizatsiya']:null,
                      'otdel_name'=>(isset($rec['PodrazdelenieNaimenovanie']))? $rec['PodrazdelenieNaimenovanie']:null,
                      'work_name'=>(isset($rec['DolzhnostNaimenovanie']))? $rec['DolzhnostNaimenovanie']:null,
                      'is_main'=>($rec['VidZanyatosti']=='ОсновноеМестоРаботы')? 1:0,
                      'is_second'=>($rec['VidZanyatosti']=='ОсновноеМестоРаботы')? 0:1,
                      'enabled'=>($rec['Fired'])? 0:1, //  для блокировки создания новых СО при передачи данных по уволенному сотруднику
                      'fired_data'=>($rec['Fired'])? time():0,   // дата увольнения для существующих сотрудников

                   ) ;
          // режим REPLACE нужен для защиты от дубликатов UID
          if ($uid!="") multiSQL_insert($this->table_so,array('mode'=>'REPLACE'))->append($data) ;
          else if (!$uid) echo '<div class="red">Отсутствует UID СО ['.$rec['Name'].']</div>' ;
          //else if (!$rec['Org']) echo '<div class="red">В исходных данных отсутствует организация [UID'.$rec['UID'].']</div>' ;
      }
       multiSQL_insert($this->table_so)->flush() ;
  }

}



?>
