Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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;
                    }
                }
            }));
        }
Exemple #3
0
        /// <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);
        }