コード例 #1
0
 public function init()
 {
     $this->setBuyPopupTemplate('buy_popup_reserve.tpl.php');
     $uid = $this->uid;
     $reserve_id = $this->reserve_id;
     $reqvs = ReservesHelper::getInstance()->getUserReqvs($uid);
     $form_type = $reqvs['form_type'];
     $rez_type = $reqvs['rez_type'];
     $form_id = $this->ID . '_form';
     $rez_id = $this->ID . '_rez';
     $form_name = $form_type == sbr::FT_PHYS ? 'физическое лицо' : 'юридическое лицо';
     //$rez_name = $rez_type == sbr::RT_RU ? 'резидент РФ' : 'нерезидент РФ';
     $rez_name = sbr::getRezTypeText($rez_type);
     $options = array('popup_title_class_bg' => 'b-fon_bg_po', 'popup_title_class_icon' => 'b-icon__po', 'popup_title' => 'Резервирование бюджета', 'popup_subtitle' => '', 'items_title' => 'Сумма оплаты', 'popup_id' => $this->ID, 'unic_name' => $this->UNIC_NAME, 'form_name' => $form_name, 'rez_name' => $rez_name, 'items' => array(array('value' => $reserve_id, 'name' => $form_id), array('value' => $reserve_id, 'name' => $rez_id)), 'payments_title' => 'Способ резервирования', 'payments_exclude' => $this->payments_exclude[$form_type]);
     if ($form_type == sbr::FT_JURI) {
         $options['items'][] = array('value' => 1, 'name' => 'is_reserve_send_docs');
     }
     if ($this->reserveInstance->getReservePrice() >= self::MAX_PAYMEN_WM) {
         $options['payments_exclude'][] = self::PAYMENT_TYPE_WM;
     }
     if ($this->reserveInstance->getReservePrice() >= parent::MAX_PAYMENT_ALFA) {
         $options['payments_exclude'][] = self::PAYMENT_TYPE_ALFACLICK;
     }
     if ($this->reserveInstance->getReservePrice() >= parent::MAX_PAYMENT_SB) {
         $options['payments_exclude'][] = self::PAYMENT_TYPE_SBERBANK;
     }
     $options['payments_exclude'][] = self::PAYMENT_TYPE_PLATIPOTOM;
     parent::init($options);
 }
コード例 #2
0
 /**
  * Фабрика получает нужную сущность по ID резерва.
  * 
  * @param type $id
  *
  * @return bool
  */
 public static function getInstanceById($id)
 {
     $reserve_data = ReservesModel::model()->getReserveById($id);
     if (!$reserve_data) {
         return false;
     }
     $instance = static::getInstance($reserve_data['type']);
     if (!$instance) {
         return false;
     }
     $instance->setReserveData($reserve_data);
     return $instance;
 }
コード例 #3
0
 /**
  * Переопределяем обработчик событий после
  * возврата средств заказчику
  * 
  * @param type $new_status
  * @return type
  */
 public function afterChangeBackStatus($new_status)
 {
     $success = parent::afterChangeBackStatus($new_status);
     if (!$success) {
         return $success;
     }
     switch ($new_status) {
         case self::SUBSTATUS_INPROGRESS:
             $this->getOrderHistory()->reservePaybackReq();
             break;
         case self::SUBSTATUS_PAYED:
             $this->getOrderHistory()->reservePayback($this->getPayback());
             break;
         case self::SUBSTATUS_ERR:
             $this->getOrderHistory()->reservePaybackErr();
             break;
     }
     return $success;
 }
コード例 #4
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;
 }
コード例 #5
0
 public function ndflprice(ReservesModel $reserveInstance)
 {
     $pricePayNDFL = $reserveInstance->getPayoutNDFL();
     if ($pricePayNDFL > 0) {
         return $this->template(self::TEXT4_NDFL, array('ndfl_price' => $this->pricelong($pricePayNDFL), 'ndfl' => $reserveInstance::NDFL * 100));
     }
     return '';
 }