Пример #1
0
        public ResponseBussiness <OperationResponse> FinalizarVenta(FinalizarVentaRequest finalizarVentaRequest)
        {
            TokenDto token = new TokenService().Get();
            ResponseBussiness <OperationResponse> response = new SalesBusiness(token).FinalizarVenta(finalizarVentaRequest);

            return(response);
        }
Пример #2
0
        private OperationResponse TiempoAire(FinalizarVentaRequest request)
        {
            OperationResponse response = new OperationResponse();

            response.CodeNumber = "1";
            VentaResponse     venta             = this.repository.ObtenerVentaPorFolio(request.FolioVenta, 0);
            TiempoAireRequest tiempoAireRequest = new TiempoAireRequest();

            tiempoAireRequest.Monto    = float.Parse(venta.Lineas[0].ImporteVentaLineaNeto.ToString());
            tiempoAireRequest.Telefono = venta.Lineas[0].Articulo.InformacionProveedorExternoTA.NumeroTelefonico;
            tiempoAireRequest.SkuCode  = venta.Lineas[0].Articulo.InformacionProveedorExternoTA.SkuCompania;
            ResponseBussiness <OperationResponse> resultTA = new TiempoAireBusiness(this.token).AddTiempoAire(tiempoAireRequest, venta.Lineas[0].Articulo.Sku, venta.FolioVenta);

            if (resultTA.Data.CodeNumber == "1")
            {
                repository.RegistrarRecargaTelefonicaExitosa(request.FolioVenta, this.token.CodeBox, this.token.CodeStore, tiempoAireRequest.Telefono, int.Parse(tiempoAireRequest.Monto.ToString()), resultTA.Data.CodeDescription);
            }
            else
            {
                response.CodeNumber      = resultTA.Data.CodeNumber;
                response.CodeDescription = resultTA.Data.CodeDescription;
            }

            return(response);
        }
Пример #3
0
        private OperationResponse PagoTCMM(FinalizarVentaRequest request)
        {
            OperationResponse response = new OperationResponse();

            response.CodeNumber = "1";
            VentaResponse venta = this.repository.ObtenerVentaPorFolio(request.FolioVenta, 0);

            foreach (LineaTicket linea in venta.Lineas)
            {
                if (linea.TipoDetalleVenta == "46")
                {
                    PagoTCMMRequest pago = new PagoTCMMRequest();
                    pago.ModoEntrada   = 12;
                    pago.NumeroCaja    = token.CodeBox;
                    pago.NumeroTienda  = token.CodeStore;
                    pago.Transaccion   = venta.NumeroTransaccion;
                    pago.Importe       = linea.Articulo.PrecioConImpuestos;
                    pago.NumeroTarjeta = linea.Articulo.InformacionPagoTCMM.NumeroTarjeta;
                    response           = new MelodyMilanoBusiness(this.token).RealizarPago(pago);
                    if (response.CodeNumber == "1")
                    {
                        OperationResponse operationResponseAutoriacion = this.repository.RegistrarAutorizacionPagoTCMM(request.FolioVenta, pago.NumeroTarjeta, response.CodeDescription);
                    }
                }
            }
            return(response);
        }
Пример #4
0
 /// <summary>
 /// Finalización de venta
 /// </summary>
 /// <param name="finalizarVentaRequest">Objeto de peticion de la venta a finalizar</param>
 /// <returns></returns>
 public ResponseBussiness <OperationResponse> FinalizarVenta(FinalizarVentaRequest finalizarVentaRequest)
 {
     return(tryCatch.SafeExecutor(() =>
     {
         return FinalizarVentaInternal(finalizarVentaRequest);
     }));
 }
Пример #5
0
        private OperationResponse ActivarTarjetaRegalo(FinalizarVentaRequest request)
        {
            OperationResponse response = new OperationResponse();

            response.CodeNumber = "1";
            TarjetaRegalosBusiness business = new TarjetaRegalosBusiness(this.token);

            foreach (InformacionFoliosTarjeta informacion in request.InformacionFoliosTarjeta)
            {
                var respuesta = business.ActivarTarjeta(this.token.CodeEmployee, informacion.FolioTarjeta.ToString(), request.FolioVenta);
                if (response.CodeNumber == "0")
                {
                    response.CodeDescription = respuesta.Data.CodeDescription;
                }
            }
            return(response);
        }
