Пример #1
0
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/buttons/multi_buttons.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/LocalDateTime.php';
$multi = new multi_buttons();
if ($stage->version != $stage->frl_version) {
    // Фрилансер еще не согласился, для расчета берем старую дату
    $frl_version = $stage->getVersion($stage->frl_version, $stage->data);
    $work_time = intval($frl_version['work_time']);
    $start_time = $frl_version['start_time'];
} else {
    $work_time = intval($stage->work_time);
    $start_time = $stage->start_time;
}
$work_time = $work_time < 0 ? 0 : $work_time;
// Если проект уже просрочен даем еще 5 дней с момента отмены арбитража
$cdate = new LocalDateTime(date('d.m.Y', strtotime($start_time . ' + ' . $work_time . 'day')));
$cdate->getWorkForDay(pskb::PERIOD_EXP);
$days = $work_time + $cdate->getCountDays() . 'day';
$overtime = strtotime($start_time . ' + ' . $days);
if ($sbr->data['lc_id'] > 0) {
    $overtime = strtotime($sbr->data['dateEndLC'] . ' - ' . pskb::ARBITRAGE_PERIOD_DAYS . ' day');
    // Сб, Вс не рабочие дни
    if (date('w', $overtime) == 0 || date('w', $overtime) == 6) {
        $d = date('w', $overtime) == 6 ? 1 : 2;
        $overtime = $overtime - $d * 3600 * 24;
    }
} else {
    $overtime = null;
}
// Если в арбитраже, действий делать никаких нельзя, независимо от статуса СБР
if ($stage->data['status'] == sbr_stages::STATUS_INARBITRAGE || $stage->data['status'] == sbr_stages::STATUS_ARBITRAGED) {
Пример #2
0
                <?php 
        }
        ?>
            <?php 
    }
    ?>
	</div>
</div>	
<?php 
}
?>

<?php 
if ($stage->status == sbr_stages::STATUS_COMPLETED && !$stage->data['frl_feedback_id'] && $stage->sbr->scheme_type == sbr::SCHEME_LC) {
    // $completed_time -- время завершения сделки берется из файла tpl.stage-history-event.php -- чтобы лишний раз не выбирать его
    $cdate = new LocalDateTime($completed_time);
    $cdate->getWorkForDay(pskb::PERIOD_FRL_EXEC);
    $pskb_created = $cdate->getTimestamp();
    $overtime_completed = strtotime($completed_time . ' + ' . pskb::PERIOD_FRL_EXEC . 'day');
    ?>
<div class="b-fon b-fon_width_full">
    <div class="b-fon__body b-fon__body_pad_10 b-fon__body_padleft_30 b-fon__body_fontsize_13 b-fon__body_bg_f0ffdf">
        <span class="b-icon b-icon_sbr_gattent b-icon_margleft_-20"></span>
        Чтобы получить заработанные деньги, вам необходимо нажать кнопку «Завершить этап» до <?php 
    echo date('d', $overtime_completed);
    ?>
 <?php 
    echo monthtostr(date('n', $overtime_completed), true);
    ?>
 <?php 
    echo date('Y', $overtime_completed);
Пример #3
0
function getLoadExcDate($year)
{
    session_start();
    $objResponse = new xajaxResponse();
    if (!hasPermissions('admin')) {
        return $objResponse;
    }
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/LocalDateTime.php';
    $odate = new LocalDateTime();
    $edate = $odate->getExcDaysInit($year, false, false);
    $resp['success'] = true;
    $resp['holidays'] = iconv('windows-1251', 'UTF-8', $edate['holidays']);
    $resp['workdays'] = iconv('windows-1251', 'UTF-8', $edate['workdays']);
    echo json_encode($resp);
}
Пример #4
0
 /**
  * Взять информацию по арбитражу, заполняет $this->arbitrage.
  *
  * @param boolean $get_user   нужна ли подробная информацию по пользователю, обратившемуся в арбитраж.
  * @param boolean $get_attach   выдать прикрепленные к обращению файлы?
  * @return array   данные по арбитражу.
  */
 function getArbitrage($get_user = false, $get_attach = true)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/LocalDateTime.php';
     if ($get_user) {
         $join_u = 'INNER JOIN users u ON u.uid = sa.user_id';
         $cols_u = ', u.login, u.uname, u.usurname, u.photo, u.role, u.is_pro, u.is_team, u.is_pro_test';
     }
     $sql = "\n          SELECT sa.* {$cols_u}\n            FROM sbr_stages_arbitrage sa\n          {$join_u}\n           WHERE sa.stage_id = {$this->id}\n        ";
     if ($res = pg_query(self::connect(), $sql)) {
         $this->arbitrage = pg_fetch_assoc($res);
         if ($this->arbitrage && $get_attach) {
             $sql = "\n                  SELECT saa.*, f.fname as name, f.path, f.size\n                    FROM sbr_stages_arbitrage_attach saa\n                  INNER JOIN\n                    file_sbr f\n                      ON f.id = saa.file_id\n                  WHERE saa.arbitrage_id = {$this->arbitrage['id']}\n                ";
             if ($res = pg_query(self::connect(), $sql)) {
                 while ($row = pg_fetch_assoc($res)) {
                     $this->arbitrage['attach'][$row['id']] = $row;
                 }
             }
         }
         // Костыль чтобы проскочить условия оставления отзывов
         if ($this->sbr->isFrl() && $this->arbitrage['frl_percent'] == 0 && $this->data['frl_completed'] == 't') {
             $this->data['frl_feedback_id'] = true;
         }
         if ($this->sbr->isEmp() && $this->arbitrage['frl_percent'] == 1 && $this->data['emp_completed'] == 't') {
             $this->data['emp_feedback_id'] = true;
         }
     }
     if (!$this->arbitrage) {
         $this->arbitrage = NULL;
     } else {
         $ldt = new LocalDateTime(date('d.m.Y H:i:s', strtotime($this->arbitrage['requested'])));
         $ldt->getWorkForDay(self::MAX_ARBITRAGE_DAYS);
         $overtime_arbitrage = $ldt->getTimestamp();
         $this->arbitrage['overtime_arbitrage'] = $overtime_arbitrage;
     }
     return $this->arbitrage;
 }
