Browse Source

修改订单同步 仓库Id更改逻辑,修复京云仓负利润问题

qianyi
shanji 2 years ago
parent
commit
039a451651
  1. 19
      BBWY.Server.Business/Extensions/OrderCostExtension.cs
  2. 31
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs

19
BBWY.Server.Business/Extensions/OrderCostExtension.cs

@ -25,6 +25,25 @@ namespace BBWY.Server.Business.Extensions
orderCost.RefundPurchaseAmount; orderCost.RefundPurchaseAmount;
} }
public static void CalculationOrderProfitAndCost(this OrderCost orderCost, decimal orderSellerPrice,decimal freightPrice, IList<AfterSaleOrder> afterSaleOrders)
{
orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost);
orderCost.RefundAmount = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.RefundAmount ?? 0M);
orderCost.RefundPurchaseAmount = afterSaleOrders == null || afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0);
//退款之后平台扣点
orderCost.PlatformCommissionAmount = (orderSellerPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio);
orderCost.Profit = orderSellerPrice + freightPrice - orderCost.RefundAmount -
orderCost.PurchaseAmount -
orderCost.DeliveryExpressFreight -
orderCost.PlatformCommissionAmount -
orderCost.AfterTotalCost +
orderCost.RefundPurchaseAmount;
}
public static void CalculationSDOrderProfitAndCost(this OrderCost orderCost, Order order, IList<AfterSaleOrder> afterSaleOrders) public static void CalculationSDOrderProfitAndCost(this OrderCost orderCost, Order order, IList<AfterSaleOrder> afterSaleOrders)
{ {
orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost); orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost);

