public function actionBeneficio()
 {
     /* $model = Beneficios::model()->findByPk(3);
     
     
               echo $model->objBeneficioTipo->descripcion;
               echo "<br/>";
               foreach($model->listPuntosVenta as $pdv){
               echo "$pdv->nombrePuntoDeVenta";
               echo "<br/>";
               }
     
               echo "<br/>";
               foreach($model->listBeneficiosProductos as $obj){
               echo $obj->objProducto->descripcionProducto;
               echo "<br/>";
               }
              * 
              */
     $fecha = new DateTime();
     $models = Beneficios::model()->findAll(array('with' => array('listPuntosVenta' => array('condition' => 'listPuntosVenta.codigoCiudad=:ciudad'), 'listBeneficiosProductos' => array('condition' => 'listBeneficiosProductos.codigoProducto=:producto')), 'condition' => 't.fechaIni<=:fecha AND t.fechaFin>=:fecha AND t.tipo IN (' . implode(",", Yii::app()->params->beneficios['lrv']) . ')', 'params' => array(':fecha' => $fecha->format('Y-m-d'), ':ciudad' => 76001, ':producto' => 30128)));
     echo count($models);
 }
 function __construct(Producto $objProducto, $objCiudadSector, $codigoPerfil, $consultaPrecio = false)
 {
     $fecha = new DateTime();
     if ($objCiudadSector != null) {
         if ($objProducto->tercero == 1) {
             $listSaldosTerceros = array();
             if ($consultaPrecio) {
                 $listSaldosTerceros = ProductosSaldosTerceros::model()->findAll(array('condition' => '(codigoProducto=:producto AND codigoCiudad=:ciudad AND codigoSector=:sector)', 'params' => array(':producto' => $objProducto->codigoProducto, ':ciudad' => $objCiudadSector->codigoCiudad, ':sector' => $objCiudadSector->codigoSector)));
             } else {
                 $listSaldosTerceros = $objProducto->listSaldosTerceros;
             }
             foreach ($listSaldosTerceros as $objProductoSaldoTercero) {
                 if ($objProductoSaldoTercero->codigoCiudad == $objCiudadSector->codigoCiudad && $objProductoSaldoTercero->codigoSector == $objCiudadSector->codigoSector) {
                     $this->precioUnidad = $objProductoSaldoTercero->precioUnidad;
                     $this->precioFraccion = $objProductoSaldoTercero->precioFraccion;
                     $this->unidadFraccionamiento = $objProducto->unidadFraccionamiento;
                     $this->flete = $objProductoSaldoTercero->flete;
                     $this->tiempoEntrega = $objProductoSaldoTercero->tiempoDomicilio;
                     break;
                 }
             }
         } else {
             $listPrecios = array();
             if ($consultaPrecio) {
                 $listPrecios = ProductosPrecios::model()->findAll(array('condition' => '(codigoProducto=:producto AND codigoCiudad=:ciudad AND codigoSector=:sector)', 'params' => array(':producto' => $objProducto->codigoProducto, ':ciudad' => $objCiudadSector->codigoCiudad, ':sector' => $objCiudadSector->codigoSector)));
             } else {
                 $listPrecios = $objProducto->listPrecios;
             }
             foreach ($listPrecios as $objProductoPrecio) {
                 if ($objProductoPrecio->codigoCiudad == $objCiudadSector->codigoCiudad && $objProductoPrecio->codigoSector == $objCiudadSector->codigoSector) {
                     $this->precioUnidad = $objProductoPrecio->precioUnidad;
                     $this->precioFraccion = $objProductoPrecio->precioFraccion;
                     $this->unidadFraccionamiento = $objProducto->unidadFraccionamiento;
                     break;
                 }
             }
         }
         $objDescuentoEspecial = ProductosDescuentosEspeciales::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND codigoProducto=:producto AND codigoPerfil=:perfil AND fechaInicio<=:fecha AND fechaFin>=:fecha ', 'params' => array(':ciudad' => $objCiudadSector->codigoCiudad, ':sector' => $objCiudadSector->codigoSector, ':perfil' => $codigoPerfil, ':producto' => $objProducto->codigoProducto, ':fecha' => $fecha->format('Y-m-d H:i:s'))));
         if ($objDescuentoEspecial === null) {
             $objDescuentoEspecial = ProductosDescuentosEspeciales::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND codigoProducto=:producto AND codigoPerfil=:perfil AND fechaInicio<=:fecha AND fechaFin>=:fecha ', 'params' => array(':ciudad' => $objCiudadSector->codigoCiudad, ':sector' => Yii::app()->params->sector['*'], ':perfil' => $codigoPerfil, ':producto' => $objProducto->codigoProducto, ':fecha' => $fecha->format('Y-m-d H:i:s'))));
         }
         if ($objDescuentoEspecial === null) {
             $objDescuentoEspecial = ProductosDescuentosEspeciales::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND codigoProducto=:producto AND codigoPerfil=:perfil AND fechaInicio<=:fecha AND fechaFin>=:fecha ', 'params' => array(':ciudad' => Yii::app()->params->ciudad['*'], ':sector' => Yii::app()->params->sector['*'], ':perfil' => $codigoPerfil, ':producto' => $objProducto->codigoProducto, ':fecha' => $fecha->format('Y-m-d H:i:s'))));
         }
         if ($objDescuentoEspecial === null) {
             $objDescuentoEspecial = ProductosDescuentosEspeciales::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND codigoProducto=:producto AND codigoPerfil=:perfil AND fechaInicio<=:fecha AND fechaFin>=:fecha ', 'params' => array(':ciudad' => Yii::app()->params->ciudad['*'], ':sector' => Yii::app()->params->sector['*'], ':perfil' => Yii::app()->params->perfil['*'], ':producto' => $objProducto->codigoProducto, ':fecha' => $fecha->format('Y-m-d H:i:s'))));
         }
         if ($objDescuentoEspecial !== null) {
             $this->porcentajeDescuentoPerfil = $objDescuentoEspecial->descuentoPerfil;
         } else {
             $objDescuentoPerfil = ProductosDescuentosPerfiles::model()->find(array('condition' => 'codigoProducto=:producto AND codigoPerfil=:perfil', 'params' => array(':perfil' => $codigoPerfil, ':producto' => $objProducto->codigoProducto)));
             if ($objDescuentoPerfil !== null) {
                 $this->porcentajeDescuentoPerfil = $objDescuentoPerfil->descuentoPerfil;
             }
         }
         //consultar beneficios del producto
         //$fecha = new DateTime;
         $condition = 't.fechaIni<=:fecha AND t.fechaFin>=:fecha AND t.tipo IN (' . implode(",", Yii::app()->params->beneficios['lrv']) . ')';
         $params = array(':fecha' => $fecha->format('Y-m-d'), ':ciudad' => $objCiudadSector->codigoCiudad, ':producto' => $objProducto->codigoProducto);
         if (Yii::app()->shoppingCart->getEsClienteFiel()) {
             $condition .= " AND (swobligaCli=0 || swobligaCli=2)";
         } else {
             $condition .= " AND swobligaCli=0";
         }
         $this->listBeneficios = Beneficios::model()->findAll(array('with' => array('listPuntosVenta' => array('condition' => 'listPuntosVenta.codigoCiudad=:ciudad'), 'listBeneficiosProductos' => array('condition' => 'listBeneficiosProductos.codigoProducto=:producto')), 'condition' => $condition, 'params' => $params));
         $this->porcentajeDescuentoBeneficio = 0;
         foreach ($this->listBeneficios as $objBeneficio) {
             $this->porcentajeDescuentoBeneficio += $objBeneficio->dsctoUnid;
         }
         //restriccion de maximo de beneficio
         if ($this->porcentajeDescuentoBeneficio > Yii::app()->params->beneficios['porcentajeMaximo']) {
             $this->porcentajeDescuentoBeneficio = 0;
             $this->listBeneficios = array();
         }
         $this->precioFraccionTotal = $this->precioFraccion * $this->unidadFraccionamiento;
         $this->precioUnidad = self::redondear($this->precioUnidad, 1);
         $this->precioFraccionTotal = self::redondear($this->precioFraccionTotal, 1);
         $this->ahorroUnidad = floor($this->precioUnidad * ($this->getPorcentajeDescuento() / 100));
         //$this->ahorroFraccion=  floor($this->precioFraccionTotal * ($this->getPorcentajeDescuento() / 100));
         $this->ahorroUnidad = self::redondear($this->ahorroUnidad, 1);
         //$this->ahorroFraccion = self::redondear($this->ahorroFraccion, 1);
         $this->inicializado = true;
     }
     $this->listPuntos = Puntos::model()->findAll(array('with' => array('listPuntosProductos' => array('condition' => 'listPuntosProductos.codigoProducto=:producto AND listPuntosProductos.cantidad=:cantidad')), 'condition' => 'codigoPunto=:tipo AND activo=:activo AND fechaInicio<=:fecha AND fechaFin>=:fecha', 'params' => array(':tipo' => Yii::app()->params->puntos['producto'], ':activo' => 1, ':fecha' => $fecha->format('Y-m-d H:i:s'), ':producto' => $objProducto->codigoProducto, ':cantidad' => 1)));
 }