You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
7.1 KiB
118 lines
7.1 KiB
using BBWYB.Server.Model.Db;
|
|
|
|
namespace BBWYB.Server.Business.Extensions
|
|
{
|
|
public static class OrderAmountExtension
|
|
{
|
|
/// <summary>
|
|
/// 计算订单sku明细的成本和利润
|
|
/// </summary>
|
|
/// <param name="ocd">订单SKU明细成本对象</param>
|
|
/// <param name="skuPurchaseProductAmount">sku采购货款(支出)</param>
|
|
/// <param name="skuPurchaseFreight">sku采购运费(支出)</param>
|
|
/// <param name="skuOutPackAmount">sku支出打包费(支出)</param>
|
|
/// <param name="skuDeliveryExpressFreight">sku发货运费(支出)</param>
|
|
public static void CalculationOrderCostDetailCostAndProfit(this OrderCostDetail ocd,
|
|
decimal skuPurchaseProductAmount,
|
|
decimal skuPurchaseFreight,
|
|
decimal skuOutPackAmount,
|
|
decimal skuDeliveryExpressFreight)
|
|
{
|
|
ocd.SkuAmount = skuPurchaseProductAmount;
|
|
ocd.PurchaseFreight = skuPurchaseFreight;
|
|
ocd.OutPackAmount = skuOutPackAmount;
|
|
ocd.DeliveryExpressFreight = skuDeliveryExpressFreight;
|
|
ocd.TotalCost = ocd.SkuAmount + ocd.PurchaseFreight + ocd.OutPackAmount + ocd.DeliveryExpressFreight; //采购货款+采购运费+支出打包费+发货运费
|
|
//ocd.Profit = skuProductAmount + skuBuyerPayFreight + skuInPackAmount - ocd.TotalCost; //SKU货款+买家支付运费+SKU打包费 - SKU总成本
|
|
}
|
|
|
|
/// <summary>
|
|
/// 计算订单sku成本和利润
|
|
/// </summary>
|
|
/// <param name="orderSkuCost">订单SKU明细成本对象</param>
|
|
/// <param name="skuProductAmount">sku商品金额(收入)</param>
|
|
/// <param name="skuBuyerPayFreight">sku买家支付运费(收入)</param>
|
|
/// <param name="skuInPackAmount">sku实收打包费(收入)</param>
|
|
/// <param name="orderCostDetailList">订单成本明细列表</param>
|
|
public static void CalculationOrderSkuCostAndProfit(this OrderSkuCost orderSkuCost,
|
|
decimal skuProductAmount,
|
|
decimal skuBuyerPayFreight,
|
|
decimal skuInPackAmount,
|
|
IList<OrderCostDetail> orderCostDetailList)
|
|
{
|
|
var currentSkuCostDetailList = orderCostDetailList.Where(ocd => ocd.SkuId == orderSkuCost.SkuId && ocd.IsEnabled == true).ToList();
|
|
|
|
orderSkuCost.SkuAmount = currentSkuCostDetailList.Sum(ocd => ocd.SkuAmount);
|
|
orderSkuCost.PurchaseFreight = currentSkuCostDetailList.Sum(ocd => ocd.PurchaseFreight);
|
|
orderSkuCost.OutPackAmount = currentSkuCostDetailList.Sum(ocd => ocd.OutPackAmount);
|
|
orderSkuCost.DeliveryExpressFreight = currentSkuCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight);
|
|
orderSkuCost.TotalCost = orderSkuCost.SkuAmount +
|
|
orderSkuCost.PurchaseFreight +
|
|
orderSkuCost.OutPackAmount +
|
|
orderSkuCost.DeliveryExpressFreight; //采购货款+采购运费+支出打包费+发货运费
|
|
orderSkuCost.Profit = skuProductAmount + skuBuyerPayFreight + skuInPackAmount - orderSkuCost.TotalCost; //SKU货款+买家支付运费+SKU打包费 - SKU总成本
|
|
}
|
|
|
|
/// <summary>
|
|
/// 计算订单sku成本和利润
|
|
/// </summary>
|
|
/// <param name="orderSkuCost"></param>
|
|
/// <param name="orderSku"></param>
|
|
/// <param name="orderCostDetailList"></param>
|
|
public static void CalculationOrderSkuCostAndProfit(this OrderSkuCost orderSkuCost,
|
|
OrderSku orderSku,
|
|
IList<OrderCostDetail> orderCostDetailList)
|
|
{
|
|
orderSkuCost.CalculationOrderSkuCostAndProfit((orderSku.ItemTotal * orderSku.Price) ?? 0M,
|
|
orderSku.BuyerPayFreight ?? 0M,
|
|
orderSku.InPackAmount ?? 0M,
|
|
orderCostDetailList);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 计算订单的成本和利润
|
|
/// </summary>
|
|
/// <param name="oc"></param>
|
|
/// <param name="orderAmount">订单金额(包含买家支付运费和收入打包费)</param>
|
|
/// <param name="purchaseProductAmount">采购货款</param>
|
|
/// <param name="purchaseFreight">采购运费</param>
|
|
/// <param name="outPackAmount">支出打包费</param>
|
|
/// <param name="deliveryExpressFreight">发货运费</param>
|
|
public static void CalculationOrderCostAndProfit(this OrderCost oc,
|
|
decimal orderAmount,
|
|
decimal purchaseProductAmount,
|
|
decimal purchaseFreight,
|
|
decimal outPackAmount,
|
|
decimal deliveryExpressFreight)
|
|
{
|
|
oc.PurchaseAmount = purchaseProductAmount + purchaseFreight; //兼容以前
|
|
|
|
oc.SkuAmount = purchaseProductAmount;
|
|
oc.PurchaseFreight = purchaseFreight;
|
|
oc.OutPackAmount = outPackAmount;
|
|
oc.DeliveryExpressFreight = deliveryExpressFreight;
|
|
oc.TotalCost = oc.SkuAmount + oc.PurchaseFreight + oc.OutPackAmount + oc.DeliveryExpressFreight;
|
|
oc.Profit = orderAmount - oc.TotalCost;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 计算订单的成本和利润
|
|
/// </summary>
|
|
/// <param name="oc"></param>
|
|
/// <param name="orderAmount"></param>
|
|
/// <param name="orderSkuCostList"></param>
|
|
public static void CalculationOrderCostAndProfit(this OrderCost oc,
|
|
decimal orderAmount,
|
|
IList<OrderSkuCost> orderSkuCostList)
|
|
{
|
|
var currentOrderSkuCostList = orderSkuCostList.Where(osc => osc.OrderId == oc.OrderId).ToList();
|
|
oc.SkuAmount = currentOrderSkuCostList.Sum(osc => osc.SkuAmount);
|
|
oc.PurchaseFreight = currentOrderSkuCostList.Sum(osc => osc.PurchaseFreight);
|
|
oc.PurchaseAmount = oc.SkuAmount + oc.PurchaseFreight; //兼容以前
|
|
oc.OutPackAmount = currentOrderSkuCostList.Sum(osc => osc.OutPackAmount);
|
|
oc.DeliveryExpressFreight = currentOrderSkuCostList.Sum(osc => osc.DeliveryExpressFreight);
|
|
oc.TotalCost = oc.SkuAmount + oc.PurchaseFreight + oc.OutPackAmount + oc.DeliveryExpressFreight;
|
|
oc.Profit = orderAmount - oc.TotalCost;
|
|
}
|
|
}
|
|
}
|
|
|