예제 #1
0
 private function procesoCompra(FormaPagoForm $modelPago, $tipoEntrega)
 {
     $categoriasCompra = array();
     $productosCompra = array();
     $transaction = Yii::app()->db->beginTransaction();
     try {
         //registrar compra compra
         $objCompra = new Compras();
         $objCompra->identificacionUsuario = $modelPago->identificacionUsuario;
         $objCompra->tipoEntrega = $tipoEntrega;
         //if($tipoEntrega==Yii::app()->params->entrega['tipo']['domicilio']){
         $objCompra->fechaEntrega = $modelPago->fechaEntrega;
         $objCompra->observacion = $modelPago->comentario;
         //}
         if ($tipoEntrega == Yii::app()->params->entrega['tipo']['presencial']) {
             $puntoVenta = $modelPago->listPuntosVenta[1][$modelPago->indicePuntoVenta];
             $objCompra->idComercial = $puntoVenta[1];
         }
         if ($modelPago->idFormaPago == Yii::app()->params->formaPago['pasarela']['idPasarela']) {
             $objCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['pendientePasarela'];
         } else {
             $objCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['pendiente'];
         }
         $objCompra->idTipoVenta = 1;
         $objCompra->activa = 1;
         $objCompra->invitado = $modelPago->pagoInvitado ? 1 : 0;
         $objCompra->codigoPerfil = Yii::app()->shoppingCart->getCodigoPerfil();
         $objCompra->codigoCiudad = Yii::app()->shoppingCart->getCodigoCiudad();
         $objCompra->codigoSector = Yii::app()->shoppingCart->getCodigoSector();
         if ($tipoEntrega == Yii::app()->params->entrega['tipo']['domicilio']) {
             $objCompra->tiempoDomicilioCedi = Yii::app()->shoppingCart->getDeliveryStored();
             $objCompra->valorDomicilioCedi = Yii::app()->shoppingCart->getShippingStored();
             $objCompra->codigoCedi = Yii::app()->shoppingCart->objSectorCiudad->objCiudad->codigoSucursal;
         } else {
             if ($tipoEntrega == Yii::app()->params->entrega['tipo']['presencial']) {
                 $objCompra->tiempoDomicilioCedi = 0;
                 $objCompra->valorDomicilioCedi = 0;
                 $objCompra->codigoCedi = 0;
             }
         }
         $objCompra->subtotalCompra = Yii::app()->shoppingCart->getCost();
         $objCompra->impuestosCompra = Yii::app()->shoppingCart->getTaxPrice();
         $objCompra->baseImpuestosCompra = Yii::app()->shoppingCart->getBaseTaxPrice();
         $objCompra->domicilio = Yii::app()->shoppingCart->getShipping();
         $objCompra->flete = Yii::app()->shoppingCart->getExtraShipping();
         $objCompra->totalCompra = Yii::app()->shoppingCart->getTotalCost();
         if (!$objCompra->save()) {
             throw new Exception("Error al guardar compra" . $objCompra->validateErrorsResponse());
         }
         if ($tipoEntrega == Yii::app()->params->entrega['tipo']['presencial']) {
             $puntoVenta = $modelPago->listPuntosVenta[1][$modelPago->indicePuntoVenta];
             $objEstadoCompra = new ComprasEstados();
             $objEstadoCompra->idCompra = $objCompra->idCompra;
             $objEstadoCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['asignado'];
             $objEstadoCompra->idOperador = 38;
             if (!$objEstadoCompra->save()) {
                 throw new Exception("Error al guardar traza de estado: " . $objEstadoCompra->validateErrorsResponse());
             }
             $objObservacion = new ComprasObservaciones();
             $objObservacion->idCompra = $objCompra->idCompra;
             $objObservacion->observacion = "Cambio de Estado: Asignado PDV. " . $puntoVenta[2];
             $objObservacion->idOperador = 38;
             $objObservacion->notificarCliente = 0;
             if (!$objObservacion->save()) {
                 throw new Exception("Error al guardar observación" . $objObservacion->validateErrorsResponse());
             }
             $objEstadoCompra2 = new ComprasEstados();
             $objEstadoCompra2->idCompra = $objCompra->idCompra;
             $objEstadoCompra2->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['pendiente'];
             $objEstadoCompra2->idOperador = 38;
             if (!$objEstadoCompra2->save()) {
                 throw new Exception("Error al guardar traza de estado: " . $objEstadoCompra2->validateErrorsResponse());
             }
             $objObservacion2 = new ComprasObservaciones();
             $objObservacion2->idCompra = $objCompra->idCompra;
             $objObservacion2->observacion = "Cambio de Estado: Pendiente de entrega a cliente en PDV. " . $puntoVenta[2];
             $objObservacion2->idOperador = 38;
             $objObservacion2->notificarCliente = 0;
             if (!$objObservacion2->save()) {
                 throw new Exception("Error al guardar observación" . $objObservacion2->validateErrorsResponse());
             }
         }
         if ($modelPago->bono !== null && $modelPago->usoBono == 1) {
             Yii::app()->shoppingCart->setBono($modelPago->bono['valor']);
         }
         $objFormasPago = new FormasPago();
         //FormaPago::model()->findByPk($modelPago->idFormaPago);
         $objFormasPago->idCompra = $objCompra->idCompra;
         $objFormasPago->valor = Yii::app()->shoppingCart->getTotalCost();
         $objFormasPago->numeroTarjeta = $modelPago->numeroTarjeta;
         $objFormasPago->cuotasTarjeta = $modelPago->cuotasTarjeta;
         $objFormasPago->idFormaPago = $modelPago->idFormaPago;
         $objFormasPago->valorBono = Yii::app()->shoppingCart->getBono();
         /* if ($modelPago->bono !== null && $modelPago->usoBono == 1) {
                $objFormasPago->valorBono = $modelPago->bono['valor'];
            } */
         /*if($objFormasPago->valorBono>0){
                             try{
                                 $clientBono = new SoapClient(null, array(
                                     'location' => Yii::app()->params->webServiceUrl['crmLrv'],
                                     'uri' => "",
                                     'trace' => 1
                                 ));
                                 $resultBono = $clientBono->__soapCall("ActualizarBono", array('identificacion' => $objCompra->identificacionUsuario));
         
                                 if (empty($resultBono) || $resultBono[0]->ESTADO == 0) {
                                     throw new Exception("Error al actualizar bono");
                                 }
                             }catch(SoapFault $soapExc){
                                 throw new Exception("Error al actualizar bono");
                             }
                         }*/
         if (!$objFormasPago->save()) {
             throw new Exception("Error al guardar forma de pago" . $objFormasPago->validateErrorsResponse());
         }
         $objCompraDireccion = new ComprasDireccionesDespacho();
         if ($tipoEntrega == Yii::app()->params->entrega['tipo']['domicilio']) {
             if ($modelPago->pagoInvitado) {
                 $objCompraDireccion->idCompra = $objCompra->idCompra;
                 $objCompraDireccion->descripcion = $modelPago->descripcion;
                 $objCompraDireccion->nombre = $modelPago->nombre;
                 $objCompraDireccion->direccion = $modelPago->direccion;
                 $objCompraDireccion->barrio = $modelPago->barrio;
                 $objCompraDireccion->telefono = $modelPago->telefono;
                 $objCompraDireccion->celular = $modelPago->celular;
                 $objCompraDireccion->codigoCiudad = Yii::app()->shoppingCart->getCodigoCiudad();
                 $objCompraDireccion->codigoSector = Yii::app()->shoppingCart->getCodigoSector();
             } else {
                 $objDireccion = DireccionesDespacho::model()->findByPk($modelPago->idDireccionDespacho);
                 $objCompraDireccion->idCompra = $objCompra->idCompra;
                 $objCompraDireccion->descripcion = $objDireccion->descripcion;
                 $objCompraDireccion->nombre = $objDireccion->nombre;
                 $objCompraDireccion->direccion = $objDireccion->direccion;
                 $objCompraDireccion->barrio = $objDireccion->barrio;
                 $objCompraDireccion->telefono = $objDireccion->telefono;
                 $objCompraDireccion->celular = $objDireccion->celular;
                 $objCompraDireccion->codigoCiudad = $objDireccion->codigoCiudad;
                 $objCompraDireccion->codigoSector = $objDireccion->codigoSector;
                 $objCompraDireccion->pdvAsignado = $objDireccion->pdvAsignado;
                 if ($objDireccion->codigoSector == 0 && Yii::app()->shoppingCart->getCodigoSector() != 0) {
                     $objDireccion->codigoSector = Yii::app()->shoppingCart->getCodigoSector();
                     $objDireccion->save();
                 }
             }
         } else {
             if ($tipoEntrega == Yii::app()->params->entrega['tipo']['presencial']) {
                 $objCompraDireccion = new ComprasDireccionesDespacho();
                 $objCompraDireccion->idCompra = $objCompra->idCompra;
                 $objCompraDireccion->descripcion = "NA";
                 $objCompraDireccion->nombre = "NA";
                 $objCompraDireccion->direccion = "NA";
                 $objCompraDireccion->barrio = "NA";
                 $objCompraDireccion->telefono = $modelPago->telefonoContacto;
             }
         }
         if (!$objCompraDireccion->save()) {
             throw new Exception("Error al guardar dirección de compra" . $objCompraDireccion->validateErrorsResponse());
         }
         //generar puntos //--
         $listPuntosCompra = array();
         if (!$modelPago->pagoInvitado) {
             $fecha = new DateTime();
             $parametrosPuntos = array(Yii::app()->params->puntos['categoria'] => Yii::app()->shoppingCart->getCategorias(), Yii::app()->params->puntos['marca'] => Yii::app()->shoppingCart->getMarcas(), Yii::app()->params->puntos['proveedor'] => Yii::app()->shoppingCart->getProveedores(), Yii::app()->params->puntos['producto'] => Yii::app()->shoppingCart->getProductosCantidad(), Yii::app()->params->puntos['monto'] => $objCompra->subtotalCompra, Yii::app()->params->puntos['cedula'] => array('identificacionUsuario' => Yii::app()->user->name, 'valor' => $objCompra->subtotalCompra), Yii::app()->params->puntos['rango'] => array('fecha' => $fecha, 'valor' => $objCompra->subtotalCompra), Yii::app()->params->puntos['cumpleanhos'] => array('fechaNacimiento' => Yii::app()->session[Yii::app()->params->usuario['sesion']]->objUsuarioExtendida->fechaNacimiento, 'valor' => $objCompra->subtotalCompra), Yii::app()->params->puntos['clientefielCompra'] => $objCompra->subtotalCompra);
             $listPuntosCompra = ComprasPuntos::generarPuntos($fecha, Yii::app()->session[Yii::app()->params->usuario['sesion']], $parametrosPuntos);
         }
         //-- generar puntos
         // guardar puntos  //--
         foreach ($listPuntosCompra as $objPuntoCompra) {
             $objPuntoCompra->idCompra = $objCompra->idCompra;
             if (!$objPuntoCompra->save()) {
                 throw new Exception("Error al guardar punto de compra {$objPuntoCompra->idPunto}. " . $objPuntoCompra->validateErrorsResponse());
             }
         }
         //-- guardar puntos //--
         //items de compra
         $positions = Yii::app()->shoppingCart->getPositions();
         foreach ($positions as $position) {
             if ($position->isProduct()) {
                 //actualizar saldo producto //--
                 $objSaldo = null;
                 if ($position->objProducto->tercero == 1) {
                     $objSaldo = ProductosSaldosTerceros::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND codigoProducto=:producto', 'params' => array(':ciudad' => Yii::app()->shoppingCart->getCodigoCiudad(), ':sector' => Yii::app()->shoppingCart->getCodigoSector(), ':producto' => $position->objProducto->codigoProducto)));
                 } else {
                     $objSaldo = ProductosSaldos::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND codigoProducto=:producto', 'params' => array(':ciudad' => Yii::app()->shoppingCart->getCodigoCiudad(), ':sector' => Yii::app()->shoppingCart->getCodigoSector(), ':producto' => $position->objProducto->codigoProducto)));
                 }
                 if ($objSaldo == null) {
                     throw new Exception("Producto " . $position->objProducto->codigoProducto . " no disponible");
                 }
                 if ($objSaldo->saldoUnidad < $position->getQuantityUnit()) {
                     throw new Exception("Producto " . $position->objProducto->codigoProducto . ". La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldo->saldoUnidad} unidades");
                 }
                 if ($objSaldo->saldoFraccion < $position->getQuantity(true)) {
                     throw new Exception("Producto " . $position->objProducto->codigoProducto . ". La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldo->saldoFraccion} fracciones");
                 }
                 $objSaldo->saldoUnidad = $objSaldo->saldoUnidad - $position->getQuantityUnit();
                 $objSaldo->saldoFraccion = $objSaldo->saldoFraccion - $position->getQuantity(true);
                 $objSaldo->save();
                 //-- actualizar saldo producto
                 //actualizar saldo bodega //--
                 if ($position->getQuantityStored() > 0) {
                     $objSaldoBodega = ProductosSaldosCedi::model()->find(array('condition' => 'codigoCedi=:cedi AND codigoProducto=:producto', 'params' => array(':cedi' => Yii::app()->shoppingCart->getObjCiudad()->codigoSucursal, ':producto' => $position->objProducto->codigoProducto)));
                     if ($objSaldoBodega == null) {
                         throw new Exception("Producto " . $position->objProducto->codigoProducto . " no disponible en bodega");
                     }
                     if ($objSaldoBodega->saldoUnidad < $position->getQuantityStored()) {
                         throw new Exception("Producto " . $position->objProducto->codigoProducto . ". La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldoBodega->saldoUnidad} unidades");
                     }
                     $objSaldoBodega->saldoUnidad = $objSaldoBodega->saldoUnidad - $position->getQuantityStored();
                     $objSaldoBodega->save();
                 }
                 //-- actualizar saldo bodega
                 $objItem = new ComprasItems();
                 $objItem->idCompra = $objCompra->idCompra;
                 $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->idEstadoItem = Yii::app()->params->callcenter['estadoItem']['estado']['activo'];
                 //$objItem->idEstadoItemTercero = null;
                 $objItem->flete = $position->getShipping();
                 $objItem->disponible = 1;
                 if ($objCompra->identificacionUsuario !== null) {
                     $categoriasCompra[] = "('" . $objCompra->identificacionUsuario . "','" . $position->objProducto->idCategoriaBI . "')";
                 }
                 $productosCompra[] = "('" . $position->objProducto->codigoProducto . "')";
                 if (!$objItem->save()) {
                     throw new Exception("Error al guardar item de compra {$objItem->codigoProducto}. " . $objItem->validateErrorsResponse());
                 }
                 //beneficios
                 foreach ($position->getBeneficios() as $objBeneficio) {
                     $objBeneficioItem = new BeneficiosComprasItems();
                     $objBeneficioItem->idBeneficio = $objBeneficio->idBeneficio;
                     $objBeneficioItem->idBeneficioSincronizado = $objBeneficio->idBeneficioSincronizado;
                     $objBeneficioItem->idCompraItem = $objItem->idCompraItem;
                     $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 compra {$objBeneficioItem->idCompraItem}. " . $objBeneficioItem->validateErrorsResponse());
                     }
                 }
             } else {
                 if ($position->isCombo()) {
                     $objSaldo = ComboSectorCiudad::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND idCombo=:combo', 'params' => array(':ciudad' => Yii::app()->shoppingCart->getCodigoCiudad(), ':sector' => Yii::app()->shoppingCart->getCodigoSector(), ':combo' => $position->objCombo->idCombo)));
                     if ($objSaldo == null) {
                         throw new Exception("Combo " . $position->objCombo->getCodigo() . " no disponible");
                     }
                     if ($objSaldo->saldo < $position->getQuantity()) {
                         throw new Exception("Combo " . $position->objCombo->getCodigo() . "La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldo->saldo} unidades");
                     }
                     $objSaldo->saldo = $objSaldo->saldo - $position->getQuantity();
                     $objSaldo->save();
                     foreach ($position->objCombo->listProductosCombo as $productoCombo) {
                         $objItem = new ComprasItems();
                         $objItem->idCompra = $objCompra->idCompra;
                         $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->idEstadoItem = Yii::app()->params->callcenter['estadoItem']['estado']['activo'];
                         //$objItem->idEstadoItemTercero = null;
                         $objItem->flete = $position->getShipping();
                         $objItem->disponible = 1;
                         if (!$objItem->save()) {
                             throw new Exception("Error al guardar item de compra {$objItem->codigoProducto}. " . $objItem->validateErrorsResponse());
                         }
                         if ($objCompra->identificacionUsuario !== null) {
                             $categoriasCompra[] = "('" . $objCompra->identificacionUsuario . "','" . $productoCombo->objProducto->idCategoriaBI . "')";
                         }
                         $productosCompra[] = "('" . $productoCombo->objProducto->codigoProducto . "')";
                     }
                 }
             }
         }
         $objUsuario = Yii::app()->session[Yii::app()->params->usuario['sesion']];
         $objPasarelaEnvio = null;
         $asuntoCorreo = Yii::app()->params->asunto['pedidoRealizado'];
         if ($modelPago->idFormaPago == Yii::app()->params->formaPago['pasarela']['idPasarela']) {
             $asuntoCorreo = Yii::app()->params->asunto['pedidoRealizadoPasarela'];
             $objPasarelaEnvio = new PasarelaEnvios();
             $objPasarelaEnvio->idCompra = $objCompra->idCompra;
             $objPasarelaEnvio->valor = $objCompra->totalCompra;
             $objPasarelaEnvio->iva = $objCompra->impuestosCompra;
             $objPasarelaEnvio->baseIva = $objCompra->baseImpuestosCompra;
             $objPasarelaEnvio->moneda = "COP";
             $objPasarelaEnvio->nombre = $objUsuario->getNombreCompleto();
             $objPasarelaEnvio->identificacionUsuario = $objCompra->identificacionUsuario;
             $objPasarelaEnvio->tipoDocumento = 1;
             $objPasarelaEnvio->correoElectronico = $objUsuario->correoElectronico;
             if (!$objPasarelaEnvio->save()) {
                 throw new Exception("Error al guardar registro de pasarela. " . $objPasarelaEnvio->validateErrorsResponse());
             }
         }
         if (count($categoriasCompra) > 0) {
             $sql = "INSERT INTO t_ComprasUsuariosCategorias(identificacionUsuario, idCategoriaBI) VALUES " . implode(",", $categoriasCompra) . " ON DUPLICATE KEY UPDATE cantidad=cantidad+1";
             Yii::app()->db->createCommand($sql)->execute();
         }
         if (count($productosCompra) > 0) {
             $sql = "INSERT INTO t_ProductosVendidos(codigoProducto) VALUES " . implode(",", $productosCompra) . " ON DUPLICATE KEY UPDATE cantidad=cantidad+1";
             Yii::app()->db->createCommand($sql)->execute();
         }
         $objFormaPago = FormaPago::model()->findByPk($modelPago->idFormaPago);
         $contenidoCorreo = $this->renderPartial('compraCorreo', array('objCompra' => $objCompra, 'modelPago' => $modelPago, 'objCompraDireccion' => $objCompraDireccion, 'objFormaPago' => $objFormaPago, 'objFormasPago' => $objFormasPago, 'objUsuario' => $objUsuario), true, true);
         $htmlCorreo = $this->renderPartial('/usuario/_correo', array('contenido' => $contenidoCorreo), true, true);
         sendHtmlEmail($objUsuario->correoElectronico, $asuntoCorreo, $htmlCorreo);
         $transaction->commit();
         return array('result' => 1, 'response' => array('objCompra' => $objCompra, 'modelPago' => $modelPago, 'objCompraDireccion' => $objCompraDireccion, 'objFormaPago' => $objFormaPago, 'objFormasPago' => $objFormasPago, 'objPasarelaEnvio' => $objPasarelaEnvio));
     } 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');
         }
         return array('result' => 0, 'response' => $exc->getMessage());
     }
 }
