diff --git a/BBWY.Client/Views/Order/OrderList.xaml b/BBWY.Client/Views/Order/OrderList.xaml
index 1278f717..3a2fb533 100644
--- a/BBWY.Client/Views/Order/OrderList.xaml
+++ b/BBWY.Client/Views/Order/OrderList.xaml
@@ -1187,9 +1187,9 @@
-
+
diff --git a/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs b/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
index 21e2813d..8250a295 100644
--- a/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
+++ b/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
@@ -135,8 +135,12 @@ namespace BBWY.Server.Business
if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.SD退货)
{
+ if (dbOrder.StorageType != Model.Enums.StorageType.SD)
+ throw new BusinessException("只有SD订单才能选择SD退货");
dbAfterSaleOrder.SDRefundFreight = editAfterSaleOrderRequest.SDRefundFreight;
dbAfterSaleOrder.AfterTotalCost = dbAfterSaleOrder.SDRefundFreight + dbAfterSaleOrder.ReissueAfterSaleAmount;
+
+ dbOrderCost.CalculationSDOrderProfitAndCost(dbOrder, afterSaleOrderList);
}
else
{
@@ -202,11 +206,11 @@ namespace BBWY.Server.Business
dbAfterSaleOrder.ReissueFreight.Value +
dbAfterSaleOrder.ReissueProductAmount.Value +
dbAfterSaleOrder.StorageAmount;
+
+ dbOrderCost.CalculationOrderProfitAndCost(dbOrder, afterSaleOrderList);
}
#endregion
- dbOrderCost.CalculationOrderProfitAndCost(dbOrder, afterSaleOrderList);
-
fsql.Transaction(() =>
{
fsql.Update().SetSource(dbOrderCost).ExecuteAffrows();
diff --git a/BBWY.Server.Business/Extensions/OrderCostExtension.cs b/BBWY.Server.Business/Extensions/OrderCostExtension.cs
index 94f507ef..99602be0 100644
--- a/BBWY.Server.Business/Extensions/OrderCostExtension.cs
+++ b/BBWY.Server.Business/Extensions/OrderCostExtension.cs
@@ -24,5 +24,16 @@ namespace BBWY.Server.Business.Extensions
orderCost.AfterTotalCost +
orderCost.RefundPurchaseAmount;
}
+
+ public static void CalculationSDOrderProfitAndCost(this OrderCost orderCost, Order order, IList afterSaleOrders)
+ {
+ orderCost.AfterTotalCost = afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost);
+ orderCost.RefundAmount = afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.RefundAmount ?? 0M);
+ orderCost.RefundPurchaseAmount = afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0);
+
+ //退款之后平台扣点
+ orderCost.PlatformCommissionAmount = (order.OrderSellerPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio);
+ orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount + orderCost.AfterTotalCost) * -1;
+ }
}
}
diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs
index 8b8abd5a..6205d8cb 100644
--- a/BBWY.Server.Business/Order/OrderBusiness.cs
+++ b/BBWY.Server.Business/Order/OrderBusiness.cs
@@ -2,7 +2,6 @@
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Business.Extensions;
-using BBWY.Server.Business.PlatformSDK.DataExtension;
using BBWY.Server.Model;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Db.Mds;
@@ -11,46 +10,31 @@ using FreeSql;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Net.Http;
-using System.Threading.Tasks;
using Yitter.IdGenerator;
namespace BBWY.Server.Business
{
public class OrderBusiness : BasePlatformRelayBusiness, IDenpendency
{
- private ILogger logger;
private IFreeSql fsql;
private IIdGenerator idGenerator;
- private TaskSchedulerManager taskSchedulerManager;
- private MDSBusiness mdsBusiness;
- private VenderBusiness venderBusiness;
private Lazy freeSqlMultiDBManagerLazy;
private FreeSqlMultiDBManager freeSqlMultiDBManager => freeSqlMultiDBManagerLazy.Value;
public OrderBusiness(RestApiService restApiService,
- ILogger logger,
IFreeSql fsql,
IIdGenerator idGenerator,
IOptions options,
- TaskSchedulerManager taskSchedulerManager,
- MDSBusiness mdsBusiness,
- VenderBusiness venderBusiness,
IServiceProvider serviceProvider) : base(restApiService, options)
{
- this.logger = logger;
this.fsql = fsql;
this.idGenerator = idGenerator;
- this.taskSchedulerManager = taskSchedulerManager;
- this.mdsBusiness = mdsBusiness;
- this.venderBusiness = venderBusiness;
freeSqlMultiDBManagerLazy = new Lazy(() => serviceProvider.GetService());
}
@@ -671,6 +655,8 @@ namespace BBWY.Server.Business
IUpdate updateOrderCost = null;
IInsert insertOrderCost = null;
+ var dbAfterSaleOrderList = fsql.Select().Where(aso => aso.OrderId == sdCalculationCostRequest.OrderId).ToList();
+
orderUpdate = fsql.Update(sdCalculationCostRequest.OrderId).Set(o => o.SDType, sdCalculationCostRequest.SDType)
.Set(o => o.Flag, sdCalculationCostRequest.Flag)
.Set(o => o.VenderRemark, sdCalculationCostRequest.VenderRemark)
@@ -697,15 +683,17 @@ namespace BBWY.Server.Business
IsManualEdited = true,
SDCommissionAmount = sdCalculationCostRequest.SDCommissionAmount
};
- orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio;
- orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount) * -1;
+ //orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio;
+ //orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount) * -1;
+ orderCost.CalculationSDOrderProfitAndCost(dbOrder, dbAfterSaleOrderList);
insertOrderCost = fsql.Insert(orderCost);
}
else
{
orderCost.SDCommissionAmount = sdCalculationCostRequest.SDCommissionAmount;
orderCost.DeliveryExpressFreight = sdCalculationCostRequest.DeliveryExpressFreight;
- orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount) * -1;
+ //orderCost.Profit = (orderCost.SDCommissionAmount + orderCost.DeliveryExpressFreight + orderCost.PlatformCommissionAmount) * -1;
+ orderCost.CalculationSDOrderProfitAndCost(dbOrder, dbAfterSaleOrderList);
orderCost.IsManualEdited = true;
updateOrderCost = fsql.Update().SetSource(orderCost);
}
diff --git a/BBWY.Server.Business/Sync/ProductSyncBusiness.cs b/BBWY.Server.Business/Sync/ProductSyncBusiness.cs
index 270bcad2..f8c3ad11 100644
--- a/BBWY.Server.Business/Sync/ProductSyncBusiness.cs
+++ b/BBWY.Server.Business/Sync/ProductSyncBusiness.cs
@@ -72,7 +72,7 @@ namespace BBWY.Server.Business.Sync
}
else if (dbProduct.State != product.State)
{
- var update = fsql.Update(product.Id).Set(p => p.State, dbProduct.State);
+ var update = fsql.Update(product.Id).Set(p => p.State, product.State);
updateProductList.Add(update);
}
@@ -181,7 +181,7 @@ namespace BBWY.Server.Business.Sync
public void SyncAllShopAllProduct()
{
var shopList = venderBusiness.GetShopList();
- //SyncProduct(shopList.FirstOrDefault(s => s.ShopName == "瑞源玩具专营店"), true); //瑞源玩具专营店
+ //SyncProduct(shopList.FirstOrDefault(s => s.ShopName == "布莱特玩具专营店"), true);
foreach (var shop in shopList)
{
Task.Factory.StartNew(() => SyncProduct(shop, true), System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.ProductSyncTaskScheduler);