using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CPRNIMS.Infrastructure.Dto.Inventory.Reports { public class RISReportDto { public string CompanyName { get; set; } = "Lloyd Laboratories Incorporated"; public string PreparedBy { get; set; } = "Finance Department"; public string ReportNo { get; set; } = string.Empty; public DateTime DateFrom { get; set; } public DateTime DateTo { get; set; } public RISReportSummary Summary { get; set; } = new(); public List Rows { get; set; } = []; public List ByDiscipline { get; set; } = []; public List TopRecipients { get; set; } = []; } public class RISReportSummary { public int TotalRIS { get; set; } public int TotalApproved { get; set; } public int TotalPending { get; set; } public int TotalCancelled { get; set; } public decimal TotalQtyIssued { get; set; } public decimal TotalQtyReturned { get; set; } public decimal TotalNetIssued { get; set; } public decimal ApprovalRatePct { get; set; } } public class RISReportRow { public string RISNo { get; set; } = string.Empty; public DateTime CreatedDate { get; set; } public string ItemName { get; set; } = string.Empty; public long ItemNo { get; set; } public string DisciplineName { get; set; } = string.Empty; public string ProjectName { get; set; } = string.Empty; public decimal QtyIssued { get; set; } public decimal TotalReturned { get; set; } public decimal NetIssued { get; set; } public short Status { get; set; } public string StatusLabel { get; set; } = string.Empty; } public class DisciplineCount { public string DisciplineName { get; set; } = string.Empty; public int Count { get; set; } } public class TopRecipient { public string IssuedTo { get; set; } = string.Empty; public int SlipCount { get; set; } public decimal TotalQty { get; set; } } public class MRSReportDto { public string CompanyName { get; set; } = "Lloyd Laboratories Incorporated"; public string PreparedBy { get; set; } = "Finance Department"; public string ReportNo { get; set; } = string.Empty; public DateTime DateFrom { get; set; } public DateTime DateTo { get; set; } public MRSReportSummary Summary { get; set; } = new(); public List Rows { get; set; } = []; public List ByCondition { get; set; } = []; } public class MRSReportSummary { public int TotalMRS { get; set; } public decimal TotalQtyReturned { get; set; } public decimal TotalQtyIssuedRIS { get; set; } public decimal NetQtyConsumed { get; set; } public decimal ReturnRatePct { get; set; } public decimal GoodConditionPct { get; set; } } public class MRSReportRow { public string MRSNo { get; set; } = string.Empty; public DateTime CreatedDate { get; set; } public string RISNo { get; set; } = string.Empty; public string ItemName { get; set; } = string.Empty; public string ReturnedBy { get; set; } = string.Empty; public decimal QtyReturned { get; set; } public string Condition { get; set; } = string.Empty; public short Status { get; set; } public string StatusLabel { get; set; } = string.Empty; } public class ConditionTotal { public string Condition { get; set; } = string.Empty; public decimal TotalQty { get; set; } } public class InventoryReportDto { public string CompanyName { get; set; } = "Lloyd Laboratories Incorporated"; public string PreparedBy { get; set; } = "Finance Department"; public string ReportNo { get; set; } = string.Empty; public DateTime AsOf { get; set; } public InventoryReportSummary Summary { get; set; } = new(); public List Rows { get; set; } = []; public List ByCategory { get; set; } = []; public List Alerts { get; set; } = []; } public class InventoryReportSummary { public int TotalSKUs { get; set; } public decimal TotalOnHand { get; set; } public decimal TotalQtyIn { get; set; } public decimal TotalQtyOut { get; set; } public decimal TotalValue { get; set; } public int LowStockCount { get; set; } public int OutOfStockCount { get; set; } } public class InventoryReportRow { public string ItemName { get; set; } = string.Empty; public long ItemNo { get; set; } public string ItemCategoryName { get; set; } = string.Empty; public string? LotNo { get; set; } public decimal QtyIn { get; set; } public decimal QtyOut { get; set; } public decimal QtyOnHand { get; set; } public decimal UnitPrice { get; set; } public int StockPct { get; set; } } public class CategoryStockLevel { public string CategoryName { get; set; } = string.Empty; public int AvgStockPct { get; set; } } public class InventoryAlert { public string ItemName { get; set; } = string.Empty; public decimal QtyOnHand { get; set; } public string Severity { get; set; } = string.Empty; // "Critical" | "Low" } }