Example #1
0
 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';
     }
     $results[] = sprintf("generateBankInvoice = %s", $file_url);
     break;
 case DocGenReserves::ACT_COMPLETED_FRL_TYPE:
     $file_url = getFileUrl($doc->generateActCompletedFrl());
     $results[] = sprintf("generateActCompletedFrl = %s", $file_url);
     break;
 case DocGenReserves::ACT_SERVICE_EMP_TYPE:
     $file_url = getFileUrl($doc->generateActServiceEmp());
     $results[] = sprintf("generateActServiceEmp = %s", $file_url);
     break;
 case DocGenReserves::AGENT_REPORT_TYPE:
     $file_url = getFileUrl($doc->generateAgentReport());
     $results[] = sprintf("generateAgentReport = %s", $file_url);
     break;
 case DocGenReserves::RESERVE_OFFER_CONTRACT_TYPE:
     //case DocGenReserves::RESERVE_OFFER_AGREEMENT_TYPE:
     $file_url = (int) $doc->generateOffers();
     $results[] = sprintf("generateOffers = %s", $file_url);
     break;
 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;
 }
Example #3
0
/**
 * Вынесение решения арбитром
 * @param array $form
 * @return \xajaxResponse
 */
function reservesArbitrageApply($form)
{
    $objResponse = new xajaxResponse();
    $order_id = @$form['order_id'];
    $price_pay = (int) @$form['price'];
    //Сумма для выплаты исполнителю
    $allow_fb_frl = (bool) @$form['allow_fb_frl'];
    $allow_fb_emp = (bool) @$form['allow_fb_emp'];
    $orderModel = TServiceOrderModel::model();
    $orderModel->attributes(array('is_adm' => hasPermissions('tservices')));
    $order = $orderModel->getCard((int) $order_id, get_uid(false));
    if (!$order) {
        return $objResponse;
    }
    $reservesArbitrage = new ReservesArbitrage();
    $reservesArbitrage->db()->start();
    try {
        if ($price_pay > $order['reserve_data']['price']) {
            $price_pay = $order['reserve_data']['price'];
        }
        $price_back = $order['reserve_data']['price'] - $price_pay;
        //запоминаем суммы, которые надо выплатить сторонам, закрываем арбитраж и заказ
        $ok = $reservesArbitrage->closeArbitrage($order['reserve_data'], array('price_pay' => $price_pay, 'price_back' => $price_back, 'allow_fb_frl' => $allow_fb_frl, 'allow_fb_emp' => $allow_fb_emp));
        if ($ok) {
            $is_emp = true;
            //Закрываем заказ от лица заказчика
            $orderModel->changeStatus($order_id, 'close', $is_emp);
            //Отправляем уведомления
            $reservesSmail = new ReservesSmail();
            $reservesSmail->onApplyArbitrage($order, $price_pay);
            $order = $orderModel->getOrderData();
            //Новый статус отображаем без перезагрузки
            $order['reserve_data']['arbitrage_price'] = $price_pay;
            $order['reserve_data']['arbitrage_date_close'] = date('Y-m-d H:i:s');
            //Так как мы в статусах используем обьект то обновляем его данные
            $order['reserve']->setReserveData($order['reserve_data']);
            //$order['status'] = TServiceOrderModel::STATUS_EMPCLOSE;
            //Генерируем документы
            try {
                $doc = new DocGenReserves($order);
                if ($price_pay > 0) {
                    $doc->generateActCompletedFrl();
                }
                $doc->generateArbitrageReport();
            } catch (Exception $e) {
                require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/log.php';
                $log = new log('reserves_docs/' . SERVER . '-%d%m%Y.log', 'a', "%d.%m.%Y %H:%M:%S: ");
                $log->writeln(sprintf("Order Id = %s: %s", $order['id'], iconv('CP1251', 'UTF-8', $e->getMessage())));
            }
            $tservicesOrderHistory = new tservices_order_history($order_id);
            $tservicesOrderHistory->reserveArbitrageDecide($price_pay, $price_back);
            $tserviceOrderStatusWidget = new TServiceOrderStatus();
            $tserviceOrderStatusWidget->setIsOwner(false);
            $tserviceOrderStatusWidget->setOrder($order);
            $tserviceOrderStatusWidget->init();
            ob_start();
            $tserviceOrderStatusWidget->run();
            $sHtml = ob_get_contents();
            ob_end_clean();
            $objResponse->assign('tservices_order_status_' . $order_id, 'innerHTML', $sHtml);
        }
    } catch (Exception $e) {
        $reservesArbitrage->db()->rollback();
        $sHtml = tservices_helper::getMessage($e->getMessage(), 'error');
        $objResponse->call('TServices_Order.showBeforeStatus', $order_id, $sHtml);
        return $objResponse;
    }
    $reservesArbitrage->db()->commit();
    $objResponse->call('TServices_Order.hideBeforeStatus', $order_id);
    return $objResponse;
}
Example #4
0
 $reserveInstance = $orderModel->getReserve();
 if (!$reserveInstance->isClosed()) {
     throw new Exception('Not isClosed');
 }
 $types = explode(',', $doc_type);
 if (!count($types)) {
     throw new Exception('No type param');
 }
 $history = new tservices_order_history($order_id);
 $doc = new DocGenReserves($orderData);
 foreach ($types as $type) {
     $type = trim($type);
     switch ($type) {
         case DocGenReserves::ACT_COMPLETED_FRL_TYPE:
             deleteFiles($order_id, $type);
             $results['generateActCompletedFrl'] = getFileUrl($doc->generateActCompletedFrl());
             break;
         case DocGenReserves::ACT_SERVICE_EMP_TYPE:
             deleteFiles($order_id, $type);
             $results['generateActServiceEmp'] = getFileUrl($doc->generateActServiceEmp());
             break;
         case DocGenReserves::AGENT_REPORT_TYPE:
             deleteFiles($order_id, $type);
             $results['generateAgentReport'] = getFileUrl($doc->generateAgentReport());
             break;
         case DocGenReserves::LETTER_FRL_TYPE:
             deleteFiles($order_id, $type);
             $results['generateInformLetterFRL'] = getFileUrl($doc->generateInformLetterFRL());
             break;
     }
 }