using Lada.Framework.DTO;
using Ladaer.BackEnd.Infrastructures.DTO.Results.Finance;

namespace Ladaer.BackEnd.Infrastructures.Services.Finances
{
    /// <summary>
    /// Service đồng bộ hóa đơn VAT từ API Tổng cục Thuế
    /// </summary>
    public interface IVatInvoiceSyncService
    {
        /// <summary>
        /// Đồng bộ hóa đơn từ API Tổng cục Thuế cho một khoảng thời gian
        /// </summary>
        /// <param name="fromDate">Ngày bắt đầu</param>
        /// <param name="toDate">Ngày kết thúc</param>
        /// <param name="syncType">Loại đồng bộ: Manual hoặc Auto</param>
        /// <param name="userId">User ID nếu là manual sync</param>
        /// <param name="invoiceDirection">Chiều hóa đơn: 1=Bán ra, 2=Mua vào</param>
        /// <returns></returns>
        Task<BaseResult> SyncInvoicesFromAPI(DateTimeOffset fromDate, DateTimeOffset toDate, string syncType = "Manual", int? userId = null, int invoiceDirection = 1);

        /// <summary>
        /// Đồng bộ hóa đơn bán ra của ngày hôm qua (dùng cho Hangfire job)
        /// </summary>
        Task<BaseResult> SyncYesterdayInvoices();

        /// <summary>
        /// Đồng bộ hóa đơn mua vào của ngày hôm qua (dùng cho Hangfire job)
        /// </summary>
        Task<BaseResult> SyncYesterdayPurchaseInvoices();

        /// <summary>
        /// Lấy thông tin đồng bộ gần nhất
        /// </summary>
        Task<VatInvoiceSyncInfo> GetLastSyncInfo();
    }
}
