using DS.Module.Core; namespace DS.WMS.Core.Application.Dtos { /// /// 费用申请单审核明细展示 /// public class ApplicationSummary { /// /// 费用汇总 /// public List SummaryItems { get; set; } /// /// 申请单明细 /// public IEnumerable? Details { get; set; } /// /// 初始化 /// /// 申请单明细 public ApplicationSummary(IEnumerable details) { ArgumentNullException.ThrowIfNull(details); Details = details; SummaryItems = details.GroupBy(x => new { x.FeeType, x.OriginalCurrency }).Select(x => new SummaryItem { FeeType = x.Key.FeeType, Currency = x.Key.OriginalCurrency, Amount = x.Sum(y => y.Amount), OriginalAmount = x.Sum(y => y.OriginalAmount) }).ToList(); } } /// /// 按业务统计费用 /// public class FeeBiz { /// /// 客户应收合计 /// public decimal RecvByCustomer { get; set; } /// /// 应付人民币 /// public decimal PayableCNY { get; set; } /// /// 应付美元 /// public decimal PayableUSD { get; set; } /// /// 费用合计 /// public List TotalItems { get; set; } = []; } /// /// 申请单费用汇总 /// public class SummaryItem { /// /// 费用类型 /// public FeeType FeeType { get; set; } /// /// 币别 /// public string Currency { get; set; } /// /// 申请金额 /// public decimal Amount { get; set; } /// /// 原始金额 /// public decimal OriginalAmount { get; set; } } /// /// 申请单费用合计项 /// public class TotalItem { /// /// 币别 /// public string Currency { get; set; } /// /// 应收款 /// public decimal ReceivableAmount { get; set; } /// /// 未收 /// public decimal RestAmount { get; set; } /// /// 应付款 /// public decimal PayableAmount { get; set; } /// /// 利润 /// public decimal Profit { get { return ReceivableAmount - PayableAmount; } } /// /// 利润率 /// public string ProfitMargin { get { if (PayableAmount == 0) return string.Empty; //利润率=利润÷成本×100% return string.Concat(Math.Round(ReceivableAmount / PayableAmount * 100, 2, MidpointRounding.AwayFromZero), "%"); } } } /// /// 按票统计 /// public class BizFeeStat { /// /// 应收款总计 /// public decimal ReceivableTotal { get; set; } /// /// 应付款总计 /// public decimal PayableTotal { get; set; } /// /// 利润总计 /// public decimal ProfitTotal { get { return ReceivableTotal - PayableTotal; } } /// /// 利润率 /// public string ProfitMargin { get { if (PayableTotal == 0) return string.Empty; //利润率=利润÷成本×100% return string.Concat(Math.Round(ReceivableTotal / PayableTotal * 100, 2, MidpointRounding.AwayFromZero), "%"); } } /// /// 人民币应收款 /// public decimal ReceivableCNY { get; set; } /// /// 人民币应付款 /// public decimal PayableCNY { get; set; } /// /// 人民币利润 /// public decimal ProfitCNY { get { return ReceivableCNY - PayableCNY; } } /// /// 美元应收款 /// public decimal ReceivableUSD { get; set; } /// /// 美元应付款 /// public decimal PayableUSD { get; set; } /// /// 美元利润 /// public decimal ProfitUSD { get { return ReceivableUSD - PayableUSD; } } /// /// 其他币种应收款 /// public decimal ReceivableOther { get; set; } /// /// 其他币种应付款 /// public decimal PayableOther { get; set; } /// /// 其他币种利润 /// public decimal ProfitOther { get { return ReceivableOther - PayableOther; } } /// /// 退舱 /// public string? CancelCabin { get; set; } /// /// 签单方式 /// public string? IssueType { get; set; } /// /// 报关日期 /// public DateTime? CustomsDate { get; set; } /// /// 预抵日期 /// public DateTime? ETA { get; set; } /// /// 装货港 /// public string? LoadPort { get; set; } /// /// 卸货港 /// public string? DischargePort { get; set; } /// /// 目的地 /// public string? Destination { get; set; } /// /// 场站 /// public string? Yard { get; set; } /// /// 业务来源明细 /// public string? SourceDetailName { get; set; } /// /// 箱TEU /// public int TEU { get; set; } /// /// 品名 /// public string? GoodsName { get; set; } /// /// 国外代理 /// public string? Agent { get; set; } /// /// 操作员代码 /// public long? OperatorId { get; set; } /// /// 主提单号 /// public string? MBLNO { get; set; } /// /// 分提单号 /// public string? HBLNO { get; set; } /// /// 委托编号 /// public string? CustomerNo { get; set; } /// /// 费用对象ID /// public long? CustomerId { get; set; } /// /// 委托单位名称 /// public string? CustomerName { get; set; } /// /// 业务锁定 /// public bool? IsBusinessLocking { get; set; } /// /// 费用锁定 /// public bool? IsFeeLocking { get; set; } /// /// 开船日期 /// public DateTime? ETD { get; set; } /// /// 业务来源 /// public string? SourceName { get; set; } /// /// 集装箱 /// public string? CntrTotal { get; set; } /// /// 会计期间 /// public string? AccountDate { get; set; } /// /// 操作 /// public string? Operator { get; set; } /// /// 船名 /// public string? Vessel { get; set; } /// /// 航次 /// public string? Voyage { get; set; } /// /// 船公司 /// public string? Carrier { get; set; } /// /// 订舱代理 /// public string? Forwarder { get; set; } /// /// 订舱编号 /// public string? BookingNo { get; set; } } }