Ejemplo n.º 1
0
 /**
  * Вывод страницы по сбербанку - "Квитанция сбербанка".
  */
 public function sberAction()
 {
     front::og('tpl')->page = 'index';
     front::og('tpl')->script = '/scripts/bill2.js';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/bank_payments.php';
     $fm_val = '';
     /*
      * Берем данные по предыдущему переводу, если он есть
      */
     $bp = new bank_payments();
     if ($id = __paramInit('int', null, 'id')) {
         // редактируется.
         front::og('tpl')->edit = 1;
         $bp->GetRow($id, " AND user_id = {$this->uid}");
         $fm_val = $bp->sum / EXCH_TR;
         if (!$bp->id) {
             exit;
         }
     } else {
         // если нет, новый счет.
         $bp->bank_code = __paramInit('int', null, 'bc', bank_payments::BC_SB);
         $bp->sum = __paramInit('float', null, 'Sum');
         $bp_reqv = bank_payments::GetLastReqv($bp->bank_code, $this->uid);
         $bp->fio = $bp_reqv['fio'];
         $bp->address = $bp_reqv['address'];
     }
     if (!$bp->bill_num) {
         $bp->bill_num = bank_payments::GenBillNum($bp->bank_code, $this->uid, $this->account->id);
     }
     $bank = bank_payments::GetBank($bp->bank_code);
     if ($bp->accepted_time) {
         exit;
     }
     // подтверженные счета (уже перевели деньги) нельзя изменять.
     if ($_POST['act']) {
         $bp = new bank_payments();
         $bp->fio = substr(__paramInit('string', null, 'fio'), 0, 128);
         $bp->is_gift = false;
         $bp->address = substr(__paramInit('string', null, 'address'), 0, 255);
         $bp->bank_code = __paramInit('int', null, 'bc');
         $bp->sum = __paramInit('float', null, 'sum');
         setlocale(LC_ALL, 'en_US.UTF-8');
         // гребанная бета! (это не мое)
         $bp->fm_sum = $bp->sum / EXCH_TR;
         $id = __paramInit('int', null, 'id');
         /*
          * Проверка ошибок
          */
         if (!$bp->fio) {
             $alert['fio'] = 'Поле заполнено некорректно.';
         }
         if (!$bp->address) {
             $alert['address'] = 'Поле заполнено некорректно.';
         }
         if (!$bp->sum || $bp->sum < 0.01) {
             $alert['sum'] = 'Поле заполнено некорректно.';
         }
         //if($alert) break;
         if (!$alert) {
             if ($id) {
                 $bp->bank_code = null;
                 $bp->Update($id, " AND user_id = {$this->uid} AND accepted_time IS NULL");
             } else {
                 $bp->bill_num = bank_payments::GenBillNum($bp->bank_code, $this->uid, $this->account->id);
                 $bp->user_id = $this->uid;
                 $bp->op_code = 12;
                 $id = $bp->Add($error, true);
             }
             if (!$error) {
                 header('Location: /' . $this->name_page . "/print/{$id}/");
                 exit;
             }
         }
         front::og('tpl')->alert = $alert;
     }
     front::og('tpl')->bp = $bp;
     front::og('tpl')->fm_val = $fm_val;
     front::og('tpl')->display('bill/bill_sber.tpl');
 }
Ejemplo n.º 2
0
 /**
  * Выписывает счет для резервирования по безналу. Если счет на данную сделку уже существует и еще не принят, то реквизиты просто обновляются.
  * 
  * @param int     $form_type 1:юр. лицо, 2:физ. лицо.
  * @param array   $request   данные с реквизитами счета.
  * @param account $account   инициализированный экземпляр класса account текущего пользователя.
  *
  * @return bool успешно?
  */
 public function invoiceBank($form_type, $request, $account)
 {
     if ($form_type == self::FT_JURI) {
         $reqv = new reqv_ordered();
         $reqv->BindRequest(array_map('stripslashes', $request['ft' . self::FT_JURI]));
         if (!($this->error['reqv'] = $reqv->CheckInput(true))) {
             $reqv->user_id = $this->uid;
             $reqv->ammount = $this->reserve_sum;
             $reqv->op_code = self::OP_RESERVE;
             $reqv->op_date = 'now()';
             $reqv->sbr_id = $this->id;
             if ($reqv->id) {
                 $reqv->Update($reqv->id, "AND user_id = {$this->uid} AND payed_time IS NULL");
             } else {
                 unset($reqv->id);
                 $reqv->id = $reqv->Add($err, true);
             }
         }
     } elseif ($form_type == self::FT_PHYS) {
         $reqv = new bank_payments();
         $reqv->BindRequest(array_map('stripslashes', $request['ft' . self::FT_PHYS]));
         $reqv->sum = $this->reserve_sum;
         if (!($this->error['reqv'] = $reqv->CheckInput(true))) {
             $bank = $reqv->GetBank($reqv->bank_code);
             $reqv->bill_num = $bank['prefix'] . '-' . $this->getContractNum();
             // обновляем номер, т.к. схема может поменяться.
             $done = false;
             if (!$reqv->id) {
                 $reqv->user_id = $this->uid;
                 $reqv->op_code = self::OP_RESERVE;
                 $reqv->sbr_id = $this->id;
                 @($reqv->id = $reqv->Add($error, true));
                 if ($error || $reqv->id <= 0) {
                     // конфликт ключей, пытаемся обновить (с двух браузеров можно воспроизвести).
                     $reqv->id = null;
                     $this->getInvoiceReqv($form_type);
                     if ($this->reqv[sbr::FT_PHYS] && $this->reqv[sbr::FT_PHYS]->sbr_id == $this->id) {
                         $reqv->id = $this->reqv[sbr::FT_PHYS]->id;
                     }
                     $this->reqv = array();
                 } else {
                     $done = true;
                 }
             }
             if ($reqv->id && !$done) {
                 $reqv->bank_code = null;
                 $reqv->invoiced_time = 'now()';
                 $reqv->Update($reqv->id, " AND user_id = {$this->uid} AND accepted_time IS NULL");
             }
         }
     }
     $this->reqv[(int) $form_type] = $reqv;
     if ($this->error['reqv']['address']) {
         $this->error['reqv']['address'] = array('На этот адрес будут высланы все документы', 'Пример: ул. Самокатная, 1, стр. 21');
     }
     if (!$this->error['reqv'] && $request['save_finance']) {
         //@todo: запрещаем изменять финансы в старой СБР #29196
         $err = 'Прекращена поддержка СБР.';
         //parent::setUserReqv($this->uid, NULL, $form_type, $request['ft'.$form_type], $this->checkChangeFT());
         if ($err) {
             $this->error['reqv'] = $err;
         }
     }
     return !$this->error['reqv'];
 }