/** * Создание нового сгенерированного документа, перевод старого в статус удаленнго * * @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; } }