using System; namespace MMDAL.DTO.MMReports { // Small, shared row shapes reused across the Procurement Overview dashboard's four Phase 1 // tiles (Procurement Spend Overview, PR to PO Tracker, PO Monitoring, Spend Analysis) -- // grouped in one file since each is a handful of properties with no independent lifecycle. public class MonthlySpendTrendDTO { public int Year { get; set; } public int Month { get; set; } public decimal TotalValue { get; set; } public int DocumentCount { get; set; } } public class CategorySpendDTO { public int ItemCategoryId { get; set; } public string ItemCategoryCode { get; set; } = ""; public string ItemCategoryName { get; set; } = ""; public decimal TotalValue { get; set; } public decimal TotalQuantity { get; set; } } public class ContractTypeSplitDTO { public int ContractTypeId { get; set; } public string ContractTypeCode { get; set; } = ""; public string ContractTypeName { get; set; } = ""; public decimal TotalValue { get; set; } public int DocumentCount { get; set; } } public class FunnelStageDTO { public string StageName { get; set; } = ""; public int BizTransactionTypeId { get; set; } public int OpenCount { get; set; } public decimal OpenQuantity { get; set; } } public class PRAgingBucketDTO { public string BucketLabel { get; set; } = ""; public int Count { get; set; } public decimal PendingQuantity { get; set; } public decimal PendingValue { get; set; } } public class CycleTimeTrendDTO { public int Year { get; set; } public int Month { get; set; } public decimal AvgCycleDays { get; set; } public int DocumentCount { get; set; } } public class DeliveryStatusSplitDTO { // "OnTime" / "Early" / "Delayed" / "PendingReceipt" (PO has no GRN yet) public string StatusLabel { get; set; } = ""; public int Count { get; set; } public decimal TotalValue { get; set; } } }