Пример #6
0
        private OperationResponse PagoVentaCreditoMayorista(FinalizarVentaRequest request)
        {
            OperationResponse response = new OperationResponse();

            response.CodeNumber = "1";
            VentaResponse venta = this.repository.ObtenerVentaPorFolio(request.FolioVenta, 0);

            foreach (LineaTicket linea in venta.Lineas)
            {
                if (linea.TipoDetalleVenta == "43")
                {
                    PagoCreditoMayoristaRequest pago = new PagoCreditoMayoristaRequest();
                    pago.CodigoMayorista        = venta.CodigoMayorista;
                    pago.FolioOperacionAsociada = venta.FolioVenta;
                    pago.ImportePago            = linea.Articulo.PrecioConImpuestos;
                    response            = new MayoristasBusiness(this.token).PagoCreditoMayorista(pago, venta.NumeroTransaccion);
                    response.CodeNumber = "1";
                }
            }
            return(response);
        }
Пример #7
0
        private OperationResponse PagoServicios(FinalizarVentaRequest request)
        {
            OperationResponse response = new OperationResponse();

            response.CodeNumber = "1";
            VentaResponse        venta = this.repository.ObtenerVentaPorFolio(request.FolioVenta, 0);
            PagoServiciosRequest pago  = new PagoServiciosRequest();

            pago.Cuenta = venta.Lineas[0].Articulo.InformacionProveedorExternoAsociadaPS.Cuenta;

            pago.SkuCodePagoServicio = venta.Lineas[0].Articulo.InformacionProveedorExternoAsociadaPS.SkuCompania;
            pago.SkuCode             = venta.Lineas[0].Articulo.Sku;
            pago.InfoAdicional       = venta.Lineas[0].Articulo.InformacionProveedorExternoAsociadaPS.InfoAdicional;

            ResponseBussiness <OperationResponse> resultTA = new AdministracionPagoServiciosBusiness(this.token).PagoServicio(pago, float.Parse(venta.Lineas[0].Articulo.PrecioConImpuestos.ToString()), request.FolioVenta);

            if (resultTA.Data.CodeNumber != "1")
            {
                response.CodeNumber      = resultTA.Data.CodeNumber;
                response.CodeDescription = resultTA.Data.CodeDescription;
            }
            return(response);
        }
