using Distribution.Models; namespace Distribution.Features.Expense; public record ExpensePaymentRequest( PaymentMethod Method, Guid? BankAccountId, Guid? ChequePageId); public record CreateExpenseRequest( Guid CategoryId, Guid? WarehouseId, decimal Amount, DateTime BillDate, DateTime? DueDate, DateTime? PeriodCovered, Guid? VendorId, string? Payee, string? BillRef, string? Description, /// Required when action = Pay. Ignored for Draft / Post. ExpensePaymentRequest? Payment); public record UpdateExpenseDraftRequest( Guid CategoryId, Guid? WarehouseId, decimal Amount, DateTime BillDate, DateTime? DueDate, DateTime? PeriodCovered, Guid? VendorId, string? Payee, string? BillRef, string? Description); public record VoidExpenseRequest(string? Reason); public record ExpenseAttachmentResponse( Guid Id, string OriginalFileName, string ContentType, long SizeBytes, DateTime CreatedAt); public record ExpenseResponse( Guid Id, Guid CategoryId, string CategoryName, Guid? ParentCategoryId, string? ParentCategoryName, Guid? WarehouseId, string? WarehouseName, decimal Amount, DateTime BillDate, DateTime? DueDate, DateTime? PeriodCovered, Guid? VendorId, string? VendorName, string? Payee, string? BillRef, string? Description, ExpenseStatus Status, PaymentMethod? Method, Guid? BankAccountId, Guid? ChequePageId, string? ChequeNo, DateTime? PaidAt, Guid RecordedByUserId, Guid? PostedByUserId, Guid? PaidByUserId, Guid? VoidedByUserId, string? VoidReason, Guid? RecurringTemplateId, List Attachments, DateTime CreatedAt); public record PagedExpensesResponse(List Items, int Page, int PageSize, int Total);