Пример #1
0
 /**
  * Set $conditions based on user input. This function must be called
  * only once, because it does not do any cleanup
  * @param Am_Request|array $vars
  * @see $this->search
  */
 function setFromRequest($vars)
 {
     if ($vars instanceof Am_Request) {
         $vars = $vars->toArray();
     }
     $this->initPossibleConditions();
     $this->createForm((array) $vars);
     $vars = $this->form->getValue();
     $search = @$vars[$this->prefix];
     foreach ($this->possibleConditions as $cond) {
         if ($cond->setFromRequest($search)) {
             $this->conditions[] = $cond;
             $el = $this->form->getElementById($cond->getId());
             if ($el) {
                 $el->setAttribute('class', 'searchField');
             }
             // remote "empty" class
         }
     }
 }
 protected function _addPendingInvoiceAndPayment(Invoice $invoice, Am_Form $form, $vars)
 {
     if (!$vars['paysys_id']) {
         $form->getElementById('add-invoice-paysys_id')->setError(___('This field is required for choosen action'));
     }
     if (!$vars['receipt']) {
         $form->getElementById('add-invoice-receipt')->setError(___('This field is required for choosen action'));
     }
     if (!$vars['paysys_id'] || !$vars['receipt']) {
         return false;
     }
     try {
         $invoice->setPaysystem($vars['paysys_id'], false);
     } catch (Am_Exception_InputError $e) {
         $form->setError($e->getMessage());
         return false;
     }
     $errors = $invoice->validate();
     if ($errors) {
         $form->setError(current($errors));
         return false;
     }
     $invoice->data()->set('added-by-admin', $this->getDi()->authAdmin->getUserId());
     $invoice->save();
     if ($invoice->first_total <= 0) {
         $invoice->addAccessPeriod(new Am_Paysystem_Transaction_Free($this->getDi()->plugins_payment->get($vars['paysys_id'])));
     } else {
         $transaction = new Am_Paysystem_Transaction_Manual($this->getDi()->plugins_payment->get($vars['paysys_id']));
         $transaction->setAmount($invoice->first_total)->setReceiptId($vars['receipt'])->setTime(new DateTime($vars['tm_added']));
         $invoice->addPayment($transaction);
     }
     return true;
 }