using Dapper; using SIGCM.Domain.Interfaces; using SIGCM.Infrastructure.Data; namespace SIGCM.Infrastructure.Repositories; public class ReportRepository : IReportRepository { private readonly IDbConnectionFactory _db; public ReportRepository(IDbConnectionFactory db) { _db = db; } public async Task> GetInterCompanySettlementAsync(DateTime from, DateTime to) { using var conn = _db.CreateConnection(); var sql = @" SELECT b.Name as BillingCompany, s.Name as ServiceCompany, COUNT(*) as TransactionCount, SUM(oi.SubTotal) as TotalAmount FROM OrderItems oi JOIN Orders o ON oi.OrderId = o.Id JOIN Companies b ON oi.BillingCompanyId = b.Id JOIN Companies s ON oi.ServiceCompanyId = s.Id WHERE oi.BillingCompanyId <> oi.ServiceCompanyId AND o.PaymentStatus = 'Paid' -- Solo liquidamos dinero efectivamente cobrado AND o.CreatedAt >= @From AND o.CreatedAt <= @To GROUP BY b.Name, s.Name ORDER BY b.Name, s.Name"; return await conn.QueryAsync(sql, new { From = from, To = to }); } }