using System.Threading.Tasks; using System.Collections.Generic; // Para IEnumerable using System.Data; using GestionIntegral.Api.Dtos.Contables; // Para SaldoGestionDto si lo usas aquí using GestionIntegral.Api.Models.Contables; // Para Saldo, SaldoAjusteHistorial namespace GestionIntegral.Api.Data.Repositories.Contables { public interface ISaldoRepository { // Necesitaremos un método para obtener los IDs de los distribuidores Task> GetAllDistribuidorIdsAsync(); // Método para crear el saldo inicial (podría devolver bool o int) Task CreateSaldoInicialAsync(string destino, int idDestino, int idEmpresa, IDbTransaction transaction); // Transacción es clave // Método para eliminar saldos por IdEmpresa (y opcionalmente por Destino/IdDestino) Task DeleteSaldosByEmpresaAsync(int idEmpresa, IDbTransaction transaction); // Transacción es clave // Método para modificar saldo (lo teníamos como privado antes, ahora en el repo) Task ModificarSaldoAsync(string destino, int idDestino, int idEmpresa, decimal montoAAgregar, IDbTransaction? transaction = null); Task CheckIfSaldosExistForEmpresaAsync(int id); // Para obtener la lista de saldos para la página de gestión Task> GetSaldosParaGestionAsync(string? destinoFilter, int? idDestinoFilter, int? idEmpresaFilter); // Para obtener un saldo específico (ya podría existir uno similar, o crearlo si es necesario) Task GetSaldoAsync(string destino, int idDestino, int idEmpresa, IDbTransaction? transaction = null); // Para registrar el historial de ajuste Task CreateSaldoAjusteHistorialAsync(SaldoAjusteHistorial historialEntry, IDbTransaction transaction); Task> GetHistorialAjustesAsync( DateTime? fechaDesde, DateTime? fechaHasta, int? idUsuarioModifico, string? destino, int? idDestino, int? idEmpresa); } }