예제 #2
0
 public function compra()
 {
     include_once './model/fotos_model.php';
     if (isset($_SESSION['idusuario']) && $_SESSION['idusuario'] != NULL) {
         if (isset($_SESSION['carrito']) && count($_SESSION['carrito']) > 0) {
             include_once "./model/compras_model.php";
             $usuario = new Compras();
             $id_compra = $usuario->nuevacompra($_SESSION['idusuario']);
             //Guarda en la variable el id de la compra
             $foto = new Fotos_model();
             foreach ($_SESSION['carrito'] as $id => $producto) {
                 $consulta = $foto->load_fotografiaporid($id);
                 //Guarda el query //Recupero los atributos de la compra
                 $usuario->insertenlineadecompra($id_compra, $consulta[0]['id'], $consulta[0]['costo']);
             }
             unset($_SESSION['carrito']);
             // Limpio el carrito de compras
             include_once './view/vistacompra.php';
             $vista = new CompraExito();
             $vista->mostrar();
         } else {
         }
     } else {
         include_once './view/vistalogin.php';
         $vista = new Vistalogin();
         $vista->mostrar();
     }
 }
예제 #3
0
 public function actionOcultarpedido()
 {
     if (!Yii::app()->request->isPostRequest) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Solicitud inválida'));
         Yii::app()->end();
     }
     $compra = Yii::app()->getRequest()->getPost('compra', null);
     if ($compra === null) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Solicitud inválida, no se detectan datos'));
         Yii::app()->end();
     }
     $objCompra = Compras::model()->find(array('condition' => 'idCompra=:compra AND identificacionUsuario=:usuario', 'params' => array(':compra' => $compra, ':usuario' => Yii::app()->user->name)));
     if ($objCompra === null) {
         echo CJSON::encode(array('result' => 'error', 'response' => 'Compra no existente'));
         Yii::app()->end();
     }
     $objCompra->activa = 0;
     $objCompra->save();
     echo CJSON::encode(array('result' => 'ok', 'response' => 'Pedido oculto'));
     Yii::app()->end();
 }
