43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using Distribution.Models;
|
|
|
|
namespace Distribution.Features.PaymentReport;
|
|
|
|
public record PaymentReportFilter(DateTime From, DateTime To, Guid? RegionId);
|
|
|
|
public record PaymentSummary(
|
|
decimal Invoiced,
|
|
decimal Collected,
|
|
decimal CreditExtended,
|
|
decimal Outstanding,
|
|
decimal Overdue,
|
|
decimal? CollectionRatePct,
|
|
int PaymentCount);
|
|
|
|
public record MethodBreakdown(string Method, int Count, decimal Amount, decimal SharePct);
|
|
|
|
public record PaymentTrendPoint(string Period, decimal Cash, decimal Cheque, decimal Credit);
|
|
|
|
public record AgingBucket(string Bucket, int Invoices, decimal Balance);
|
|
|
|
public record StoreOutstanding(Guid StoreId, string StoreName, int Invoices, decimal Balance, decimal Overdue);
|
|
|
|
public record AccountCollection(Guid? AccountId, string AccountName, int Count, decimal Amount);
|
|
|
|
public record ChequePipeline(string Status, int Count, decimal Amount);
|
|
|
|
public record PaymentAnalyticsResponse(
|
|
DateTime From,
|
|
DateTime To,
|
|
PaymentSummary Summary,
|
|
List<MethodBreakdown> ByMethod,
|
|
List<PaymentTrendPoint> Trend,
|
|
List<AgingBucket> Aging,
|
|
List<StoreOutstanding> TopOutstanding,
|
|
List<AccountCollection> ByAccount,
|
|
List<ChequePipeline> Cheques);
|
|
|
|
// Repository row shapes
|
|
public record PaymentRow(PaymentMethod Method, decimal Amount, DateTime CollectedAt, Guid? AccountId, string? AccountName, string? ChequeStatus);
|
|
|
|
public record InvoiceBalanceRow(Guid StoreId, string StoreName, DateTime FinalizedAt, decimal Total, decimal Paid);
|