public function actionCrearcotizacion()
 {
     $transaction = Yii::app()->db->beginTransaction();
     try {
         //registrar cotizacion
         $objCotizacion = new Cotizaciones();
         $objCotizacion->identificacionUsuario = Yii::app()->user->name;
         $objCotizacion->codigoPerfil = Yii::app()->shoppingCart->getCodigoPerfil();
         $objCotizacion->codigoCiudad = Yii::app()->shoppingCart->getCodigoCiudad();
         $objCotizacion->codigoSector = Yii::app()->shoppingCart->getCodigoSector();
         $objCotizacion->tiempoDomicilioCedi = Yii::app()->shoppingCart->getDeliveryStored();
         $objCotizacion->valorDomicilioCedi = Yii::app()->shoppingCart->getShippingStored();
         $objCotizacion->codigoCedi = Yii::app()->shoppingCart->objSectorCiudad->objCiudad->codigoSucursal;
         $objCotizacion->subtotalCompra = Yii::app()->shoppingCart->getCost();
         $objCotizacion->impuestosCompra = Yii::app()->shoppingCart->getTaxPrice();
         $objCotizacion->baseImpuestosCompra = Yii::app()->shoppingCart->getBaseTaxPrice();
         $objCotizacion->domicilio = Yii::app()->shoppingCart->getShipping();
         $objCotizacion->flete = Yii::app()->shoppingCart->getExtraShipping();
         $objCotizacion->totalCompra = Yii::app()->shoppingCart->getTotalCost();
         if (!$objCotizacion->save()) {
             throw new Exception("Error al guardar cotizacion" . $objCotizacion->validateErrorsResponse());
         }
         //items de compra
         $positions = Yii::app()->shoppingCart->getPositions();
         foreach ($positions as $position) {
             if ($position->isProduct()) {
                 $objItem = new CotizacionesItems();
                 $objItem->idCotizacion = $objCotizacion->idCotizacion;
                 $objItem->codigoProducto = $position->objProducto->codigoProducto;
                 $objItem->descripcion = $position->objProducto->descripcionProducto;
                 $objItem->presentacion = $position->objProducto->presentacionProducto;
                 $objItem->precioBaseUnidad = $position->getPrice(false, false);
                 $objItem->precioBaseFraccion = $position->getPrice(true, false);
                 $objItem->descuentoUnidad = $position->getDiscountPrice();
                 $objItem->descuentoFraccion = $position->getDiscountPrice(true);
                 $objItem->precioTotalUnidad = $position->getSumPriceUnit();
                 $objItem->precioTotalFraccion = $position->getSumPriceFraction(true);
                 $objItem->terceros = $position->objProducto->tercero;
                 $objItem->unidades = $position->getQuantityUnit();
                 $objItem->fracciones = $position->getQuantity(true);
                 $objItem->unidadesCedi = $position->getQuantityStored();
                 $objItem->codigoImpuesto = $position->objProducto->codigoImpuesto;
                 $objItem->impuestosItem = $position->getTaxPrice(true);
                 $objItem->porcentajeImpuesto = $position->getTax();
                 $objItem->baseImpuestos = $position->getBaseTaxPrice(true);
                 $objItem->flete = $position->getShipping();
                 $objItem->tiempoEntrega = $position->getDelivery();
                 if (!$objItem->save()) {
                     throw new Exception("Error al guardar item de cotizacion {$objItem->codigoProducto}. " . $objItem->validateErrorsResponse());
                 }
                 //beneficios
                 foreach ($position->getBeneficios() as $objBeneficio) {
                     $objBeneficioItem = new BeneficiosCotizacionesItems();
                     $objBeneficioItem->idBeneficio = $objBeneficio->idBeneficio;
                     $objBeneficioItem->idBeneficioSincronizado = $objBeneficio->idBeneficioSincronizado;
                     $objBeneficioItem->idCotizacionItem = $objItem->idCotizacionItem;
                     $objBeneficioItem->tipo = $objBeneficio->tipo;
                     $objBeneficioItem->fechaIni = $objBeneficio->fechaIni;
                     $objBeneficioItem->fechaFin = $objBeneficio->fechaFin;
                     $objBeneficioItem->dsctoUnid = $objBeneficio->dsctoUnid;
                     $objBeneficioItem->dsctoFrac = $objBeneficio->dsctoFrac;
                     $objBeneficioItem->vtaUnid = $objBeneficio->vtaUnid;
                     $objBeneficioItem->vtaFrac = $objBeneficio->vtaFrac;
                     $objBeneficioItem->pagoUnid = $objBeneficio->pagoUnid;
                     $objBeneficioItem->pagoFrac = $objBeneficio->pagoFrac;
                     $objBeneficioItem->cuentaCop = $objBeneficio->cuentaCop;
                     $objBeneficioItem->nitCop = $objBeneficio->nitCop;
                     $objBeneficioItem->porcCop = $objBeneficio->porcCop;
                     $objBeneficioItem->cuentaProv = $objBeneficio->cuentaProv;
                     $objBeneficioItem->nitProv = $objBeneficio->nitProv;
                     $objBeneficioItem->porcProv = $objBeneficio->porcProv;
                     $objBeneficioItem->promoFiel = $objBeneficio->promoFiel;
                     $objBeneficioItem->mensaje = $objBeneficio->mensaje;
                     $objBeneficioItem->swobligaCli = $objBeneficio->swobligaCli;
                     $objBeneficioItem->fechaCreacionBeneficio = $objBeneficio->fechaCreacionBeneficio;
                     if (!$objBeneficioItem->save()) {
                         throw new Exception("Error al guardar beneficio de cotizacion {$objBeneficioItem->idCotizacionItem}. " . $objBeneficioItem->validateErrorsResponse());
                     }
                 }
             } else {
                 if ($position->isCombo()) {
                     foreach ($position->objCombo->listProductosCombo as $productoCombo) {
                         $objItem = new CotizacionesItems();
                         $objItem->idCotizacion = $objCotizacion->idCotizacion;
                         $objItem->idCombo = $position->objCombo->idCombo;
                         $objItem->codigoProducto = $productoCombo->objProducto->codigoProducto;
                         $objItem->descripcion = $productoCombo->objProducto->descripcionProducto;
                         $objItem->descripcionCombo = $position->objCombo->descripcionCombo;
                         $objItem->presentacion = $productoCombo->objProducto->presentacionProducto;
                         $objItem->precioBaseUnidad = $productoCombo->precio;
                         $objItem->precioBaseFraccion = 0;
                         $objItem->descuentoUnidad = 0;
                         $objItem->descuentoFraccion = 0;
                         $objItem->precioTotalUnidad = $productoCombo->precio * $position->getQuantity();
                         $objItem->precioTotalFraccion = 0;
                         $objItem->terceros = $productoCombo->objProducto->tercero;
                         $objItem->unidades = $position->getQuantity();
                         $objItem->fracciones = 0;
                         $objItem->unidadesCedi = 0;
                         $objItem->codigoImpuesto = $productoCombo->objProducto->codigoImpuesto;
                         $objItem->impuestosItem = $position->getTaxPrice(true);
                         $objItem->porcentajeImpuesto = $position->getTax();
                         $objItem->baseImpuestos = $position->getBaseTaxPrice(true);
                         $objItem->flete = $position->getShipping();
                         if (!$objItem->save()) {
                             throw new Exception("Error al guardar item de cotizacion {$objItem->codigoProducto}. " . $objItem->validateErrorsResponse());
                         }
                     }
                 }
             }
         }
         $transaction->commit();
         echo CJSON::encode(array('result' => 'ok', 'response' => 'Cotización creada'));
     } catch (Exception $exc) {
         Yii::log($exc->getMessage() . "\n" . $exc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
         try {
             $transaction->rollBack();
         } catch (Exception $txexc) {
             Yii::log($txexc->getMessage() . "\n" . $txexc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
         }
         echo CJSON::encode(array('result' => 'error', 'response' => $exc->getMessage()));
     }
 }
 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));
 }