Пример #5
0
 private static function INSTANT()
 {
     return LocalDateTime::of(2008, 6, 30, 11, 30, 10, 500)->atZone(ZoneOffset::ofHours(2))->toInstant();
 }
Пример #6
0
 if ($current['abbr'] == 'sbr_stages.MONEY_PAID') {
     $type_payment = $stage->sbr->scheme_type == sbr::SCHEME_LC ? pskb::$exrates_map[$stage->data['ps_frl']] : ($stage->type_payment == exrates::FM ? $stage->type_payment : null);
     if ($stage->data['lc_state'] == pskb::PAYOUT_ERR) {
         $type_payment = exrates::WEBM;
         // Если происходит ошибка выплаты деньги всегда идут на веб-кошелек
     }
     $current['additional'] = 'На ' . sbr_meta::view_type_payment($type_payment, $type_payment == exrates::CARD ? 'вашу ' : 'ваш ') . ' были переведены ' . sbr_meta::view_cost($stage->getPayoutSum(sbr::FRL, $type_payment), $stage->type_payment == exrates::FM ? $stage->type_payment : $stage->sbr->cost_sys) . ' Зачисление денежных средств произведено ' . date('d.m.Y в H:i', strtotime($stage->data['lc_date'])) . ' согласно пункту 6.7 <a class="b-layout__link" href="' . $sbr->getDocumentLink('contract') . '">Договора</a>.';
 }
 if ($current['abbr'] == 'sbr_stages.STATUS_MODIFIED' && $current['new_val'] == sbr_stages::STATUS_COMPLETED) {
     $current['abbr'] .= '_OK';
 }
 if ($current['abbr'] == 'sbr_stages.REFUSE' && $current['new_val'] == '') {
     $current['additional'] = $sbr->isEmp() ? " и предпочел не указывать причину" : " и предпочли не указывать причину";
 }
 if ($current['abbr'] == 'sbr_stages.OVERTIME') {
     $cdate = new LocalDateTime($current['xtime']);
     $cdate->getWorkForDay(pskb::PERIOD_EXP);
     $overtime = strtotime($current['xtime'] . " + " . $cdate->getCountDays() . "day");
     $current['additional'] = date('d', $overtime) . " " . monthtostr(date('n', $overtime), true) . " " . date('Y', $overtime);
 }
 if ($current['abbr'] == 'sbr.AGREE' && ($sbr->isFrl() || $sbr->isAdmin() || $sbr->isAdminFinance())) {
     $type_payment = $stage->sbr->scheme_type == sbr::SCHEME_LC ? pskb::$exrates_map[$stage->data['ps_frl']] : $stage->type_payment;
     if ($stage->data['ps_frl'] == pskb::WW) {
         $current['additional'] = '. Способ получения гонорара — <a class="b-post__link" href="https://webpay.pscb.ru/login/auth">Веб-кошелек</a> (№ ' . $sbr->data['numPerf'] . ')';
     } else {
         $current['additional'] = ', выбрав вывод ' . sbr_meta::view_type_payment($type_payment, 'на ');
     }
 }
 if ($current['abbr'] == 'sbr.RESERVE' && ($sbr->isEmp() || $sbr->isAdmin() || $sbr->isAdminFinance())) {
     $type_payment = $stage->sbr->scheme_type == sbr::SCHEME_LC ? pskb::$exrates_map[$stage->sbr->data['ps_emp']] : $stage->sbr->cost_sys;
     $current['additional'] = ' через ' . sbr_meta::view_type_payment($type_payment);
Пример #7
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/buttons/multi_buttons.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/LocalDateTime.php';
$multi = new multi_buttons();
if ($stage->version != $stage->frl_version) {
    // Фрилансер еще не согласился, для расчета берем старую дату
    $frl_version = $stage->getVersion($stage->frl_version, $stage->data);
    $work_time = intval($frl_version['work_time']);
    $start_time = $frl_version['start_time'];
} else {
    $work_time = intval($stage->work_time);
    $start_time = $stage->start_time;
}
$work_time = $work_time < 0 ? 0 : $work_time;
$cdate = new LocalDateTime(date('d.m.Y', strtotime($start_time . ' + ' . $work_time . 'day')));
$cdate->getWorkForDay(pskb::PERIOD_EXP);
$days = $work_time + pskb::PERIOD_EXP . 'day';
$overtime = strtotime($start_time . ' + ' . $days);
if ($sbr->data['lc_id'] > 0) {
    $overtime = strtotime($sbr->data['dateEndLC'] . ' - ' . pskb::ARBITRAGE_PERIOD_DAYS . ' day');
    // Сб, Вс не рабочие дни
    if (date('w', $overtime) == 0 || date('w', $overtime) == 6) {
        $d = date('w', $overtime) == 6 ? 1 : 2;
        $overtime = $overtime - $d * 3600 * 24;
    }
} else {
    $overtime = null;
}
// Если в арбитраже действий, делать никаких нельзя, независимо от статуса СБР, если завершено кнопок уже никаких не будет
if ($stage->data['status'] == sbr_stages::STATUS_INARBITRAGE || $stage->data['status'] == sbr_stages::STATUS_ARBITRAGED || $stage->status == sbr_stages::STATUS_COMPLETED) {
Пример #8
0
    ?>
<div class="b-fon b-fon_width_full">
    <div class="b-fon__body b-fon__body_pad_10 b-fon__body_padleft_30 b-fon__body_fontsize_13 b-fon__body_bg_ffeeeb">
        <span class="b-icon b-icon_sbr_rattent b-icon_margleft_-20"></span>
        Исполнитель не приступит к работе, пока вы не <a class="b-fon__link" href="/<?php 
    echo sbr::NEW_TEMPLATE_SBR;
    ?>
/?site=reserve&id=<?php 
    echo $sbr->id;
    ?>
">зарезервируете деньги</a> под сделку.
	</div>
</div>	
<?php 
} elseif ($sbr->status == sbr::STATUS_PROCESS && !$sbr->data['reserved_id'] && $sbr->state == 'new') {
    $cdate = new LocalDateTime($sbr->pskb_created);
    $cdate->getWorkForDay(pskb::PERIOD_RESERVED);
    $pskb_created = $cdate->getTimestamp();
    ?>
<div class="b-fon b-fon_width_full">
    <div class="b-fon__body b-fon__body_pad_10 b-fon__body_padleft_30 b-fon__body_fontsize_13 b-fon__body_bg_f0ffdf">
        <span class="b-icon b-icon_sbr_gattent b-icon_margleft_-20"></span>
        Вам необходимо зарезервировать деньги на сделку до <?php 
    echo date('d', $pskb_created);
    ?>
 <?php 
    echo monthtostr(date('n', $pskb_created), true);
    ?>
 <?php 
    echo date('Y', $pskb_created);
    ?>
Пример #9
0
 /**
  * Создает аккредитив. Регистрирует, если необходимо, кошельки для пользователей.
  * В случае создания кошельков банк отправляет пользователям смс с временным паролем.
  * 
  * @param type $sum         Сумма резерва
  * 
  * @return pskb_lc
  */
 public function reserve()
 {
     $lc = $this->getLC();
     $numDog = $this->_sbr->data['id'];
     if ($lc['lc_id'] > 0 && $lc['state'] == self::STATE_ERR) {
         $resp = $this->_checks(json_encode(array('id' => array($lc['lc_id']))));
         $lc_ch = $resp[$lc['lc_id']];
         if ($lc_ch->state == self::STATE_NEW) {
             if ($this->not_different_finance) {
                 return 'no_different';
             } else {
                 $this->upLC(array('lc_id' => null), $lc['lc_id']);
                 // Нужен новый аккредитив, изменились данные резерва
                 $lc['lc_id'] = null;
             }
         } elseif ($lc_ch->state == self::STATE_COVER) {
             $this->upLC(array('state' => 'new'), $lc['lc_id']);
             pskb::checkStatus(array($lc['lc_id']), $in, $out);
             return true;
         }
     }
     if (!$lc) {
         $this->_setError('Ошибка запроса.');
         return false;
     }
     if ($lc['lc_id'] && $lc['state'] == self::STATE_NEW) {
         $this->_setError('Аккредитив уже создан. Ожидается оплата.');
         return false;
     }
     $cdate = new LocalDateTime();
     $cdate->getExcDaysInit(false, true);
     $stages = $this->_sbr->getStages();
     $work_time = 0;
     foreach ($stages as $stage) {
         $work_time += $stage->data['work_time'];
         $cdate->start_time = "now + {$work_time} day";
         $cdate->setTimestamp(strtotime("now + {$work_time} day"));
         $cdate->getWorkForDay(self::TEMP_STAGE_DELAY);
         $work_time += $cdate->getCountDays();
     }
     // Считаем 5 рабочих дней
     $cdate->getWorkForDay(self::DATE_COVER_DELAY, true);
     $cover_time = $cdate->getTimestamp();
     $exec_time = $cover_time + 3600 * 24 * $work_time;
     $end_time = $exec_time + 3600 * 24 * self::DATE_END_DELAY;
     $dateCoverLC = date('d.m.Y', $cover_time);
     $dateExecLC = date('d.m.Y', $exec_time);
     $dateEndLC = date('d.m.Y', $end_time);
     $resp = $this->_addLC($lc['sum'], $this->_sbr->data['id'], $dateExecLC, $dateEndLC, $dateCoverLC, $lc['tagCust'], $lc['alienCust'], $lc['nameCust'], $lc['numCust'], $lc['psCust'], $lc['accCust'], $lc['innCust'], $lc['nameBankCust'], $lc['swiftCust'], $lc['corAccbankCust'], $lc['emailCust'], $lc['cityBankCust'], $lc['cntrBankCust'], $lc['tagPerf'], $lc['alienPerf'], $lc['namePerf'], $lc['numPerf'], $lc['psPerf'], $lc['accPerf'], $lc['innPerf'], $lc['nameBankPerf'], $lc['swiftPerf'], $lc['corAccbankPerf'], $lc['emailPerf'], $lc['cityBankPerf'], $lc['cntrBankPerf'], $this->_sbr->data['cost']);
     $dateCoverLC = date('Y-m-d', $cover_time);
     $dateExecLC = date('Y-m-d', $exec_time);
     $dateEndLC = date('Y-m-d', $end_time);
     if ($resp->id) {
         $data = array('lc_id' => $resp->id, 'dateCoverLC' => $dateCoverLC, 'dateExecLC' => $dateExecLC, 'dateEndLC' => $dateEndLC, 'state' => $resp->state, 'stateReason' => $resp->stateReason);
         $res = $this->upLC($data, $this->_sbr->data['id'], 'sbr_id');
     } else {
         $this->_setError('Ошибка создания аккредитива.');
         $resp = false;
     }
     return $resp;
 }
Пример #10
0
 if ($current['abbr'] == 'sbr_stages.MONEY_PAID') {
     $type_payment = $stage->sbr->scheme_type == sbr::SCHEME_LC ? pskb::$exrates_map[$stage->data['ps_frl']] : ($stage->type_payment == exrates::FM ? $stage->type_payment : null);
     if ($stage->data['lc_state'] == pskb::PAYOUT_ERR) {
         $type_payment = exrates::WEBM;
         // Если происходит ошибка выплаты деньги всегда идут на веб-кошелек
     }
     $current['additional'] = 'На ' . sbr_meta::view_type_payment($type_payment, $type_payment == exrates::CARD ? 'вашу ' : 'ваш ') . ' были переведены ' . sbr_meta::view_cost($stage->getPayoutSum(sbr::FRL, $type_payment), $stage->type_payment == exrates::FM ? $stage->type_payment : $stage->sbr->cost_sys) . ' Зачисление денежных средств произведено ' . date('d.m.Y в H:i', strtotime($stage->data['lc_date'])) . ' согласно пункту 6.7 <a class="b-layout__link" href="' . $sbr->getDocumentLink('contract') . '">Договора</a>.';
 }
 if ($current['abbr'] == 'sbr_stages.STATUS_MODIFIED' && $current['new_val'] == sbr_stages::STATUS_COMPLETED) {
     $current['abbr'] .= '_OK';
 }
 if ($current['abbr'] == 'sbr_stages.REFUSE' && $current['new_val'] == '') {
     $current['additional'] = $sbr->isEmp() ? ' и предпочел не указывать причину' : ' и предпочли не указывать причину';
 }
 if ($current['abbr'] == 'sbr_stages.OVERTIME') {
     $cdate = new LocalDateTime($current['xtime']);
     $cdate->getWorkForDay(pskb::PERIOD_EXP);
     $overtime = strtotime($current['xtime'] . ' + ' . $cdate->getCountDays() . 'day');
     $current['additional'] = date('d', $overtime) . ' ' . monthtostr(date('n', $overtime), true) . ' ' . date('Y', $overtime);
 }
 if ($current['abbr'] == 'sbr.AGREE' && ($sbr->isFrl() || $sbr->isAdmin() || $sbr->isAdminFinance())) {
     $type_payment = $stage->sbr->scheme_type == sbr::SCHEME_LC ? pskb::$exrates_map[$stage->data['ps_frl']] : $stage->type_payment;
     if ($stage->data['ps_frl'] == pskb::WW) {
         $current['additional'] = '. Способ получения гонорара — <a class="b-post__link" href="https://webpay.pscb.ru/login/auth">Веб-кошелек</a> (№ ' . $sbr->data['numPerf'] . ')';
     } else {
         $current['additional'] = ', выбрав вывод ' . sbr_meta::view_type_payment($type_payment, 'на ');
     }
 }
 if ($current['abbr'] == 'sbr.RESERVE' && ($sbr->isEmp() || $sbr->isAdmin() || $sbr->isAdminFinance())) {
     $type_payment = $stage->sbr->scheme_type == sbr::SCHEME_LC ? pskb::$exrates_map[$stage->sbr->data['ps_emp']] : $stage->sbr->cost_sys;
     $current['additional'] = ' через ' . sbr_meta::view_type_payment($type_payment);