|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
|
|
|
using BBWY.Client.Models.Statistics.AfterSaleOrder;
|
|
|
|
|
|
|
|
namespace BBWY.Client.Models
|
|
|
|
{
|
|
|
|
public class Order : NotifyObject
|
|
|
|
{
|
|
|
|
public Order()
|
|
|
|
{
|
|
|
|
OrderCostDetailGroupList = new List<OrderCostDetailGroup>();
|
|
|
|
AfterSaleOrderGroupList = new List<AfterSaleOrderGroup>();
|
|
|
|
}
|
|
|
|
|
|
|
|
private StorageType? storageType;
|
|
|
|
private OrderState orderState;
|
|
|
|
private string waybillNo;
|
|
|
|
private string venderRemark;
|
|
|
|
private string flag;
|
|
|
|
|
|
|
|
public string Id { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 商家Id
|
|
|
|
/// </summary>
|
|
|
|
public string VenderId { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 下单时间
|
|
|
|
/// </summary>
|
|
|
|
public DateTime OrderStartTime { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 结单时间
|
|
|
|
/// </summary>
|
|
|
|
public DateTime? OrderEndTime { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 买家账号
|
|
|
|
/// </summary>
|
|
|
|
public string BuyerAccount { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单平台
|
|
|
|
/// </summary>
|
|
|
|
public Platform Platform { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单类型
|
|
|
|
/// </summary>
|
|
|
|
public OrderType OrderType { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 支付方式
|
|
|
|
/// </summary>
|
|
|
|
public PayType PayType { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单状态中文说明
|
|
|
|
/// </summary>
|
|
|
|
public string OrderStateText { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单总价
|
|
|
|
/// </summary>
|
|
|
|
public decimal OrderTotalPrice { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单货款金额
|
|
|
|
/// </summary>
|
|
|
|
public decimal OrderSellerPrice { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 用户应付金额
|
|
|
|
/// </summary>
|
|
|
|
public decimal OrderPayment { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 商品运费(用户付)
|
|
|
|
/// </summary>
|
|
|
|
public decimal FreightPrice { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单实收货款 (orderSellerPrice)+平台承担优惠券(PingTaiChengDanYouHuiQuan)
|
|
|
|
/// </summary>
|
|
|
|
public decimal? ActualProductAmount { get; set; } = 0.00M;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 平台承担优惠券
|
|
|
|
/// </summary>
|
|
|
|
public decimal? PingTaiChengDanYouHuiQuan { get; set; } = 0.00M;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 实收金额
|
|
|
|
/// </summary>
|
|
|
|
public decimal ActualAmount
|
|
|
|
{
|
|
|
|
get
|
|
|
|
{
|
|
|
|
//return OrderSellerPrice + FreightPrice;
|
|
|
|
return OrderSellerPrice + FreightPrice + (PingTaiChengDanYouHuiQuan ?? 0M);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 平台优惠金额
|
|
|
|
/// </summary>
|
|
|
|
public decimal PreferentialAmount { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 买家备注
|
|
|
|
/// </summary>
|
|
|
|
public string BuyerRemark { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 采购备注
|
|
|
|
/// </summary>
|
|
|
|
public string PurchaseRemark { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 仓储类型
|
|
|
|
/// </summary>
|
|
|
|
public StorageType? StorageType
|
|
|
|
{
|
|
|
|
get => storageType;
|
|
|
|
set
|
|
|
|
{
|
|
|
|
Set(ref storageType, value);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 仓库名称
|
|
|
|
/// </summary>
|
|
|
|
public string StoreName { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 刷单类型
|
|
|
|
/// </summary>
|
|
|
|
public SDType? SDType { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 刷单关键词
|
|
|
|
/// </summary>
|
|
|
|
public string SDKey { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 刷单支付渠道
|
|
|
|
/// </summary>
|
|
|
|
public PayBillType? SDPayChannel { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 刷单交易账单号
|
|
|
|
/// </summary>
|
|
|
|
public string SDPayBillNo { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 刷单人
|
|
|
|
/// </summary>
|
|
|
|
public string SDOperator { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单状态
|
|
|
|
/// </summary>
|
|
|
|
public OrderState OrderState { get => orderState; set { Set(ref orderState, value); } }
|
|
|
|
|
|
|
|
public string WaybillNo { get => waybillNo; set { Set(ref waybillNo, value); } }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 商家备注
|
|
|
|
/// </summary>
|
|
|
|
public string VenderRemark { get => venderRemark; set { Set(ref venderRemark, value); } }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单旗帜
|
|
|
|
/// </summary>
|
|
|
|
public string Flag { get => flag; set { Set(ref flag, value); } }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 是否包含售后单
|
|
|
|
/// </summary>
|
|
|
|
public bool IsAfterSaleOrder { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 收货人信息
|
|
|
|
/// </summary>
|
|
|
|
public Consignee Consignee { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单成本
|
|
|
|
/// </summary>
|
|
|
|
public OrderCost OrderCost { get; set; }
|
|
|
|
|
|
|
|
public IList<OrderSku> ItemList { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 优惠券列表
|
|
|
|
/// </summary>
|
|
|
|
public IList<OrderCoupon> OrderCouponList { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单成本明细列表
|
|
|
|
/// </summary>
|
|
|
|
public IList<OrderCostDetail> OrderCostDetailList { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 订单成本明细分组列表
|
|
|
|
/// </summary>
|
|
|
|
public IList<OrderCostDetailGroup> OrderCostDetailGroupList { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 代发信息
|
|
|
|
/// </summary>
|
|
|
|
public IList<OrderDropShipping> OrderDropShippingList { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 历史代发信息
|
|
|
|
/// </summary>
|
|
|
|
public IList<OrderDropShipping> HistoryOrderDropShippingList { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 售后信息
|
|
|
|
/// </summary>
|
|
|
|
public IList<AfterSaleOrder> AfterSaleOrderList { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
///售后信息分组
|
|
|
|
/// </summary>
|
|
|
|
public IList<AfterSaleOrderGroup> AfterSaleOrderGroupList { get; set; }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 是否为异常订单
|
|
|
|
/// </summary>
|
|
|
|
public bool IsCostException
|
|
|
|
{
|
|
|
|
get
|
|
|
|
{
|
|
|
|
//var beforeTotalCost = OrderCost?.BeforeTotalCost ?? 0M;
|
|
|
|
//return OrderState != OrderState.已取消 && StorageType != Models.StorageType.SD &&
|
|
|
|
// ((StorageType != null && beforeTotalCost == 0M) ||
|
|
|
|
// (beforeTotalCost > OrderSellerPrice + FreightPrice + PingTaiChengDanYouHuiQuan) ||
|
|
|
|
// (StorageType == null && OrderState != OrderState.等待采购 && OrderState != OrderState.待付款));
|
|
|
|
|
|
|
|
var beforeTotalCost = OrderCost?.BeforeTotalCost ?? 0M;
|
|
|
|
var profit = OrderCost?.Profit ?? 0M;
|
|
|
|
return (OrderState != OrderState.已取消 &&
|
|
|
|
StorageType != Models.StorageType.SD &&
|
|
|
|
StorageType != null &&
|
|
|
|
(beforeTotalCost == 0M || profit < 0M)) ||
|
|
|
|
(StorageType == null &&
|
|
|
|
OrderState != OrderState.等待采购 &&
|
|
|
|
OrderState != OrderState.待付款 &&
|
|
|
|
OrderState != OrderState.已取消);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void LocalConvert()
|
|
|
|
{
|
|
|
|
ConvertAfterSaleOrderToGroup();
|
|
|
|
ConvertOrderCostDetailToGroup();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void ConvertOrderCostDetailToGroup()
|
|
|
|
{
|
|
|
|
if (OrderCostDetailList == null || OrderCostDetailList.Count() == 0)
|
|
|
|
return;
|
|
|
|
foreach (var detail in OrderCostDetailList)
|
|
|
|
{
|
|
|
|
var group = OrderCostDetailGroupList.FirstOrDefault(g => g.SkuId == detail.SkuId);
|
|
|
|
if (group == null)
|
|
|
|
{
|
|
|
|
group = new OrderCostDetailGroup() { SkuId = detail.SkuId };
|
|
|
|
OrderCostDetailGroupList.Add(group);
|
|
|
|
}
|
|
|
|
group.Items.Add(detail);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void ConvertAfterSaleOrderToGroup()
|
|
|
|
{
|
|
|
|
if (!IsAfterSaleOrder || AfterSaleOrderList == null || AfterSaleOrderList.Count() == 0)
|
|
|
|
return;
|
|
|
|
foreach (var aso in AfterSaleOrderList)
|
|
|
|
{
|
|
|
|
var group = AfterSaleOrderGroupList.FirstOrDefault(g => g.SkuId == aso.SkuId);
|
|
|
|
if (group == null)
|
|
|
|
{
|
|
|
|
group = new AfterSaleOrderGroup() { SkuId = aso.SkuId };
|
|
|
|
AfterSaleOrderGroupList.Add(group);
|
|
|
|
}
|
|
|
|
group.Items.Add(aso);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public class OrderList
|
|
|
|
{
|
|
|
|
public int Count { get; set; }
|
|
|
|
|
|
|
|
public IList<Order> Items { get; set; }
|
|
|
|
}
|
|
|
|
}
|