Beispiel #1
0
/**
 * устанавливает арбитра.
 */
function setArbitr($arbitrageID, $arbitrID)
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_stages.php';
    $objResponse = new xajaxResponse();
    if (!hasPermissions('sbr')) {
        return $objResponse;
    }
    sbr_stages::setArbitr($arbitrageID, $arbitrID);
    return $objResponse;
}
Beispiel #2
0
 /**
  * Уведомление одному из участников СБР о том, что другая строна обратилась в арбитраж.
  * @param array $events   информация по событиям (если событий нескольлко, то содержит несколько элементов).
  */
 function SbrArb($events)
 {
     $ev0 = $events[0];
     $url = $GLOBALS['host'] . '/' . sbr::NEW_TEMPLATE_SBR . '/';
     $sbr = sbr_meta::getInstanceLocal($ev0['e_uid']);
     $sbr->initFromId($ev0['sbr_id']);
     $stage = new sbr_stages($sbr, array('id' => $ev0['own_id']));
     $arb = $stage->getArbitrage(false, false);
     $stage_name = sbr_meta::getNameForMail($ev0);
     $sbr_num = $stage->sbr->getContractNum();
     if ($arb['user_id'] == $ev0['f_uid']) {
         $r = 'e_';
         $arb = 'f_';
         $this->subject = "Фрилансер обратился в Арбитраж сервиса Безопасная Сделка";
         $userlink = $GLOBALS["host"] . "/users/" . $ev0['f_login'];
         //$msg = "Информируем вас о том, что по проекту «<a href='{$url}?site=Stage&id={$ev0['own_id']}{$this->_addUrlParams($r == 'e_' ? 'e' : 'f', '&')}'>{$stage_name}</a>» Исполнитель <a href='{$userlink}'>{$ev0['f_uname']} {$ev0['f_usurname']}</a> [<a href='{$userlink}'>{$ev0['f_login']}</a>] обратился в Арбитраж по причине:<br/><br/>";
     } else {
         $r = 'f_';
         $arb = 'e_';
         $this->subject = "Заказчик обратился в Арбитраж сервиса Безопасная Сделка";
         $userlink = $GLOBALS["host"] . "/users/" . $ev0['e_login'];
         //$msg = "Информируем вас о том, что по проекту «<a href='{$url}?site=Stage&id={$ev0['own_id']}{$this->_addUrlParams($r == 'e_' ? 'e' : 'f', '&')}'>{$stage_name}</a>» Заказчик <a href='{$userlink}'>{$ev0['e_uname']} {$ev0['e_usurname']}</a> [<a href='{$userlink}'>{$ev0['e_login']}</a>] обратился в Арбитраж по причине:<br/><br/>";
     }
     $msg = "Информируем вас о том, что пользователь <a href='{$userlink}'>{$ev0[$arb . 'uname']} {$ev0[$arb . 'usurname']}</a> [<a href='{$userlink}'>{$ev0[$arb . 'login']}</a>] обратился в Арбитраж по причине:<br/><br/>";
     $msg .= "«" . reformat($arb['descr']) . "»<br/><br/>";
     $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', '&')}'>{$sbr_num}</a> приостановлена. Срок вынесения решения – до " . sbr_stages::MAX_ARBITRAGE_DAYS . " рабочих дней с момента обращения в арбитраж.<br/><br/>";
     $msg .= "Вы можете оставить свой комментарий по поводу сложившейся ситуации в разделе «Мои Сделки», в системе комментариев к сделке «<a href='{$url}?site=Stage&id={$ev0['own_id']}{$this->_addUrlParams($r == 'e_' ? 'e' : 'f', '&')}'>{$stage_name}</a>».";
     //$msg .= "«" . reformat($arb['descr']) . "»<br/><br/>";
     //$msg .= "Пожалуйста, перейдите в <a href='{$url}?site=Stage&id={$ev0['own_id']}{$this->_addUrlParams($r == 'e_' ? 'e' : 'f', '&')}'>сделку</a> и прокомментируйте ситуацию.";
     $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');
 }
                            </div>
        </div>
    </div>

