예제 #1
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();
 }
예제 #2
0
 public function actionAgregarcompra()
 {
     $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();
     }
     $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();
     }
     $idCombos = array();
     $fecha = new DateTime();
     $agregadoCompleto = true;
     $agregadoItem = false;
     $nUnidadesCompra = 0;
     $nUnidadesCarro = 0;
     foreach ($objCompra->listItems as $objItem) {
         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);
                     $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);
             if ($objItem->unidades > 0) {
                 $cantidadCarroUnidad = 0;
                 if ($position !== null) {
                     $cantidadCarroUnidad = $position->getQuantityUnit();
                 }
                 //si hay saldo, agrega a carro
                 if ($cantidadCarroUnidad + $objItem->unidades <= $objSaldo->saldoUnidad) {
                     $objProductoCarro = new ProductoCarro($objProducto);
                     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) {
                     $objProductoCarro = new ProductoCarro($objProducto);
                     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' => $objSectorCiudad->objCiudad->codigoSucursal, ':saldo' => $objItem->unidadesCedi + $cantidadCarroBodega)));
                 if ($objSaldoBodega === null) {
                     $agregadoCompleto = false;
                 } else {
                     $objProductoCarro = new ProductoCarro($objProducto);
                     Yii::app()->shoppingCart->putStored($objProductoCarro, $objItem->unidadesCedi);
                     $agregadoItem = true;
                     $nUnidadesCarro += $objItem->unidadesCedi;
                 }
             }
         }
     }
     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();
 }
예제 #3
0
 public function actionComprapdv()
 {
     $model = Compras::model()->findByPk(271945);
     echo "pdv: {$model->idComercial}<br/>";
     echo "pdv: " . $model->objPuntoVenta->nombrePuntoDeVenta . "<br/>";
 }
예제 #4
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;
 }
 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);
         }
     }
 }
예제 #6
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)));
 }
예제 #7
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');
 }