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); }
function NewAdvice($to_user, $msgtext) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sbr.php"; $objResponse = new xajaxResponse(); $to_user = intval($to_user); $sbr = new sbr(get_uid(false)); $isReqvsFilled = !$sbr->checkUserReqvs(); if ($isReqvsFilled && !is_emp($_SESSION['role'])) { $objResponse->call('alert', 'Заполните раздел «Финансы»'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } if (!$to_user) { $objResponse->call('alert', 'Ошибка'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } if (is_empty_html($msgtext)) { $objResponse->call('alert', 'Вы не заполнили форму.'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } if (strlen_real($msgtext) > paid_advices::MAX_DESCR_ADVICE) { $objResponse->call('alert', 'Рекомендация не должна быть больше ' . paid_advices::MAX_DESCR_ADVICE . ' символов'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } $advice = new paid_advices(); $new = $advice->add($to_user, $msgtext); if ($new === false) { $objResponse->call('alert', 'Ошибка отправки рекомендации.'); $objResponse->script("\$\$('a.advice-new').store('lock', 0);"); return $objResponse; } $objResponse->call('newAdviceResp', $res); return $objResponse; }
public function init() { global $js_file; $js_file['reserves_payout'] = 'reserves/reserves_payout.js'; $uid = get_uid(false); $reqvs = ReservesHelper::getInstance()->getUserReqvs($uid); $form_type = $reqvs['form_type']; $rez_type = $reqvs['rez_type']; $reqv = $reqvs[$form_type]; $payments = array(self::PAYMENT_TYPE_CARD => array('title' => 'Пластиковые<br/>карты', 'class' => 'b-button__pm_card', 'num' => @$reqv['el_ccard'], 'wait' => 'Идет выплата суммы.'), self::PAYMENT_TYPE_YA => array('title' => 'Яндекс.Деньги', 'class' => 'b-button__pm_yd', 'num' => @$reqv['el_yd'], 'wait' => 'Идет выплата суммы.'), self::PAYMENT_TYPE_BANK => array('title' => 'Банковский<br/>перевод', 'class' => 'b-button__pm_bank', 'num' => @$reqv['bank_rs'], 'wait' => 'Идет выплата суммы.'), self::PAYMENT_TYPE_RS => array('title' => 'Банковский<br/>перевод', 'class' => 'b-button__pm_bank', 'num' => @$reqv['bank_rs'], 'wait' => 'Идет выплата суммы.')); $form_list = array(sbr::FT_PHYS => 'физическое лицо', sbr::FT_JURI => 'юридическое лицо'); $this->options['form_txt'] = @$form_list[$form_type]; $this->options['rez_txt'] = sbr::getRezTypeText($rez_type); $allowed_payments = ReservesHelper::getInstance()->getAllowedPayoutTypes($form_type, $rez_type, $this->price); $this->options['payments'] = array_intersect_key($payments, $allowed_payments); $popup_id = self::getPopupId($this->options['idx']); $this->options['is_show'] = __paramInit('bool', $popup_id, $popup_id, false); }
/** * Поумолчанию доступно всем авторизованным. * * - ответы на проекты * * @param type $params * * @return bool */ protected function _upload($params, CFile $file) { $tableName = $file->getTableName(); $allow_download = $this->uid > 0; switch ($tableName) { case 'file_sbr': if ($this->uid > 0) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr.php'; $allow_download = (bool) sbr::isAllowDownloadFile($file->id, $this->uid); } else { $allow_download = false; } break; default: //остальные файлы публичные $allow_download = true; break; } return $allow_download; }
public static function listenRequest($src) { global $DB; $log = new log("pskb_listen/{$src}-" . SERVER . '-%d%m%Y.log', 'a', '%d.%m.%Y %H:%M:%S : '); ob_start(); var_dump(file_get_contents('php://input')); $out = ob_get_clean(); $log->writeln(iconv('utf8', 'cp1251', $out)); switch ($src) { case 'superCheck': $request = json_decode(file_get_contents('php://input')); if ($request) { $pskb = new pskb(); foreach ($request as $k => $pskb_req) { $pskb_req = new pskb_lc(json_encode($pskb_req)); $row = $pskb->getLCbyLCId($pskb_req->id); if ($pskb_req->history) { foreach ($pskb_req->history as $pskb_lc) { if (!$pskb_lc->id) { continue; } // Пытаемся определить uid если он пустой, подходит только для одноэтапной сделки // @todo с многоэтапными тоже что-то придумать надо if ($pskb_lc->uid == '' || $pskb_lc->uid == null) { $sql = "SELECT s.id FROM pskb_lc pl\n INNER JOIN sbr s ON s.id = pl.sbr_id\n WHERE pl.lc_id = ? AND stages_cnt = 1"; // Запрос делаем что-бы точно проверить что этап в сделке один единственный $sbr_id = $DB->val($sql, $pskb_req->id); if ($sbr_id > 0) { $pskb_lc->uid = "{$sbr_id}-1"; } } if ($DB->val("SELECT id FROM pskb_lc_supercheck WHERE lc_id = ? AND uid = ? AND state = ? AND date = ? AND target = ?b", $pskb_req->id, "{$pskb_lc->uid}", $pskb_lc->state, $pskb_lc->date, $pskb_lc->target ? true : false) > 0) { continue; // В базе уже есть идентичная запись } $insert = array('lc_id' => $pskb_req->id, 'state' => $pskb_lc->state, 'date' => date('c', strtotime($pskb_lc->date)), 'uid' => "{$pskb_lc->uid}", 'target' => $pskb_lc->target ? true : false, 'sum' => $pskb_lc->sum, 'account' => $pskb_lc->account, 'ps' => $pskb_lc->ps); $DB->insert('pskb_lc_supercheck', $insert); continue; /** * @deprecated Пока все что ниже работать не должно просто пишем в базу историю которую возвращают */ $stg = sbr_meta::getStatePayout(explode('-', $pskb_lc->uid)); if ($pskb_lc->state == $stg['state']) { continue; } switch ($pskb_lc->state) { case self::PAYOUT_END: // отправлено по реквизитам // отправлено по реквизитам case self::PAYOUT_ERR: // зачислено в ВК // выплачено $sbr = new sbr($stg['emp_id']); $stage = $sbr->getStage($stg['stage_id']); $stage->getArbitrage(false, false); if ($stage->arbitrage && $stage->arbitrage['resolved']) { $emp_percent = abs(sbr::EMP - $stage->arbitrage['frl_percent']); $frl_percent = abs(sbr::FRL - $stage->arbitrage['frl_percent']); } else { $frl_percent = 1; } $frl_payout = true; $emp_payout = true; if ($frl_percent > 0) { $frl_payout = !$stage->payoutAgnt($stg['frl_id'], new pskb($stage->sbr->data['id']), $pskb_lc); } if ($emp_percent > 0) { $emp_payout = !$stage->payoutAgnt($stg['emp_id'], new pskb($stage->sbr->data['id']), $pskb_lc); } if (!$frl_payout && !$emp_payout) { continue; } break; } $lc = $pskb_req; if (!$lc->id || $lc->state == $row['state']) { continue; } switch ($lc->state) { case self::STATE_COVER: case self::STATE_END: if ($lc->state == self::STATE_END) { $up_data['ended'] = $pskb_lc->date; } break; case self::STATE_ERR: break; default: continue; } $up_data['state'] = $lc->state; $up_data['stateReason'] = $lc->stateReason; $pskb->upLC($up_data, $row['lc_id']); } } } } break; default: break; } return true; }
/** * Запись данных расчета СБР калькулятора * * @param array $calc Данные * @param string $hash Получившийся хэш * @return array Записанные данные */ function setSbrCalc($calc, &$hash) { global $DB; $calc = serialize($calc); $hash = sbr::getSbrCalcHash($calc); if (($info = sbr::getSbrCalc($hash)) == false) { $sql = "INSERT INTO sbr_calc (calc, hash) VALUES(?, ?)"; $info = unserialize($calc); $DB->query($sql, $calc, $hash); return $info; } return $info; }
<?php $crumbs = array(0 => array('href' => '/' . sbr::NEW_TEMPLATE_SBR . '/', 'name' => '«Мои Сделки»'), 1 => array('href' => '', 'name' => 'Калькулятор «Безопасной Сделки»')); if (isset($_GET['hash']) && ($rq = sbr::getSbrCalc($_GET['hash'])) !== false) { switch ($rq['currency']) { case exrates::BANK: $currency = "на банковский счет"; break; case exrates::YM: $currency = "на Яндекс.Деньги"; break; case exrates::WMR: $currency = "на WebMoney"; break; case exrates::FM: $currency = "на Счет сайта (в FM)"; break; case exrates::WEBM: $currency = "на Веб-кошелек"; break; } $setting = array("usr_type" => array('type' => $rq['usr_type'], 'text' => $rq['usr_type'] == sbr::FRL + 1 ? 'исполнитель' : 'заказчик'), "frl_type" => array('type' => $rq['frl_type'], 'text' => $rq['frl_type'] == sbr::FT_PHYS ? 'физическим лицом' : 'юридическим лицом'), "rez_type" => array('type' => $rq['rez_type'], 'text' => $rq['rez_type'] == sbr::RT_RU ? 'резидентом РФ' : 'нерезидентом Российской Федерации'), "scheme_type" => array('type' => $rq['scheme_type'], 'text' => $rq['scheme_type'] == sbr::SCHEME_LC ? 'договор с аккредитивной формой расчетов' : 'договор подряда'), "currency" => array('type' => $rq['currency'], 'text' => $currency), "calc_role" => array('type' => 1, 'text' => $rq['usr_type'] == sbr::FRL + 1 ? 'с работодателем' : 'с фрилансером')); ?> <script type="text/javascript"> window.addEvent('domready', function() { $('bank_scheme').addEvent('click', function() { setValueInput('currency', <?php echo exrates::BANK; ?> ); });
?> _set" <?php echo $form_type != sbr::FT_JURI ? ' style="display:none"' : ''; ?> > <?php sbr::view_finance_tbl($reqvs, sbr::FT_JURI, NULL, '', '', array(), array('theme' => 'new', 'group' => array(1, 1))); sbr::view_finance_tbl($reqvs, sbr::FT_JURI, NULL, 'Регистрация организации', '', array(), array('theme' => 'new', 'group' => array(2, 9), 'caption_expand' => true)); sbr::view_finance_tbl($reqvs, sbr::FT_JURI, NULL, 'Реквизиты организации', '', array(), array('theme' => 'new', 'group' => array(10, 17), 'subdescr' => array(12 => 'Заполните, только если эти данные обязательны для перевода средств в вашем банке.', 17 => 'Заполните, только если эти данные обязательны для перевода средств в вашем банке.'), 'caption_expand' => true)); ?> <?php sbr::view_finance_tbl($reqvs, sbr::FT_JURI, 'BANK', 'Банковские реквизиты', '', array(), array('theme' => 'new', 'caption_expand' => true, 'subdescr' => array(20 => $rez_type == sbr::RT_UABYKZ ? 'Содержит 20 символов. Обратите внимание: к/с начинается на 30111810' : '', 28 => 'БИК — Банковский Идентификационный Код, состоит из 9 цифр. Уточните у вашего банка о необходимости этого поля', 29 => 'Уточните у вашего банка о необходимости этого поля'))); ?> <?php sbr::view_finance_tbl($reqvs, sbr::FT_JURI, null, 'Контактная информация', '', array(), array('theme' => 'new', 'group' => array(30, 33), 'subdescr' => array(32 => 'Укажите, если есть'), 'caption_expand' => true)); ?> <div class="b-layout__txt b-layout__txt_padleft_180 b-layout__txt_color_c10600"> Если вы планируете работать на сайте как физическое лицо, не забудьте заполнить форму для <a class="b-layout__link b-layout__link_bordbot_dot_0f71c8" href="javascript:void(0)" onclick="finance.switchReqvFT(<?php echo sbr::FT_JURI; ?> ,<?php echo sbr::FT_PHYS; ?> )">физического лица</a> (при переходе по ссылке данные юридического лица не потеряются). </div> </span> <div class="b-buttons b-buttons_padtop_40 b-buttons_padbot_20 b-buttons_padleft_180"> <a class="b-button b-button_flat b-button_flat_green finance-save" href="javascript:void(0)">Сохранить</a> <span class="b-buttons__txt b-buttons__txt_padleft_10">или</span>
$msgs = opinions::GetMsgs($to_id, $msg_cntr, $ppage, $num_msgs, $error, $tbl_type, $sort > 0 ? $sort : false, $period, $author); $opCount = $msgs ? count($msgs) : 0; } $filterCounts = opinions::getFilterCounts($to_id, is_emp($user->role), $sort, $author, $period); /** * @deprecated #0015627 if ($uid) { $can_post = opinions::CheckUserCanPost($uid, $to_id); } */ $_SESSION['page_user_id'] = $user->uid; if ($ops_type == 'norisk') { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/paid_advices.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sbr.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/exrates.php"; $sbr = new sbr(get_uid(false)); $isReqvsFilled = !$sbr->checkUserReqvs(); $exrates = new exrates(); $EXR = $exrates->GetAll(); $paid_advice = new paid_advices(); $can_post = 0; $_attached = array(); function set_loaded_attach($type, $id, $name, $link = false) { global $_attached; $_attached['ids'][$type] = $id; $_attached['ext'][$type] = getICOFile(CFile::getext($name)); if (strlen($name) > 40) { $name = substr($name, 0, 18) . '...' . substr($name, strlen($name) - 18, 18); } $_attached['name'][$type] = $name;
/** * Создание нового сгенерированного документа, перевод старого в статус удаленнго * * @param array $doc Данные старого документа * @param string $action Действие с документом * @return boolean|integer */ public function recreateDoc($doc, $action) { $doc_num = null; if ($doc['id'] != $doc['first_doc_id'] && $doc['id'] != $doc['second_doc_id']) { $this->redate_act = date('d.m.Y', strtotime($doc['publ_time'])); } else { $doc_date = $this->sbr->getDoc($doc['first_doc_id'], true, true); $this->redate_act = date('d.m.Y', strtotime($doc_date['publ_time'])); } if ($action == 'create') { if ($doc['id'] != $doc['first_doc_id'] && $doc['id'] != $doc['second_doc_id']) { $delete = $this->changeStatusDoc($doc['id']); if ($delete) { $this->removeEvent(30, true); // Удаляем событие удаления файла оно не нужно } } if ($doc['id'] == $doc['second_doc_id']) { $sdel = $this->deleteSecondDoc($doc['id']); if ($sdel) { $this->removeEvent(29, true); // Удаляем событие добавления файла } $doc['id'] = $doc['first_doc_id']; } } else { if ($action == 'remove') { $this->removeEvent(29, true); // Удаляем событие добавления файла старое $this->changeStatusDoc($doc['id'], false); $this->removeEvent(29, true); // Удаляем событие добавления файла новое, тк файл был сгенерирован пользователь и там добавлен $this->deleteSecondDoc($doc['second_doc_id']); return true; } } switch ($doc['type']) { case sbr::DOCS_TYPE_ACT: if ($this->sbr->scheme_type == sbr::SCHEME_PDRD2) { $doc_file = $this->generateFrlActPdrd($doc_err, $this->redate_act); } elseif ($this->sbr->scheme_type == sbr::SCHEME_LC) { $doc_file = $this->generateCompletedAct($doc_err); // формируем акт исполнителя по агентской схеме. } break; case sbr::DOCS_TYPE_TZ_PDRD: $doc_file = $this->generateTzPdrd($doc_err, $this->redate_act); break; case sbr::DOCS_TYPE_WM_APPL: $doc_file = $this->generateFrlWMAppl($doc_err); break; case sbr::DOCS_TYPE_YM_APPL: $doc_file = $this->generateFrlYMAppl($doc_err); break; case sbr::DOCS_TYPE_ARB_REP: if ($this->sbr->scheme_type == sbr::SCHEME_LC) { $is_emp_arb = $this->status == sbr_stages::STATUS_ARBITRAGED && $this->arbitrage['resolved'] && floatval($this->arbitrage['frl_percent']) == 0; $result = html_entity_decode($this->arbitrage['result'], ENT_QUOTES, 'cp1251'); if (!$is_emp_arb && (strpos($reason, 'Cогласно п. 9.1.2. Расторжение Соглашения') === false && strpos($result, 'Соглашение сторон Расторжение Соглашения') === false)) { $doc_file = $this->generateArbReportFrl($doc_err, $doc_num); } else { $doc_file = $this->generateArbReportEmp($doc_err, $doc_num); } } elseif ($this->sbr->scheme_type == sbr::SCHEME_PDRD2) { if ($doc['access_role'] == sbr::DOCS_ACCESS_EMP) { $doc_file = $this->generateArbReportPdrdEmp($doc_err); } elseif ($doc['access_role'] == sbr::DOCS_ACCESS_FRL) { $doc_file = $this->generateArbReportPdrdFrl($doc_err); } } break; } if ($doc_file) { $_doc = array('stage_id' => $this->id, 'file_id' => $doc_file->id, 'num' => $doc_num, 'status' => $doc['status'], 'access_role' => $doc['access_role'], 'owner_role' => 0, 'type' => $doc['type']); $gen = $this->sbr->addDocR($_doc); if ($gen) { $this->addDiffDocs($doc['id'], $gen, $doc['type']); } return $gen; } }
/** * Возвращает часть ответа с отзывами о пользователе * * @param array $aData информация о отзывами о пользователе * @return array */ private function _getUserOpinionsData($aData) { require_once ABS_PATH . '/classes/paid_advices.php'; require_once ABS_PATH . '/classes/opinions.php'; require_once ABS_PATH . '/classes/sbr_meta.php'; require_once ABS_PATH . '/classes/sbr.php'; $aReturn = array(); $msgs = sbr::getUserFeedbacks($aData['uid'], is_emp($aData['role']), false, 0, false, false); // рекомендации $msgs2 = opinions::GetMsgs($aData['uid'], null, null, null, $error, 'users', false, 0, 0); // мнения if (is_array($msgs) && $msgs) { foreach ($msgs as $theme) { $oUser = new users(); $oUser->GetUserByUID($theme['fromuser_id']); $taData = array(); $taClassVars = array_keys(get_class_vars('users')); foreach ($taClassVars as $sVar) { $taData[$sVar] = $oUser->{$sVar}; } if (!is_emp($taData['role'])) { require_once ABS_PATH . '/classes/freelancer.php'; $aTmp = freelancer::getFreelancerByLogin(array($taData['login'])); $taData['spec'] = $aTmp[0]['spec']; } $aReturn[] = array("id" => $theme['id'], 'type' => $theme['is_payed'] ? 2 : 1, "from_user_id" => $theme['fromuser_id'], "to_user_id" => $theme['touser_id'], "rate" => $theme['sbr_rating'], "text" => $theme['descr'] ? iconv('cp1251', 'utf-8', $theme['descr']) : '', "status" => 1, "create_time" => strtotime($theme['posted_time']), "update_time" => $theme[''], "user" => $this->_getUserData($taData)); } } if (is_array($msgs2) && $msgs2) { foreach ($msgs2 as $opinion) { $oUser = new users(); $oUser->GetUserByUID($opinion['fromuser_id']); $taData = array(); $taClassVars = array_keys(get_class_vars('users')); foreach ($taClassVars as $sVar) { $taData[$sVar] = $oUser->{$sVar}; } if (!is_emp($taData['role'])) { require_once ABS_PATH . '/classes/freelancer.php'; $aTmp = freelancer::getFreelancerByLogin(array($taData['login'])); $taData['spec'] = $aTmp[0]['spec']; } $aReturn[] = array("id" => $opinion['id'], 'type' => 2, "from_user_id" => $opinion['fromuser_id'], "to_user_id" => $opinion['touser_id'], "rate" => $opinion['rating'], "text" => $opinion['msgtext'] ? iconv('cp1251', 'utf-8', $opinion['msgtext']) : '', "status" => 1, "create_time" => strtotime($opinion['post_time']), "update_time" => $opinion['modified'] ? strtotime($opinion['modified']) : 0, "user" => $this->_getUserData($taData)); } } return $aReturn; }
/** * Проверить наличие финансовой информации * * @param type $uid * @return boolean */ public function isValidUserReqvs($uid, $is_emp = false) { if (isset($this->is_valids[$uid])) { return $this->is_valids[$uid]; } $reqvs = $this->getUserReqvs($uid); if (!$reqvs || !$reqvs['form_type']) { return false; } $reqv = $reqvs[$reqvs['form_type']]; //@todo: использую существующий метод вместо своего $errors = sbr::checkRequired($reqvs['form_type'], $reqvs['rez_type'], $reqv, $is_emp); $is_valid = empty($errors); //Если фрилансер физик и не резидент //то проверяем есть ли скан паспорта //@todo: это доп.проверка так как на странице финансов это поле обязательно //то возможно данные были заполнены еще до ввода скана в обязаловку //Позже после того как пометим всех нерезидентов у которых нет сканов //как не корректные финансы - проверку можно убрать if ($is_valid && !$is_emp && $reqvs['form_type'] == sbr::FT_PHYS) { require_once ABS_PATH . "/classes/account.php"; $account = new account(); $account->GetInfo($uid, true); $is_valid = $account->isExistAttach(); if (!$is_valid) { session::setFlashMessage(account::MSG_UPLOAD_REQ, 'isValidUserReqvs'); } } //если исполнитель беженец то проверяем действительны ли еще у него документы if ($is_valid && !$is_emp && in_array($reqvs['rez_type'], array(sbr::RT_REFUGEE, sbr::RT_RESIDENCE))) { $is_valid = isset($reqv['idcard_to']) && !empty($reqv['idcard_to']) ? strtotime($reqv['idcard_to']) > strtotime('+ 1 day') : false; if (!$is_valid) { session::setFlashMessage(account::MSG_UPLOAD_OLD, 'isValidUserReqvs'); } } /* $reqv = array_filter($reqv, function($value){ return $value !== null && !empty($value); }); $valid_keys = array_keys($reqv); $req_keys_more = array(); $req_keys = array( 'fio', 'birthday', 'mob_phone' ); switch($reqvs['form_type']) { case sbr::FT_PHYS: $req_keys_more = array( 'idcard_ser', 'idcard', 'idcard_by', 'address_reg', 'address' ); break; case sbr::FT_JURI: $req_keys_more = array( 'full_name', 'address_jry' ); if($reqvs['rez_type'] == sbr::RT_RU) { $req_keys_more[] = 'type'; } break; } $req_keys = array_merge($req_keys, $req_keys_more); $is_valid = (count(array_intersect($req_keys, $valid_keys)) == count($req_keys)); */ $this->is_valids[$uid] = $is_valid; return $is_valid; }
function sbrCalc($frl_type, $rez_type, $scheme_type, $currency, $sbr_cost, $emp_cost, $frl_cost, $usr_type) { session_start(); $frl_type = intval($_POST['xjxargs']['frl_type']); $rez_type = intval($_POST['xjxargs']['residency']); $scheme_type = intval($_POST['xjxargs']['scheme_type']); $currency = intval($_POST['xjxargs']['currency']); $sbr_cost = $_POST['xjxargs']['sbr_cost']; $emp_cost = $_POST['xjxargs']['emp_cost']; $frl_cost = $_POST['xjxargs']['frl_cost']; $usr_type = $_POST['xjxargs']['usr_type']; $_POST['xjxargs'] = array('frl_type' => $frl_type, 'rez_type' => $rez_type, 'scheme_type' => $scheme_type, 'currency' => $currency, 'sbr_cost' => $sbr_cost, 'emp_cost' => $emp_cost, 'frl_cost' => $frl_cost, 'usr_type' => $usr_type); // Заплатка для того чтобы работала CSRF xajax $hash = ''; sbr::setSbrCalc($_POST['xjxargs'], $hash); $_POST = $_POST['xjxargs']; foreach ($_POST as $k => $v) { if (!in_array($k, array('sbr_cost', 'frl_cost', 'emp_cost'))) { continue; } $_POST[$k] = str_replace(',', '.', $v); } $sbr_cost = __paramInit('money', null, 'sbr_cost', 0.0, 10); $emp_cost = __paramInit('money', null, 'emp_cost', 0.0, 10); $frl_cost = __paramInit('money', null, 'frl_cost', 0.0, 10); $err = 0; if (!$frl_type || !$frl_type || !$scheme_type || !$currency) { $err = 1; } if ($sbr_cost + $emp_cost + $frl_cost <= 0) { $err = 1; } if ($sbr_cost && $sbr_cost < sbr_stages::MIN_COST_RUR) { $err = 1; $res['msg'] = iconv('CP1251', 'UTF8', 'Минимальный бюджет проекта - ' . sbr_stages::MIN_COST_RUR . ' руб.'); } if ($sbr_cost && $sbr_cost < sbr_stages::MIN_COST_RUR_PDRD && ($scheme_type == sbr::SCHEME_PDRD || $scheme_type == sbr::SCHEME_PDRD2)) { $err = 1; $res['msg'] = iconv('CP1251', 'UTF8', 'Минимальный бюджет проекта - ' . sbr_stages::MIN_COST_RUR_PDRD . ' руб.'); } if (!get_uid(false) || $err) { $res['success'] = false; echo json_encode($res); return; } $sbr_meta = sbr_meta::getInstance(); $sbr_meta->scheme_type = $scheme_type; $schemes = $sbr_meta->getSchemes(); $emp_total = $frl_total = 0; $emp_tax = $frl_tax = 0; $tcost = $sbr_cost; $sch = null; foreach ($schemes as $id => $scheme) { if ($scheme['type'] != $scheme_type) { continue; } $sch = $scheme; } $_taxes = $taxes = array(); $rrq = array('U' => 0, 'Ff' => $frl_type, 'P' => $currency, 'Rf' => $rez_type); $pct = 0; foreach ($sch['taxes'][0] as $id => $tax) { $cost = sbr_meta::calcAnyTax($tax['id'], $tax['scheme_id'], $tcost, $rrq); $pct = $cost / $tcost; if (!$pct) { continue; } $tax['pct'] = $pct; $_taxes['frl'][] = $tax; $frl_tax += $pct * 100; } $rrq = array('U' => 1, 'Ff' => $frl_type, 'P' => $currency, 'Rf' => $rez_type, 'C' => $tcost); foreach ($sch['taxes'][1] as $id => $tax) { $cost = sbr_meta::calcAnyTax($tax['id'], $tax['scheme_id'], $tcost, $rrq); $pct = $cost / $tcost; if (!$pct) { continue; } $tax['pct'] = $pct; $_taxes['emp'][] = $tax; $emp_tax += $pct * 100; } if ($sbr_cost) { $emp_cost = $sbr_cost + $sbr_cost * ($emp_tax / 100); $frl_cost = $sbr_cost - $sbr_cost * ($frl_tax / 100); } elseif ($emp_cost) { $sbr_cost = $emp_cost - $emp_cost / (100 + $emp_tax) * $emp_tax; $frl_cost = $sbr_cost - $sbr_cost * $frl_tax / 100; } elseif ($frl_cost) { $sbr_cost = $frl_cost + $frl_cost / (100 - $frl_tax) * $frl_tax; $emp_cost = $sbr_cost + $sbr_cost * ($emp_tax / 100); } if ($sbr_cost && $sbr_cost < sbr_stages::MIN_COST_RUR) { $err = 1; $res['msg'] = iconv('CP1251', 'UTF8', 'Минимальный бюджет проекта - ' . sbr_stages::MIN_COST_RUR . ' руб.'); $res['success'] = false; echo json_encode($res); return; } if ($rez_type == sbr::RT_UABYKZ && $sbr_cost && $sbr_cost > sbr::usd2rur(sbr::MAX_COST_USD)) { $err = 1; $sum = sbr_meta::view_cost(sbr::usd2rur(sbr::MAX_COST_USD), exrates::BANK); $sum = html_entity_decode($sum); $res['msg'] = iconv('CP1251', 'UTF8', 'Максимальный бюджет ' . $sum . ', поскольку исполнитель не является резидентом Российской Федерации'); $res['success'] = false; echo json_encode($res); return; } if ($_taxes['frl']) { foreach ($_taxes['frl'] as $k => $tax) { $cost = $sbr_cost * $tax['pct']; if ($tax['tax_id'] == $sbr_meta->getTaxByCode('TAX_NDFL') || $tax['tax_id'] == $sbr_meta->getTaxByCode('TAX_NDFL_NR')) { $cost = sbr_meta::ndfl_round($cost); } $taxes['frl'][] = array('id' => $tax['id'], 'scheme' => $scheme_type, 'cost' => sbr_meta::view_cost($cost, null, false)); $frl_total += $cost; } } foreach ($_taxes['emp'] as $k => $tax) { $cost = $sbr_cost * $tax['pct']; if ($tax['tax_id'] == $sbr_meta->getTaxByCode('TAX_NDFL') || $tax['tax_id'] == $sbr_meta->getTaxByCode('TAX_NDFL_NR')) { $cost = sbr_meta::ndfl_round($cost); } $taxes['emp'][] = array('id' => $tax['id'], 'scheme' => $scheme_type, 'cost' => sbr_meta::view_cost($cost, null, false)); $emp_total += $cost; } $res['usr_type'] = intval($_POST['usr_type']); $res['taxes'] = $taxes; $res['emp_total'] = sbr_meta::view_cost($emp_total, null, false); $res['frl_total'] = sbr_meta::view_cost($frl_total, null, false); $res['emp_cost'] = round($sbr_cost + $emp_total, 2); $res['frl_cost'] = round($sbr_cost - $frl_total, 2); $res['sbr_cost'] = round($sbr_cost, 2); $res['rating_get'] = sbr_meta::getSBRRating($res['sbr_cost']); $res['hash'] = $GLOBALS['host'] . '/' . sbr::NEW_TEMPLATE_SBR . '/?site=calc&hash=' . $hash; $res['success'] = true; echo json_encode($res); return; }
<tr class="b-layout__tr"> <td class="b-layout__td b-layout__td_padtop_20 b-layout__td_width_200 b-layout__td_padbot_15 b-layout__td_width_full_iphone b-layout__td_pad_null_ipad"> <div class="b-layout__txt b-layout__txt b-layout__txt_padtop_5 b-layout__txt_padright_20"> Скан-копии страниц паспорта </div> </td> <td id="attach_block" class="b-layout__td b-layout__td_padtop_20 b-layout__td_padbot_15 b-layout__td_padright_10 b-layout__td_width_full_iphone b-layout__td_pad_null_ipad"> <?php // прикрепить скан $params = array('file_description' => ' Необходимы начальная страница с основными данными и страница с данными о адресе регистрации (если регистрация предусмотрена законодательством вашей страны).<br/> Допустимы четко различимые сканы (или фото) страниц в файлах формата jpg, jpeg или png.', 'button_title' => 'Прикрепить скан', 'new_interface' => true, 'css_class' => 'b-file_padbot_20', 'disabled' => $block_finance_edit, 'req_txt' => 'Разрешенные форматы: jpg, jpeg или png.', 'error' => isset($error['sbr']['err_attach']) ? $error['sbr']['err_attach'] : null); if ($is_adm) { $params['hiddens'] = array('uid' => $uid, 'hash' => paramsHash(array($uid))); } sbr::view_finance_files('finance_doc', $attachedFilesDoc, $attachDoc, $params); ?> </td> </tr> </tbody> </table> </span> <?php } ?> <?php if (!$block_finance_edit) { ?> <table class="b-layout__table b-layout__table_width_full"> <tr class="b-layout__tr"> <td class="b-layout__td b-layout__td_width_200 b-layout__td_padbot_15 b-layout__td_width_full_iphone b-layout__td_pad_null_ipad">
/** * Посылаем уведомление фрилансеру о том что документы по СБР получены. * * @param string $suids Значение типа 27_11 где 27 - ИД Этапа СБР, 11 - ИД Пользователя * * @return bolean */ public function docsReceivedSBR($suids) { session_start(); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr.php'; list($stage_id, $user_id) = explode('_', $suids); $sbr = new sbr($user_id); $stage = current($sbr->getStages($stage_id)); $t_user = new users(); $t_user->GetUserByUID($user_id); $this->subject = "Получены документы по «Безопасной Сделке» №{$stage->data['sbr_id']}/{$stage->data['id']}"; $message = "Отправленные вами документы по «Безопасной Сделке» №{$stage->data['sbr_id']}/{$stage->data['id']} получены компанией FL.ru. \n На следующем этапе <a href='https://feedback.fl.ru/{$this->_addUrlParams('f', '?')}'>завершения текущей «Безопасной Сделки»</a> вам будут перечислены денежные средства в счет оплаты за выполненную работу. \n Вы можете получить дополнительную информацию относительно документации по «Безопасным Сделкам» в соответствующем <a href='https://feedback.fl.ru/{$this->_addUrlParams('f', '?')}'>разделе «Помощи»</a>."; $this->recipient = "{$t_user->uname} {$t_user->usurname} [{$t_user->login}] <" . $t_user->email . '>'; $this->message = $this->GetHtml($t_user->uname, $message, array('header' => 'default', 'footer' => 'simple_norisk')); return $this->SmtpMail('text/html'); }
} $sbr->setGetterSchemes(0); $count_old_sbr = $sbr->getCountCurrentsSbr(); $sbr->setGetterSchemes(1); $footer_norisk = true; setlocale(LC_ALL, 'en_US.UTF-8'); define('IN_SBR', true); define('DEBUG', defined('IS_LOCAL') && IS_LOCAL || defined('SERVER') && (SERVER == 'beta' || SERVER == 'alpha')); $js_file = array('/scripts/sbr.js', '/scripts/sbr2.js', '/scripts/finance.js'); //$css_file = "norisk-user.css"; $content = '../sbr/content.php'; $action = __paramInit('string', 'action', 'action'); $sbr_id = __paramInit('integer', 'id'); $sbrss_classes = sbr::$ss_classes; $sbrss_classes[sbr::STATUS_CHANGED][1] = $sbr->isEmp() ? 'Измененные «Безопасные Сделки» без утверждения' : 'Измененные «Безопасные Сделки», ожидающие вашего согласия'; sbr::$ss_classes = array(sbr::STATUS_NEW => array('nr-list-new', 'Новые «Безопасные Сделки» без утверждения'), sbr::STATUS_CHANGED => array('nr-list-changed', $sbr->isEmp() ? 'Измененные «Безопасные Сделки» без утверждения' : 'Измененные «Безопасные Сделки», ожидающие вашего согласия'), sbr::STATUS_PROCESS => array('nr-list-progress', 'В разработке'), sbr::STATUS_CANCELED => array('nr-list-canceled', 'Отмененные проекты'), sbr::STATUS_REFUSED => array('nr-list-canceled', 'Отклоненные проекты'), sbr::STATUS_COMPLETED => array('nr-list-completed', 'Завершенные')); if ($site !== 'calc') { if ($sbr->isAdmin() || $sbr->isAdminFinance()) { include '../sbr/admin/index.php'; } else { if (!$sbr->isEmp()) { include '../sbr/freelancer/index.php'; } else { include '../sbr/employer/index.php'; } } } // Общее. switch ($site) { case 'history': $inner = 'history.php';
public static function getNameForMail($sbr, $type = 'stage') { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr.php'; $_sbr = new sbr($sbr['e_uid']); $sbr_num = $_sbr->getContractNum($sbr['sbr_id'], $sbr['scheme_type'], $sbr['posted']); return "{$sbr_num} - {$sbr[$type . '_name']}"; }
/** * Уведомление обоим участникам СБР о вынесении решения арбитража. * @param array $events информация по событиям (если событий нескольлко, то содержит несколько элементов). */ function SbrArbResolved($events) { $ev0 = $events[0]; $this->subject = "Арбитраж вынес решение по Безопасной Сделке (проект «{$ev0['sbr_name']}»)"; $url = $GLOBALS['host'] . '/' . sbr::NEW_TEMPLATE_SBR . '/'; $sbr = new sbr(NULL); $stage = $sbr->getStage($ev0['own_id']); $arb = $stage->getArbitrage(false, false); for ($e = 0; $e < 2; $e++) { $r = $e ? 'e_' : 'f_'; $stage_name = sbr_meta::getNameForMail($ev0); if ($r == 'f_') { $userlink = $GLOBALS["host"] . "/users/" . $ev0['e_login']; $usr = "******"; } else { $userlink = $GLOBALS["host"] . "/users/" . $ev0['f_login']; $usr = "******"; } $msg = "Информируем Вас о том, что Арбитраж вынес решение в Сделке «<a href='{$url}?site=Stage&id={$ev0['own_id']}{$this->_addUrlParams($r == 'e_' ? 'e' : 'f', '&')}'>{$stage_name}</a>» и закрыл ее. "; $msg .= "Пожалуйста, перейдите в <a href='{$url}?site=Stage&id={$ev0['own_id']}{$this->_addUrlParams($r == 'e_' ? 'e' : 'f', '&')}'>сделку</a>, чтобы ознакомиться с решением Арбитража и оставить отзыв {$usr}, а также отзыв сервису Безопасная Сделка."; //$msg = "«Арбитраж» сервиса «Сделка без риска» вынес решение по задаче «<a href='{$url}?site=Stage&id={$ev0['own_id']}{$this->_addUrlParams($r == 'e_' ? 'e' : 'f', '&')}'>{$ev0['stage_name']}</a>» проекта <a href='{$url}?id={$ev0['sbr_id']}{$this->_addUrlParams($r == 'e_' ? 'e' : 'f', '&')}'>{$ev0['sbr_name']}</a>:<br/><br/>"; //$msg .= "----<br/>"; //$msg .= "«{$stage->arbitrage['descr_arb']}»"; //$msg .= "<br/>----<br/>"; //$msg .= '<br/><br/>Пройдите по ссылке, чтобы получить более подробную информацию.'; $this->message = $this->splitMessage($this->GetHtml($ev0[$r . 'uname'], $msg, array('header' => 'simple', 'footer' => 'norisk_robot'))); $this->recipient = $ev0[$r . 'uname'] . " " . $ev0[$r . 'usurname'] . " [" . $ev0[$r . 'login'] . "] <" . $ev0[$r . 'email'] . ">"; $this->SmtpMail('text/html'); } }
echo $is_tax_com ? "Комиссия Free-lance.ru" : $tax['abbr']; ?> </div> <span class="b-form__txt b-form__txt_valign_top b-form__txt_inline b-form__txt_color_red">−</span><div class="b-form__txt b-form__txt_bold b-form__txt_valign_top b-form__txt_margright_-1 second">0.00</div> </div> <div class="i-tooltip i-tooltip_margright_-450 i-tooltip_hide"> <div class="b-tooltip b-tooltip_transparent b-tooltip_nosik_yes b-tooltip_inline-block b-tooltip_close_yes"> <table class="b-tooltip__table" cellpadding="0" cellspacing="0"><tr class="b-tooltip__row"><td class="b-tooltip__cell"> <div class="b-tooltip__right"> <div class="b-tooltip__left"> <div class="b-tooltip__top"> <div class="b-tooltip__topright"></div> <div class="b-tooltip__bottom"> <div class="b-tooltip__body"> <div class="b-tooltip__txt"><?php echo sbr::getDescrTaxes($id); ?> </div> </div> </div> </div> </div> </div> <div class="b-tooltip__close"></div> <div class="b-tooltip__topleft"></div> <div class="b-tooltip__nosik"></div> <div class="b-tooltip__tl"></div> <div class="b-tooltip__tr"></div> <div class="b-tooltip__bl"></div> <div class="b-tooltip__br"></div> </td></tr></table>