예제 #1
0
        /// <summary>
        /// Abonar a un apartado
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ResponseBussiness <OperationResponse> Abonar(AbonoApartadoRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                TransApartadoResponse response = new TransApartadoResponse();
                OperationResponse operationResponse = new OperationResponse();
                //OperationResponse operationResponseSW = new OperationResponse();
                //AdministracionTipoCambio administracionTipoCambio = new AdministracionTipoCambio();

                using (TransactionScope scope = new TransactionScope())
                {
                    response = new ApartadoAbonoRepository().Abonar(this.token.CodeStore, this.token.CodeBox, this.token.CodeEmployee, request, "APARTADO");
                    //operationResponseSW = administracionTipoCambio.GetSaleExternalService(request.FormasPagoUtilizadas, request.FolioApartado, this.token.CodeEmployee);
                    if (((response.CodeNumber == "349") || (response.CodeNumber == "350"))) //&& operationResponseSW.CodeNumber == "000")
                    {
                        scope.Complete();
                    }
                    //else
                    //{
                    //    operationResponse.CodeDescription = operationResponseSW.CodeDescription;
                    //    operationResponse.CodeNumber = operationResponseSW.CodeNumber;
                    //}
                }

                ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                imprimeTicketsMM.PrintTicket(response.FolioVenta, false);
                operationResponse.CodeDescription = response.CodeDescription;
                operationResponse.CodeNumber = response.CodeNumber;
                operationResponse.informacionAsociadaRetiroEfectivo = response.informacionAsociadaRetiroEfectivo;
                return operationResponse;
            }));
        }
예제 #2
0
        private TransApartadoResponse FinalizarApartadoInternal(FinalizarApartadoRequest request)
        {
            TransApartadoResponse    result             = new TransApartadoResponse();
            AdministracionTipoCambio administracionTipo = new AdministracionTipoCambio();
            //Obtenemos el folio apartado y el numero de empleado para usarlos en el metodo externo sale
            string folioVenta     = request.FolioApartado;
            int    codigoEmpleado = token.CodeEmployee;

            using (TransactionScope scope = new TransactionScope())
            {
                result = repository.FinalizarApartado(token.CodeStore, token.CodeBox, this.token.CodeEmployee, request);

                //Invocamos el servicio para obtener la respuesta del servicio de sale, si el numero de codigo es el indicado completa la transaccion
                //en caso de que el codigo no sea el indicado enviara el codigo de error y la descripcion
                //var resultSale = administracionTipo.GetSaleExternalService(request.FormasPagoUtilizadas, folioVenta, codigoEmpleado);
                if (result.CodeNumber.Equals("342")) //&& resultSale.CodeNumber.Equals("000"))
                {
                    var respuesta = this.ActivarTarjetaRegalo(request);
                    if (respuesta.CodeNumber == "1")
                    {
                        scope.Complete();
                    }
                }
            }
            return(result);
        }
예제 #3
0
        /// <summary>
        /// Cancelar apartado
        /// </summary>
        /// <param name="folioApartado">folio de apartado</param>
        /// <param name="codigoCaja">código de la caja</param>
        /// <param name="codigoTienda">código de la tienda</param>
        /// <returns>Respuesta de la operación</returns>
        public TransApartadoResponse CancelarApartado(string folioApartado, int codigoCaja, int codigoTienda, int codigoEmpleado)
        {
            TransApartadoResponse transApartadoResponse = new TransApartadoResponse();
            var parameters = new Dictionary <string, object>();

            parameters.Add("@FolioApartado", folioApartado);
            parameters.Add("@CodigoCaja", codigoCaja);
            parameters.Add("@CodigoTienda", codigoTienda);
            parameters.Add("@CodigoEmpleado", codigoEmpleado);
            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
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@FolioVenta", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@FolioNotaCredito", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000
            });
            var result = data.ExecuteProcedure("[dbo].[sp_vanti_server_CancelarApartado]", parameters, parametersOut);

            transApartadoResponse.CodeNumber               = result["@CodigoResultado"].ToString();
            transApartadoResponse.CodeDescription          = result["@MensajeResultado"].ToString();
            transApartadoResponse.FolioVenta               = result["@FolioVenta"].ToString();
            transApartadoResponse.FolioNotaCreditoGenerada = result["@FolioNotaCredito"].ToString();
            return(transApartadoResponse);
        }
