admin/src/Oms.Application/Dtos/Orders/OrderOutput.cs
zzh c8107cb565 feat: add additional-service billing, conditions, and fee lifecycle hardening
Support optional services and executable billing conditions on sell/buy prices, percent-of-value and percent-of-freight formulas, place-order/inbound payable on chargeable weight, outbound receivable freeze, channel remote areas, billing simulate, and insurance-aware claims.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 18:04:28 +08:00

336 lines
7.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace Oms.Application.Dtos.Orders;
/// <summary>
/// 订单出参。
/// </summary>
public class OrderOutput
{
/// <summary>
/// 主键。
/// </summary>
public int Id { get; set; }
/// <summary>
/// 客户单号。
/// </summary>
public string? ClientNo { get; set; }
/// <summary>
/// 跟踪号。
/// </summary>
public string? TrackNo { get; set; }
/// <summary>
/// 服务商单号(下游 createOrderOne Data.serviceNo)。
/// </summary>
public string? DownstreamServiceNo { get; set; }
/// <summary>
/// 服务单号。
/// </summary>
public string ServiceNo { get; set; } = string.Empty;
/// <summary>
/// 产品编码。
/// </summary>
public string? ProductCode { get; set; }
/// <summary>
/// 销售产品名称。
/// </summary>
public string? ProductName { get; set; }
/// <summary>
/// 渠道编码。
/// </summary>
public string? ChannelCode { get; set; }
/// <summary>
/// 下游 API 服务商编码 supplierCode。
/// </summary>
public string? DownstreamSupplierCode { get; set; }
/// <summary>
/// 下游 itfx 应用 AppKey。
/// </summary>
public string? DownstreamAppKey { get; set; }
/// <summary>
/// 下游 itfx 应用 Id(用于运行时读取 AppSecret)。
/// </summary>
public int? DownstreamAppId { get; set; }
/// <summary>
/// 渠道预报编码 ForecastCode。
/// </summary>
public string? ChannelForecastCode { get; set; }
/// <summary>
/// 服务渠道名称。
/// </summary>
public string? ChannelName { get; set; }
/// <summary>
/// 收件国家/地区二字码。
/// </summary>
public string? ConsigneeCountry { get; set; }
/// <summary>
/// 收件国家/地区中文名称。
/// </summary>
public string? ConsigneeCountryName { get; set; }
/// <summary>
/// 货物属性。
/// </summary>
public string? CargoAttribute { get; set; }
/// <summary>
/// 仓库主键。
/// </summary>
public int? WarehouseId { get; set; }
/// <summary>
/// 仓库名称。
/// </summary>
public string? Warehouse { get; set; }
/// <summary>
/// 客户主键。
/// </summary>
public int? CustomerId { get; set; }
/// <summary>
/// 客户名称。
/// </summary>
public string? CustomerName { get; set; }
/// <summary>
/// 客户编码。
/// </summary>
public string? CustomerCode { get; set; }
/// <summary>
/// 订单来源。
/// </summary>
public string? OrderSource { get; set; }
/// <summary>
/// 预约揽收时间。
/// </summary>
public DateTime? PickupTime { get; set; }
/// <summary>
/// 发件地址簿 Id。
/// </summary>
public int? CustomerSenderAddressId { get; set; }
/// <summary>
/// 幂等请求标识。
/// </summary>
public string? RequestId { get; set; }
/// <summary>
/// 出口报关方式。
/// </summary>
public string? ExportCustomsMode { get; set; }
/// <summary>
/// 预报失败原因(草稿订单)。
/// </summary>
public string? PredeclareFailReason { get; set; }
/// <summary>
/// 待排货原因(排货或渠道买价未匹配,空表示已排货或无待办)。
/// </summary>
public string? AllocationPendingReason { get; set; }
/// <summary>
/// 申报币种。
/// </summary>
public string? DeclaredCurrency { get; set; }
/// <summary>
/// 申报总金额。
/// </summary>
public decimal? DeclaredSum { get; set; }
/// <summary>
/// 包裹数量。
/// </summary>
public int? Quantity { get; set; }
/// <summary>
/// 是否 COD。
/// </summary>
public bool IsCod { get; set; }
/// <summary>
/// COD 币种。
/// </summary>
public string? CodCurrency { get; set; }
/// <summary>
/// COD 金额。
/// </summary>
public decimal? CodSum { get; set; }
/// <summary>
/// 订单状态名称。
/// </summary>
public string? OrderStatus { get; set; }
/// <summary>
/// 状态。
/// </summary>
public string Status { get; set; } = string.Empty;
/// <summary>
/// 子状态 code:pending / processed。
/// </summary>
public string? HandleStatus { get; set; }
/// <summary>
/// 子状态名称。
/// </summary>
public string? HandleStatusName { get; set; }
public string? IssueType { get; set; }
public string? IssueTypeName { get; set; }
public string? IssueTitle { get; set; }
public string? IssueContent { get; set; }
public int? IssueTemplateId { get; set; }
public string? IssueRemark { get; set; }
public DateTime? IssueTime { get; set; }
public string? ClaimType { get; set; }
public string? ClaimTypeName { get; set; }
public decimal? ClaimAmount { get; set; }
public string? ClaimCurrency { get; set; }
public string? ClaimReason { get; set; }
public DateTime? ClaimTime { get; set; }
public string? PreviousOrderStatus { get; set; }
/// <summary>
/// 收货时间。
/// </summary>
public DateTime? ReceiveTime { get; set; }
/// <summary>
/// 发货时间。
/// </summary>
public DateTime? ShipTime { get; set; }
/// <summary>
/// 支付时间。
/// </summary>
public DateTime? PayTime { get; set; }
/// <summary>
/// 是否已支付。
/// </summary>
public bool IsPaid { get; set; }
/// <summary>
/// 签收时间。
/// </summary>
public DateTime? SignTime { get; set; }
/// <summary>
/// 是否拦截。
/// </summary>
public bool IsIntercept { get; set; }
/// <summary>
/// 是否偏远。
/// </summary>
public bool IsRemote { get; set; }
/// <summary>
/// 客户勾选附加服务字典 code 列表。
/// </summary>
public List<string> AdditionalServices { get; set; } = [];
/// <summary>
/// 是否勾选保险附加服务。
/// </summary>
public bool HasInsurance { get; set; }
/// <summary>
/// 预报应收快照(入库不覆盖)。
/// </summary>
public decimal? ForecastReceivableAmount { get; set; }
/// <summary>
/// 预报应付快照(入库不覆盖)。
/// </summary>
public decimal? ForecastPayableAmount { get; set; }
/// <summary>
/// 创建时间。
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string? CreateBy { get; set; }
/// <summary>
/// 更新时间。
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 更新人。
/// </summary>
public string? UpdateBy { get; set; }
/// <summary>
/// 寄件人信息。
/// </summary>
public OrderSenderOutput? Sender { get; set; }
/// <summary>
/// 收件人信息。
/// </summary>
public OrderReceiverOutput? Receiver { get; set; }
/// <summary>
/// 订单内件集合。
/// </summary>
public List<OrderItemOutput> Items { get; set; } = [];
/// <summary>
/// 重量明细集合。
/// </summary>
public List<OrderWeightOutput> WeightList { get; set; } = [];
/// <summary>
/// 费用明细集合。
/// </summary>
public List<OrderFeeOutput> FeeList { get; set; } = [];
/// <summary>
/// 计费重(优先收货行,其次预报行)。
/// </summary>
public decimal? ChargeableWeight { get; set; }
/// <summary>
/// 应收合计(当前有效应收费用之和)。
/// </summary>
public decimal? ReceivableAmount { get; set; }
}