public function updateDocs($types = array(), $is_create = false, $override_data = array()) { ini_set('max_execution_time', 300); //ini_set('memory_limit', '512M'); if (empty($types)) { $is_create = true; } if (!$this->isReserveData()) { return false; } $orderModel = TServiceOrderModel::model(); $orderModel->attributes(array('is_adm' => true)); $orderData = $orderModel->getCard($this->getSrcId(), 0); if (!$orderData || !$orderModel->isReserve()) { return false; } $reserveInstance = $orderModel->getReserve(); if ($is_create) { //Если зарезервировали if ($reserveInstance->isStatusReserved()) { $base_doc_types[] = DocGenReserves::RESERVE_SPECIFICATION_TYPE; $base_doc_types[] = DocGenReserves::RESERVE_OFFER_CONTRACT_TYPE; $base_doc_types[] = DocGenReserves::RESERVE_OFFER_AGREEMENT_TYPE; } //Если резерв по безналу то нужен счет if (!$reserveInstance->isReserveByService()) { $base_doc_types[] = DocGenReserves::BANK_INVOICE_TYPE; } //Если сделка закрыта и исполнителю полагается выплата либо выплата в процессе if ($reserveInstance->isStatusPayInprogress() || $reserveInstance->isClosed() && (!$reserveInstance->isArbitrage() || $reserveInstance->isStatusPayPayed())) { $base_doc_types[] = DocGenReserves::ACT_COMPLETED_FRL_TYPE; } //Если сделка закрыта либо выплата в процессе if ($reserveInstance->isClosed() || $reserveInstance->isStatusPayInprogress()) { $base_doc_types[] = DocGenReserves::LETTER_FRL_TYPE; } //Если сделка закрыта if ($reserveInstance->isClosed()) { $base_doc_types[] = DocGenReserves::ACT_SERVICE_EMP_TYPE; $base_doc_types[] = DocGenReserves::AGENT_REPORT_TYPE; } //Если сделка закрыта по арбитражу if ($reserveInstance->isArbitrage() && $reserveInstance->isArbitrageClosed()) { $base_doc_types[] = DocGenReserves::ARBITRAGE_REPORT_TYPE; } $types = array_merge($types, $base_doc_types); } $types = array_unique($types); require_once ABS_PATH . '/classes/DocGen/DocGenReserves.php'; $this->getOrderHistory(); $doc = new DocGenReserves($orderData); $doc->deleteFiles($this->getSrcId(), $types); if (!empty($override_data)) { foreach ($override_data as $key => $value) { $doc->setOverrideField($key, $value); } } foreach ($types as $type) { switch ($type) { case DocGenReserves::BANK_INVOICE_TYPE: $reserveBank = $reserveInstance->getReservesBank(); if ($reserveBank) { $reqv = $reserveBank->getCheckByReserveId($reserveInstance->getID()); if ($reqv) { $reserveInstance->getReservesBank()->generateInvoice2($reqv); } } break; case DocGenReserves::ACT_COMPLETED_FRL_TYPE: $doc->generateActCompletedFrl(); break; case DocGenReserves::ACT_SERVICE_EMP_TYPE: $doc->generateActServiceEmp(); break; case DocGenReserves::AGENT_REPORT_TYPE: $doc->generateAgentReport(); break; case DocGenReserves::RESERVE_OFFER_CONTRACT_TYPE: //case DocGenReserves::RESERVE_OFFER_AGREEMENT_TYPE: $doc->generateOffers(); break; case DocGenReserves::RESERVE_SPECIFICATION_TYPE: $doc->generateSpecification(); break; case DocGenReserves::LETTER_FRL_TYPE: $doc->generateInformLetterFRL(); break; case DocGenReserves::ARBITRAGE_REPORT_TYPE: $doc->generateArbitrageReport(); break; } } return true; }