using GestionIntegral.Api.Dtos.Auditoria;
using GestionIntegral.Api.Dtos.Contables;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace GestionIntegral.Api.Services.Contables
{
    public interface IPagoDistribuidorService
    {
        Task<IEnumerable<PagoDistribuidorDto>> ObtenerTodosAsync(
            DateTime? fechaDesde, DateTime? fechaHasta,
            int? idDistribuidor, int? idEmpresa, string? tipoMovimiento);

        Task<PagoDistribuidorDto?> ObtenerPorIdAsync(int idPago);
        Task<(PagoDistribuidorDto? Pago, string? Error)> CrearAsync(CreatePagoDistribuidorDto createDto, int idUsuario);
        Task<(bool Exito, string? Error)> ActualizarAsync(int idPago, UpdatePagoDistribuidorDto updateDto, int idUsuario);
        Task<(bool Exito, string? Error)> EliminarAsync(int idPago, int idUsuario);
        Task<IEnumerable<PagoDistribuidorHistorialDto>> ObtenerHistorialAsync(
        DateTime? fechaDesde, DateTime? fechaHasta,
        int? idUsuarioModifico, string? tipoModificacion,
        int? idPagoAfectado);
    }
}