Example #1
0
 $exists_doc_types = array_diff($exists_doc_types, $doc_types);
 $base_doc_types = array(10, 20, 30, 40, 50, 60);
 if ($reserveInstance->isArbitrage()) {
     $base_doc_types = $reserveInstance->isStatusPayPayed() ? array(10, 20, 30, 40, 50, 60, 70) : array(20, 30, 40, 50, 60, 70);
 }
 //Если резерв по безналу то еще нужен и счет
 if (!$reserveInstance->isReserveByService()) {
     $base_doc_types[] = 5;
 }
 $needed_doc_types = array_diff($base_doc_types, $exists_doc_types);
 $history = new tservices_order_history($order_id);
 $doc = new DocGenReserves($orderData);
 if (!empty($_GET)) {
     foreach ($_GET as $key => $value) {
         $value = iconv("utf-8", "windows-1251", $value);
         $doc->setOverrideField($key, $value);
     }
 }
 foreach ($needed_doc_types as $needed_doc_type) {
     switch ($needed_doc_type) {
         case DocGenReserves::BANK_INVOICE_TYPE:
             $reserveBank = $reserveInstance->getReservesBank();
             if ($reserveBank) {
                 $reqv = $reserveBank->getCheckByReserveId($reserveInstance->getID());
                 if ($reqv) {
                     $file_url = getFileUrl($reserveInstance->getReservesBank()->generateInvoice2($reqv));
                 } else {
                     $file_url = 'Not CheckByReserveId';
                 }
             } else {
                 $file_url = 'Not ReservesBank';
 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;
 }