protected function applyFilter()
 {
     class_exists('Am_Form', true);
     $filter = (array) $this->vars['filter'];
     $q = $this->grid->getDataSource();
     $dateField = $this->dateField;
     /* @var Am_Query $q */
     if ($filter['dat1']) {
         $q->addWhere("t.{$dateField} >= ?", Am_Form_Element_Date::createFromFormat(null, $filter['dat1'])->format('Y-m-d 00:00:00'));
     }
     if ($filter['dat2']) {
         $q->addWhere("t.{$dateField} <= ?", Am_Form_Element_Date::createFromFormat(null, $filter['dat2'])->format('Y-m-d 23:59:59'));
     }
     if (@$filter['text']) {
         switch (@$filter['type']) {
             case 'invoice':
                 $q->addWhere('t.invoice_id=?d', $filter['text']);
                 break;
             case 'login':
                 $q->addWhere('login=?', $filter['text']);
                 break;
             case 'receipt':
                 $q->addWhere('receipt_id LIKE ?', '%' . $filter['text'] . '%');
                 break;
         }
     }
 }
 protected function applyFilter()
 {
     class_exists('Am_Form', true);
     $filter = (array) $this->vars['filter'];
     $q = $this->grid->getDataSource();
     $dateField = $this->vars['filter']['datf'];
     if (!array_key_exists($dateField, $this->getDateFieldOptions())) {
         throw new Am_Exception_InternalError(sprintf('Unknown date field [%s] submitted in %s::%s', $dateField, __CLASS__, __METHOD__));
     }
     /* @var $q Am_Query */
     if ($filter['dat1']) {
         $q->addWhere("t.{$dateField} >= ?", Am_Form_Element_Date::createFromFormat(null, $filter['dat1'])->format('Y-m-d 00:00:00'));
     }
     if ($filter['dat2']) {
         $q->addWhere("t.{$dateField} <= ?", Am_Form_Element_Date::createFromFormat(null, $filter['dat2'])->format('Y-m-d 23:59:59'));
     }
     if (@$filter['text']) {
         switch (@$filter['type']) {
             case 'invoice':
                 if ($q->getTableName() == '?_invoice') {
                     $q->leftJoin('?_invoice_payment', 'p');
                     $q->leftJoin('?_invoice_refund', 'rf');
                     $q->addWhere('(t.invoice_id=? OR t.public_id=? OR p.display_invoice_id=? or rf.display_invoice_id=?)', $filter['text'], $filter['text'], $filter['text'], $filter['text']);
                 } else {
                     $q->addWhere('(t.invoice_id=? OR t.invoice_public_id=? or t.display_invoice_id=?)', $filter['text'], $filter['text'], $filter['text']);
                 }
                 break;
             case 'login':
                 $q->addWhere('login=?', $filter['text']);
                 break;
             case 'name':
                 $q->addWhere("name_f LIKE ? OR name_l LIKE ?\n                        OR CONCAT(name_f, ' ', name_l) LIKE ?\n                        OR CONCAT(name_l, ' ', name_f) LIKE ?", '%' . $filter['text'] . '%', '%' . $filter['text'] . '%', '%' . $filter['text'] . '%', '%' . $filter['text'] . '%');
                 break;
             case 'receipt':
                 if ($q->getTableName() == '?_invoice') {
                     $q->leftJoin('?_invoice_payment', 'p');
                 }
                 $q->addWhere('receipt_id LIKE ?', '%' . $filter['text'] . '%');
                 break;
             case 'coupon':
                 if ($q->getTableName() != '?_invoice') {
                     $q->leftJoin('?_invoice', 'i', 't.invoice_id=i.invoice_id');
                 }
                 $q->addWhere('coupon_code=?', $filter['text']);
                 break;
         }
     }
     if (@$filter['product_id']) {
         $q->leftJoin('?_invoice_item', 'ii', 't.invoice_id=ii.invoice_id')->addWhere('ii.item_type=?', 'product')->addWhere('ii.item_id in (?a)', $filter['product_id']);
     }
     if (@$filter['paysys_id']) {
         $q->addWhere('paysys_id in (?a)', $filter['paysys_id']);
     }
 }
 protected function applyFilter()
 {
     if ($filter = $this->getParam('filter')) {
         foreach ($this->filterMap as $alias => $fields) {
             foreach ($fields as $field) {
                 $c = new Am_Query_Condition_Field($field, 'LIKE', '%' . $filter . '%', $alias);
                 if (!$condition) {
                     $condition = $c;
                 } else {
                     $condition->_or($c);
                 }
             }
         }
         $this->grid->getDataSource()->getDataSourceQuery()->add($condition);
     }
     if ($filter = $this->getParam('dat1')) {
         $this->grid->getDataSource()->getDataSourceQuery()->addWhere("t.{$this->datField} >= ?", Am_Form_Element_Date::createFromFormat(null, $filter)->format('Y-m-d 00:00:00'));
     }
     if ($filter = $this->getParam('dat2')) {
         $this->grid->getDataSource()->getDataSourceQuery()->addWhere("t.{$this->datField} <= ?", Am_Form_Element_Date::createFromFormat(null, $filter)->format('Y-m-d 23:59:59'));
     }
 }
 protected function applyFilter()
 {
     class_exists('Am_Form', true);
     $filter = (array) $this->vars['filter'];
     $q = $this->grid->getDataSource();
     $dateField = $this->vars['filter']['datf'];
     if (!array_key_exists($dateField, $this->getDateFieldOptions())) {
         throw new Am_Exception_InternalError(sprintf('Unknown date field [%s] submitted in %s::%s', $dateField, __CLASS__, __METHOD__));
     }
     /* @var $q Am_Query */
     if ($filter['dat1']) {
         $q->addWhere("t.{$dateField} >= ?", Am_Form_Element_Date::createFromFormat(null, $filter['dat1'])->format('Y-m-d 00:00:00'));
     }
     if ($filter['dat2']) {
         $q->addWhere("t.{$dateField} <= ?", Am_Form_Element_Date::createFromFormat(null, $filter['dat2'])->format('Y-m-d 23:59:59'));
     }
     if (@$filter['text']) {
         switch (@$filter['type']) {
             case 'invoice':
                 $q->addWhere('(t.invoice_id=? OR t.invoice_public_id=?)', $filter['text'], $filter['text']);
                 break;
             case 'receipt':
                 $q->addWhere('receipt_id LIKE ?', '%' . $filter['text'] . '%');
                 break;
             case 'coupon':
                 $q->leftJoin('?_invoice', 'i', 't.invoice_id=i.invoice_id');
                 $q->addWhere('i.coupon_code=?', $filter['text']);
                 break;
         }
     }
     if (@$filter['product_id']) {
         $q->leftJoin('?_invoice_item', 'ii', 't.invoice_id=ii.invoice_id')->addWhere('ii.item_type=?', 'product')->addWhere('ii.item_id=?', $filter['product_id']);
     }
     if (@$filter['dont_show_refunded']) {
         $q->addWhere('t.refund_dattm IS NULL');
     }
 }
 function getDates()
 {
     $filter = $this->vars['filter'];
     if ($filter['period'] == 'exact') {
         $dat1 = Am_Form_Element_Date::createFromFormat(null, $filter['dat1'])->format('Y-m-d');
         $dat2 = Am_Form_Element_Date::createFromFormat(null, $filter['dat2'])->format('Y-m-d');
     } else {
         list($dat1, $dat2) = $this->grid->getDi()->interval->getStartStop($filter['period']);
     }
     return array($dat1, $dat2);
 }