示例#1
0
 /**
  * Конструктор класса.
  *
  * @param int $uid ИД Пользователя
  */
 public function __construct($uid = null)
 {
     global $DB;
     if ($uid === null) {
         $uid = get_uid(false);
     }
     $this->uid = $uid;
     $account = new account();
     $account->GetInfo($uid, true);
     $this->account = $account;
     $this->_db = $DB;
     $this->initWallet();
 }
示例#2
0
 /**
  * Основная функция для пополнения. В нее нужно передать POST данны, которые пришли от веб-кошелька.
  * 
  * @param  array    массив с данным от webpay
  *
  * @return успех
  */
 public function income($data)
 {
     global $DB;
     $this->_fields = array();
     $id = $DB->insert('webpay_log', array('request' => serialize($data)), 'id');
     if (empty($data['amount']) || empty($data['userid']) || empty($data['userid_extra']) || empty($data['paymentid']) || empty($data['key']) || empty($data['paymode'])) {
         $this->_error($id, self::ERR_DATA);
         return false;
     }
     $amount = floatval($data['amount']);
     $login = (string) $data['userid_extra'];
     $this->_fields['payment_id'] = $paymentid = (string) $data['paymentid'];
     if ($amount <= 0) {
         $this->_error($id, self::ERR_AMOUNT);
         return false;
     }
     $this->_fields['amount'] = $amount;
     if ($data['key'] != md5($data['amount'] . $data['userid'] . $data['paymentid'] . onlinedengi_cards::SECRET)) {
         $this->_error($id, self::ERR_SECRET);
         return false;
     }
     $user = new users();
     $user->GetUser($login);
     if (empty($user->uid)) {
         $this->_error($id, self::ERR_USER);
         return false;
     }
     $this->_fields['user_id'] = $user->uid;
     if ($DB->val('SELECT COUNT(*) FROM webpay_log WHERE payment_id = ?', $paymentid)) {
         $this->_success($id, true);
     } else {
         $account = new account();
         $account->GetInfo($user->uid);
         $comment = 'Пополнение через Веб-кошелек';
         if ($account->deposit($op_id, $account->id, $amount, $comment, self::PAYMENT_SYS_CODE, $amount)) {
             $this->_error($id, self::ERR_DEPOSIT);
             return false;
         }
         $this->_fields['billing_id'] = $op_id;
         $this->_success($id);
     }
     return true;
 }
示例#3
0
function delAttach($id, $login)
{
    $objResponse = new xajaxResponse();
    if (!hasPermissions('users')) {
        $login = $_SESSION['login'];
    }
    $user = new users();
    $user->GetUser($login);
    if ($user->uid) {
        $account = new account();
        $account->GetInfo($user->uid);
    }
    if (!$account->id) {
        $err = 'Ошибка';
    }
    //if(!sbr::isFileInReqvHistory($user->uid,$id)) {
    if (!$account->delAttach($id)) {
        $err = 'Ошибка';
    }
    //}
    $objResponse->call('delFinAttach', $id, $login, 1, $err);
    return $objResponse;
}
示例#4
0
 /**
  * Конструктор класса, инициализируем аккаунт пользователя и так же данные необходимые для работы страницы.
  */
 public function __construct()
 {
     session_start();
     $uid = get_uid();
     // закрываем доступ на страницу для теста, доступ только админам
     if (!hasPermissions('users')) {
         //header("Location: /bill/"); // Если пользователь не админ
         //exit;
     }
     if (!$uid && $_GET['pg'] != '/bill/alphabank/') {
         header('Location: /fbd.php');
         // Если пользователь не авторизован, то посылаем на данную страницу
         exit;
     }
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
     if (is_emp()) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr.php';
         $sbr = sbr_meta::getInstance();
         front::og('tpl')->sbr_reserved = $sbr->getReserved();
     }
     $account = new account();
     $account->GetInfo(get_uid());
     $this->account = $account;
     $_SESSION['ac_sum'] = $account->sum;
     $_SESSION['bn_sum'] = $account->bonus_sum;
     $this->uid = $uid;
     front::og('tpl')->footer_bill = true;
     front::og('tpl')->main_css = '/css/bill.css';
     front::og('tpl')->uid = $uid;
     // ИД пользователя
     front::og('tpl')->account = $account;
     // Аккаунт для биллинга
     front::og('tpl')->month_name = array(1 => 'Январь', 2 => 'Февраль', 3 => 'Март', 4 => 'Апрель', 5 => 'Май', 6 => 'Июнь', 7 => 'Июль', 8 => 'Август', 9 => 'Сентябрь', 10 => 'Октябрь', 11 => 'Ноябрь', 12 => 'Декабрь');
     front::og('tpl')->name_page = $this->name_page;
     front::og('tpl')->no_banner = !!is_pro();
     front::og('tpl')->g_page_id = '0|27';
 }