예제 #4
0
 public function getCompra()
 {
     $id = Input::get('id');
     $pub_id = Input::get('pub_id');
     $aux = Compras::where('pub_id', '=', $pub_id)->where('user_id', '=', $pub_id)->where(function ($query) {
         $query->where('valor_vend', '=', 0)->orWhere('fechVal', '=', date('Y-m-d', time() + 172800));
     })->first();
     if (!empty($aux)) {
         return Response::json(array('type' => 'danger', 'msg' => 'Usted ya ha contactado este usuario y aun no se ha valorado'));
     }
     $comp = new Compras();
     $comp->pub_id = $pub_id;
     $comp->user_id = $id;
     $comp->valor_comp = 0;
     $comp->valor_vend = 0;
     $comp->fechVal = date('Y-m-d', time() + 172800);
     if ($comp->save()) {
         $pub = Publicaciones::find($pub_id);
         $user = User::find($pub->user_id);
         $msg = "Han respondido tu comentario: " . $pub->titulo;
         $data = array('message' => $msg, 'title' => $msg, 'msgcnt' => null, 'timeToLive' => 3000);
         return Response::json(array('type' => 'success', 'msg' => 'Se ha generado una compra', 'compra_id' => $comp->id));
     }
 }
예제 #5
0
 public function actionComprapdv()
 {
     $model = Compras::model()->findByPk(271945);
     echo "pdv: {$model->idComercial}<br/>";
     echo "pdv: " . $model->objPuntoVenta->nombrePuntoDeVenta . "<br/>";
 }