예제 #4
0
        private TransApartadoResponse AnularTransaccionApartado(AnularTotalizarApartadoRequest anularTotalizarVentaRequest, TokenDto token)
        {
            TransApartadoResponse operationResponse = new TransApartadoResponse();
            var parameters = new Dictionary <string, object>();

            parameters.Add("@FolioApartado", anularTotalizarVentaRequest.FolioApartado);
            parameters.Add("@CodigoTienda", token.CodeStore);
            parameters.Add("@CodigoCaja", token.CodeBox);
            parameters.Add("@CodigoRazon", anularTotalizarVentaRequest.CodigoRazon);
            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
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@FolioVenta", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000
            });

            var result = this.data.ExecuteProcedure("[dbo].[sp_vanti_AnularTransaccionApartado]", parameters, parametersOut);

            operationResponse.CodeNumber      = result["@CodigoResultado"].ToString();
            operationResponse.CodeDescription = result["@MensajeResultado"].ToString();
            operationResponse.FolioVenta      = result["@FolioVenta"].ToString();

            return(operationResponse);
        }
예제 #5
0
        /// <summary>
        /// Abonar un apartado
        /// </summary>
        /// <param name="codeStore">Código de la tienda</param>
        /// <param name="codeBox">Código de la caja</param>
        /// <param name="codeEmployee">Código del empleado</param>
        /// <param name="abonoApartadoRequest">Petición del abono</param>
        /// <param name="clasificacionVenta">Clasificación de la venta realizada</param>
        /// <returns></returns>
        public TransApartadoResponse Abonar(int codeStore, int codeBox, int codeEmployee, AbonoApartadoRequest abonoApartadoRequest, string clasificacionVenta)
        {
            TransApartadoResponse operationResponse = new TransApartadoResponse();

            new FormasPagoRepository().AsociarFormasPago(codeStore, codeBox, codeEmployee, abonoApartadoRequest.FolioApartado, abonoApartadoRequest.FormasPagoUtilizadas, clasificacionVenta);
            operationResponse = this.AbonarApartadoInternal(codeStore, codeBox, codeEmployee, abonoApartadoRequest, 0);
            return(operationResponse);
        }
예제 #6
0
        /// <summary>
        /// Anular Venta
        /// </summary>
        /// <param name="anularTotalizarApartadoRequest">Parametro con el folio de la venta</param>
        /// <param name="token">Token del usuario activo</param>
        /// <returns></returns>
        public TransApartadoResponse AnularApartado(AnularTotalizarApartadoRequest anularTotalizarApartadoRequest, TokenDto token)
        {
            TransApartadoResponse operationResponse = new TransApartadoResponse();

            using (TransactionScope scope = new TransactionScope())
            {
                operationResponse = this.AnularTransaccionApartado(anularTotalizarApartadoRequest, token);
                // TODO: Implementar lógica TransactionLogRepository
                //new TransactionLogRepository<AnularTotalizarVentaRequest>(token).Add(anularTotalizarVentaRequest, anularTotalizarVentaRequest.FolioVenta);
                scope.Complete();
            }
            return(operationResponse);
        }
예제 #7
0
        /// <summary>
        /// Finalizar Apartado
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ResponseBussiness <OperationResponse> FinalizarApartado(FinalizarApartadoRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                TransApartadoResponse response = FinalizarApartadoInternal(request);
                OperationResponse operationResponse = new OperationResponse();

                ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                imprimeTicketsMM.PrintTicket(response.FolioVenta, false);

                operationResponse.CodeNumber = response.CodeNumber;
                operationResponse.CodeDescription = response.CodeDescription;
                operationResponse.informacionAsociadaRetiroEfectivo = response.informacionAsociadaRetiroEfectivo;
                return operationResponse;
            }));
        }
예제 #8
0
        /// <summary>
        /// Anular el apartado despues de totalizar
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ResponseBussiness <OperationResponse> AnularTotalizarApartado(AnularTotalizarApartadoRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                TransApartadoResponse transApartadoResponse = repository.AnularApartado(request, this.token);
                OperationResponse operationResponse = new OperationResponse();

                operationResponse.CodeNumber = transApartadoResponse.CodeNumber;
                operationResponse.CodeDescription = transApartadoResponse.CodeDescription;

                ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
                imprimeTicketsMM.PrintTicket(transApartadoResponse.FolioVenta, false);

                return operationResponse;
            }));
        }
