Пример #1
0
 function addCriterionSelectPeriodo($campo)
 {
     $nombre_campo = "campo_" . $campo->getIdCampo() . "";
     $item_base = $campo->getElementoUnico();
     $recibido = isset($this->filters[$nombre_campo]) && $this->filters[$nombre_campo] !== '' ? $this->filters[$nombre_campo] : array();
     $from_periodo = isset($recibido['from']['periodo']) ? $recibido['from']['periodo'] : null;
     $from_year = isset($recibido['from']['year']) ? $recibido['from']['year'] : null;
     $to_periodo = isset($recibido['to']['periodo']) ? $recibido['to']['periodo'] : null;
     $to_year = isset($recibido['to']['year']) ? $recibido['to']['year'] : null;
     $alias = "i" . $campo->getIdCampo();
     //ALIAS. Arreglado
     if (isset($from_year) && $from_year != '') {
         $this->criteria->addAlias($alias, ItemPeer::TABLE_NAME);
         $this->criteria->addJoin(FormularioPeer::ID_FORMULARIO, ItemPeer::alias($alias, ItemPeer::ID_FORMULARIO), Criteria::JOIN);
         $cr_aux = $this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ID_ITEM_BASE), $item_base->getPrimaryKey());
         if (isset($from_periodo) && $from_periodo != '') {
             $cr_aux_1 = $this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ANIO), $from_year);
             $cr_aux_1->addAnd($this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::NUMERO), $from_periodo, Criteria::GREATER_EQUAL));
             $cr_aux_2 = $this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ANIO), $from_year, Criteria::GREATER_THAN);
             $cr_aux_1->addOr($cr_aux_2);
             $cr_aux->addAnd($cr_aux_1);
         } else {
             $cr_aux->addAnd($this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ANIO), $from_year, Criteria::GREATER_EQUAL));
         }
         $criterion = $this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ANIO), null, Criteria::ISNOTNULL);
         $criterion->addAnd($cr_aux);
     }
     if (isset($to_year) && $to_year != '') {
         $this->criteria->addAlias($alias, ItemPeer::TABLE_NAME);
         $this->criteria->addJoin(FormularioPeer::ID_FORMULARIO, ItemPeer::alias($alias, ItemPeer::ID_FORMULARIO), Criteria::JOIN);
         $cr_aux = $this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ID_ITEM_BASE), $item_base->getPrimaryKey());
         if (isset($to_periodo) && $to_periodo != '') {
             $cr_aux_1 = $this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ANIO), $to_year);
             $cr_aux_1->addAnd($this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::NUMERO), $to_periodo, Criteria::LESS_EQUAL));
             $cr_aux_2 = $this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ANIO), $to_year, Criteria::LESS_THAN);
             $cr_aux_1->addOr($cr_aux_2);
             $cr_aux->addAnd($cr_aux_1);
         } else {
             $cr_aux->addAnd($this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ANIO), $to_year, Criteria::LESS_EQUAL));
         }
         if (isset($criterion)) {
             $criterion->addAnd($cr_aux);
         } else {
             $criterion = $this->criteria->getNewCriterion(ItemPeer::alias($alias, ItemPeer::ANIO), null, Criteria::ISNOTNULL);
             $criterion->addAnd($cr_aux);
         }
     }
     if (isset($criterion)) {
         $this->criteria->addAnd($criterion);
     }
 }