include_once 'include/formulario.php';
include_once 'include/campo.php';
include_once 'include/campo_oculto.php';
include_once 'include/campo_combo.php';
include_once 'include/campo_decimal.php';
include_once 'include/boton.php';
include_once 'include/boton_flat.php';
include_once 'include/table_handler.php';
include_once 'include/tabla.php';
include_once 'include/fondos/fondos.php';
include_once 'include/compras/compras.php';
include_once 'include/proveedores/proveedores.php';
include_once 'include/url_util.php';
include_once 'include/formatter.php';
$compras = new Compras();
$compra = $compras->get_row($_REQUEST['codigo']);
$url = new UrlUtil();
$formulario = new Formulario();
$formulario->set_action_uri($url->get_uri() . '&action=grabar_pago');
$campo_codigo = new Campo('codigo', Formatter::code_format($compra[0]), 'Código de la operación', 'text');
$campo_codigo->set_disabled();
$campo_fecha = new Campo('fecha', Formatter::datetime_format($compra[2]), 'Fecha de emisión:', 'text');
$campo_fecha->set_disabled();
$proveedores = new Proveedores();
$campo_proveedor = new CampoOculto('proveedor', $compra[3]);
$campo_razon_proveedor = new Campo('proveedor', $proveedores->get_field(1, $compra[3]), 'Proveedor:', 'text');
$campo_razon_proveedor->set_disabled();
$campo_monto_factura = new Campo('monto_fac', $compra[6], 'Monto de la factura:', 'text');
$campo_monto_factura->set_disabled();
$campo_saldo_factura = new Campo('saldo_fac', $compra[7], 'Saldo de la factura:', 'text');
예제 #7
0
 /**
 * Returns the data model based on the primary key given in the GET variable.
 * If the data model is not found, an HTTP exception will be raised.
 * @param integer $id the ID of the model to be loaded
 * @return Ope
  rador the loaded model
 * @throws CHttpException
 */
 public function loadModel($id)
 {
     $model = Compras::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'La página solicitada no existe.');
     }
     return $model;
 }
