public function actionAgregarlista() { $objSectorCiudad = null; if (isset(Yii::app()->session[Yii::app()->params->sesion['sectorCiudadEntrega']])) { $objSectorCiudad = Yii::app()->session[Yii::app()->params->sesion['sectorCiudadEntrega']]; } if ($objSectorCiudad === null) { echo CJSON::encode(array('result' => 'error', 'response' => 'Seleccionar ubicación.')); Yii::app()->end(); } $lista = Yii::app()->getRequest()->getPost('lista', null); if ($lista === null) { echo CJSON::encode(array('result' => 'error', 'response' => 'Solicitud inválida, no se detectan datos')); Yii::app()->end(); } $objLista = ListasPersonales::model()->find(array('condition' => 'idLista=:lista AND identificacionUsuario=:usuario', 'params' => array(':lista' => $lista, ':usuario' => Yii::app()->user->name))); if ($objLista === null) { echo CJSON::encode(array('result' => 'error', 'response' => 'Lista no existente')); Yii::app()->end(); } $fecha = new DateTime(); $nUnidadesCompra = 0; $nUnidadesCarro = 0; foreach ($objLista->listDetalle as $objDetalle) { if ($objDetalle->idCombo != null) { $nUnidadesCompra += $objDetalle->unidades; $objCombo = Combo::model()->find(array('with' => array('listProductos', 'listProductosCombo', 'listComboSectorCiudad'), 'condition' => 't.idCombo=:combo AND t.estadoCombo=:estado AND t.fechaInicio<=:fecha AND t.fechaFin>=:fecha AND listComboSectorCiudad.saldo>:saldo AND listComboSectorCiudad.codigoCiudad=:ciudad AND listComboSectorCiudad.codigoSector=:sector', 'params' => array(':combo' => $objDetalle->idCombo, ':estado' => 1, ':fecha' => $fecha->format('Y-m-d H:i:s'), ':saldo' => 0, ':ciudad' => $objSectorCiudad->codigoCiudad, ':sector' => $objSectorCiudad->codigoSector))); if ($objCombo === null) { continue; } $objSaldo = $objCombo->getSaldo($objSectorCiudad->codigoCiudad, $objSectorCiudad->codigoSector); if ($objSaldo === null) { continue; } if ($objDetalle->unidades > 0) { $cantidadCarroUnidad = 0; $position = Yii::app()->shoppingCart->itemAt($objCombo->getcodigo()); if ($position !== null) { $cantidadCarroUnidad = $position->getQuantity(); } if ($cantidadCarroUnidad + $objDetalle->unidades <= $objSaldo->saldo) { $objProductoCarro = new ProductoCarro($objCombo); Yii::app()->shoppingCart->put($objProductoCarro, false, $objDetalle->unidades); $nUnidadesCarro += $objDetalle->unidades; } } } else { if ($objDetalle->codigoProducto != null) { $nUnidadesCompra += $objDetalle->unidades; //agregar productos $objProducto = Producto::model()->find(array('with' => array('listSaldos' => array('condition' => '(listSaldos.codigoCiudad=:ciudad AND listSaldos.codigoSector=:sector) OR (listSaldos.saldoUnidad IS NULL AND listSaldos.codigoCiudad IS NULL AND listSaldos.codigoSector IS NULL)'), 'listPrecios' => array('condition' => '(listPrecios.codigoCiudad=:ciudad AND listPrecios.codigoSector=:sector) OR (listPrecios.codigoCiudad IS NULL AND listPrecios.codigoSector IS NULL)'), 'listSaldosTerceros' => array('condition' => '(listSaldosTerceros.codigoCiudad=:ciudad AND listSaldosTerceros.codigoSector=:sector) OR (listSaldosTerceros.codigoCiudad IS NULL AND listSaldosTerceros.codigoSector IS NULL)')), 'condition' => 't.activo=:activo AND t.codigoProducto=:codigo AND ( (listSaldos.saldoUnidad IS NOT NULL AND listPrecios.codigoCiudad IS NOT NULL) OR listSaldosTerceros.codigoCiudad IS NOT NULL)', 'params' => array(':activo' => 1, ':codigo' => $objDetalle->codigoProducto, ':ciudad' => $objSectorCiudad->codigoCiudad, ':sector' => $objSectorCiudad->codigoSector))); if ($objProducto === null) { continue; } $objSaldo = $objProducto->getSaldo($objSectorCiudad->codigoCiudad, $objSectorCiudad->codigoSector); if ($objSaldo === null) { continue; } $position = Yii::app()->shoppingCart->itemAt($objDetalle->codigoProducto); if ($objDetalle->unidades > 0) { $cantidadCarroUnidad = 0; if ($position !== null) { $cantidadCarroUnidad = $position->getQuantityUnit(); } //si hay saldo, agrega a carro if ($cantidadCarroUnidad + $objDetalle->unidades <= $objSaldo->saldoUnidad) { $objProductoCarro = new ProductoCarro($objProducto); Yii::app()->shoppingCart->put($objProductoCarro, false, $objDetalle->unidades); $nUnidadesCarro += $objDetalle->unidades; } } } } } if ($nUnidadesCarro == 0) { echo CJSON::encode(array('result' => 'error', 'response' => 'Productos no disponibles')); Yii::app()->end(); } $porcentajeCarro = floor(100 * ($nUnidadesCarro / $nUnidadesCompra)); echo CJSON::encode(array('result' => 'ok', 'response' => array('canastaHTML' => $this->renderPartial('canasta', null, true), 'mensajeHTML' => $this->renderPartial('/common/mensajeHtml', array('mensaje' => "{$porcentajeCarro}% de lista agregada"), true)))); Yii::app()->end(); }
public function listData() { return ListasPersonales::model()->findAll(array('condition' => 'identificacionUsuario=:usuario', 'params' => array(':usuario' => $this->identificacionUsuario))); }
private function listapersonaldetalle($lista) { $model = ListasPersonales::model()->find(array('with' => array('listDetalle' => array("with" => array("objProducto" => array("with" => array("listImagenes", "objCodigoEspecial", "listCalificaciones")), "objCombo" => array("with" => array("listProductosCombo", "listImagenesCombo"))))), 'condition' => 't.idLista=:lista AND t.identificacionUsuario=:usuario', 'params' => array(':lista' => $lista, ':usuario' => Yii::app()->user->name))); if ($model === null) { $this->redirect($this->createUrl('listapersonal')); } $this->render('listaDetalle', array('model' => $model)); }