예제 #1
0
 public function actionAgregarcotizacion()
 {
     $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();
     }
     $cotizacion = Yii::app()->getRequest()->getPost('cotizacion', null);
     if ($cotizacion === null) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Solicitud inválida, no se detectan datos'));
         Yii::app()->end();
     }
     $fecha = new DateTime();
     $dias = Yii::app()->params->cotizaciones['diasVisualizar'];
     $fecha->modify("-{$dias} days");
     $objCotizacion = Cotizaciones::model()->find(array('condition' => 'idCotizacion=:cotizacion AND identificacionUsuario=:usuario AND fechaCotizacion>=:fecha AND codigoCiudad=:ciudad AND codigoSector=:sector', 'params' => array(':cotizacion' => $cotizacion, ':usuario' => Yii::app()->user->name, ':fecha' => $fecha->format('Y-m-d H:i:s'), ':ciudad' => Yii::app()->shoppingCart->getCodigoCiudad(), ':sector' => Yii::app()->shoppingCart->getCodigoSector())));
     if ($objCotizacion === null) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Cotización no existente o vencida'));
         Yii::app()->end();
     }
     $idCombos = array();
     $fecha = new DateTime();
     $agregadoCompleto = true;
     $agregadoItem = false;
     $nUnidadesCompra = 0;
     $nUnidadesCarro = 0;
     foreach ($objCotizacion->listCotizacionItems as $objItem) {
         $agregadoItem = false;
         if ($objItem->idCombo != null) {
             if (!isset($idCombos[$objItem->idCombo])) {
                 $nUnidadesCompra += $objItem->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' => $objItem->idCombo, ':estado' => 1, ':fecha' => $fecha->format('Y-m-d H:i:s'), ':saldo' => 0, ':ciudad' => $objSectorCiudad->codigoCiudad, ':sector' => $objSectorCiudad->codigoSector)));
                 if ($objCombo === null) {
                     $agregadoCompleto = false;
                     continue;
                 }
                 $objSaldo = $objCombo->getSaldo($objSectorCiudad->codigoCiudad, $objSectorCiudad->codigoSector);
                 if ($objSaldo === null) {
                     $agregadoCompleto = false;
                     continue;
                 }
                 $cantidadCarroUnidad = 0;
                 $position = Yii::app()->shoppingCart->itemAt($objCombo->getcodigo());
                 if ($position !== null) {
                     $cantidadCarroUnidad = $position->getQuantity();
                 }
                 if ($cantidadCarroUnidad + $objItem->unidades <= $objSaldo->saldo) {
                     $objProductoCarro = new ProductoCarro($objCombo);
                     Yii::app()->shoppingCart->put($objProductoCarro, false, $objItem->unidades);
                     //calcular precio combo
                     $precioCombo = 0;
                     foreach ($objCotizacion->listCotizacionItems as $objItemAux) {
                         if ($objItem->idCombo == $objItemAux->idCombo) {
                             $precioCombo += $objItemAux->precioBaseUnidad;
                         }
                     }
                     $objProductoCarro->setPriceUnit($precioCombo);
                     Yii::app()->shoppingCart->updatePosition($objProductoCarro);
                     $agregadoItem = true;
                     $nUnidadesCarro += $objItem->unidades;
                 } else {
                     $agregadoCompleto = false;
                 }
             }
             //identificar combos
             $idCombos[$objItem->idCombo] = $objItem->unidades;
         } else {
             $nUnidadesCompra += $objItem->unidades;
             $nUnidadesCompra += $objItem->fracciones;
             $nUnidadesCompra += $objItem->unidadesCedi;
             //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' => $objItem->codigoProducto, ':ciudad' => $objSectorCiudad->codigoCiudad, ':sector' => $objSectorCiudad->codigoSector)));
             if ($objProducto === null) {
                 $agregadoCompleto = false;
                 continue;
             }
             $objSaldo = $objProducto->getSaldo($objSectorCiudad->codigoCiudad, $objSectorCiudad->codigoSector);
             if ($objSaldo === null) {
                 $agregadoCompleto = false;
                 continue;
             }
             $position = Yii::app()->shoppingCart->itemAt($objItem->codigoProducto);
             $objProductoCarro = new ProductoCarro($objProducto);
             if ($objItem->unidades > 0) {
                 $cantidadCarroUnidad = 0;
                 if ($position !== null) {
                     $cantidadCarroUnidad = $position->getQuantityUnit();
                 }
                 //si hay saldo, agrega a carro
                 if ($cantidadCarroUnidad + $objItem->unidades <= $objSaldo->saldoUnidad) {
                     Yii::app()->shoppingCart->put($objProductoCarro, false, $objItem->unidades);
                     $agregadoItem = true;
                     $nUnidadesCarro += $objItem->unidades;
                 } else {
                     $agregadoCompleto = false;
                 }
             }
             if ($objItem->fracciones > 0) {
                 $cantidadCarroFraccion = 0;
                 if ($position !== null) {
                     $cantidadCarroFraccion = $position->getQuantity(true);
                 }
                 //si hay saldo, agrega a carro
                 if ($cantidadCarroFraccion + $objItem->fracciones <= $objSaldo->saldoFraccion) {
                     Yii::app()->shoppingCart->put($objProductoCarro, true, $objItem->fracciones);
                     $agregadoItem = true;
                     $nUnidadesCarro += $objItem->fracciones;
                 } else {
                     $agregadoCompleto = false;
                 }
             }
             if ($objItem->unidadesCedi > 0) {
                 $cantidadCarroBodega = 0;
                 if ($position !== null) {
                     $cantidadCarroBodega = $position->getQuantityStored();
                 }
                 $objSaldoBodega = ProductosSaldosCedi::model()->find(array('condition' => 'codigoProducto=:producto AND codigoCedi=:cedi AND saldoUnidad>=:saldo', 'params' => array(':producto' => $objItem->codigoProducto, ':cedi' => $objCotizacion->objCiudad->codigoSucursal, ':saldo' => $objItem->unidadesCedi + $cantidadCarroBodega)));
                 if ($objSaldoBodega === null) {
                     $agregadoCompleto = false;
                 } else {
                     Yii::app()->shoppingCart->putStored($objProductoCarro, $objItem->unidadesCedi);
                     $agregadoItem = true;
                     $nUnidadesCarro += $objItem->unidadesCedi;
                 }
                 if ($agregadoItem) {
                     $objProductoCarro->setPriceUnit($objItem->precioBaseUnidad);
                     $objProductoCarro->setPriceFraction($objItem->precioBaseFraccion);
                     $objProductoCarro->setDiscountPriceUnit($objItem->descuentoUnidad);
                     $objProductoCarro->setDiscountPriceFraction($objItem->descuentoFraccion);
                     $objProductoCarro->setTax($objItem->porcentajeImpuesto);
                     $objProductoCarro->setDelivery($objItem->tiempoEntrega);
                     $objProductoCarro->setShipping($objItem->flete);
                     /*$listBeneficios = array();
                       foreach($objItem->listBeneficios as $objBeneficio){
                           
                       }*/
                     $objProductoCarro->setBeneficios($objItem->listBeneficios);
                     Yii::app()->shoppingCart->updatePosition($objProductoCarro);
                 }
             }
         }
         //$position->setPriceUnit(1000);
         //Yii::app()->shoppingCart->updatePosition($position);
     }
     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();
 }
