/** * Перевод для юр лиц - "Банковский перевод для юридических лиц (рубли)". */ public function bankAction() { front::og('tpl')->page = 'index'; $act = $this->uri[0]; if ($act == 'delete') { unset($_SESSION['sum']); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reqv.php'; $did = intval($this->uri[1]); if ($did) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reqv.php'; $reqv = new reqv(); $reqv->Del($did, " AND user_id='" . get_uid() . "'"); header("Location: /{$this->name_page}/bank/"); exit; } unset($reqv); } if ($_POST['sum'] > 0) { $_SESSION['sum'] = floatval($_POST['sum']); } else { front::og('tpl')->sum = floatval($_SESSION['sum']); } // Обработка подстраницы редактирования данных для перевода if ($act == 'edit') { /** * Подключение всех необходимых классов для вывода данной страницы. */ require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reqv.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/country.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reqv_ordered.php'; if ($_POST['update']) { $reqv = new reqv(); $reqv->BindRequest($_POST); $error = $reqv->CheckInput(); if (!$error) { $reqv->user_id = get_uid(); $reqv->Update($reqv->id, " AND user_id='" . get_uid() . "'"); header("Location: /{$this->name_page}/bank/#reqv" . $reqv->id); exit; } else { $action = 'edit'; $edit_mode = 1; $eid = intval($reqv->id); } front::og('tpl')->error = $error; } front::og('tpl')->countries = country::GetCountries(); $reqvs = new reqv(); $reqvByUid = $reqvs->GetByUid(get_uid()); $reqvs_ord = new reqv_ordered(); $billNum = sizeof($reqvs_ord->GetByUid(get_uid())); $sum = trim($this->uri[2]); $norisk_id = intval(trim($_REQUEST['noriskId'])); front::og('tpl')->reqvs = $reqvs; front::og('tpl')->sum = $sum; front::og('tpl')->reqvByUid = $reqvByUid; front::og('tpl')->reqvs_ord = $reqvs_ord; front::og('tpl')->billNum = $billNum; front::og('tpl')->norisk_id = $norisk_id; front::og('tpl')->edit_mode = $edit_mode = 1; front::og('tpl')->eid = $eid = intval($this->uri[1]); // Событие нажатия кнопки - Обновить if (!$_POST['update']) { foreach ($reqvByUid as $ikey => $value) { $reqvs->BindRequest($value); if ($edit_mode && $reqvs->id == $eid) { $reqvkey = $ikey; } } $reqv = new reqv(); if ($act == 'edit' && !$error) { $reqv->BindRequest($reqvByUid[$reqvkey]); } elseif ($error) { $reqv->BindRequest($_POST); } } front::og('tpl')->reqv = $reqv; front::og('tpl')->display('bill/bill_bank_step2.tpl'); exit; } else { // Иначе выводим главную страницу, где необходимо заполнять поля require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reqv.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/city.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reqv_ordered.php'; front::og('tpl')->countries = country::GetCountries(); $reqvs = new reqv(); $reqvByUid = $reqvs->GetByUid(get_uid()); $reqvs_ord = new reqv_ordered(); $billNum = sizeof($reqvs_ord->GetByUid(get_uid())); $sum = trim(!$_POST['sum'] ? $_SESSION['sum'] : floatval($_POST['sum'])); $norisk_id = intval(trim($_REQUEST['noriskId'])); front::og('tpl')->reqvs = $reqvs; front::og('tpl')->sum = $sum; front::og('tpl')->reqvByUid = $reqvByUid; front::og('tpl')->reqvs_ord = $reqvs_ord; front::og('tpl')->billNum = $billNum; front::og('tpl')->norisk_id = $norisk_id; $reqv = new reqv(); if ($action == 'edit' && !$error) { $reqv->BindRequest($reqvByUid[$reqvkey]); } elseif ($error) { $reqv->BindRequest($_POST); } front::og('tpl')->reqv = $reqv; /* * Переход на следующую страницу для того чтобы подтвердить введенные данные */ if ($_POST['send']) { $reqv = new reqv(); $reqv->BindRequest($_POST); $error = $reqv->CheckInput(); //var_dump($error); if (!$error && !$_POST['editing']) { //$reqv->user_id = get_uid(); //$reqv->Add($err); front::og('tpl')->sum = !$_POST['sum'] ? $_SESSION['sum'] : floatval($_POST['sum']); //front::og("tpl")->sum = $_POST['sum']; front::og('tpl')->reqv = $reqv; front::og('tpl')->display('bill/bill_bank_step3.tpl'); exit; } front::og('tpl')->sum = !$_POST['sum'] ? $_SESSION['sum'] : floatval($_POST['sum']); //front::og("tpl")->sum = $_POST['sum']; front::og('tpl')->reqv = $reqv; front::og('tpl')->error = $error; //array("firm"=>"Введите название"); //front::og("tpl")->display("bill/bill_bank_step2.tpl"); //exit; } /* * Поддветрждение данных и выписка счета. */ if ($_POST['next']) { $reqv = new reqv(); $reqv->BindRequest($_POST); $error = $reqv->CheckInput(); if (!$error) { $reqv->user_id = get_uid(); $reqv->Add($err); header("Location: /{$this->name_page}/bank/"); exit; } front::og('tpl')->sum = !$_POST['sum'] ? $_SESSION['sum'] : floatval($_POST['sum']); //front::og("tpl")->sum = $_POST['sum']; front::og('tpl')->reqv = $reqv; front::og('tpl')->error = $error; } front::og('tpl')->display('bill/bill_bank_step2.tpl'); } //front::og("tpl")->display("bill/bill_bank_step1.tpl"); }
/** * Инициализирует реквизиты пользователя, ищет самые подходящие в соотвествии с текущим типом лица (юр/физ), ранее * выставленными счетами и информацией откуда предпочтительнее их брать. * * @param int $form_type 1:юр. лицо, 2:физ. лицо. Если NULL, то неизвестно и будет определено из последних операций по безналу. * @param int $reqv_mode откуда предпочтительнее взять реквиизты (-1:непонятно откуда брать, 1:из Финансов, 2:самые последние). */ public function getInvoiceReqv(&$form_type, &$reqv_mode = -1) { // -1:непонятно откуда брать, 1:из Финансов, 2:самые последние. if ($reqv_mode != 1) { if (!$this->reqv[sbr::FT_JURI]) { $this->reqv[sbr::FT_JURI] = new reqv_ordered(); $this->reqv[sbr::FT_JURI]->GetRow('', "user_id = {$this->uid}", "(sbr_id IS NOT NULL) DESC, (sbr_id = {$this->id}) DESC, payed_time DESC, op_date DESC LIMIT 1"); if ($this->reqv[sbr::FT_JURI]->id) { if ($this->id != $this->reqv[sbr::FT_JURI]->sbr_id) { unset($this->reqv[sbr::FT_JURI]->id); } } else { $reqv = new reqv(); if (($reqvs = $reqv->GetByUid($this->uid)) && ($reqvs = end($reqvs))) { $this->reqv[sbr::FT_JURI]->BindRequest($reqvs, true); unset($this->reqv[sbr::FT_JURI]->id); } } } if (!$this->reqv[sbr::FT_PHYS]) { $this->reqv[sbr::FT_PHYS] = new bank_payments(); $this->reqv[sbr::FT_PHYS]->GetRow('', "user_id = {$this->uid}", "(sbr_id IS NOT NULL) DESC, (sbr_id = {$this->id}) DESC, accepted_time, invoiced_time DESC LIMIT 1"); if ($this->reqv[sbr::FT_PHYS]->id) { if ($this->id != $this->reqv[sbr::FT_PHYS]->sbr_id) { unset($this->reqv[sbr::FT_PHYS]->id); } } } } if ($reqv_mode != 2) { if (!$this->reqv[sbr::FT_PHYS] && !$this->reqv[sbr::FT_JURI]) { $form_type = self::FT_JURI; $this->reqv[sbr::FT_JURI] = new reqv_ordered(); $this->reqv[sbr::FT_PHYS] = new bank_payments(); if ($this->getUserReqvs()) { $this->reqv[sbr::FT_JURI]->BindRequest($this->user_reqvs[sbr::FT_JURI], true); $this->reqv[sbr::FT_PHYS]->BindRequest($this->user_reqvs[sbr::FT_PHYS], true); $form_type = $this->user_reqvs['form_type']; unset($this->reqv[sbr::FT_PHYS]->id); unset($this->reqv[sbr::FT_JURI]->id); } $reqv_mode = 1; return; } } $reqv_mode = 2; if ($form_type === null) { // подбираем последние реквизиты (физ или юр). $form_type = self::FT_JURI; if (!$this->reqv[sbr::FT_PHYS]->user_id) { $form_type = self::FT_JURI; } elseif (!$this->reqv[sbr::FT_JURI]->user_id) { $form_type = self::FT_PHYS; } elseif ($this->reqv[sbr::FT_PHYS]->sbr_id == $this->id) { if ($this->reqv[sbr::FT_JURI]->sbr_id != $this->id || strtotime($this->reqv[sbr::FT_JURI]->op_date) < strtotime($this->reqv[sbr::FT_PHYS]->invoiced_time)) { $form_type = self::FT_PHYS; } } } }