示例#5
0
$exrates = new exrates();
if ($action == 'add') {
    $sLogin = $_POST['login'];
    $nSummR = floatval($_POST['summ']);
    $nStamp = strtotime($_POST['date'] . ' ' . $_POST['time']);
    $oUser = new users();
    $oUser->GetUser($sLogin);
    if ($oUser->uid) {
        if ($nSummR > 0) {
            if (intval($nStamp)) {
                $nRate = $exrates->GetField(51, $err, 'val');
                $nSummFM = round($nSummR, 2);
                $sAdmin = 'Запись добавил: ' . $_SESSION['login'];
                $comments = "Безналичный перевод для физ.лиц, логин {$oUser->login}, Альфа-банк";
                $sDate = date('c', $nStamp);
                if ($account->GetInfo($oUser->uid, true) && !($err = $account->depositEx($account->id, $nSummFM, $sAdmin, $comments, 12, $nSummR, 11, $sDate))) {
                    // ВРЕМЕННАЯ АКЦИЯ! -------------
                    // ВРЕМЕННАЯ ЗАКОМЕНТЕНО! :) -------------
                    // $account->alphaBankGift( $nSummR, $sDate, $oUser->uid, $oUser->login );
                    //-------------------------------
                    // обновляем сессию юзера
                    $session = new session();
                    $session->UpdateProEndingDate($oUser->login);
                    $_SESSION['success'] = 'ok';
                    $sReferer = $_SERVER['HTTP_REFERER'];
                    $sReferer = preg_match('~siteadmin/alpha~i', $sReferer) ? $sReferer : '/siteadmin/alpha/';
                    header('Location: ' . $sReferer);
                    exit;
                }
            } else {
                $sError = 'Дата указана не верно';
示例#6
0
 /**
  * Сохраняет временный проект в базу.
  *
  * @param integer $buyer_id     ид. юзера-покупателя проекта. Если указан, то проект будет куплен за его счет (например, для админов).
  * @param mixed &$proj     сюда сохранится информация о проекте после его сохранения
  * @return integer|string   0 в случае успешной покупки или текст ошибки.
  */
 function saveProject($buyer_id = NULL, &$proj, $promo_codes = array())
 {
     $price = 0;
     // Если проект новый добаляется, то надо отослать уведомление
     if (!$this->isEdit()) {
         $need_send_email = true;
     } else {
         $need_send_email = false;
     }
     $operations = array();
     if ($ammount = $this->getAmmount()) {
         $buyer_id = $buyer_id ? $buyer_id : $this->_uid;
         $account = new account();
         if (!$account->GetInfo($buyer_id, true)) {
             return 'Ошибка в получении информации по счету.';
         }
         $is_pro = is_pro(true, $this->_project["user_id"]);
         $price = $this->getPrice($items);
         if ($this->isKonkurs()) {
             if ($items['contest']) {
                 $operations['contest'] = array('op_code' => $is_pro ? self::OPCODE_KON : self::OPCODE_KON_NOPRO, 'op_code_bns' => $is_pro ? self::OPCODE_KON_BNS : self::OPCODE_KON_BNS_NOPRO, 'ammount' => 1, 'comment' => $this->getOperationComment('contest'));
             }
         }
         if ($this->isVacancy()) {
             if ($items['office']) {
                 $operations['office'] = array('op_code' => $this->getVacancyOpCode(), 'op_code_bns' => self::OPCODE_PAYED_BNS, 'ammount' => 1, 'comment' => $this->getOperationComment('office'));
             }
         }
         $services = array('top', 'logo', 'urgent', 'hide');
         foreach ($services as $service) {
             if ($items[$service]) {
                 $operations[$service] = array('op_code' => self::getOpCodeByService($service), 'ammount' => $items[$service], 'comment' => $this->getOperationComment($service));
             }
         }
         foreach ($operations as $service => $operation) {
             $bill_id = 0;
             $this->_transactionId = $account->start_transaction($buyer_id, $this->_transactionId);
             if (!isset($operation['op_code_bns'])) {
                 $operation['op_code_bns'] = $operation['op_code'];
             }
             $descr = trim($operation['comment'], '&');
             if ($this->_project['billing_id']) {
                 $descr .= ' - дополнение к операции #' . $this->_project['billing_id'];
             }
             if ($account->bonus_sum >= $price) {
                 $error = $account->BuyFromBonus($bill_id, $this->_transactionId, $operation['op_code_bns'], $buyer_id, "{$descr} за счет подарка", "{$operation['comment']} за счет подарка", $operation['ammount'], true);
                 if ($error) {
                     return $error;
                 }
             } else {
                 $error = $account->Buy($bill_id, $this->_transactionId, $operation['op_code'], $buyer_id, $descr, $operation['comment'], $operation['ammount'], 0, isset($promo_codes[$service]) ? $promo_codes[$service] : 0);
                 if ($error) {
                     return $error;
                 }
             }
             if (!$bill_id) {
                 return 'Не хватает денег. ' . $account->sum . ' из ' . $price;
             }
             $this->account_operation_id = $bill_id;
             $operations[$service]['bill_id'] = $bill_id;
         }
     }
     $prePrj = $this->_preDb($price, $bill_id);
     $success = $this->isEdit() ? $this->editPrj($this->_project, $this->_attach, array_reverse($this->getCategories())) : $this->addPrj($this->_project, $this->_attach, array_reverse($this->_categories));
     if (!$this->isEdit()) {
         foreach ($operations as $service => $operation) {
             $account->updateComment($this->getOperationComment($service), $operation['bill_id'], array($operation['op_code'], $operation['op_code_bns']));
         }
     }
     $proj = $this->_project;
     if (!$success) {
         $this->_postDbFailed($prePrj, $bill_id, $buyer_id);
         return $error ? $error : 'Error';
     }
     $this->SavePayedInfo($items, $this->_project['id'], $bill_id, $topDays ? $topDays : 1);
     $this->_postDbSuccess();
     if (!$_SESSION['quickprjbuy_ok_id']) {
         $_SESSION['quickprjbuy_ok_id'] = $this->_project['id'];
     }
     return 0;
 }
示例#7
0
 /**
  * Информацию по документообороту СБР для админки.
  *
  * @param int    $scheme     тип схем сделок.
  * @param array  $filter     фильтр
  * @param int    $page       номер страницы
  * @param string $dir        сортировка ASC|DESC
  * @param int    $dir_col    поле сортировки.
  * @param int    $page_count вернет всего кол-во строк.
  *
  * @return array
  */
 public function getDocsFlow($scheme = sbr::SCHEME_AGNT, $filter = null, $page = 1, $dir = 'DESC', $dir_col = 0, &$page_count = null)
 {
     $dir = $dir == 'DESC' ? 'DESC' : 'ASC';
     $limit = self::PAGE_SA_SIZE;
     $offset = ($page - 1) * $limit;
     $where = $this->_buildFilterPeriod('ss.arch_closed_time', $filter);
     $page_count = 1;
     $emp_upload_docs_cond = sbr::DOCS_TYPE_ACT | sbr::DOCS_TYPE_ARB_REP;
     // документы, после загрузки которых выводим работодателя в док-те.
     $frl_upload_docs_cond = sbr::DOCS_TYPE_ACT;
     if ($scheme) {
         if ($scheme != -1) {
             $where[] = "ss.arch_closed_time > NOW()::date - interval '6 months'";
             $scheme_cond = "AND s.scheme_type = {$scheme}";
             if ($scheme == sbr::SCHEME_PDRD || $scheme == sbr::SCHEME_PDRD2) {
                 $scheme_cond = "AND ( s.scheme_type = {$scheme} OR s.scheme_type = " . sbr::SCHEME_PDRD2 . ')';
             }
         }
         $docs_cond = 'AND su.docs_received = false AND su.is_removed = false';
     } else {
         if ($filter['archive'] == 't') {
             $where[] = "ss.arch_closed_time < NOW()::date - interval '6 months'";
         }
         if ($filter['archive'] == 'f') {
             $where[] = "ss.arch_closed_time >= NOW()::date - interval '6 months'";
         }
     }
     if ($fv = pg_escape_string(trim($filter['contract_num']))) {
         $where[] = "'СБР-'||ss.sbr_id||'-'||ss.num ILIKE '%{$fv}%'";
     }
     if ($fv = pg_escape_string(trim($filter['user']))) {
         $where[] = "(u.login ILIKE '%{$fv}%' OR u.uname ILIKE '%{$fv}%' OR u.usurname ILIKE '%{$fv}%')";
     }
     if ($fv = pg_escape_string(trim($filter['name']))) {
         $where[] = "ss.name ILIKE '%{$fv}%'";
     }
     if ($fv = round((double) str_replace(array(' ', ','), array('', '.'), $filter['act_sum']), 2)) {
         $where[] = "round(su.act_lcomm+su.act_lintr, 2) = {$fv}";
     }
     if ($fv = (int) $filter['act_sys']) {
         $where[] = "ss.act_sys = {$fv}";
     }
     if ($fv = $filter['has_docs']) {
         $where[] = "su.docs_received = '{$fv}'";
     }
     if ($fv = $filter['has_act']) {
         $where[] = '((su.uploaded_docs & ' . sbr::DOCS_TYPE_COPY_ACT . ") <> 0) = '{$fv}'";
     }
     if ($fv = $filter['has_fct']) {
         $where[] = '((su.uploaded_docs & ' . sbr::DOCS_TYPE_COPY_FACTURA . ") <> 0) = '{$fv}'";
     }
     if ($fv = $filter['has_reqv']) {
         $where[] = "COALESCE(sr.is_filled[sr.form_type], false) = '{$fv}'";
     }
     if ($fv = $filter['is_removed']) {
         $where[] = "su.is_removed = '{$fv}'";
     }
     if ($scheme == 0) {
         $where[] = ' ( ss.scheme_type <> ' . sbr::SCHEME_LC . ' ) ';
         // исключаем Аккредитив
     }
     if ($where) {
         $where = 'WHERE ' . implode(' AND ', $where);
     }
     $leftPdrd = 'WHERE sp.completed IS NOT NULL OR su.user_id IS NOT NULL';
     if ($scheme == SBR::SCHEME_PDRD || $scheme == sbr::SCHEME_PDRD2) {
         $leftPdrd = "LEFT JOIN \n                 sbr_stages_users su1 \n                   ON su1.stage_id = wss.id \n                  AND su1.user_id = wss.frl_id \n                  AND (su1.uploaded_docs & {$frl_upload_docs_cond}) <> 0 \n                  WHERE su1.user_id IS NOT NULL OR su.user_id IS NOT NULL\n                  ";
     }
     $from = "\n            FROM (\n              WITH w_sbr_stages AS (\n                SELECT ss.*, s.emp_id, s.frl_id, s.scheme_id, s.scheme_type, s.cost_sys, \n                        arb.resolved, arb.frl_percent\n                  FROM sbr s\n                INNER JOIN\n                  sbr_stages ss\n                    ON ss.sbr_id = s.id\n                LEFT JOIN sbr_stages_arbitrage arb\n                    ON arb.stage_id = ss.id\n                 WHERE s.reserved_id IS NOT NULL\n                   AND s.norisk_id IS NULL\n                       {$scheme_cond}\n              )\n              SELECT wss.*, wss.emp_id as user_id, wss.cost_sys as act_sys,\n                    wss.closed_time as arch_closed_time\n                FROM w_sbr_stages wss \n              LEFT JOIN\n                sbr_stages_payouts sp\n                  ON sp.stage_id = wss.id\n                 AND sp.user_id = wss.frl_id\n              LEFT JOIN\n                sbr_stages_users su\n                  ON su.stage_id = wss.id\n                 AND su.user_id = wss.emp_id\n                 AND (su.uploaded_docs & {$emp_upload_docs_cond}) <> 0\n              {$leftPdrd}  \n              UNION ALL\n              SELECT wss.*, wss.frl_id, sp.credit_sys,\n                    sp.requested as arch_closed_time\n                FROM w_sbr_stages wss\n              INNER JOIN\n                sbr_stages_payouts sp\n                  ON sp.stage_id = wss.id\n                 AND sp.user_id = wss.frl_id\n            ) as ss\n          INNER JOIN\n            sbr_stages_users su\n              ON su.stage_id = ss.id\n             AND su.user_id = ss.user_id\n             {$docs_cond}\n          INNER JOIN\n            users u\n              ON u.uid = ss.user_id\n          LEFT JOIN\n            sbr_reqv sr\n              ON sr.user_id = ss.user_id\n        ";
     $sql = "\n          SELECT ss.*, sr.*, ss.id as stage_id,\n                 su.uploaded_docs, su.docs_received, su.act_lcomm, su.act_lintr, su.act_lndfl, su.act_lnp, su.act_lcomm + su.act_lintr as act_sum, su.act_notnp, su.is_removed,\n                 sp.credit_sys, sp.credit_sum,\n                 u.login, u.uname, u.usurname, u.role,\n                 COALESCE(docs.publ_time, ss.arch_closed_time) as act_upload_time\n          {$from}\n          LEFT JOIN\n            sbr_stages_payouts sp\n\n              ON sp.stage_id = ss.id\n             AND sp.user_id = ss.user_id\n             \n          --LEFT JOIN sbr_docs docs ON docs.stage_id = ss.id AND docs.access_role IN (1,2) AND docs.type IN (1,8) AND docs.is_deleted = false AND docs.owner_role = 0\n          LEFT JOIN (\n                SELECT DISTINCT ON (stage_id, access_role) stage_id, d.publ_time, f.modified, d.access_role FROM sbr_docs d\n                INNER JOIN file_sbr f ON f.id = d.file_id\n                WHERE \n                is_deleted = false AND access_role IN (1,2)\n                AND owner_role = 0\n                ORDER BY stage_id, access_role, publ_time DESC\n          ) docs ON docs.stage_id = ss.id AND (docs.access_role = substring(u.role, 1, 1)::integer + 1)\n          \n          {$where}\n           ORDER BY {$this->form_cols['docsflow'][$dir_col][1][$dir]}\n           LIMIT {$limit} OFFSET {$offset}\n        ";
     /*
               LEFT JOIN (
         SELECT DISTINCT ON (stage_id) stage_id, d.publ_time, f.modified FROM sbr_docs d
         INNER JOIN sbr s ON s.id = d.sbr_id
         INNER JOIN file_sbr f ON f.id = d.file_id
         WHERE type IN (1,8) 
         --AND status = 4 
         AND is_deleted = false AND access_role IN (1,2)
         AND owner_role = 0
         ORDER BY stage_id, publ_time DESC
               ) docs ON docs.stage_id = ss.id
     */
     if ($res = pg_query(self::connect(), $sql)) {
         if ($ret = pg_fetch_all($res)) {
             $account = new account();
             foreach ($ret as &$row) {
                 if ($row['uploaded_docs']) {
                     $access_role = is_emp($row['role']) ? self::DOCS_ACCESS_EMP : self::DOCS_ACCESS_FRL;
                     if ($docs = sbr_meta::getDocs("WHERE sd.stage_id = '{$row['id']}' AND (sd.access_role & {$access_role}) = {$access_role} AND sd.is_deleted = false", null, true)) {
                         $row['uploaded_docs_a'] = array();
                         foreach ($docs as $doc) {
                             $row['uploaded_docs_a'][$doc['type']] = $doc;
                         }
                     }
                 }
                 // это потом переделать
                 $account->GetInfo($row['user_id']);
                 $row['attaches'] = $account->getAllAttach();
             }
             $sql = "SELECT COUNT(1) as cnt {$from} {$where}";
             $mem = new memBuff();
             if ($rows = $mem->getSql($err, $sql, 60)) {
                 $page_count = $rows[0]['cnt'];
             }
         }
     }
     return $ret;
 }
/**
 * Отдает HTML для Редактирование предложения по проектам
 * 
 * @param  object $objResponse xajaxResponse
 * @param  string $rec_id идентификатор записи
 * @param  string $rec_type тип записи
 * @param  array $aParams дополнительные параметры с UID отправителя. остальные - опционально
 * @return string
 */
function _admEditPrjOfferParseForm(&$objResponse, $rec_id = '', $rec_type = '', $aParams = array())
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/portfolio.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/professions.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers_answers.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers_dialogue.php';
    $offer = projects_offers::GetPrjOfferById($rec_id);
    $dialogue = new projects_offers_dialogue();
    $user = new users();
    $account = new account();
    $portfolio = new portfolio();
    $professions = professions::GetSelFilProf($offer['user_id']);
    $professions = $professions ? $professions : array();
    $cur_prof = $professions ? $professions[0]['id'] : 0;
    $op_sum = projects_offers_answers::COLOR_FM_COST;
    if (!($portf_works = $portfolio->GetPortfProf($offer['user_id'], $cur_prof))) {
        $portf_works = array();
    }
    $user->GetUserByUID($offer['user_id']);
    $account->GetInfo($offer['user_id']);
    $offer['dialogue'] = $dialogue->GetDialogueForOffer($offer['id']);
    ob_start();
    include_once $_SERVER['DOCUMENT_ROOT'] . '/user/adm_edit_tpl/projects_offers.php';
    $sHtml = ob_get_contents();
    ob_end_clean();
    // текст
    $sOnReady = "if(document.getElementById('adm_edit_descr')) document.getElementById('adm_edit_descr').value = (\$('adm_edit_descr_source')? \$('adm_edit_descr_source').value : null);";
    // работы -----------------------------------
    $offer['portfolio_work_1_id'] = $offer['portf_id1'];
    $offer['portfolio_work_2_id'] = $offer['portf_id2'];
    $offer['portfolio_work_3_id'] = $offer['portf_id3'];
    $offer['portfolio_work_1'] = $offer['pict1'];
    $offer['portfolio_work_2'] = $offer['pict2'];
    $offer['portfolio_work_3'] = $offer['pict3'];
    $offer['portfolio_work_1_prev_pict'] = $offer['prev_pict1'];
    $offer['portfolio_work_2_prev_pict'] = $offer['prev_pict2'];
    $offer['portfolio_work_3_prev_pict'] = $offer['prev_pict3'];
    $offer['cost_from'] = round($offer['cost_from'], 2);
    $offer['cost_to'] = round($offer['cost_to'], 2);
    $use = array();
    $sWorks = 'adm_edit_content.works_ids   = new Array();
        adm_edit_content.works_names = new Array();
        adm_edit_content.works_prevs = new Array();
        adm_edit_content.works_picts = new Array();
        adm_edit_content.works_links = new Array();';
    if ($portf_works) {
        foreach ($portf_works as $key => $value) {
            $use[$value['id']] = 1;
            $sWorks .= "adm_edit_content.works_ids[{$value['id']}] = '{$value['id']}';\n                adm_edit_content.works_names[{$value['id']}] = '" . htmlspecialchars(addslashes(trim($value['name']))) . "';\n                adm_edit_content.works_prevs[{$value['id']}] = '" . trim($value['prev_pict']) . "';\n                adm_edit_content.works_picts[{$value['id']}] = '" . trim($value['pict']) . "';\n                adm_edit_content.works_links[{$value['id']}] = '" . trim($value['link']) . "';";
        }
    }
    for ($i = 1; $i < 4; $i++) {
        if ($user_offer['portf_id' . $i] > 0 && !isset($use[$user_offer['portf_id' . $i]])) {
            $sId = $user_offer['portf_id' . $i];
            $sWorks .= "adm_edit_content.works_ids[{$sId}] = '{$sId}';\n                adm_edit_content.works_prevs[{$sId}] = '" . trim($user_offer['prev_pict' . $i]) . "';\n                adm_edit_content.works_picts[{$sId}] = '" . trim($user_offer['pict' . $i]) . "';";
        }
    }
    if ($offer['portfolio_work_1'] != '') {
        $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_1_id']}, '{$offer['portfolio_work_1']}', '{$offer['portfolio_work_1_prev_pict']}');";
    }
    if ($offer['portfolio_work_2'] != '') {
        $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_2_id']}, '{$offer['portfolio_work_2']}', '{$offer['portfolio_work_2_prev_pict']}');";
    }
    if ($offer['portfolio_work_3'] != '') {
        $sWorks .= "adm_edit_content.prjOfferAddWork({$offer['portfolio_work_3_id']}, '{$offer['portfolio_work_3']}', '{$offer['portfolio_work_3_prev_pict']}');";
    }
    //-------------------------------------------
    $objResponse->assign('h4_adm_edit', 'innerHTML', 'Редактировать предложения по проекту');
    $objResponse->assign('div_adm_edit', 'innerHTML', $sHtml);
    $objResponse->script("\$('div_adm_reason').setStyle('display', 'none');");
    $objResponse->script("adm_edit_content.editMenuItems = ['', 'Основное', 'Файлы'];");
    $objResponse->script('adm_edit_content.edit();');
    $objResponse->script("adm_edit_content.userLogin = '******';");
    $objResponse->script($sOnReady);
    $objResponse->script($sWorks);
    $objResponse->script('xajax_getAdmEditReasons(' . admin_log::ACT_ID_EDIT_PRJ_OFFERS . ');');
}
示例#9
0
 if (!$error_type && $error['attach']) {
     $error_type = 'attach';
 }
 if (!$error_type && ($error['win_date'] || $error['end_date'])) {
     $error_type = 'date';
 }
 if (!$error) {
     //для пользователя
     $account_sum = $account->sum;
     $account_bonus_sum = $account->bonus_sum;
     //для модератора
     $view_user_login = '';
     if (hasPermissions("projects")) {
         $uid = $tmpPrj->getAuthorId();
         $view_account = new account();
         $view_account->GetInfo($uid);
         $account_sum = $view_account->sum;
         $account_bonus_sum = $view_account->bonus_sum;
         $view_user_login = $tmpPrj->getAuthorLogin();
     }
     if ($action == 'save') {
         $_POST['logo_id'] = $_POST['logo_file_id'];
         if ($PDA && !$tmpPrj->getCategories()) {
             $cats = array();
             $cats[] = array('category_id' => $project['category'], 'subcategory_id' => $project['subcategory']);
             $tmpPrj->setCategories($cats);
         }
         require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php";
         require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/billing.php";
         $bill = new billing($uid);
         $bill->clearOrders();
示例#10
0
 /**
  * Зачислить деньги после списания с резерва (или арбитража) (СБР)
  *
  * @param integer $fid				uid кому зачисляем
  * @param float   $sum				сумма
  * @param integer $money_type		тип денег
  * @param string  $descr            комменты к операции
  * @param string  $errors			возвращает массив ошибок
  * @param integer $op_code			код операции
  * @param string  $comments         комменты к операции для юзера.
  * @return integer					id операции в account_operations
  */
 function TransferReserved($fid, $sum, $money_type, $descr, &$errors, $op_code = 38, $comments = NULL)
 {
     global $DB;
     $user_account = new account();
     $user_account->GetInfo($fid);
     //Если в ФМ, то надо пополнять сразу
     $ammount = $money_type == 0 ? $sum : 0;
     $frl_accept_id = $DB->insert('account_operations', array('billing_id' => $user_account->id, 'op_code' => $op_code, 'ammount' => $ammount, 'descr' => $descr, 'comments' => $comments ? $comments : NULL, 'payment_sys' => $money_type, 'trs_sum' => $sum), 'id');
     // количество операций
     $_SESSION['account_operations'] = intval($_SESSION['account_operations']) + 1;
     return $frl_accept_id;
 }
示例#11
0
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/rating.php";
$stretch_page = true;
$showMainDiv = true;
$footer_payed = true;
$no_banner = true;
$freelancer = new freelancer();
$is_allow = isAllowProfi();
if ($is_allow) {
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php";
    $uid = get_uid();
    $account = new account();
    $account->GetInfo($uid, true);
    if (__paramInit('bool', 'quickprofi_ok', NULL, false)) {
        //Обновляем сессию
        $freelancer->GetUserByUID($uid);
        $_SESSION['is_profi'] = $freelancer->isProfi();
        $pro_last = payed::ProLast($_SESSION['login']);
        $_SESSION['pro_last'] = $pro_last['is_freezed'] ? false : $pro_last['cnt'];
    }
}
$catalogList = $freelancer->getProfiCatalog(80);
$maxFirstCLBlock = 90;
$cntCatalogList = count($catalogList);
$isMoreCatalogList = $cntCatalogList > $maxFirstCLBlock;
$cntFirstCLBlock = $isMoreCatalogList ? $maxFirstCLBlock : $cntCatalogList;
$page_title = "PROFI аккаунт - фриланс, удаленная работа на FL.ru";
$css_file = array('/css/block/b-icon/__cont/b-icon__cont.css');
示例#12
0
 /**
  * Возвращает максимальную сумму покупки, проверив, покупал ли юзер 
  * что-нибудь через Плати потом ранее.
  *
  * @param type $bill_id ИД счета
  *
  * @return int
  */
 public function getMaxPrice($bill_id = 0)
 {
     $maxPrice = self::PRICE_MAX;
     if ($this->is_pro) {
         $maxPrice = self::PRICE_MAX_PRO;
     } else {
         $uid = get_uid(false);
         if ($uid > 0) {
             $memBuff = new memBuff();
             if ($maxPriceSaved = $memBuff->get('platipotom_max_price_' . $uid)) {
                 return $maxPriceSaved;
             } else {
                 if (!$bill_id) {
                     $account = new account();
                     $account->GetInfo($uid, true);
                     $bill_id = $account->id;
                 }
                 $sql = 'SELECT id FROM account_operations WHERE op_code = 12 AND payment_sys = ?i AND billing_id = ?i';
                 $operation_id = $this->db()->val($sql, self::PAYMENT_CODE, $bill_id);
                 if ($operation_id) {
                     $maxPrice = self::PRICE_MAX_MORE;
                 }
                 $memBuff->set('platipotom_max_price_' . $uid, $maxPrice);
             }
         }
     }
     return $maxPrice;
 }
 public function actionIndex()
 {
     $limit = 20;
     $do = __paramInit('string', 'do', 'do', '');
     $page = __paramInit('int', 'page', 'page', 1);
     $filter = array();
     $filter_default = array('date' => date('d.m.Y', strtotime('-1 month')) . ' - ' . date('d.m.Y'));
     switch ($do) {
         case 'factura_delete':
             $nums = __paramInit('array', NULL, 'num', null);
             $this->billInvoicesAdminModel->deleteFactura($nums);
             break;
         case 'factura_update':
             $invoice_id = __paramInit('int', NULL, 'invoice_id', null);
             $file = $_FILES['new_file'];
             $this->billInvoicesAdminModel->updateFactura($invoice_id, $file);
             break;
         case 'factura':
             $nums = __paramInit('array', NULL, 'num', null);
             $dates = __paramInit('array', NULL, 'date', null);
             $this->billInvoicesAdminModel->addFactura($nums, $dates);
             break;
         case 'filter':
             $filter['do'] = $do;
             $filter['login'] = __paramInit('string', 'login', 'login', '');
             $filter['date'] = __paramInit('string', 'date', 'date', null);
             break;
             //Операция зачисления средств по счету
         //Операция зачисления средств по счету
         case 'pay':
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php';
             $sums = __paramInit('array', NULL, 'sum', null);
             //@todo: слишком толстый контроллер
             //все ниже нужно было определить в модель
             $account = new account();
             $user = new users();
             if ($sums) {
                 $sAdmin = 'Запись добавил: ' . @$_SESSION['login'];
                 $sDate = date('c');
                 foreach ($sums as $user_id => $invoices) {
                     $user->GetUserByUID($user_id);
                     if (!$user->uid || !$account->GetInfo($user->uid, true) || empty($invoices)) {
                         continue;
                     }
                     $bill = new billing($user->uid);
                     foreach ($invoices as $invoice_id => $sum) {
                         $account_sum = $account->sum;
                         if (!is_numeric($sum) || $sum <= 0 || $account->sum + $sum < 0) {
                             continue;
                         }
                         $comments = sprintf("Безналичный перевод по счету Б-%06d", $invoice_id);
                         if (!$account->depositEx2($acc_op_id, $account->id, $sum, $sAdmin, $comments, 12, $sum, 4, $sDate)) {
                             $this->billInvoicesAdminModel->update($invoice_id, array('acc_op_id' => $acc_op_id));
                             //Автоматическая покупка услуги погашения задолженности
                             if ($account_sum < 0) {
                                 $payed_sum = abs($account_sum);
                                 $option = array('acc_sum' => $payed_sum);
                                 $billReserveId = $bill->addServiceAndCheckout(135, $option);
                                 if ($billReserveId) {
                                     $bill->buyOrder($billReserveId);
                                 }
                             }
                         }
                     }
                 }
                 $this->redirect('.');
             }
             break;
     }
     $this->billInvoicesAdminModel->setPage($limit, $page);
     $list = $this->billInvoicesAdminModel->setFilter($filter)->getInvoices();
     $count = $this->billInvoicesAdminModel->getInvoicesCnt();
     $filter_query = '';
     if (empty($filter)) {
         $filter = $filter_default;
     } else {
         $filter_query = http_build_query($filter) . '&';
     }
     $this->render('index', array('list' => $list, 'limit' => $limit, 'page' => $page, 'page_count' => $count, 'filter_query' => $filter_query, 'filter' => $filter));
 }
示例#14
0
 /**
  * Совершает выплату юзеру по данному этапу СБР.
  * Выплата -- это отметка, что деньги реально выплачены.
  *
  * @param integer $user_id   ид. юзера, которому предназначается выплата.
  * @return boolean   успешно?
  */
 function payoutAgnt($user_id, pskb $pskb, pskb_lc $pskb_lc)
 {
     setlocale(LC_ALL, 'en_US.UTF-8');
     if (!$this->getPayouts($user_id)) {
         return false;
     }
     if ($this->payouts[$user_id]['completed']) {
         return false;
     }
     $account = new account();
     $account->GetInfo($user_id);
     $credit_sys = $this->payouts[$user_id]['credit_sys'];
     $lc = $pskb->getLC(true);
     $acc = $user_id == $this->sbr->emp_id ? $lc['accCust'] : $lc['accPerf'];
     switch ($credit_sys) {
         case exrates::BANK:
             $descr = "Безнал на счет: {$acc}";
             break;
         case exrates::YM:
             $descr = "Яндекс.Деньги на кошелек: {$acc}";
             break;
         case exrates::WMR:
             $descr = "WMR на кошелек: {$acc}";
             break;
         case exrates::WEBM:
             $descr = "Вывод на Веб-кошелек";
             break;
         case exrates::CARD:
             $descr = "Безнал на счет пластиковой карты";
             break;
         default:
             return !($this->error = 'Неверная валюта');
     }
     $this->sbr->getScheme();
     $percent = 1;
     if ($this->payouts[$user_id]['is_arbitrage'] == 't') {
         $this->getArbitrage();
         $percent = abs((int) ($user_id == $this->sbr->emp_id) - $this->arbitrage['frl_percent']);
     }
     $iex = $credit_sys . $this->sbr->cost_sys;
     if (!$this->exrates) {
         $this->sbr->getExrates();
     }
     $credit_sum = $this->payouts[$user_id]['credit_sum'];
     $debit_sum = round($credit_sum * $this->sbr->exrates[$iex], 2);
     $d_descr = 'Списание ' . ($percent == 1 ? '' : 100 * $percent . '% (арбитраж) ') . "резерва «Безопасной Сделки» (этап #{$this->id})";
     $sbr = sbr_meta::getInstanceLocal($user_id);
     $sbr->initFromId($this->data['sbr_id'], false, false);
     $comments = sbr_meta::view_cost($credit_sum, $credit_sys) . ', ' . $sbr->getContractNum();
     $d_comments = sbr_meta::view_cost($debit_sum, $this->sbr->cost_sys) . ', ' . $sbr->getContractNum();
     if (($debit_id = $account->CommitReserved($sbr->emp_id, $this->sbr->reserved_id, $d_descr, sbr::OP_DEBIT, $debit_sum, $d_comments)) && ($credit_id = $account->TransferReserved($user_id, $credit_sum, $credit_sys - 1, $descr, $errors, sbr::OP_CREDIT, $comments))) {
         $sql = "\n              UPDATE sbr_stages_payouts\n                 SET debit_id = {$debit_id},\n                     credit_id = {$credit_id},\n                     completed = now(),\n                     state = '{$pskb_lc->state}',\n                     \"stateReason\" = '{$pskb_lc->stateReason}',\n                     bank_completed = '{$pskb_lc->date}'\n               WHERE stage_id = {$this->id}\n                 AND user_id = {$user_id}\n\n                 AND completed IS NULL\n              RETURNING *\n            ";
         if ($res = pg_query(self::connect(), $sql)) {
             $this->payoutUpdateState($pskb_lc);
             $docs = array();
             $is_emp_arb = $this->status == sbr_stages::STATUS_ARBITRAGED && $this->arbitrage['resolved'] && floatval($this->arbitrage['frl_percent']) == 0;
             if ($this->sbr->scheme_type == sbr::SCHEME_LC && !$is_emp_arb) {
                 if ($doc_file = $this->generateEmpAgentReport($doc_err, $rep_num)) {
                     // отчет агента.
                     $docs[] = array('stage_id' => $this->id, 'file_id' => $doc_file->id, 'num' => $rep_num, 'status' => sbr::DOCS_STATUS_PUBL, 'access_role' => sbr::DOCS_ACCESS_EMP, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_AGENT_REP);
                     if ($doc_file = $this->generateEmpAct($doc_err, $doc_num, $rep_num)) {
                         // акт работодателя по агентской схеме (он же отчет об арбитраже, если был арбитраж).
                         $docs[] = array('stage_id' => $this->id, 'file_id' => $doc_file->id, 'num' => $doc_num, 'status' => sbr::DOCS_STATUS_PUBL, 'access_role' => sbr::DOCS_ACCESS_EMP, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_ACT);
                     }
                 }
             } elseif (($this->sbr->scheme_type == sbr::SCHEME_PDRD || $this->sbr->scheme_type == sbr::SCHEME_PDRD2) && !$is_emp_arb) {
                 if ($doc_file = $this->generateArbReportPdrdEmp($doc_err)) {
                     // отчет арбитража по договору подряда для работодателя.
                     $docs[] = array('stage_id' => $this->id, 'file_id' => $doc_file->id, 'status' => sbr::DOCS_STATUS_PUBL, 'access_role' => sbr::DOCS_ACCESS_EMP, 'owner_role' => 0, 'type' => sbr::DOCS_TYPE_ARB_REP);
                 }
             }
             if (count($docs)) {
                 foreach ($docs as $doc) {
                     $ok = $this->sbr->addDocR($doc);
                 }
             }
             $this->payouts[$user_id] = pg_fetch_assoc($res);
             return true;
         }
     }
     if ($debit_id && !$credit_id) {
         $account->Del($user_id, $debit_id);
     }
     return false;
 }
示例#15
0
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php";
if (is_release()) {
    exit;
}
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/qiwipay.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/billing.php";
$qiwipay = new qiwipay(get_uid(false));
if (isset($_POST['cancel'])) {
    $back_url = $_SESSION['referer'];
    unset($_SESSION['referer']);
    header("Location: {$back_url}");
    exit;
} elseif (isset($_POST['success'])) {
    $sum = $_SESSION['post_payment']['sum'];
    $account = new account();
    $account->GetInfo($qiwipay->uid, true);
    $bill = $DB->row("SELECT * FROM qiwi_account WHERE account_id = ? order by id desc LIMIT 1", $account->id);
    $error = $qiwipay->completeBill($error, $bill, $sum);
    var_dump($error);
    var_dump($DB->sql);
    exit;
    header("Location: /bill/");
    exit;
}
$bill = new billing(get_uid(false));
$bill->test = true;
$bill->setPaymentMethod('qiwipurse');
$created = $bill->error;
$_SESSION['post_payment'] = $_POST;
$_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
?>
示例#16
0
// Тестовое оплата услуг через Qiwi
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php";
if (is_release()) {
    exit;
}
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
$account = new account();
if (isset($_POST['cancel'])) {
    $back_url = $_SESSION['referer'];
    unset($_SESSION['referer']);
    header("Location: {$back_url}");
    exit;
} elseif (isset($_POST['success'])) {
    $sum = $_SESSION['post_payment']['sum'];
    $account = new account();
    $account->GetInfo($_SESSION['post_payment']['ok_f_uid']);
    //$descr = "OKPAY #".$_SESSION['post_payment']['ok_txn_id']." на кошелек ".$_SESSION['post_payment']['ok_receiver_wallet']." OKPAYID: ".$_SESSION['post_payment']['ok_payer_id']." сумма - ".$_SESSION['post_payment']['ok_item_1_price'].",";
    //$descr .= " обработан ".$_SESSION['post_payment']['ok_txn_datetime'].", счет - ".$_SESSION['post_payment']['ok_f_bill_id'];
    $descr = "OKPAY #11 на кошелек OK460571733 OKPAYID: 1111 сумма - " . $_SESSION['post_payment']['ok_item_1_price'] . ",";
    $descr .= " обработан " . date("Y-m-d H:i:s") . ", счет - " . $_SESSION['post_payment']['ok_f_bill_id'];
    $account->deposit($op_id, $_SESSION['post_payment']['ok_f_bill_id'], $_SESSION['post_payment']['ok_item_1_price'], $descr, 14, $_SESSION['post_payment']['ok_item_1_price'], 12);
    header("Location: /bill/");
    exit;
}
$_SESSION['post_payment'] = $_POST;
$_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
?>

<h2>Тестовая оплата OKPAY</h2>
<p>
Оплата услуг аккаунт #<?php 
示例#17
0
 /**
  * Обновляем деньги у пользователя по его логину
  * 
  * @param string $login    Логин пользователя
  * @return type 
  */
 function UpdateAccountSum($login)
 {
     if (!$login) {
         return;
     }
     $s = $this->get($login);
     if ($s) {
         $session_data = $this->read($s['sid']);
         require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php";
         require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
         $user = new users();
         $user->GetUser($login);
         $account = new account();
         $account->GetInfo($user->uid);
         $session_data = preg_replace("/ac_sum\\|s:\\d{1,}:\".*\"/U", "ac_sum|s:" . strlen($account->sum) . ":\"{$account->sum}\"", $session_data);
         $session_data = preg_replace("/ac_sum\\|d:\\d+?;/U", "ac_sum|s:" . strlen($account->sum) . ":\"{$account->sum}\";", $session_data);
         $session_data = preg_replace("/bn_sum\\|s:\\d{1,}:\".*\"/U", "bn_sum|s:" . strlen($account->bonus_sum) . ":\"{$account->bonus_sum}\"", $session_data);
         $this->set($s['sid'], $session_data, 7200);
     }
 }
示例#18
0
 /**
  * Проверить наличие финансовой информации
  * 
  * @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;
 }
示例#19
0
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/project_exrates.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/drafts.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/employer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/freelancer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/projects_offers.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php';
$uid = get_uid(false);
$employer = new employer();
$employer->GetUserByUID($uid);
$account = new account();
$account->GetInfo($uid);
$_SESSION['ac_sum'] = $account->sum;
$_SESSION['ac_sum_rub'] = $account->sum_rub;
$_SESSION['bn_sum'] = $account->bonus_sum;
//Формируем проект
$tmpPrj = new tmp_project('key');
$tmpPrj->setEdit(true);
$tmpPrj->setProjectField('kind', 1);
$tmpPrj->setProjectField('descr', 'Описание проекта для оплаты с разными op_code');
$tmpPrj->setProjectField('name', 'Проект для оплаты с разными op_code');
$tmpPrj->setProjectField('agreement', 1);
$tmpPrj->setProjectField('priceby', 1);
$tmpPrj->setProjectField('budget_type', 1);
$cats[] = array('category_id' => 12, 'subcategory_id' => 120);
$tmpPrj->setCategories($cats);
//Добавляем ему купленную опцию Срочный
    exit;
}
$tid = $bill->tid;
$reqv = new reqv_ordered();
if ($tid) {
    $has_reqv = $reqv->GetRow($tid, hasPermissions('bank') && hasPermissions('adm') ? '' : " AND user_id='" . get_uid() . "'");
}
if (!$reqv->id) {
    header("Location: /403.php");
    exit;
}
$sum = $reqv->ammount;
//if (is_admin()||is_admin_sm()) {
if (get_uid(0) != $reqv->user_id && hasPermissions('bank')) {
    $acc = new account();
    $acc->GetInfo($reqv->user_id);
    $acc_num = $acc->id;
} else {
    $acc_num = $bill->acc['id'];
}
$billCode = 'Б-' . $acc_num . '-' . ($reqv->bill_no + 1);
if ($reqv->sbr_id) {
    $sbr = new sbr_emp($reqv->user_id);
    if ($sbr->initFromId($reqv->sbr_id, false, false, NULL, false)) {
        $contract_num = $sbr->getContractNum();
        $billCode = 'Б-' . $contract_num;
        $sbr_nds = $sbr->getCommNds($sbr_comm);
    }
}
$ord_num = $reqv->id;
$sum = round($sum, 2);
示例#21
0
}
if ($fsocket == true) {
    $header = 'POST /ipn-verify.html HTTP/1.0' . "\r\n" . 'Host: www.okpay.com' . "\r\n" . 'Content-Type: application/x-www-form-urlencoded' . "\r\n" . 'Content-Length: ' . strlen($request) . "\r\n" . 'Connection: close' . "\r\n\r\n";
    @fputs($fp, $header . $request);
    $string = '';
    while (!@feof($fp)) {
        $res = @fgets($fp, 1024);
        $string .= $res;
        if ($res == 'VERIFIED' || $res == 'INVALID' || $res == 'TEST') {
            $result = $res;
            break;
        }
    }
    @fclose($fp);
}
if ($result == 'VERIFIED') {
    if ($_POST['ok_txn_status'] == 'completed') {
        require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php";
        require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/account.php";
        $account = new account();
        $account->GetInfo($_POST['ok_f_uid']);
        $descr = "OKPAY #" . $_POST['ok_txn_id'] . " на кошелек " . $_POST['ok_receiver_wallet'] . " OKPAYID: " . $_POST['ok_payer_id'] . " сумма - " . $_POST['ok_item_1_price'] . ",";
        $descr .= " обработан " . $_POST['ok_txn_datetime'] . ", счет - " . $_POST['ok_f_bill_id'];
        $account->deposit($op_id, $_POST['ok_f_bill_id'], $_POST['ok_item_1_price'], $descr, 14, $_POST['ok_item_1_price'], 12);
    }
} elseif ($result == 'INVALID') {
} elseif ($result == 'TEST') {
} else {
    header("HTTP/1.0 404 Not Found");
    exit;
}
示例#22
0
 } else {
     if ($sbr->status == sbr::STATUS_PROCESS && $sbr->stages_version == $sbr->frl_stages_version && $sbr->version == $sbr->frl_version && !$sbr->reserved_id) {
         // !!! проверить. Можно ли резервировать, если фрилансер не согласился с изменениями.
         // !!! Непонятно с комментами. У фрилансера в доступе всегда, а у заказчика тут только страница с резервацией.
         $bank = __paramInit('int', 'bank', 'bank');
         $inner = $fpath . 'stage-reserve' . ($bank && !$no_reserve ? '-bn' : '') . '.php';
         $ndss = 'В том числе НДС - 18% с суммы агентского вознаграждения ООО "Ваан" (' . 100 * $sbr->scheme['taxes'][sbr::EMP][sbr::TAX_EMP_COM]['percent'] . '%)';
         // если проект в разработке, то в черновики нельзя
         if ($action == 'draft' && $sbr->status != sbr::STATUS_PROCESS) {
             if ($sbr->draft($sbr->id)) {
                 header_location_exit('/norisk2/?site=drafts');
             }
         }
         $sbr->getReserveSum();
         $account = new account();
         $account->GetInfo($sbr->uid);
         $no_reserve = 0;
         if ($sbr->reserve_sum * $sbr->cost2rur() < sbr_stages::MIN_COST_RUR) {
             $no_reserve = 1;
         }
         if ($action == 'test_reserve' && !$no_reserve) {
             if ($sbr->testReserve($account)) {
                 header_location_exit("/norisk2/?site=Stage&id={$stage->id}");
             }
         }
         if ($bank && !$no_reserve) {
             require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/num_to_word.php';
             $form_type = __paramInit('int', 'ft', 'form_type', $sbr->user_reqvs['form_type']);
             $reqv_mode = __paramInit('int', 'rm', 'reqv_mode', 1);
             $save_finance = __paramInit('bool', NULL, 'save_finance');
             if ($action == 'invoice') {
示例#23
0
 /**
  * Инициализирует все данные в сессии.
  *
  * @param users $user инициализирванный объект users.
  */
 public function fillU($user)
 {
     if (!$user->uid) {
         $this->error(EXTERNAL_ERR_USER_NOTFOUND);
     }
     if ($user->is_banned) {
         $this->error(EXTERNAL_ERR_USER_BANNED);
     }
     if ($user->active != 't') {
         $this->error(EXTERNAL_ERR_USER_NOTACTIVE);
     }
     $data = get_object_vars($user);
     unset($user);
     require_once ABS_PATH . '/classes/sbr.php';
     require_once ABS_PATH . '/classes/sbr_meta.php';
     require_once ABS_PATH . '/classes/messages.php';
     require_once ABS_PATH . '/classes/account.php';
     $is_emp = is_emp($data['role']);
     $data['id'] = md5(self::MEM_GROUP . uniqid($data['uid']));
     $data['new_msgs'] = messages::GetNewMsgCount($data['uid']);
     $data['role'] = (int) $is_emp;
     $data['is_pro'] = $this->pg2ex($data['is_pro'], EXTERNAL_DT_BOOL);
     $sbr_cls = $is_emp ? 'sbr_emp' : 'sbr_frl';
     $sbr = new $sbr_cls($data['uid'], $data['login']);
     $data['sbr_count'] = $sbr->getActivesCount();
     $data['new_sbr_events'] = sbr_meta::getNewEventCount($data['uid']);
     $account = new account();
     $account->GetInfo($data['uid']);
     $data['sum'] = $account->sum;
     foreach ($this->public as $f => $v) {
         $this->{$f} = $data[$f];
     }
     $this->_uid = $data['uid'];
     $this->_last_updated = time();
 }
示例#24
0
            $prmd = '&amp;';
            $has_hidd = false;
            break;
        default:
            $frm_action = '/projects/';
            $frm_action2 = '/';
            $prmd = '?';
    }
}
if ($prj_pos === false && !$bPageDefault) {
    include ABS_PATH . '/404.php';
    exit;
}
$account = new account();
if ($_SESSION['uid']) {
    $ok = $account->GetInfo($_SESSION['uid'], true);
}
stat_collector::setStamp();
// stamp
//скрытые проекты
projects_filters::initClosedProjects();
$rss_file = NULL;
switch ($kind) {
    case 0:
    case 1:
        $rss_file = "/rss/projects.xml";
        break;
    case 2:
        $rss_file = "/rss/competition.xml";
        break;
    case 4:
示例#25
0
 public function updateTab($uid)
 {
     $account = new account();
     $account->GetInfo($uid, false);
     if ($account->sum > 0) {
         $this->db()->query('DELETE FROM tservices_orders_debt WHERE user_id = ?', $uid);
     }
 }
示例#26
0
 /**
  * Создание счета @see class qiwipay.
  *
  * @param array $request параметры ($_POST).
  *
  * @return unknown
  */
 public function createBill($request)
 {
     if (!$this->uid) {
         return 'Пользователь не определен';
     }
     $account = new account();
     $account->GetInfo($this->uid, true);
     if ($error = $this->validate($request, $account->id)) {
         return $error;
     }
     $this->DB->start();
     $aData = array('account_id' => $account->id, 'phone' => $this->form['phone'], 'sum' => $this->form['sum']);
     $id = $this->DB->insert('qiwi_account', $aData, 'id');
     if ($id) {
         $params = new createBill();
         $params->login = $this->login;
         // логин
         $params->password = $this->passwd;
         // пароль
         $params->user = $this->form['phone'];
         // пользователь, которому выставляется счет
         $params->amount = $this->form['sum'];
         // сумма
         $params->comment = $this->form['comment'];
         // комментарий
         $params->txn = $id;
         // номер заказа
         $params->lifetime = $this->ltime;
         // время жизни (если пусто, используется по умолчанию 30 дней)
         $params->alarm = $this->alarm_sms;
         if ($this->passwd == 'debug') {
             $result = 1;
         } else {
             $result = $this->service->createBill($params)->createBillResult;
         }
         if ($err = $this->_checkResultError($result)) {
             $error['qiwi'] = $err;
             $this->DB->rollback();
             die;
             return $error;
         }
         unset($aData['sum']);
         $sCode = substr($aData['phone'], 0, 3);
         $sNum = substr($aData['phone'], 3);
         $sOper = $this->DB->val('SELECT COALESCE(operator_id, 0) FROM mobile_operator_codes 
             WHERE code = ? AND ? >= start_num AND ? <= end_num', $sCode, $sNum, $sNum);
         $aData['operator_id'] = $sOper;
         $this->DB->insert('qiwi_phone', $aData);
         $memBuff = new memBuff();
         $nStamp = time();
         $sKey = 'qiwiPhone' . $account->id . '_' . $aData['phone'];
         if (!($aData = $memBuff->get($sKey))) {
             $aData = array('time' => $nStamp, 'cnt' => 0);
         }
         $aData['time'] = $aData['time'] + 3600 > $nStamp ? $aData['time'] : $nStamp;
         $aData['cnt'] = $aData['time'] + 3600 > $nStamp ? $aData['cnt'] + 1 : 1;
         $memBuff->set($sKey, $aData, 3600);
         //-----------------------------------
     }
     $this->DB->commit();
     $this->saveBillForm();
     return 0;
 }
示例#27
0
 /**
  * Создает новый счет, отправляет на регистрацию в платежную систему.
  *
  * @param integer $uid    ид. пользователя.
  * @param array $request    параметры ($_POST).
  * @return array $error   массив ошибок.
  */
 function createBill($request)
 {
     if (!$this->uid) {
         return 'Пользователь не определен';
     }
     $account = new account();
     $account->GetInfo($this->uid, true);
     if ($error = $this->validate($request, $account->id)) {
         return $error;
     }
     $this->DB->start();
     $aData = array('account_id' => $account->id, 'phone' => $this->form['phone'], 'sum' => $this->form['sum']);
     $id = $this->DB->insert("qiwi_account", $aData, "id");
     $oper_xml = '';
     switch ($request['oper_code']) {
         case 'megafon':
             $oper_xml = '<extra name="megafon2-acc">1</extra>';
             break;
         case 'mts':
             $oper_xml = '<extra name="mts-acc">1</extra>';
             break;
         case 'beeline':
             $oper_xml = '<extra name="beeline-acc">1</extra>';
             break;
     }
     if ($id) {
         $xml = '<?xml version="1.0" encoding="' . $this->encode . '"?>' . '<request>' . '<protocol-version>4.00</protocol-version>' . '<request-type>30</request-type>' . '<extra name="password">' . $this->passwd . '</extra>' . '<terminal-id>' . $this->login . '</terminal-id>' . '<extra name="txn-id">' . $id . '</extra>' . '<extra name="to-account">' . $this->form['phone'] . '</extra>' . '<extra name="amount">' . $this->form['sum'] . '</extra>' . '<extra name="comment">' . $this->form['comment'] . '</extra>' . '<extra name="create-agt">' . $this->create_agt . '</extra>' . '<extra name="ltime">' . $this->ltime . '</extra>' . '<extra name="ALARM_SMS">' . $this->alarm_sms . '</extra>' . '<extra name="ACCEPT_CALL">' . $this->accept_call . '</extra>' . $oper_xml . '</request>';
         if ($this->passwd == 'debug') {
             $result = '<response><result-code fatal="false">0</result-code></response>';
         } else {
             $result = $this->_request($xml);
         }
         if ($err = $this->_checkResultError($result)) {
             $error['qiwi'] = $err;
             $this->DB->rollback();
             die;
             return $error;
         }
         // различные ограничения по телефонному номеру
         unset($aData['sum']);
         $sCode = substr($aData['phone'], 0, 3);
         $sNum = substr($aData['phone'], 3);
         $sOper = $this->DB->val('SELECT COALESCE(operator_id, 0) FROM mobile_operator_codes 
             WHERE code = ? AND ? >= start_num AND ? <= end_num', $sCode, $sNum, $sNum);
         $aData['operator_id'] = $sOper;
         $this->DB->insert('qiwi_phone', $aData);
         $memBuff = new memBuff();
         $nStamp = time();
         $sKey = 'qiwiPhone' . $account->id . '_' . $aData['phone'];
         if (!($aData = $memBuff->get($sKey))) {
             $aData = array('time' => $nStamp, 'cnt' => 0);
         }
         $aData['time'] = $aData['time'] + 3600 > $nStamp ? $aData['time'] : $nStamp;
         $aData['cnt'] = $aData['time'] + 3600 > $nStamp ? $aData['cnt'] + 1 : 1;
         $memBuff->set($sKey, $aData, 3600);
         //-----------------------------------
     }
     $this->DB->commit();
     $this->saveBillForm();
     return 0;
 }
示例#28
0
 /**
  * Инициализация аккаунта пользователя.
  */
 public function initAccount()
 {
     if ($this->user['uid']) {
         require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
         $account = new account();
         $account->GetInfo($this->user['uid'], true);
         $this->account = $account;
         $this->acc = get_object_vars($account);
         if (get_uid(false) == $this->user['uid']) {
             $_SESSION['ac_sum'] = $account->sum;
             $_SESSION['bn_sum'] = $account->bonus_sum;
         }
         $this->wallet = WalletTypes::initWalletByType($this->user['uid']);
         // Берет активный если есть
     }
 }
示例#29
0
    if ($ok) {
        $filteredTeasers[] = $teaser;
    }
}
// количество тизеров
$teasersCount = count($filteredTeasers);
if (!$teasersCount) {
    return;
}
// случайный тизер
$teaserKey = mt_rand(0, $teasersCount - 1);
$teaser = $filteredTeasers[$teaserKey]['file'];
// для "поднять проект"
if ($teaser === 'tpl.teaser-up.php' || $teaser === 'tpl.teaser-up-conk.php' || $teaser === 'tpl.teaser-up-top.php') {
    $account = new account();
    $account->GetInfo(get_uid());
    $transaction_id = $account->start_transaction(get_uid());
    ?>
    <form action="/users/<?php 
    echo $_SESSION['login'];
    ?>
/setup/" id="upprj" name="frm" method="POST">
        <input type="hidden" name="action" value="prj_up">
        <input type="hidden" name="transaction_id" value="<?php 
    echo $transaction_id;
    ?>
" />
        <input type="hidden" name="prjid" value="<?php 
    echo $prj_id;
    ?>
">
示例#30
0
<?php

$rpath = '../';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/present.php';
session_start();
get_uid();
if (get_uid() <= 0) {
    header('Location: /404.php');
    exit;
}
$id = intval($_GET['id']);
if ($id) {
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
    $acc = new account();
    $acc->GetInfo($_SESSION['uid']);
    $_SESSION['ac_sum'] = $acc->sum;
    $_SESSION['ac_sum_rub'] = $acc->sum_rub;
    $opinfo = present::GetGiftInfo($id);
    if ($opinfo['to_uid'] != get_uid()) {
        header('Location: /404.php');
        exit;
    }
    $pr_txt = $opinfo['op_name'];
    if ($opinfo['op_code'] == 17) {
        $pr_txt = 'Первая страница в подарок';
    }
    /*
    	switch ($opinfo['op_code']){
    		case 16: $pr_txt = "Аккаунт ПРО"; break;
    		case 17: $pr_txt = "Первая страница &#150; 1 неделя"; break;