예제 #2
0
 public function actionCotizacionpdf($cotizacion)
 {
     $fecha = new DateTime();
     $dias = Yii::app()->params->cotizaciones['diasVisualizar'];
     $fecha->modify("-{$dias} days");
     $objCotizacion = Cotizaciones::model()->find(array('condition' => 'idCotizacion=:cotizacion AND identificacionUsuario=:usuario AND fechaCotizacion>=:fecha AND codigoCiudad=:ciudad AND codigoSector=:sector', 'params' => array(':cotizacion' => $cotizacion, ':usuario' => Yii::app()->user->name, ':fecha' => $fecha->format('Y-m-d H:i:s'), ':ciudad' => Yii::app()->shoppingCart->getCodigoCiudad(), ':sector' => Yii::app()->shoppingCart->getCodigoSector())));
     $mPDF1 = Yii::app()->ePdf->mpdf('utf-8', 'Letter');
     //Letter, Legal, A4
     $mPDF1->SetTitle("La Rebaja Virtual - Cotizacion");
     $mPDF1->SetAuthor("Copservir");
     //$styleBootstrap = file_get_contents(Yii::getPathOfAlias('bootstrap.assets') . '/css/bootstrap.css');
     //$styleCustom1 = file_get_contents(Yii::getPathOfAlias('webroot') . '/libs/jquerymobile/css/themes/default/jquery.mobile-1.4.5.min.css');
     //$styleCustom = file_get_contents(Yii::getPathOfAlias('webroot.css') . '/mobile.css');
     //$mPDF1->WriteHTML($styleCustom1, 1);
     //$mPDF1->WriteHTML($styleCustom, 1);
     //$mPDF1->WriteHTML($this->renderPartial('_solicitudCredito', array('model' => $model), true));
     if ($objCotizacion === null) {
         $mPDF1->WriteHTML("<strong>Error, no se detecta cotización</strong>");
     } else {
         $mPDF1->WriteHTML($this->renderPartial('cotizacionPDF', array('objCotizacion' => $objCotizacion), true));
     }
     $filename = 'LaRebajaVirtual_' . date('YmdHis') . '.pdf';
     $mPDF1->Output($filename, 'D');
     $this->render('cotizacion', array('objCotizacion' => $objCotizacion));
 }