31
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -246,7 +246,9 @@ namespace BBWY.Server.Business
SellerPreferentialAmount = o.SellerPreferentialAmount, SellerPreferentialAmount = o.SellerPreferentialAmount,
OrderSellerPrice = o.OrderSellerPrice, OrderSellerPrice = o.OrderSellerPrice,
OrderTotalPrice = o.OrderTotalPrice, OrderTotalPrice = o.OrderTotalPrice,
StoreOrder = o.StoreOrder StoreOrder = o.StoreOrder,
PreferentialAmount = o.PreferentialAmount,
StoreId = o.StoreId
}); //数据库订单 }); //数据库订单
var dbOrderConsigneeList = fsql.Select<OrderConsignee>().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单收货信息 var dbOrderConsigneeList = fsql.Select<OrderConsignee>().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单收货信息
var dbOrderCostList = fsql.Select<OrderCost>().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单成本信息 var dbOrderCostList = fsql.Select<OrderCost>().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单成本信息
@ -294,7 +296,9 @@ namespace BBWY.Server.Business
var orderSellerPrice = orderJToken.Value<decimal>("orderSellerPrice"); var orderSellerPrice = orderJToken.Value<decimal>("orderSellerPrice");
var orderTotalPrice = orderJToken.Value<decimal>("orderTotalPrice"); var orderTotalPrice = orderJToken.Value<decimal>("orderTotalPrice");
var storeOrder = orderJToken.Value<string>("storeOrder") ?? string.Empty; var storeOrder = orderJToken.Value<string>("storeOrder") ?? string.Empty;
var storeId = orderJToken.Value<string>("storeId");
var storageType = ConvertStoreOrder(storeOrder); var storageType = ConvertStoreOrder(storeOrder);
var preferentialAmount = 0M;
if (dbOrder == null) if (dbOrder == null)
{ {
dbOrder = new Order() dbOrder = new Order()
@ -316,7 +320,7 @@ namespace BBWY.Server.Business
//VenderId = orderJToken.Value<long>("venderId"), //VenderId = orderJToken.Value<long>("venderId"),
WaybillNo = waybillNo, WaybillNo = waybillNo,
StoreOrder = storeOrder, StoreOrder = storeOrder,
StoreId = orderJToken.Value<string>("storeId"), StoreId = storeId,
IsGift = orderTotalPrice == 0M || orderSellerPrice == 0M, IsGift = orderTotalPrice == 0M || orderSellerPrice == 0M,
StorageType = storageType StorageType = storageType
}; };
@ -405,7 +409,8 @@ namespace BBWY.Server.Business
var couponType = orderCouponJToken.Value<string>("couponType"); var couponType = orderCouponJToken.Value<string>("couponType");
if (string.IsNullOrEmpty(couponType)) if (string.IsNullOrEmpty(couponType))
continue; continue;
dbOrder.PreferentialAmount += orderCouponJToken.Value<decimal>("couponPrice"); //dbOrder.PreferentialAmount += orderCouponJToken.Value<decimal>("couponPrice");
preferentialAmount += orderCouponJToken.Value<decimal>("couponPrice");
insertOrderCouponList.Add(new OrderCoupon() insertOrderCouponList.Add(new OrderCoupon()
{ {
Id = idGenerator.NewLong(), Id = idGenerator.NewLong(),
@ -555,19 +560,17 @@ namespace BBWY.Server.Business
{ {
OrderId = orderId, OrderId = orderId,
PlatformCommissionRatio = platformCommissionRatio, PlatformCommissionRatio = platformCommissionRatio,
PreferentialAmount = dbOrder.PreferentialAmount, PreferentialAmount = preferentialAmount,
Profit = 0, Profit = 0,
PurchaseAmount = orderCostPurchaseAmount, PurchaseAmount = orderCostPurchaseAmount,
DeliveryExpressFreight = orderDeliveryExpressFreight, DeliveryExpressFreight = orderDeliveryExpressFreight,
CreateTime = DateTime.Now CreateTime = DateTime.Now
}; };
if (dbOrder.OrderTotalPrice != 0)
orderCost.CalculationOrderProfitAndCost(dbOrder, null); orderCost.CalculationOrderProfitAndCost(dbOrder, null);
//orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; else
//orderCost.Profit = dbOrder.OrderSellerPrice + orderCost.CalculationOrderProfitAndCost(orderSellerPrice, freightPrice, null);
// dbOrder.FreightPrice -
// orderCost.PurchaseAmount -
// orderCost.DeliveryExpressFreight -
// orderCost.PlatformCommissionAmount;
insertOrderCostList.Add(orderCost); insertOrderCostList.Add(orderCost);
#endregion #endregion
} }
@ -592,7 +595,9 @@ namespace BBWY.Server.Business
sellerPreferentialAmount != dbOrder.SellerPreferentialAmount || sellerPreferentialAmount != dbOrder.SellerPreferentialAmount ||
orderSellerPrice != dbOrder.OrderSellerPrice || orderSellerPrice != dbOrder.OrderSellerPrice ||
orderTotalPrice != dbOrder.OrderTotalPrice || orderTotalPrice != dbOrder.OrderTotalPrice ||
storeOrder != dbOrder.StoreOrder) storeOrder != dbOrder.StoreOrder ||
preferentialAmount != dbOrder.PreferentialAmount ||
storeId != dbOrder.StoreId)
{ {
var updateSql = fsql.Update<Order>(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState) var updateSql = fsql.Update<Order>(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState)
.SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark) .SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark)
@ -607,7 +612,9 @@ namespace BBWY.Server.Business
.SetIf(orderTotalPrice != dbOrder.OrderTotalPrice, o => o.OrderTotalPrice, orderTotalPrice) .SetIf(orderTotalPrice != dbOrder.OrderTotalPrice, o => o.OrderTotalPrice, orderTotalPrice)
.SetIf(orderTotalPrice != dbOrder.OrderTotalPrice && orderTotalPrice > 0M, o => o.IsGift, false) .SetIf(orderTotalPrice != dbOrder.OrderTotalPrice && orderTotalPrice > 0M, o => o.IsGift, false)
.SetIf(storeOrder != dbOrder.StoreOrder, o => o.StoreOrder, storeOrder) .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StoreOrder, storeOrder)
.SetIf(storeOrder != dbOrder.StoreOrder, o => o.StorageType, storageType); .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StorageType, storageType)
.SetIf(preferentialAmount != dbOrder.PreferentialAmount, o => o.PreferentialAmount, preferentialAmount)
.SetIf(storeId != dbOrder.StoreId, o => o.StoreId, storeId);
updateOrderList.Add(updateSql); updateOrderList.Add(updateSql);
} }
#endregion #endregion

Loading…
Cancel
Save