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