예제 #8
0
 public function exportarCompras()
 {
     Yii::import('application.vendors.phpexcel.PHPExcel', true);
     $objPHPExcel = new PHPExcel();
     $objPHPExcel->getProperties()->setTitle("Reporte Compras");
     $objPHPExcel->setActiveSheetIndex(0);
     $objPHPExcel->getSheet(0)->setTitle('Compras');
     $objPHPExcel->createSheet(1);
     $objPHPExcel->getSheet(1)->setTitle('Detalle Compras');
     $objPHPExcel->setActiveSheetIndex(0);
     $objWorksheet = $objPHPExcel->getSheet(0);
     $objWorksheet->setTitle('Compras');
     $listCompras = Compras::model()->findAll(array('with' => array('objUsuario', 'objFormaPago', 'objPerfil', 'objCiudad', 'objSector', 'objCompraDireccion'), 'order' => 't.fechaEntrega', 'condition' => 'fechaEntrega>=:fechaini AND fechaEntrega<=:fechafin', 'params' => array(':fechaini' => "{$this->fechaInicio} 00:00:00", ':fechafin' => "{$this->fechaFin} 23:59:59")));
     $col = 0;
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, '# Compra');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, '# Usuario');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Nombre Usuario');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Correo Usuario');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Invitado');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Código Perfil');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Nombre Perfil');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Fecha Compra');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Fecha Entrega');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Ciudad');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Sector');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Tipo Entrega');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Punto Venta');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Domicilio Dirección');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Domicilio Barrio');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Domicilio Teléfono');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Domicilio Celular');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Donación Fundación');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Domicilio');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Flete');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Domicilio Bodega');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Subtotal Compra');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Bono');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Impuestos Compra');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Total Compra');
     for ($col = 0; $col < 25; $col++) {
         $objWorksheet->getStyleByColumnAndRow($col, 1)->getFont()->setBold(true);
     }
     $objPHPExcel->setActiveSheetIndex(1);
     $objWorksheet = $objPHPExcel->getSheet(1);
     $col = 0;
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, '# Compra');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Código Producto');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Descripción');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Presentación');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, '# Combo');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Descripción Combo');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Cant. Unidades');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Cant. Fracciones');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Cant. Bodega');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Precio Base Unidad');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Descuento Unidad');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Precio Base Fracción');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Descuento Fracción');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Subtotal Unidad');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Subtotal Fracción');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Flete');
     $objWorksheet->setCellValueByColumnAndRow($col++, 1, 'Impuestos');
     for ($col = 0; $col < 17; $col++) {
         $objWorksheet->getStyleByColumnAndRow($col, 1)->getFont()->setBold(true);
     }
     $nItems = 0;
     foreach ($listCompras as $idx => $objCompra) {
         $objPHPExcel->setActiveSheetIndex(0);
         $objWorksheet = $objPHPExcel->getSheet(0);
         $col = 0;
         $fila = $idx + 2;
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->idCompra);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->identificacionUsuario);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objUsuario->nombre . " " . $objCompra->objUsuario->apellido);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objUsuario->correoElectronico);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->invitado);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->codigoPerfil);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objPerfil->nombrePerfil);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->fechaCompra);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->fechaEntrega);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objCiudad->nombreCiudad);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objSector->nombreSector);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, Yii::app()->params->entrega['tipo'][$objCompra->tipoEntrega]);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->idComercial);
         if ($objCompra->objCompraDireccion == null) {
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, "NA");
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, "NA");
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, "NA");
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, "NA");
         } else {
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objCompraDireccion->direccion);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objCompraDireccion->barrio);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objCompraDireccion->telefono);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objCompraDireccion->celular);
         }
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->donacionFundacion);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->domicilio);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->flete);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->valorDomicilioCedi);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->subtotalCompra);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->objFormaPagoCompra == null ? "NA" : $objCompra->objFormaPagoCompra->valorBono);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->impuestosCompra);
         $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objCompra->totalCompra);
         $objPHPExcel->setActiveSheetIndex(1);
         $objWorksheet = $objPHPExcel->getSheet(1);
         foreach ($objCompra->listItems as $objItem) {
             $col = 0;
             $fila = $nItems + 2;
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->idCompra);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->codigoProducto);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->descripcion);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->presentacion);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->idCombo);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->descripcionCombo);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->unidades);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->fracciones);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->unidadesCedi);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->precioBaseUnidad);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->descuentoUnidad);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->precioBaseFraccion);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->descuentoFraccion);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->precioTotalUnidad);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->precioTotalFraccion);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->flete);
             $objWorksheet->setCellValueByColumnAndRow($col++, $fila, $objItem->objImpuesto->nombreImpuesto);
             $nItems++;
         }
     }
     $objPHPExcel->setActiveSheetIndex(0);
     header('Content-Type: application/vnd.ms-excel');
     header('Content-Disposition: attachment;filename="reporte_compras_' . date('YmdHis') . '.xls"');
     header('Cache-Control: max-age=0');
     // If you're serving to IE 9, then the following may be needed
     header('Cache-Control: max-age=1');
     // If you're serving to IE over SSL, then the following may be needed
     //header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
     header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
     // always modified
     header('Cache-Control: cache, must-revalidate');
     // HTTP/1.1
     header('Pragma: public');
     // HTTP/1.0
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
     $objWriter->save('php://output');
 }
 public function actionConfirmacion()
 {
     //SE DEFINEN CONTROLES PARA EVIATR ATAQUES
     //if ($_SERVER["REMOTE_ADDR"] == "127.0.0.1") //se debe validar que sea solo por la VPN de PSE
     if (false) {
         //se debe validar que sea solo por la VPN de PSE
         $this->log(-1, 900, "SERVIDOR NO AUTORIZADO. " . $_SERVER["REMOTE_ADDR"]);
         Yii::app()->end();
     }
     if (empty($_POST)) {
         $this->log(-1, 800, "MEDOTO DE INVOCACION NO AUTORIZADO. " . $_SERVER["REMOTE_ADDR"]);
         Yii::app()->end();
     }
     $llavesArreglo = array_keys($_POST);
     $cadenaLog = "";
     for ($i = 0; $i < sizeof($llavesArreglo); $i++) {
         $cadenaLog .= $llavesArreglo[$i] . " -> " . $_POST[$llavesArreglo[$i]];
         if (isset($llavesArreglo[$i + 1])) {
             $cadenaLog .= " | ";
         }
     }
     $this->log(0, 100, $cadenaLog);
     //Guardar los datos GET de invocacion.
     $this->log(0, 100, $_SERVER["REMOTE_ADDR"]);
     //Guardar los datos GET de invocacion.
     //SETEO DE VARIABLES
     $objRespuesta = new PasarelaRespuestas();
     $objRespuesta->tipoRespuesta = PasarelaRespuestas::TIPO_CONFIRMACION;
     $firma = $_POST["firma"];
     $objRespuesta->estadoPol = trim($_POST["estado_pol"]);
     $objRespuesta->codigoRespuestaPol = trim($_POST["codigo_respuesta_pol"]);
     $objRespuesta->idCompra = trim($_POST["ref_venta"]);
     $objRespuesta->refPol = trim($_POST["ref_pol"]);
     $objRespuesta->medioPago = trim($_POST["medio_pago"]);
     $objRespuesta->tipoMedioPago = trim($_POST["tipo_medio_pago"]);
     $objRespuesta->cuotas = isset($_POST["cuotas"]) ? trim($_POST["cuotas"]) : 0;
     $objRespuesta->valor = trim($_POST["valor"]);
     $objRespuesta->valorPesos = 0;
     $objRespuesta->iva = trim($_POST["iva"]);
     $objRespuesta->valorAdicional = isset($_POST["valorAdicional"]) ? trim($_POST["valorAdicional"]) : 0;
     $objRespuesta->moneda = isset($_POST["moneda"]) ? trim($_POST["moneda"]) : "";
     $objRespuesta->cus = isset($_POST["cus"]) ? trim($_POST["cus"]) : 0;
     $objRespuesta->bancoPse = isset($_POST["banco_pse"]) ? trim($_POST["banco_pse"]) : "";
     $objRespuesta->fechaTransaccion = trim($_POST["fecha_transaccion"]);
     $this->log($objRespuesta->idCompra, 101, $cadenaLog);
     //Guardar los datos GET de invocacion.
     //$this->log($objRespuesta->idCompra, 101, $_SERVER["REMOTE_ADDR"]); //Guardar los datos GET de invocacion.
     if (!isset($_POST["ref_venta"]) || !isset($_POST["estado_pol"]) || !isset($_POST["usuario_id"])) {
         $this->log(-1, 700, "VERIFICACION DE VARIBLES PRIMARIAS FALLIDA. " . $_SERVER["REMOTE_ADDR"]);
         Yii::app()->end();
     }
     //PARA OBTENER LOS GET DE PSE DE VERIFICACION DE PAGO
     $this->log($objRespuesta->idCompra, 100, "INICIO TRANSACCION POST.");
     // Se Guarda el Inicio de la Transaccion
     $firma_cadena = Yii::app()->params->formaPago['pasarela']['llaveEncripcion'] . "~" . Yii::app()->params->formaPago['pasarela']['usuarioId'] . "~" . $objRespuesta->idCompra . "~" . $objRespuesta->valor . "~" . $objRespuesta->moneda . "~" . $objRespuesta->estadoPol;
     $firmacreada = md5($firma_cadena);
     if (strtoupper($firmacreada) != strtoupper($firma)) {
         $this->log($objRespuesta->idCompra, 110, "FIRMAS NO COINCIDEN. " . $firmacreada . " - " . $firma);
         // Se Guarda el Inicio de la Transaccion
         $mensaje = "El pedido No. " . $objRespuesta->idCompra . " ha sido pagado por la Pasarela de Pagos, pero se ha generado un ERROR DE FIRMAS\r\n                por lo que la transaccion debe ser verificada en el módulo de administracion.";
         $this->correo(4, "", 0, 0, "", $mensaje);
         Yii::app()->end();
     }
     $this->log($objRespuesta->idCompra, 102, "FIRMAS CONINCIDEN. " . $firmacreada . " - " . $firma);
     // Se Guarda el Inicio de la Transaccion
     try {
         $objCompra = Compras::model()->find(array('with' => "objPasarelaEnvio", 'condition' => 't.idCompra=:idCompra', 'params' => array(':idCompra' => $objRespuesta->idCompra)));
         if ($objCompra == null || $objCompra->objPasarelaEnvio == null) {
             //NO EXISTE EL PEDIDO, SE DBE ENVIAR UN CORREO A CALL CENTER PARA VERIFICAR.
             $this->log($objRespuesta->idCompra, 500, "NO EXISTE LA COMPRA. " . $objRespuesta->idCompra);
             $mensaje = "El pedido No. " . $objRespuesta->idCompra . " ha sido pagado por la Pasarela de Pagos, pero se ha generado un NO EXISTE LA COMPRA\r\n                por lo que la transaccion debe ser verificada en el módulo de administracion. CUS " . $objRespuesta->cus;
             $this->correo(4, "", 0, 0, "", $mensaje);
             Yii::app()->end();
         }
         //SE INICIA LA TRANSACION
         $transaction = Yii::app()->db->beginTransaction();
         if ($objRespuesta->estadoPol == 4) {
             // TRANSACCION APROBADA.
             //ACTUALIZAR t_compras LA COLUMNA documento_cruce, id_punto_venta, id_estado_compra, codigo_operador, saldospdv
             $objCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['aprobadoPasarela'];
             $objCompra->idOperador = 50;
             if (!$objCompra->save()) {
                 $this->log($objRespuesta->idCompra, 501, "ERROR ACTUALIZANDO LA TABLA t_Compra. " . $objCompra->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "APROBADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             $objEstados = new ComprasEstados();
             $objEstados->idCompra = $objCompra->idCompra;
             $objEstados->idEstadoCompra = $objCompra->idEstadoCompra;
             $objEstados->idOperador = $objCompra->idOperador;
             if (!$objEstados->save()) {
                 $this->log($objRespuesta->idCompra, 502, "ERROR ACTUALIZANDO LA TABLA t_ComprasEstados. " . $objEstados->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "APROBADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             $objObservacion = new ComprasObservaciones();
             $objObservacion->idCompra = $objCompra->idCompra;
             $objObservacion->observacion = 'Cambio de Estado Aprobado Pasarela';
             $objObservacion->idOperador = $objCompra->idOperador;
             $objObservacion->notificarCliente = 0;
             if (!$objObservacion->save()) {
                 $this->log($objRespuesta->idCompra, 503, "ERROR ACTUALIZANDO LA TABLA t_ComprasObservaciones. " . $objObservacion->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "APROBADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             //AQUI VUELVE Y SE COLOCA EN ESTADO 1 PENDIENTE PARA QUE SEA TRAMITADO POR EL CALL CENTER
             $objCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['pendiente'];
             if (!$objCompra->save()) {
                 $this->log($objRespuesta->idCompra, 501, "ERROR ACTUALIZANDO LA TABLA t_Compras. " . $objCompra->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "APROBADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             //REGISTRAR RESPUESTA
             if (!$objRespuesta->save()) {
                 $this->log($objRespuesta->idCompra, 504, "ERROR INSERTANDO LA TABLA t_PasarelaRespuestas. " . $objRespuesta->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "APROBADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             $this->log($objRespuesta->idCompra, 1000, "PROCESO EXITOSO TRANSACCION APROBADA.");
             $this->correo(1, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico);
         } else {
             //ACTUALIZAR t_compras LA COLUMNA documento_cruce, id_punto_venta, id_estado_compra, codigo_operador, saldospdv
             $objCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['negadoPasarela'];
             $objCompra->idOperador = 50;
             if (!$objCompra->save()) {
                 $this->log($objRespuesta->idCompra, 501, "ERROR ACTUALIZANDO LA TABLA t_Compras. " . $objCompra->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "RECHAZADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             //INSERTARR en t_ComprasEstados
             $objEstados = new ComprasEstados();
             $objEstados->idCompra = $objCompra->idCompra;
             $objEstados->idEstadoCompra = $objCompra->idEstadoCompra;
             $objEstados->idOperador = $objCompra->idOperador;
             if (!$objEstados->save()) {
                 $this->log($objRespuesta->idCompra, 502, "ERROR ACTUALIZANDO LA TABLA t_ComprasEstados. " . $objEstados->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "RECHAZADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             //INSERTAR EN t_ComprasObservaciones
             $objObservacion = new ComprasObservaciones();
             $objObservacion->idCompra = $objCompra->idCompra;
             $objObservacion->observacion = 'Cambio de Estado Rechazada Pasarela';
             $objObservacion->idOperador = $objCompra->idOperador;
             $objObservacion->notificarCliente = 0;
             if (!$objObservacion->save()) {
                 $this->log($objRespuesta->idCompra, 503, "ERROR ACTUALIZANDO LA TABLA t_ComprasObservaciones. " . $objObservacion->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "RECHAZADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             //REGISTRAR RESPUESTA
             if (!$objRespuesta->save()) {
                 $this->log($objRespuesta->idCompra, 504, "ERROR INSERTANDO LA TABLA t_PasarelaRespuestas. " . $objRespuesta->validateErrorsResponse());
                 $this->correo(3, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico, "RECHAZADA");
                 try {
                     $transaction->rollBack();
                 } catch (Exception $erbk) {
                     Yii::log($erbk->getMessage() . "\n" . $erbk->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
                 }
                 Yii::app()->end();
             }
             $this->log($objRespuesta->idCompra, 1000, "PROCESO EXITOSO TRANSACCION RECHAZADA.");
             $this->correo(2, $objCompra->objPasarelaEnvio->nombre, $objCompra->idCompra, $objCompra->objPasarelaEnvio->valor, $objCompra->objPasarelaEnvio->correoElectronico);
         }
         $transaction->commit();
     } catch (Exception $exc) {
         Yii::log($exc->getMessage() . "\n" . $exc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application');
         $this->log($objRespuesta->idCompra, 600, "ERROR DE CONEXION CON LA BD DE LA REBAJA VIRTUAL. " . $exc->getMessage());
         if ($objRespuesta->estadoPol == 4) {
             //ENVIAR CORREO A CALL CENTER PARA TRAMITAR LA VENTA
             $mensaje = "El pedido No. " . $objRespuesta->idCompra . " ha sido pagado por la Pasarela de Pagos, pero se ha generado un ERROR DE CONEXION CON LA BD DE LA REBAJA VIRTUAL\r\n            por lo que la transaccion debe ser verificada en el módulo de administracion. IMPORTANTE: La Transaccion ha sido APROBADA. CUS " . $objRespuesta->cus;
             //mail(PARA_CALLCENTER, "Revision Transaccion Pasarela", $mensaje, $cabeceras, "-f alexander_javela@copservir.com");
             $this->correo(4, "", 0, 0, "", $mensaje);
         } else {
             //ENVIAR CORREO A CALL CENTER PARA TRAMITAR LA VENTA
             $mensaje = "El pedido No. " . $objRespuesta->idCompra . " ha sido pagado por la Pasarela de Pagos, pero se ha generado un ERROR DE CONEXION CON LA BD DE LA REBAJA VIRTUAL\r\n            por lo que la transaccion debe ser verificada en el módulo de administracion. IMPORTANTE: La Transaccion ha sido RECHAZADA. CUS " . $objRespuesta->cus;
             $this->correo(4, "", 0, 0, "", $mensaje);
         }
     }
 }
 public function __construct()
 {
     parent::__construct();
     parent::set_query("SELECT codigo, factura, fecha, proveedor, monto, saldo FROM compras");
     parent::set_conditional_filter('saldo', '>', '0');
 }
예제 #11
0
 public function getMyReputation()
 {
     $title = "Mi reputación|pasillo24.com";
     $compras = Compras::join('publicaciones', 'publicaciones.id', '=', 'compras.pub_id')->join('usuario', 'usuario.id', '=', 'publicaciones.user_id')->where('compras.user_id', '=', Auth::id())->paginate(10, array('compras.id', 'compras.valor_vend', 'compras.valor_comp', 'publicaciones.titulo', 'publicaciones.id as pub_id', 'publicaciones.name as name_pub', 'usuario.name', 'usuario.lastname'));
     $ventas = Compras::join('publicaciones', 'publicaciones.id', '=', 'compras.pub_id')->join('usuario', 'usuario.id', '=', 'compras.user_id')->where('publicaciones.user_id', '=', Auth::id())->paginate(10, array('compras.id', 'compras.valor_vend', 'compras.valor_comp', 'publicaciones.titulo', 'usuario.id as user_id', 'usuario.name', 'usuario.lastname'));
     $comprasC = Compras::join('publicaciones', 'publicaciones.id', '=', 'compras.pub_id')->join('usuario', 'usuario.id', '=', 'publicaciones.user_id')->where('compras.user_id', '=', Auth::id())->get(array('compras.id', 'compras.valor_vend', 'compras.valor_comp', 'publicaciones.titulo', 'publicaciones.id as pub_id', 'usuario.name', 'usuario.lastname'));
     $ventasC = Compras::join('publicaciones', 'publicaciones.id', '=', 'compras.pub_id')->join('usuario', 'usuario.id', '=', 'compras.user_id')->where('publicaciones.user_id', '=', Auth::id())->get(array('compras.id', 'compras.valor_vend', 'compras.valor_comp', 'publicaciones.titulo', 'usuario.id as user_id', 'usuario.name', 'usuario.lastname'));
     $comp_pos = 0;
     $comp_neg = 0;
     $vent_pos = 0;
     $vent_neg = 0;
     foreach ($ventasC as $v) {
         if ($v->valor_vend > 0) {
             $vent_pos++;
         } elseif ($v->valor_vend < 0) {
             $vent_neg++;
         }
     }
     foreach ($comprasC as $c) {
         if ($c->valor_comp > 0) {
             $comp_pos++;
         } elseif ($c->valor_comp < 0) {
             $comp_neg++;
         }
     }
     return View::make('user.myReputation')->with('title', $title)->with('compras', $compras)->with('ventas', $ventas)->with('vend_pos', $vent_pos)->with('vend_neg', $vent_neg)->with('comp_pos', $comp_pos)->with('comp_neg', $comp_neg);
 }
예제 #12
0
 public function actionRemitirBorrar()
 {
     $idCompra = Yii::app()->getRequest()->getPost('idCompra');
     $objCompra = Compras::model()->findByPk($idCompra, array("with" => "objPuntoVenta"));
     if ($objCompra === null) {
         echo CJSON::encode(array('result' => 0, 'response' => 'Pedido no existe.'));
         Yii::app()->end();
     }
     if ($objCompra->idComercial == null) {
         echo CJSON::encode(array('result' => 0, 'response' => 'No se ha asignado punto de venta.'));
         Yii::app()->end();
     }
     $client = new SoapClient(null, array('location' => Yii::app()->params->webServiceUrl['remisionPosECommerce'], 'uri' => "", 'trace' => 1));
     $result = $client->__soapCall("BorrarCongelada", array('idPedido' => $idCompra));
     if ($result[0] == 1) {
         $objCompra = Compras::model()->findByPk($idCompra, array("with" => "objPuntoVenta"));
         if ($objCompra === null) {
             echo CJSON::encode(array('result' => 'error', 'response' => 'Pedido no existe.'));
             Yii::app()->end();
         }
         $transaction = Yii::app()->db->beginTransaction();
         try {
             $objCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['remisionBorrada'];
             $objCompra->generarDocumentoCruce(Yii::app()->controller->module->user->id);
             // Guardar el cambio de estado de la remisión
             if (!$objCompra->save()) {
                 throw new Exception('Error de asignación: ' . $objCompra->validateErrorsResponse());
             }
             $objEstadoCompra = new ComprasEstados();
             $objEstadoCompra->idCompra = $objCompra->idCompra;
             $objEstadoCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['remisionBorrada'];
             $objEstadoCompra->idOperador = Yii::app()->controller->module->user->id;
             // guardar en ComprasEstados
             if (!$objEstadoCompra->save()) {
                 throw new Exception("Error al guardar traza de estado: " . $objEstadoCompra->validateErrorsResponse());
             }
             $objObservacion = new ComprasObservaciones();
             $objObservacion->idCompra = $objCompra->idCompra;
             $objObservacion->observacion = "Cambio de Estado: Remisión borrada del POS del PDV. " . $objCompra->objPuntoVenta->nombrePuntoDeVenta;
             $objObservacion->idOperador = Yii::app()->controller->module->user->id;
             $objObservacion->notificarCliente = 0;
             // Guardar las observaciones
             if (!$objObservacion->save()) {
                 throw new Exception("Error al guardar observación" . $objObservacion->validateErrorsResponse());
             }
             $transaction->commit();
         } 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()));
             Yii::app()->end();
         }
     }
     echo CJSON::encode(array('result' => $result[0], 'response' => $result[1], 'encabezado' => $this->renderPartial('/admin/_encabezadoPedido', array('objCompra' => $objCompra), true, false), 'htmlObservaciones' => $this->renderPartial('/admin/_observaciones', array('objCompra' => $objCompra), true, false)));
 }
예제 #13
0
 public function compras()
 {
     if (isset($_SESSION['idusuario']) && $_SESSION['idusuario'] != NULL && $_SESSION['admin'] === '1') {
         include "./view/vistacompras.php";
         include "./model/compras_model.php";
         $modelo = new Compras();
         $vista = new Vistacompras();
         $vista->lista = $modelo->visualizarcompras();
         //var_dump($vista);
         //die();
         $vista->mostrar();
     } else {
         include './view/vistaindex.php';
         $vista = new Vistaindex();
         $vista->mostrar();
     }
 }
 public function getCompra()
 {
     $id = Input::get('id');
     $aux = Compras::where('pub_id', '=', $id)->where('user_id', '=', Auth::id())->where(function ($query) {
         $query->where('valor_vend', '=', 0)->orWhere('fechVal', '=', date('Y-m-d', time() + 172800));
     })->first();
     if (!empty($aux)) {
         Session::flash('error', 'Usted ya ha contactado este usuario y aun no se ha valorado');
         return Redirect::back();
     }
     $comp = new Compras();
     $comp->pub_id = $id;
     $comp->user_id = Auth::id();
     $comp->valor_comp = 0;
     $comp->valor_vend = 0;
     $comp->fechVal = date('Y-m-d', time() + 172800);
     if ($comp->save()) {
         $pub = Publicaciones::find($id);
         $user = User::find($pub->user_id);
         $msg = "Han respondido tu comentario: " . $pub->titulo;
         $data = array('message' => $msg, 'title' => $msg, 'msgcnt' => null, 'timeToLive' => 3000);
         /*$gcm = GcmDevices::where('usuario','=',$user->username)->orderBy('id','DESC')->get(array('gcm_regid'));
         		$regId = array();
         		$i = 0;
         		foreach($gcm as $g)
         		{
         			$regId[$i] = $g['gcm_regid'];
         			$i++;
         		}
         		$doGcm = new Gcm;
         		$response = $doGcm->send_notification($regId,$data);*/
         return Redirect::to('usuario/mis-compras');
     }
 }
예제 #15
0
<?php

session_start();
if (isset($_SESSION["Usuario"])) {
    require_once 'clases/clsCategoria.php';
    require_once 'clases/clsCompras.php';
    $objcomp = new Compras();
    $objCat = new Categoria();
    $fila = $objCat->get_Categoria();
    ?>
<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Sistema - Compras</title>
	<?php 
    require_once 'inc/header.php';
    ?>
</head>
<body>
	<?php 
    require_once 'inc/navbar.php';
    ?>
	<div class="container-fluid top-container">
		<div class="row">
			<div class="col-xs-12 col-sm-12 col-md-2 col-lg-2">
				<?php 
    require_once 'inc/menu.php';
    ?>
			</div>
			<div class="content">
예제 #16
0
 public function postEdit()
 {
     DB::beginTransaction();
     try {
         $compra = Compras::find(Input::get('compra_id'));
         $compra->productos()->detach();
         $productos = Input::get('productos');
         foreach ($productos as $producto) {
             if ($producto['producto_id'] > 0) {
                 if ($producto['preciototal'] > 0) {
                     $oproducto = Producto::find($producto['producto_id']);
                     $compra->productos()->attach($oproducto->id, array('preciocompra' => $producto['preciocompra'], 'cantidad' => $producto['cantidad'], 'cantidadtotal' => $producto['cantidadtotal'], 'preciototal' => $producto['preciototal'], 'preciounitario' => $producto['preciounitario'], 'presentacion' => $producto['presentacion'], 'unidadmedida' => $producto['unidadmedida']));
                     $oproducto->costo = $producto['preciocompra'];
                     $oproducto->stockactual = $oproducto->stockactual + $producto['cantidadtotal'];
                     $oproducto->save();
                 } else {
                     return Response::json(array('estado' => false, 'msg' => 'Productos con precios 0.00'));
                 }
             } else {
                 return Response::json(array('estado' => false, 'msg' => 'No has Selecionado un producto'));
             }
         }
         $compra->update(Input::all());
         $compra->save();
     } catch (Exception $e) {
         DB::rollback();
         return Response::json(array('estado' => false, 'msg' => $e, 'error' => 1));
     }
     DB::commit();
     return Response::json(array('estado' => true, 'msg' => 'Operacion completada Correctamente'));
 }
예제 #17
0
<?php

$compra = new Compras();
if (isset($_POST["set_venta"])) {
    $b = $_POST["venta_bruto"];
    $d = $_POST["venta_descuentos"];
    $n = $_POST["venta_neto"];
    $compra->set_totales($b, $d, $n);
    $compra->procesar_compra();
}
if (isset($_POST["set_venta_producto"])) {
    $v = $_POST["venta_id"];
    $p_id = $_POST["producto_id"];
    $p_precio = $_POST["producto_precio"];
    $p_ca = $_POST["producto_cantidad"];
    $p_promo = $_POST["producto_promocion"];
    $compra->procesar_venta_producto($v, $p_id, $p_precio, $p_ca, $p_promo);
    $compra->procesar_materia_prima($p_id, $p_ca);
}
if (isset($_POST["set_venta_medio"])) {
    $v = $_POST["venta_id"];
    $m = $_POST["venta_monto"];
    $i = $_POST["venta_medio_pago_id"];
    $compra->procesar_venta_medio($v, $m, $i);
}
class Compras
{
    protected $link, $sql_con;
    protected $resultado;
    protected $sucursal, $empresa, $usuario;
    public $total_bruto, $total_descuentos, $total_neto;