</h2>
<?php 
if ($stage->status != sbr_stages::STATUS_ARBITRAGED && $sbr->status != sbr::STATUS_CANCELED && $sbr->status != sbr::STATUS_REFUSED && $sbr->reserved_id && $stage->orders == 'DESC') {
    include $_SERVER['DOCUMENT_ROOT'] . "/sbr/tpl.stage-comment.php";
}
$update_event = array();
$update_event_sbr = array();
$cost_sys = $sbr->cost_sys;
$tz_time = strtotime($stage->data['created']);
$work_time = $stage->data['int_work_time'];
$frl_arb = false;
$is_worktime_modified = sbr_stages::isModifiedWorkTime($stage->history);
$frl_version_started_work = 1;
if ($stage->orders == 'DESC') {
    $started_worked = 0;
    foreach ($stage->history as $xact => $history) {
        $current = current($history);
        if ($current['abbr'] == 'sbr_stages.STARTED_WORK') {
            $started_worked++;
        }
    }
    $reverse_history = array_reverse($stage->history);
    $changed = array('sbr_stages.TZ_MODIFIED', 'sbr_stages.WORKTIME_MODIFIED', 'sbr_stages.COST_MODIFIED', 'sbr_stages.STATUS_MODIFIED');
    foreach ($reverse_history as $xact => $history) {
        $current = current($history);
        if (in_array($current['abbr'], $changed)) {
            $frl_version_started_work++;
Beispiel #4
0
 /**
  * Возвращает этапы текущей сделки
  * 
  * @param integer $stage_id   ид. этапа, если указан, то берем только определенный этап, иначе все текущей сделки.
  * @param boolean $get_attach   нужны ли вложения этапов?
  * @param boolean $get_su   нужны ли данные об отношении юзер/этап (последний просмотра, кол-во прочтенных комментов)?
  * @param boolean $get_feedbacks   взять отзывы по этапу от противоположного юзера.
  * @return array
  */
 function getStages($stage_id = NULL, $get_attach = false, $get_su = false, $get_feedbacks = false, $get_info_pskb = true)
 {
     $stages = NULL;
     $where = $stage_id == NULL ? $this->db()->parse("ss.sbr_id = ?i", $this->id) : $this->db()->parse("ss.id = ?i", $stage_id);
     $order_by = 'ss.num';
     if ($get_su && $this->uid) {
         $join_su = "LEFT JOIN sbr_stages_users su ON su.stage_id = ss.id AND su.user_id = {$this->session_uid}";
         $cols_su = ', ss.msgs_cnt - su.read_msgs_count AS unread_msgs_count, su.read_msgs_count, su.last_msgs_view';
     }
     if ($get_feedbacks) {
         $join_sf = "INNER JOIN sbr_feedbacks sf ON sf.id = ss.{$this->apfx}feedback_id";
         $cols_sf = ", sf.p_rate, sf.a_rate, sf.n_rate";
         $order_by = 'ss.closed_time DESC';
     }
     if ($get_info_pskb) {
         $join_sbr = "LEFT JOIN pskb_lc p ON p.sbr_id = ss.sbr_id";
         $cols_sbr = ", p.ps_emp, p.ps_frl, p.\"tagCust\", p.\"tagPerf\"";
     }
     $join_pskb = " LEFT JOIN sbr_stages_payouts ps ON ps.stage_id = ss.id";
     $cols_pskb = ', ps.state as lc_state, ps."stateReason" as lc_state_reason, COALESCE(ps.bank_completed, ps.completed) as lc_date ';
     $sql = "\n          SELECT ss.*, date_part('day', work_time) as work_days, (start_time - worked_time) as start_time_without_pause, EXTRACT(EPOCH FROM worked_time) as worked_time_sec,\n            (COALESCE(start_time, now()) + work_time)::date - now()::date as work_rem, start_time + work_time as dead_time\n                 {$cols_sbr}\n                 {$cols_su}\n                 {$cols_sf}\n                 {$cols_pskb}\n            FROM sbr_stages ss\n          {$join_sbr}  \n          {$join_su}\n          {$join_sf}\n          {$join_pskb}\n          WHERE {$where}\n          ORDER BY {$order_by}\n        ";
     if ($res = pg_query(DBConnect(), $sql)) {
         while ($row = pg_fetch_assoc($res)) {
             $stage = new sbr_stages($this);
             $stage->data = $row;
             $stage->data['cost_sys'] = $this->cost_sys;
             if ($stage->status == sbr_stages::STATUS_ARBITRAGED || $stage->status == sbr_stages::STATUS_INARBITRAGE) {
                 $stage->getArbitrage();
                 if ($stage->arbitrage['frl_percent'] !== NULL) {
                     $cost_frl = $stage->data['cost'] * $stage->arbitrage['frl_percent'];
                 } else {
                     $cost_frl = $stage->data['cost'];
                 }
             } else {
                 $cost_frl = $stage->data['cost'];
             }
             if ($row['ps_frl'] != null && $cost_frl <= pskb::WW_ONLY_SUM && $row['tagPerf'] == pskb::PHYS) {
                 // Только для физиков
                 $stage->data['ps_frl'] = pskb::WW;
             }
             if ($stage->cost * $this->cost2rur() > $this->maxNorezCost()) {
                 $this->has_norez_overcost = true;
             }
             if ($get_attach) {
                 $stage->data['attach'] = $stage->getAttach();
             }
             if ($get_su && $this->uid && $stage->data['unread_msgs_count']) {
                 $stage->data['unread_first_id'] = $stage->getFirstUnreadMsgId();
             }
             $stages[$row['num']] = $stage;
         }
     }
     return $stages;
 }
Beispiel #5
0
        echo $disabled_result ? "disabled" : "";
        ?>
>
                                      <?php 
        if ($stage->sbr->scheme_type != sbr::SCHEME_LC) {
            ?>
                                        <option>Другое (указать)</option>
                                      <?php 
        } else {
            $stage->request['result'] = $stage->request['result'] == '' ? current(sbr_stages::getArbResults($stage)) : $stage->request['result'];
        }
        //if
        ?>
  
                                      <?php 
        foreach (sbr_stages::getArbResults($stage) as $pp => $r) {
            ?>
                                         <option value="<?php 
            echo $pp;
            ?>
"<?php 
            echo $stage->request['pp_result'] == $pp ? ' selected="true"' : '';
            ?>
><?php 
            echo $pp;
            ?>
</option>
                                      <?php 
        }
        ?>
                                    </select>
Beispiel #6
0
    $sbr_data['cost_sys'] = $sbr_data['ps_emp'] ? pskb::$exrates_map[$sbr_data['ps_emp']] : $sbr_data['cost_sys'];
    ?>
                    <tr class="<?php 
    echo ++$i % 2 == 0 ? 'even' : 'odd';
    ?>
">
                        <td><?php 
    echo $sbr_data['first_time'] ? date('d.m.Y H:i', strtotime($sbr_data['first_time'])) : ' &mdash; ';
    ?>
</td>
                        <td><?php 
    echo $sbr->getContractNum($sbr_data['sbr_id'], $sbr_data['scheme_type']);
    ?>
</td>
                        <td><strong>#<?php 
    echo sbr_stages::getOuterNum($sbr_data['sbr_id'], $sbr_data['num']);
    ?>
</strong> <a href="<?php 
    echo $mode == 'all' ? '/sbr/' : '';
    ?>
?access=A&site=Stage&id=<?php 
    echo $sbr_data['id'];
    ?>
"><?php 
    echo reformat($sbr_data['name'], 30, 0, 1);
    ?>
</a></td>
                        <td class="nr-a-td-sum"><?php 
    echo sbr_meta::view_cost($sbr_data['cost'], null, false);
    ?>
</td>
Beispiel #7
0
 /**
  * Обновляем старые сделки 
  */
 public static function checkStagePayoutsCompleted()
 {
     $db = new DB('master');
     $sql = "SELECT sp.*, ss.sbr_id, ss.num, pl.lc_id, u.role, s.emp_id, s.frl_id, pl.state as lc_state \n                FROM sbr_stages_payouts sp \n                INNER JOIN sbr_stages ss ON ss.id = sp.stage_id\n                INNER JOIN sbr s ON s.id = ss.sbr_id\n                INNER JOIN pskb_lc pl ON pl.sbr_id = s.id\n                INNER JOIN users u ON u.uid = sp.user_id\n                WHERE s.scheme_type = ?i AND sp.bank_completed IS NULL AND sp.completed IS NOT NULL";
     $data = $db->rows($sql, sbr::SCHEME_LC);
     $pskb = new pskb();
     foreach ($data as $row) {
         $pskb_lc = $pskb->_historyLC($row['lc_id'], sbr_stages::getOuterNum($row['sbr_id'], $row['num']), is_emp($row['role']) ? false : true);
         $sbr = new sbr($row['emp_id']);
         $stage = $sbr->getStage($row['stage_id']);
         $stage->payoutUpdateState($pskb_lc);
     }
 }
Beispiel #8
0
                        <td class="nr-a-o-date"><?php 
    echo date('d.m.Y H:i', strtotime($sp['requested']));
    ?>
</td>
                        <td><?php 
    echo $sbr->getContractNum($sp['sbr_id'], $sp['scheme_type']);
    ?>
</td>
                        <td class="nr-a-o-num"><?php 
    echo $sp['is_arbitrage'] == 't' ? '<b>А</b>&nbsp;&nbsp;' : '';
    ?>
<a href="/sbr/?access=A&site=Stage&id=<?php 
    echo $sp['stage_id'];
    ?>
">#<?php 
    echo sbr_stages::getOuterNum($sp['sbr_id'], $sp['stage_num']);
    ?>
</a></td>
                        <td><a href="/users/<?php 
    echo $sp['login'];
    ?>
/" class="nr-a-lnk-<?php 
    echo is_emp($sp['role']) ? 'emp' : 'frl';
    ?>
"><?php 
    echo $sp['uname'] . ' ' . $sp['usurname'] . ' [' . $sp['login'] . ']';
    ?>
</a></td>
                        <td class="nr-a-td-sum"><?php 
    echo sbr_meta::view_cost($sp['credit_sum'], NULL, false);
    ?>