Пример #8
0
        private ResponseBussiness <OperationResponse> FinalizarVentaInternal(FinalizarVentaRequest finalizarVentaRequest)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                OperationResponse result = new OperationResponse();
                string mensajeVentaFinalizada = "Venta finalizada exitosamente. ";
                using (TransactionScope scope = new TransactionScope())
                {
                    result = repository.FinalizarVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, finalizarVentaRequest, "REGULAR");

                    // Procesamos promociones que generan Cupones
                    CuponPromocionalVenta[] cuponesPromocionalesEncontrados = descuentosPromocionesRepository.ProcesarPromocionesCupones(finalizarVentaRequest.cabeceraVentaRequest.FolioOperacion, token.CodeStore, token.CodeBox);
                    foreach (var cupon in cuponesPromocionalesEncontrados)
                    {
                        CuponPersistirResponse cuponPersistirResponse = new CuponPersistirResponse();
                        cuponPersistirResponse = repository.PersistirCuponPromocionalGenerado(cupon);
                        mensajeVentaFinalizada += "Cupón Generado: " + cupon.MensajeCupon + " $" + cupon.ImporteDescuento + ". ";
                    }

                    // Procesamos descuentos por mercancía dañada o picos de mercancía
                    descuentoMercanciaDaniadaBusiness.ProcesarDescuentosExternosPicosMercancia(finalizarVentaRequest.FolioVenta);

                    // ******************************************* INVOCAR A MÉTODOS DE ACUERDO A CADA TIPO DE VENTA FINALIZADA

                    // TIPO DE VENTA/DEVOLUCIÓN REGULAR CONSIDERANDO TARJETAS DE REGALO
                    if (result.CodeNumber.Equals("332") && (finalizarVentaRequest.TipoCabeceraVenta == "1"))
                    {
                        OperationResponse respuesta = this.ActivarTarjetaRegalo(finalizarVentaRequest);
                        if (respuesta.CodeNumber == "1")
                        {
                            result.CodeDescription = mensajeVentaFinalizada;
                            ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                            imprimeTicketsMM.PrintTicket(finalizarVentaRequest.FolioVenta, false);
                            scope.Complete();
                        }
                        else
                        {
                            result.CodeDescription = respuesta.CodeDescription;
                        }
                    }

                    // TIPO DE VENTA PAGO TCMM
                    if (result.CodeNumber.Equals("332") && finalizarVentaRequest.TipoCabeceraVenta == "46")
                    {
                        OperationResponse respuesta = this.PagoTCMM(finalizarVentaRequest);
                        if (respuesta.CodeNumber == "1")
                        {
                            result.CodeDescription = mensajeVentaFinalizada;
                            ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                            imprimeTicketsMM.PrintTicket(finalizarVentaRequest.FolioVenta, false);
                            scope.Complete();
                        }
                        else
                        {
                            result.CodeDescription = respuesta.CodeDescription;
                        }
                    }

                    // TIPO DE VENTA MAYORISTA CONSIDERANDO TARJETAS DE REGALO
                    else if (result.CodeNumber.Equals("332") && finalizarVentaRequest.TipoCabeceraVenta == "2")
                    {
                        var respuesta = this.PagoVentaCreditoMayorista(finalizarVentaRequest);
                        if (respuesta.CodeNumber == "1")
                        {
                            // Se procesan las tarjetas de regalo en caso de aplicar
                            OperationResponse operationResponse = this.ActivarTarjetaRegalo(finalizarVentaRequest);
                            if (operationResponse.CodeNumber == "1")
                            {
                                result.CodeDescription = mensajeVentaFinalizada;
                                ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                                imprimeTicketsMM.PrintTicket(finalizarVentaRequest.FolioVenta, false);
                                scope.Complete();
                            }
                            else
                            {
                                result.CodeDescription = respuesta.CodeDescription;
                            }
                        }
                        else
                        {
                            result.CodeDescription = respuesta.CodeDescription;
                        }
                    }

                    // TIPO DE VENTA EMPLEADO CONSIDERANDO TARJETAS DE REGALO
                    else if (result.CodeNumber.Equals("332") && finalizarVentaRequest.TipoCabeceraVenta == "4")
                    {
                        OperationResponse respuesta = this.ActivarTarjetaRegalo(finalizarVentaRequest);
                        if (respuesta.CodeNumber == "1")
                        {
                            result.CodeDescription = mensajeVentaFinalizada;
                            ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                            imprimeTicketsMM.PrintTicket(finalizarVentaRequest.FolioVenta, false);
                            scope.Complete();
                        }
                        else
                        {
                            result.CodeDescription = respuesta.CodeDescription;
                        }
                    }

                    // TIPO DE VENTA TIEMPO AIRE
                    else if (result.CodeNumber.Equals("332") && finalizarVentaRequest.TipoCabeceraVenta == "5")
                    {
                        var respuesta = this.TiempoAire(finalizarVentaRequest);
                        if (respuesta.CodeNumber == "1")
                        {
                            ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                            imprimeTicketsMM.PrintTicket(finalizarVentaRequest.FolioVenta, false);
                            scope.Complete();
                        }
                        else
                        {
                            result.CodeNumber = respuesta.CodeNumber;
                            result.CodeDescription = respuesta.CodeDescription;
                        }
                    }

                    // TIPO DE VENTA PAGO DE SERVICIOS
                    else if (result.CodeNumber.Equals("332") && finalizarVentaRequest.TipoCabeceraVenta == "6")
                    {
                        var respuesta = this.PagoServicios(finalizarVentaRequest);
                        if (respuesta.CodeNumber == "1")
                        {
                            ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                            imprimeTicketsMM.PrintTicket(finalizarVentaRequest.FolioVenta, false);
                            scope.Complete();
                        }
                        else
                        {
                            result.CodeNumber = respuesta.CodeNumber;
                            result.CodeDescription = respuesta.CodeDescription;
                        }
                    }

                    // SE TRATA DE UNA DEVOLUCIÓN CONSIDERANDO TARJETAS DE REGALO
                    else if (result.CodeNumber.Equals("399"))
                    {
                        OperationResponse respuesta = this.ActivarTarjetaRegalo(finalizarVentaRequest);
                        if (respuesta.CodeNumber == "1")
                        {
                            result.CodeDescription = mensajeVentaFinalizada;
                            ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                            imprimeTicketsMM.PrintTicket(finalizarVentaRequest.FolioVenta, false);
                            scope.Complete();
                        }
                        else
                        {
                            result.CodeDescription = respuesta.CodeDescription;
                        }
                    }
                }
                return result;
            }));
        }