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); } }