Example #1
0
 /**
  * Создание нового сгенерированного документа, перевод старого в статус удаленнго
  * 
  * @param array  $doc     Данные старого документа
  * @param string $action  Действие с документом
  * @return boolean|integer
  */
 public function recreateDoc($doc, $action)
 {
     $doc_num = null;
     if ($doc['id'] != $doc['first_doc_id'] && $doc['id'] != $doc['second_doc_id']) {
         $this->redate_act = date('d.m.Y', strtotime($doc['publ_time']));
     } else {
         $doc_date = $this->sbr->getDoc($doc['first_doc_id'], true, true);
         $this->redate_act = date('d.m.Y', strtotime($doc_date['publ_time']));
     }
     if ($action == 'create') {
         if ($doc['id'] != $doc['first_doc_id'] && $doc['id'] != $doc['second_doc_id']) {
             $delete = $this->changeStatusDoc($doc['id']);
             if ($delete) {
                 $this->removeEvent(30, true);
                 // Удаляем событие удаления файла оно не нужно
             }
         }
         if ($doc['id'] == $doc['second_doc_id']) {
             $sdel = $this->deleteSecondDoc($doc['id']);
             if ($sdel) {
                 $this->removeEvent(29, true);
                 // Удаляем событие добавления файла
             }
             $doc['id'] = $doc['first_doc_id'];
         }
     } else {
         if ($action == 'remove') {
             $this->removeEvent(29, true);
             // Удаляем событие добавления файла старое
             $this->changeStatusDoc($doc['id'], false);
             $this->removeEvent(29, true);
             // Удаляем событие добавления файла новое, тк файл был сгенерирован пользователь и там добавлен
             $this->deleteSecondDoc($doc['second_doc_id']);
             return true;
         }
     }
     switch ($doc['type']) {
         case sbr::DOCS_TYPE_ACT:
             if ($this->sbr->scheme_type == sbr::SCHEME_PDRD2) {
                 $doc_file = $this->generateFrlActPdrd($doc_err, $this->redate_act);
             } elseif ($this->sbr->scheme_type == sbr::SCHEME_LC) {
                 $doc_file = $this->generateCompletedAct($doc_err);
                 // формируем акт исполнителя по агентской схеме.
             }
             break;
         case sbr::DOCS_TYPE_TZ_PDRD:
             $doc_file = $this->generateTzPdrd($doc_err, $this->redate_act);
             break;
         case sbr::DOCS_TYPE_WM_APPL:
             $doc_file = $this->generateFrlWMAppl($doc_err);
             break;
         case sbr::DOCS_TYPE_YM_APPL:
             $doc_file = $this->generateFrlYMAppl($doc_err);
             break;
         case sbr::DOCS_TYPE_ARB_REP:
             if ($this->sbr->scheme_type == sbr::SCHEME_LC) {
                 $is_emp_arb = $this->status == sbr_stages::STATUS_ARBITRAGED && $this->arbitrage['resolved'] && floatval($this->arbitrage['frl_percent']) == 0;
                 $result = html_entity_decode($this->arbitrage['result'], ENT_QUOTES, 'cp1251');
                 if (!$is_emp_arb && (strpos($reason, 'Cогласно п. 9.1.2. Расторжение Соглашения') === false && strpos($result, 'Соглашение сторон Расторжение Соглашения') === false)) {
                     $doc_file = $this->generateArbReportFrl($doc_err, $doc_num);
                 } else {
                     $doc_file = $this->generateArbReportEmp($doc_err, $doc_num);
                 }
             } elseif ($this->sbr->scheme_type == sbr::SCHEME_PDRD2) {
                 if ($doc['access_role'] == sbr::DOCS_ACCESS_EMP) {
                     $doc_file = $this->generateArbReportPdrdEmp($doc_err);
                 } elseif ($doc['access_role'] == sbr::DOCS_ACCESS_FRL) {
                     $doc_file = $this->generateArbReportPdrdFrl($doc_err);
                 }
             }
             break;
     }
     if ($doc_file) {
         $_doc = array('stage_id' => $this->id, 'file_id' => $doc_file->id, 'num' => $doc_num, 'status' => $doc['status'], 'access_role' => $doc['access_role'], 'owner_role' => 0, 'type' => $doc['type']);
         $gen = $this->sbr->addDocR($_doc);
         if ($gen) {
             $this->addDiffDocs($doc['id'], $gen, $doc['type']);
         }
         return $gen;
     }
 }