/** * Взять информацию по арбитражу, заполняет $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; }
?> <?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); ?> .
/** * Создает аккредитив. Регистрирует, если необходимо, кошельки для пользователей. * В случае создания кошельков банк отправляет пользователям смс с временным паролем. * * @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; }