/// <summary> /// Metodo para obtener tarjetas bancarias Melody Milano /// </summary> /// <param name="request">Movimiento tarjeta bancaria</param> /// <returns>Respuesta de la operación</returns> public ResponseBussiness <PagoBancarioResponse> ObtenerTarjetaBancariaMelody(ProcesarMovimientoTarjetaBancariaRequest request) { return(tryCatch.SafeExecutor(() => { PagoBancarioResponse respuesta = new PagoBancarioResponse(); using (TransactionScope scope = new TransactionScope()) { TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token); var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore); if (funcionesCaja != null) { respuesta = tarjeta.ObtenerTarjeta(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada); if (respuesta.CodeNumber == 0) { scope.Complete(); } } else { respuesta.CodeNumber = 103; respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja"; } } return respuesta; })); }
/// <summary> /// Metodo para procesar tarjetas bancarias con retiro de efectivo /// </summary> /// <param name="request">Movimiento tarjeta bancaria</param> /// <returns>Respuesta de la operación</returns> public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCashBackAdvance(ProcesarMovimientoTarjetaBancariaRequest request) { return(tryCatch.SafeExecutor(() => { PagoBancarioResponse respuesta = new PagoBancarioResponse(); using (TransactionScope scope = new TransactionScope()) { TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token); var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore); if (funcionesCaja != null) { respuesta = tarjeta.CashBackAdvance(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Retiro.FolioOperacionAsociada, request.Retiro.ImporteCashBack, 1); if (respuesta.CodeNumber == 0) { var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaRetiro(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request); scope.Complete(); } } else { respuesta.CodeNumber = 103; respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja"; } } return respuesta; })); }
/// <summary> /// Metodo para procesar tarjetas bancarias con pago y retiro de efectivo /// </summary> /// <param name="request">Movimiento tarjeta bancaria</param> /// <returns>Respuesta de la operación</returns> public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCashBack(ProcesarMovimientoTarjetaBancariaRequest request) { return(tryCatch.SafeExecutor(() => { PagoBancarioResponse respuesta = new PagoBancarioResponse(); using (TransactionScope scope = new TransactionScope()) { TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token); var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore); if (funcionesCaja != null) { // Se procesan las promociones por venta foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados) { OperationResponse response = new OperationResponse(); response = repository.PersistirPromocionesVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.ImporteDescuento , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado); } // Se procesan las promociones por línea de venta foreach (var item in request.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados) { OperationResponse response = new OperationResponse(); response = repository.PersistirPromocionesLineaVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado); } if (request.Retiro.Retirar) { respuesta = tarjeta.CobroConCashBack(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, request.Retiro.ImporteCashBack, request.Venta.SecuenciaFormaPagoImporte); if (respuesta.CodeNumber == 0) { request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta; var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request); var movimientoCashBack = repository.ProcesarMovimientoTarjetaBancariaRetiro(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request); scope.Complete(); } } else { respuesta = tarjeta.CobroConCashBack(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, 0, request.Venta.SecuenciaFormaPagoImporte); if (respuesta.CodeNumber == 0) { request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta; var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request); scope.Complete(); } } } else { respuesta.CodeNumber = 103; respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja"; } } return respuesta; })); }
/// <summary> /// Metodo para cancelar la operación bancaria de cobro /// </summary> /// <param name="request">Movimiento tarjeta bancaria</param> /// <returns>Respuesta de la operación</returns> public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCancelar(ProcesarMovimientoTarjetaBancariaRequest request) { return(tryCatch.SafeExecutor(() => { PagoBancarioResponse respuesta = new PagoBancarioResponse(); TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token); var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore); if (funcionesCaja != null) { respuesta = tarjeta.Cancelar(funcionesCaja.UrlLecturaBancaria); } else { respuesta.CodeNumber = 103; respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja"; } return respuesta; })); }
/// <summary> /// Metodo para ejecutar una carga de llaves /// </summary> /// <returns>Respuesta de la operación</returns> public ResponseBussiness <OperationResponse> CargarLlaves() { return(tryCatch.SafeExecutor(() => { OperationResponse respuesta = new OperationResponse(); TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token); var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore); if (funcionesCaja != null) { respuesta = tarjeta.CargarLlaves(funcionesCaja.UrlLecturaBancaria); } else { respuesta.CodeNumber = "103"; respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja"; } return respuesta; })); }
/// <summary> /// Metodo para procesar tarjetas bancarias VISA/MASTERCARD /// </summary> /// <param name="request">Movimiento tarjeta bancaria</param> /// <returns>Respuesta de la operación</returns> public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaVisaMaster(ProcesarMovimientoTarjetaBancariaRequest request) { try { //return tryCatch.SafeExecutor(() => //{ PagoBancarioResponse respuesta = new PagoBancarioResponse(); using (TransactionScope scope = new TransactionScope()) { TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token); var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore); s.LogEntry(this.token.ToString(), 3); s.LogEntry(token.CodeBox.ToString(), 3); s.LogEntry(token.CodeStore.ToString(), 3); s.LogEntry(" vaciado token", 3); if (funcionesCaja != null) { s.LogEntry(" Entro a funciones caja diferente de nulo", 3); //s.LogEntry(" DescuentoPromocionesAplicados: " + request.Venta.ToString(), 1); if (request == null) { s.LogEntry(" request null", 3); } else { s.LogEntry(" request no null", 3); } if (request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados == null) { s.LogEntry(" Las promiciones son nulas", 3); } else { s.LogEntry(" Las promiciones son NO es nulo", 3); s.LogEntry($" TTTTT Las promiciones son NO es nulo {request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length}", 3); } if (request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length > 0) { s.LogEntry(" Las promiciones son cero", 3); } else { s.LogEntry($"es mayor a 0: {request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length}", 1); } // Se procesan las promociones por venta foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados) { OperationResponse response = new OperationResponse(); response = repository.PersistirPromocionesVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.ImporteDescuento , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado); } // Se procesan las promociones por línea de venta foreach (var item in request.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados) { OperationResponse response = new OperationResponse(); response = repository.PersistirPromocionesLineaVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado); } s.LogEntry(" antes de tarjeta.CobroVisaMasterCard", 3); s.LogEntry($" funcionesCaja.UrlLecturaBancaria: { funcionesCaja.UrlLecturaBancaria}", 3); s.LogEntry($" token.CodeStore: { token.CodeStore}", 3); s.LogEntry($" request.Venta.FolioOperacionAsociada: { request.Venta.FolioOperacionAsociada}", 3); s.LogEntry($" request.Venta.MesesFinanciamiento: { request.Venta.MesesFinanciamiento}", 3); s.LogEntry($" request.Venta.MesesParcialidades: { request.Venta.MesesParcialidades}", 3); s.LogEntry($" request.Venta.CodigoPromocion: {request.Venta.CodigoPromocion}", 3); s.LogEntry($" request.Venta.ImporteVentaTotal: {request.Venta.CodigoPromocion}", 3); s.LogEntry($" request.Venta.SecuenciaFormaPagoImporte: {request.Venta.SecuenciaFormaPagoImporte}", 3); respuesta = tarjeta.CobroVisaMasterCard(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, request.Venta.SecuenciaFormaPagoImporte); s.LogEntry(" despues de tarjeta.CobroVisaMasterCard", 3); if (!respuesta.SePuedePagarConPuntos && !respuesta.SePuedeRetirar) { if (respuesta.CodeNumber == 0) { request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta; var repuestaLocal = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request); scope.Complete(); } } } else { respuesta.CodeNumber = 103; respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja"; } } s.LogEntry("Sin errores", 1); return(respuesta); //}); } catch (Exception ex) { s.LogEntry(ex.Message, 3); s.LogEntry(ex.InnerException.Message, 3); return(null); } }