예제 #9
0
        /// <summary>
        /// Finalizar apartado
        /// </summary>
        /// <param name="codeStore"></param>
        /// <param name="codeBox"></param>
        /// <param name="codeEmployee"></param>
        /// <param name="request"></param>
        ///
        /// <returns></returns>
        public TransApartadoResponse FinalizarApartado(int codeStore, int codeBox, int codeEmployee, FinalizarApartadoRequest request)
        {
            TransApartadoResponse operationResponse = new TransApartadoResponse();

            new FormasPagoRepository().AsociarFormasPago(codeStore, codeBox, codeEmployee, request.FolioApartado, request.FormasPagoUtilizadas, "APARTADO");
            operationResponse = this.FinalizarTransaccionApartado(codeStore, codeBox, request);
            // Si la venta fue procesada exitosamente se almacena el log de transacción
            if (operationResponse.CodeNumber.Equals("342"))
            {
                // TODO: Falta llenar el objeto transacción
                //TransactionLogRepository<Transaccion> transactionLogRepository = new TransactionLogRepository<Transaccion>(new TokenDto(codeStore, codeBox));
                //Transaccion ventaFinalizada = new Transaccion();
                if (request.LineasConDigitoVerificadorIncorrecto != null)
                {
                    this.RegistrarArticulosConIncidenciaDigitoVerificador(request.FolioApartado, codeStore, codeBox, request.LineasConDigitoVerificadorIncorrecto);
                }
                //transactionLogRepository.Add(ventaFinalizada, codeStore + "." + codeBox + "." + finalizarVentaRequest.FolioVenta);
            }
            return(operationResponse);
        }
예제 #10
0
 /// <summary>
 /// Cancelar apartado
 /// </summary>
 /// <param name="folioApartado"></param>
 /// <returns>Respuesta</returns>
 public ResponseBussiness <OperationResponse> CancelarApartado(string folioApartado)
 {
     return(tryCatch.SafeExecutor(() =>
     {
         return tryCatch.SafeExecutor(() =>
         {
             TransApartadoResponse transApartadoResponse = repository.CancelarApartado(folioApartado, this.token.CodeBox, this.token.CodeStore, this.token.CodeEmployee);
             OperationResponse operationResponse = new OperationResponse();
             // TODO: Invocar servicio de Lealtad
             // Imprimir Cancelación de Apartado y Nota de Crédito en caso de Aplicar
             ImprimeTicketsMM imprimeTicketsMM = new ImprimeTicketsMM(token);
             imprimeTicketsMM.PrintTicket(transApartadoResponse.FolioVenta, false);
             PrintTicketEmisionNotaCredito printTicketEmisionNotaCredito = new PrintTicketEmisionNotaCredito(token);
             OperationResponse operation = printTicketEmisionNotaCredito.PrintNow(transApartadoResponse.FolioNotaCreditoGenerada);
             // Regresar el resultado
             operationResponse.CodeDescription = transApartadoResponse.CodeDescription;
             operationResponse.CodeNumber = transApartadoResponse.CodeNumber;
             return operationResponse;
         });
     }));
 }
예제 #11
0
        private TransApartadoResponse AbonarApartadoInternal(int codeStore, int codeBox, int codeEmployee, AbonoApartadoRequest abonoApartadoRequest, decimal abonoPagado)
        {
            TransApartadoResponse             operationResponse = new TransApartadoResponse();
            InformacionAsociadaRetiroEfectivo informacionAsociadaRetiroEfectivo = new InformacionAsociadaRetiroEfectivo();
            var parameters = new Dictionary <string, object>();

            parameters.Add("@FolioApartado", abonoApartadoRequest.FolioApartado);
            parameters.Add("@CodigoCaja", codeBox);
            parameters.Add("@CodigoTienda", codeStore);
            parameters.Add("@CodigoEmpleado", codeEmployee);
            parameters.Add("@ImportePagado", abonoApartadoRequest.ImportePagado);
            parameters.Add("@ImporteCambio", abonoApartadoRequest.ImporteCambio);
            parameters.Add("@AbonoPagado", abonoPagado);
            parameters.Add("@Saldo", abonoApartadoRequest.Saldo);
            if (abonoApartadoRequest.ApartadoLiquidado)
            {
                parameters.Add("@EsLiquidacion", 1);
            }
            else
            {
                parameters.Add("@EsLiquidacion", 0);
            }
            List <System.Data.SqlClient.SqlParameter> parametersOut = new List <System.Data.SqlClient.SqlParameter>();

            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@MensajeEfectivoMaximo", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@EfectivoMaximoCaja", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@DotacionInicial", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@MontoActualCaja", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@MostrarAlertaRetiroEfectivo", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Bit
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@PermitirIgnorar", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Bit
            });
            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
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@FolioVenta", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000
            });

            var result = data.ExecuteProcedure("[dbo].[sp_vanti_server_AbonarApartado]", parameters, parametersOut);

            // Información referente a retiro de Efectivo
            informacionAsociadaRetiroEfectivo.MensajeEfectivoMaximo               = result["@MensajeEfectivoMaximo"].ToString();
            informacionAsociadaRetiroEfectivo.EfectivoMaximoPermitidoCaja         = Convert.ToDecimal(result["@EfectivoMaximoCaja"]);
            informacionAsociadaRetiroEfectivo.DotacionInicialCaja                 = Convert.ToDecimal(result["@DotacionInicial"]);
            informacionAsociadaRetiroEfectivo.EfectivoActualCaja                  = Convert.ToDecimal(result["@MontoActualCaja"]);
            informacionAsociadaRetiroEfectivo.MostrarAlertaRetiroEfectivo         = Convert.ToBoolean(result["@MostrarAlertaRetiroEfectivo"]);
            informacionAsociadaRetiroEfectivo.PermitirIgnorarAlertaRetiroEfectivo = Convert.ToBoolean(result["@PermitirIgnorar"]);
            operationResponse.informacionAsociadaRetiroEfectivo = informacionAsociadaRetiroEfectivo;
            // Información referente a estatus de la operación
            operationResponse.CodeNumber      = result["@CodigoResultado"].ToString();
            operationResponse.CodeDescription = result["@MensajeResultado"].ToString();
            operationResponse.FolioVenta      = result["@FolioVenta"].ToString();
            return(operationResponse);
        }
