private ConsultaTramaImpresionResult ObtenerTramaImpresionInternal(ConsultaValeFinlagRequest consultaValeFinlagRequest) { ConsultaTramaImpresionResult consultaValeFinlagResult = new ConsultaTramaImpresionResult(); DataTable tablaRespuestaProxy = proxy.TramaImpresion(consultaValeFinlagRequest.FolioVale, infoService.UserName, infoService.Password); consultaValeFinlagResult = ConvertTramaImpresion(tablaRespuestaProxy).FirstOrDefault(); return(consultaValeFinlagResult); }
/// <summary> /// Método de la capa business para aplicar el vale de finlag /// </summary> /// <param name="aplicaValeRequest"></param> /// <returns></returns> public ResponseBussiness <OperationResponse> ProcesarAplicarValeFinlag(AplicaValeRequest aplicaValeRequest) { return(tryCatch.SafeExecutor(() => { using (TransactionScope scope = new TransactionScope()) { OperationResponse operationResponse = new OperationResponse(); // Se procesa en el servicio externo de Finlag para procesar la venta var respuestaWS = AplicarValeInternal(aplicaValeRequest); // Se procesa el movimiento Pago localmente if (respuestaWS.NumeroCodigo == 100) { // Si resultado OK se solicita y persiste la trama de impresión ConsultaValeFinlagRequest consultaValeFinlagRequest = new ConsultaValeFinlagRequest(); consultaValeFinlagRequest.FolioVale = aplicaValeRequest.FolioVale; ConsultaTramaImpresionResult consultaTramaImpresionResult = this.ObtenerTramaImpresion(consultaValeFinlagRequest); finlagRepository.ProcesarTramaImpresion(token.CodeStore, token.CodeBox, token.CodeEmployee, aplicaValeRequest.FolioOperacionAsociada, consultaTramaImpresionResult); // -------------- Si resultado OK se procesa el pago Finlag en base de datos localmente // Se procesan las promociones por venta foreach (var item in aplicaValeRequest.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados) { OperationResponse response = new OperationResponse(); response = paymentProcessingRepository.PersistirPromocionesVenta(aplicaValeRequest.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 aplicaValeRequest.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados) { OperationResponse response = new OperationResponse(); response = paymentProcessingRepository.PersistirPromocionesLineaVenta(aplicaValeRequest.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado); } // Se persiste la información del cobro operationResponse = finlagRepository.ProcesarMovimientoAplicarVale(token.CodeStore, token.CodeBox, token.CodeEmployee, aplicaValeRequest); scope.Complete(); return operationResponse; } else { // Si resultado ERROR se regresa operationResponse.CodeNumber = respuestaWS.NumeroCodigo.ToString(); operationResponse.CodeDescription = respuestaWS.DescripcionCodigo; return operationResponse; } } })); }
/// <summary> /// Procesar movimiento con un vale de Finlag /// </summary> /// <param name="codigoTienda">Código de tienda</param> /// <param name="codigoCaja">Código de caja</param> /// <param name="codigoEmpleado">Código de empleado</param> /// <param name="folioOperacionAsociada">Folio de la operación asociada</param> /// <param name="consultaTramaImpresionResult">Objeto petición de procesamiento de trama impresión Finlag</param> /// <returns>Resultado de la operacion</returns> public OperationResponse ProcesarTramaImpresion(int codigoTienda, int codigoCaja, int codigoEmpleado, String folioOperacionAsociada, ConsultaTramaImpresionResult consultaTramaImpresionResult) { OperationResponse operationResponse = new OperationResponse(); var parameters = new Dictionary <string, object>(); parameters.Add("@CodigoTienda", codigoTienda); parameters.Add("@CodigoCaja", codigoCaja); parameters.Add("@CodigoEmpleado", codigoEmpleado); parameters.Add("@FolioOperacion", folioOperacionAsociada); // Parametros Finlag parameters.Add("@Calle", consultaTramaImpresionResult.Calle); parameters.Add("@Colonia", consultaTramaImpresionResult.Colonia); parameters.Add("@CP", consultaTramaImpresionResult.CP); parameters.Add("@EfectivoPuntos", consultaTramaImpresionResult.EfectivoPuntos); parameters.Add("@Estado", consultaTramaImpresionResult.Estado); parameters.Add("@FechaPrimerPago", consultaTramaImpresionResult.FechaPrimerPago); parameters.Add("@FolioVale", consultaTramaImpresionResult.FolioVale); parameters.Add("@IdCajaAplica", consultaTramaImpresionResult.IdCajaAplica); parameters.Add("@IdDistribuidora", consultaTramaImpresionResult.IdDistribuidora); parameters.Add("@MontoAplicado", consultaTramaImpresionResult.MontoAplicado); parameters.Add("@Municipio", consultaTramaImpresionResult.Municipio); parameters.Add("@NombreCompleto", consultaTramaImpresionResult.NombreCompleto); parameters.Add("@NumeroExt", consultaTramaImpresionResult.NumeroExt); parameters.Add("@Pagare", consultaTramaImpresionResult.Pagare); parameters.Add("@PagoQuincenal", consultaTramaImpresionResult.PagoQuincenal); parameters.Add("@PuntosUtilizados", consultaTramaImpresionResult.PuntosUtilizados); parameters.Add("@PuntoVenta", consultaTramaImpresionResult.PuntoVenta); parameters.Add("@Quincenas", consultaTramaImpresionResult.Quincenas); parameters.Add("@TiendaAplica", consultaTramaImpresionResult.TiendaAplica); parameters.Add("@TipoVenta", consultaTramaImpresionResult.TipoVenta); parameters.Add("@TotalPagar", consultaTramaImpresionResult.TotalPagar); // Parametros Finlag List <System.Data.SqlClient.SqlParameter> parametersOut = new List <System.Data.SqlClient.SqlParameter>(); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@CodigoResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Int }); parametersOut.Add(new System.Data.SqlClient.SqlParameter() { ParameterName = "@MensajeResultado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000 }); var result = data.ExecuteProcedure("[dbo].[sp_vanti_ProcesarTramaImpresionFinlag]", parameters, parametersOut); operationResponse.CodeNumber = result["@CodigoResultado"].ToString(); operationResponse.CodeDescription = result["@MensajeResultado"].ToString(); return(operationResponse); }