Example #1
0
         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;
 case DocGenReserves::LETTER_FRL_TYPE:
     $file_url = getFileUrl($doc->generateInformLetterFRL());
     $results[] = sprintf("generateInformLetterFRL = %s", $file_url);
     break;
Example #2
0
<?php

ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE);
ini_set('max_execution_time', 0);
ini_set('memory_limit', '512M');
if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) {
    $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/');
}
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/DocGen/DocGenReserves.php";
try {
    $doc = new DocGenReserves(array('id' => 777, 'employer' => array('login' => 'employer33')));
    $doc->setField('text5_info', '1111111 2222222 33333333');
    $doc->generateActServiceEmp();
} catch (Exception $e) {
    print_r(iconv('CP1251', 'UTF-8', $e->getMessage()));
}
/*
$data = array(
    'price' => array(
        'format' => 'price',
        'option' => '',
        'value' => 1000
     )
);
*/
/*
try
{
   
 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;
 }
 /**
  * Переопределяем события после изменения статуса
  * резерва оплаты для заказов ТУ
  * 
  * @param type $new_status
  */
 public function afterChangeStatus($new_status)
 {
     $success = false;
     $time = time();
     switch ($new_status) {
         case self::STATUS_CANCEL:
             //Отмена заказа заказчиком то отменяем заказ если была попытка зарезервировать
             if ($_SESSION['uid'] == $this->reserve_data['emp_id']) {
                 require_once ABS_PATH . "/classes/billing.php";
                 $billing = new billing($this->reserve_data['emp_id']);
                 $billing->cancelReserveByOrder('reserves', $this->reserve_data['id']);
             }
             $success = true;
             break;
         case self::STATUS_ERR:
             $this->getOrderHistory()->reservePriceErr();
             break;
         case self::STATUS_RESERVE:
             //После успешного резервирования средств
             //переводим заказ в статус начала работы
             $src_id = @$this->reserve_data['src_id'];
             $success = $this->db()->update($this->TABLE_TSERVICE_ORDER, array('status' => TServiceOrderModel::STATUS_ACCEPT, 'accept_date' => date('Y-m-d H:i:s', $time)), 'id = ?i', $src_id);
             if ($success) {
                 $orderModel = TServiceOrderModel::model();
                 $order = $orderModel->getShortCard($src_id);
                 if ($order) {
                     //@todo: можно передать просто $this ?
                     $reserveInstance = ReservesModelFactory::getInstance(ReservesModelFactory::TYPE_TSERVICE_ORDER);
                     if ($reserveInstance) {
                         $reserveInstance->setSrcObject($orderModel);
                         $reserveInstance->setReserveData($this->reserve_data);
                         $order['reserve'] = $reserveInstance;
                     }
                     $this->getOrderHistory()->reservePriceSuccess($this->reserve_data['price']);
                     $order['reserve_data'] = $this->reserve_data;
                     $reservesSmail = new ReservesSmail();
                     $reservesSmail->attributes(array('order' => $order));
                     $reservesSmail->onReserveOrder();
                     //Генерируем документы
                     require_once ABS_PATH . '/classes/DocGen/DocGenReserves.php';
                     $doc = new DocGenReserves($order);
                     $doc->generateSpecification();
                 }
             }
             break;
         case self::STATUS_PAYED:
         case self::STATUS_ARBITRAGE:
             //@todo: генерируем документ когда резерв закрыт после всех выплат
             $src_id = @$this->reserve_data['src_id'];
             $orderModel = TServiceOrderModel::model();
             $order = $orderModel->getShortCard($src_id);
             if ($order) {
                 $this->getOrderHistory();
                 require_once ABS_PATH . '/classes/DocGen/DocGenReserves.php';
                 $order['reserve_data'] = $this->reserve_data;
                 $order['reserve'] = $this;
                 $doc = new DocGenReserves($order);
                 $doc->generateActServiceEmp();
                 $doc->generateAgentReport();
             }
         default:
             $success = true;
     }
     return $success;
 }
Example #5
0
 /**
  * @deprecated Не использовать. Выплата делается в очереди PGQ там же и повторяется
  * 
  * Крон переодического опроса API сервиса выплат
  * по сделкам в статусе ожидания выплаты
  * 
  * @todo: документация API рекомендует опрашивать с интервалом мах 30 минут
  * @todo: возможно не лучшее место для этого?
  * 
  * @param type $limit - количество сделок обрабатываемых за запуск
  * @return int - количество успешно обработанных сделок
  */
 public function cron($limit = 10)
 {
     return false;
     $reservesModel = new ReservesModel();
     $reserveDataList = $reservesModel->getReservesWithStatusPayByService(ReservesModel::SUBSTATUS_INPROGRESS, $limit);
     $cnt = 0;
     if ($reserveDataList) {
         $log = new log('reserves_docs/' . SERVER . '-%d%m%Y.log', 'a', "%d.%m.%Y %H:%M:%S: ");
         foreach ($reserveDataList as $reserveData) {
             $reserveInstance = ReservesModelFactory::getInstance($reserveData['type']);
             $reserveInstance->setReserveData($reserveData);
             $status = $this->payout($reserveInstance, $reserveData['pay_type']);
             $is_done = $reserveInstance->changePayStatus($status);
             if ($is_done && $reserveInstance->isClosed()) {
                 $cnt++;
                 $orderData = array('id' => $reserveData['src_id'], 'reserve_data' => $reserveInstance->getReserveData(), 'reserve' => $reserveInstance, 'employer' => array('login' => $reserveData['emp_login'], 'email' => $reserveData['emp_email']));
                 try {
                     $doc = new DocGenReserves($orderData);
                     $doc->generateActServiceEmp();
                     $doc->generateAgentReport();
                 } catch (Exception $e) {
                     $log->writeln(sprintf("Order Id = %s: %s", $orderData['id'], iconv('CP1251', 'UTF-8', $e->getMessage())));
                 }
             }
         }
     }
     return $cnt;
 }
Example #6
0
    $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;
        }
    }
    if (empty($results)) {
        $results['Nothink found?'] = 'Yep, sorry master.';
    }
} catch (\Exception $e) {