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