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); }
/** * Фабрика получает нужную сущность по 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; }
/** * Переопределяем обработчик событий после * возврата средств заказчику * * @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; }
/** * @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; }
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 ''; }