namespace AdsBillingService.API.Application.DTOs;

/// <summary>
/// EN: Invoice DTO for read operations.
/// VI: DTO hóa đơn cho các thao tác đọc.
/// </summary>
public record InvoiceDto
{
    public Guid Id { get; init; }
    public Guid BillingAccountId { get; init; }
    public string InvoiceNumber { get; init; } = null!;
    public string Status { get; init; } = null!;
    public DateTime IssueDate { get; init; }
    public DateTime DueDate { get; init; }
    public decimal TotalAmount { get; init; }
    public List<InvoiceLineItemDto> LineItems { get; init; } = new();
}

/// <summary>
/// EN: Invoice line item DTO.
/// VI: DTO dòng chi tiết hóa đơn.
/// </summary>
public record InvoiceLineItemDto
{
    public Guid Id { get; init; }
    public Guid CampaignId { get; init; }
    public string Description { get; init; } = null!;
    public int Quantity { get; init; }
    public decimal UnitPrice { get; init; }
    public decimal TotalAmount { get; init; }
}