예제 #12
0
        private TransApartadoResponse FinalizarTransaccionApartado(int codeStore, int codeBox, FinalizarApartadoRequest finalizarApartadoRequest)
        {
            TransApartadoResponse             operationResponse = new TransApartadoResponse();
            InformacionAsociadaRetiroEfectivo informacionAsociadaRetiroEfectivo = new InformacionAsociadaRetiroEfectivo();
            var parameters = new Dictionary <string, object>();

            parameters.Add("@FolioApartado", finalizarApartadoRequest.FolioApartado);
            parameters.Add("@CodigoCaja", codeBox);
            parameters.Add("@CodigoTienda", codeStore);
            parameters.Add("@TotalPagosRealizados", finalizarApartadoRequest.FormasPagoUtilizadas.Length);
            parameters.Add("@DiasVencimiento", finalizarApartadoRequest.DiasVencimiento);
            parameters.Add("@ImportePago", finalizarApartadoRequest.ImportePagado);
            parameters.Add("@Saldo", finalizarApartadoRequest.Saldo);
            List <System.Data.SqlClient.SqlParameter> parametersOut = new List <System.Data.SqlClient.SqlParameter>();

            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@MensajeEfectivoMaximo", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@EfectivoMaximoCaja", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@DotacionInicial", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@MontoActualCaja", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Decimal, Scale = 2
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@MostrarAlertaRetiroEfectivo", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Bit
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@PermitirIgnorar", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Bit
            });
            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
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@FolioVenta", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000
            });

            var result = data.ExecuteProcedure("[sp_vanti_FinalizarTransaccionApartado]", parameters, parametersOut);

            // Información referente a retiro de Efectivo
            informacionAsociadaRetiroEfectivo.MensajeEfectivoMaximo               = result["@MensajeEfectivoMaximo"].ToString();
            informacionAsociadaRetiroEfectivo.EfectivoMaximoPermitidoCaja         = Convert.ToDecimal(result["@EfectivoMaximoCaja"]);
            informacionAsociadaRetiroEfectivo.DotacionInicialCaja                 = Convert.ToDecimal(result["@DotacionInicial"]);
            informacionAsociadaRetiroEfectivo.EfectivoActualCaja                  = Convert.ToDecimal(result["@MontoActualCaja"]);
            informacionAsociadaRetiroEfectivo.MostrarAlertaRetiroEfectivo         = Convert.ToBoolean(result["@MostrarAlertaRetiroEfectivo"]);
            informacionAsociadaRetiroEfectivo.PermitirIgnorarAlertaRetiroEfectivo = Convert.ToBoolean(result["@PermitirIgnorar"]);
            operationResponse.informacionAsociadaRetiroEfectivo = informacionAsociadaRetiroEfectivo;
            // Información referente a estatus de la operación
            operationResponse.CodeNumber      = result["@CodigoResultado"].ToString();
            operationResponse.CodeDescription = result["@MensajeResultado"].ToString();
            operationResponse.FolioVenta      = result["@FolioVenta"].ToString();
            return(operationResponse);
        }