Exemplo n.º 1
0
 /**
  * Инициализирует реквизиты пользователя, ищет самые подходящие в соотвествии с текущим типом лица (юр/физ), ранее
  * выставленными счетами и информацией откуда предпочтительнее их брать.
  * 
  * @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;
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * Перевод для юр лиц - "Банковский перевод для юридических лиц (рубли)".
  */
 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");
 }
Exemplo n.º 3
0
    }
    $account = $bill->account;
    $tid = $bill->bank_id;
    if (!$tid) {
        header("Location: /404.php");
    }
    $sum = trim($bill->bank_sum);
    $tid = intval($tid);
    if (!$tid) {
        header("Location: /bill/");
        exit;
    }
    $no_risk = intval(trim($_REQUEST['noriskId']));
    $op_code = $no_risk ? 36 : 12;
    $uid = get_uid(false);
    $reqv = new reqv();
    $reqv->GetRow($tid, " AND user_id='{$uid}'");
    $reqv_ordered = new reqv_ordered($reqv);
    $reqv_ordered->ammount = $sum;
    $reqv_ordered->op_code = $op_code;
    $reqv_ordered->norisk_id = $no_risk;
    $reqv_ordered->is_gift = false;
    if ($tid) {
        $ord_num = $reqv_ordered->SetOrdered($tid);
    }
    $billCode = 'Б-' . $account->id . '-' . sizeof($reqv_ordered->GetByUid($uid));
}
$sum = round($sum, 2);
if ($sbr_nds) {
    $sbr_nds = round($sbr_nds, 2);
    $sbr_comm = round($sbr_comm, 2);