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;
 }
Exemple #5
0
 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;
 }
Exemple #6
0
 /**
  * Запись данных расчета СБР калькулятора
  *
  * @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;
 }
Exemple #7
0
<?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;
    ?>
);        
        });
Exemple #8
0
?>
_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;
Exemple #10
0
 /**
  * Создание нового сгенерированного документа, перевод старого в статус удаленнго
  * 
  * @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;
     }
 }
Exemple #11
0
 /**
  * Возвращает часть ответа с отзывами о пользователе
  * 
  * @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;
 }
Exemple #13
0
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;
}
Exemple #14
0
                <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">
Exemple #15
0
 /**
  * Посылаем уведомление фрилансеру о том что документы по СБР получены.
  *
  * @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');
 }
Exemple #16
0
}
$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';
Exemple #17
0
 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']}";
 }
Exemple #18
0
 /**
  * Уведомление обоим участникам СБР о вынесении решения арбитража.
  * @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');
     }
 }
Exemple #19
0
            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">&minus;</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>