shanji 3 years ago
parent
commit
2f6158cf38
  1. 24
      BBWY.Client/APIServices/OrderService.cs
  2. 4
      BBWY.Client/APIServices/ShopService.cs
  3. 8
      BBWY.Client/App.xaml.cs
  4. 2
      BBWY.Client/Models/APIModel/Response/Order/ExportOrderResponse.cs
  5. 9
      BBWY.Client/Models/APIModel/Response/Shop/ShopResponse.cs
  6. 7
      BBWY.Client/Models/MappingProfile.cs
  7. 203
      BBWY.Client/Models/Order/ManualEditCostOrderSku.cs
  8. 5
      BBWY.Client/Models/Order/Order.cs
  9. 23
      BBWY.Client/Models/Shop/Department.cs
  10. 18
      BBWY.Client/Models/Shop/Department2.cs
  11. 11
      BBWY.Client/Models/Shop/Shop.cs
  12. 2
      BBWY.Client/Models/User/User.cs
  13. 29
      BBWY.Client/ViewModels/FinancialTerminal/ProcurementAuditViewModel.cs
  14. 128
      BBWY.Client/ViewModels/MainViewModel.cs
  15. 52
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  16. 2
      BBWY.Client/Views/FinancialTerminal/ProcurementAudit.xaml
  17. 6
      BBWY.Client/Views/MainWindow.xaml
  18. 1
      BBWY.Client/Views/Order/GrabJDMibole.xaml.cs
  19. 151
      BBWY.Client/Views/Order/ManualCalculationCost.xaml
  20. 56
      BBWY.Client/Views/Order/ManualCalculationCost.xaml.cs
  21. 41
      BBWY.Client/Views/Order/OrderList.xaml
  22. 2
      BBWY.Client/Views/Order/RelationPurchaseOrder.xaml
  23. 6
      BBWY.Client/Views/Order/SD.xaml.cs
  24. 2
      BBWY.Client/Views/SelectShop.xaml
  25. 9
      BBWY.Client/Views/SelectShop.xaml.cs
  26. 29
      BBWY.Client/WebView2Manager.cs
  27. 8
      BBWY.Server.Business/MDSBusiness.cs
  28. 65
      BBWY.Server.Business/Order/OrderBusiness.cs
  29. 6
      BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  30. 2
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  31. 52
      BBWY.Server.Business/Vender/VenderBusiness.cs
  32. 170
      BBWY.Server.Model/Db/Order/OrderCostDetail.cs
  33. 69
      BBWY.Server.Model/Dto/Request/Order/ManualCalculationCostRequest.cs
  34. 16
      BBWY.Server.Model/Dto/Response/Vender/DepartmentResponse.cs
  35. 30
      BBWY.Server.Model/Dto/Response/Vender/ShopResponse.cs
  36. 1
      BBWY.Server.Model/MappingProfiles.cs

24
BBWY.Client/APIServices/OrderService.cs

@ -3,6 +3,7 @@ using BBWY.Common.Http;
using BBWY.Common.Models; using BBWY.Common.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Net.Http; using System.Net.Http;
namespace BBWY.Client.APIServices namespace BBWY.Client.APIServices
@ -94,10 +95,12 @@ namespace BBWY.Client.APIServices
/// 手动计算成本 /// 手动计算成本
/// </summary> /// </summary>
/// <param name="orderId"></param> /// <param name="orderId"></param>
/// <param name="isSetStorageType">是否设置仓储类型</param> /// <param name="isSetStorageType"></param>
/// <param name="storageType"></param> /// <param name="storageType"></param>
/// <param name="manualEditCostOrderSkuList"></param>
/// <param name="platformCommissionRatio"></param>
/// <returns></returns> /// <returns></returns>
public ApiResponse<object> ManualCalculationCost(string orderId, bool isSetStorageType, StorageType storageType, decimal purchaseCost, decimal deliveryExpressFreight, decimal platformCommissionRatio) public ApiResponse<object> ManualCalculationCost(string orderId, bool isSetStorageType, StorageType storageType, IList<ManualEditCostOrderSku> manualEditCostOrderSkuList, decimal platformCommissionRatio)
{ {
return SendRequest<object>(globalContext.BBYWApiHost, "api/order/ManualCalculationCost", return SendRequest<object>(globalContext.BBYWApiHost, "api/order/ManualCalculationCost",
new new
@ -105,8 +108,21 @@ namespace BBWY.Client.APIServices
orderId, orderId,
isSetStorageType, isSetStorageType,
storageType, storageType,
purchaseCost, OrderCostDetailList = manualEditCostOrderSkuList.Select(osku => new
deliveryExpressFreight, {
SkuId = osku.Id,
osku.ConsumableAmount,
osku.DeliveryExpressFreight,
osku.FirstFreight,
DeductionQuantity = osku.ItemTotal,
osku.OperationAmount,
osku.PurchaseFreight,
osku.ProductId,
osku.SkuAmount,
osku.StorageAmount,
osku.TotalCost,
osku.UnitCost
}),
platformCommissionRatio platformCommissionRatio
}, null, HttpMethod.Post); }, null, HttpMethod.Post);
} }

4
BBWY.Client/APIServices/ShopService.cs

@ -42,9 +42,9 @@ namespace BBWY.Client.APIServices
/// 获取部门及下属店铺 /// 获取部门及下属店铺
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public ApiResponse<IList<Department>> GetDepartmentList() public ApiResponse<IList<DepartmentResponse>> GetDepartmentList()
{ {
return SendRequest<IList<Department>>(globalContext.BBYWApiHost, "api/vender/GetDeparmentList", null, null, HttpMethod.Get); return SendRequest<IList<DepartmentResponse>>(globalContext.BBYWApiHost, "api/vender/GetDeparmentList", null, null, HttpMethod.Get);
} }

8
BBWY.Client/App.xaml.cs

@ -30,8 +30,12 @@ namespace BBWY.Client
var gl = new GlobalContext(); var gl = new GlobalContext();
string userToken = string.Empty; string userToken = string.Empty;
#if DEBUG #if DEBUG
userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA3NDY1MDMzNDIwODAwIiwidGVhbUlkIjoiMTQzNjI4ODUwMDIzNTI0MzUyMCIsImV4cCI6MTY4MjU3NzUzNn0.76Ll9syp3R21VD01NxpHmcs7TyBKzqeob3i5avpLv-E"; //齐越小一 userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDA1MTUxNjE5NTk0NTg4MTYwIiwidGVhbUlkIjoiMTQxMDk1NTYwNDYxMjA5MTkwNCIsImV4cCI6MTY4NjQ4MjU0M30.emnQNDcbqnuO2jH0Kgfk2Ui7crrwzRb986Sa511iS-U"; //齐越小一
//"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDUzOTA0NTczMjM5Mzk4NDAwIiwidGVhbUlkIjoiMTQzOTg5ODI2MDg3MjM2ODEyOCIsImV4cCI6MTY4MjQwODY1OH0.Po9-Dw_CgbAB7kjh7broLGIjOdsL2JifPtodNKClRIw";
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA1OTcyOTk3ODUzMTg0IiwidGVhbUlkIjoiMTQzOTkwNDA1MDc3NzY5MDExMiIsImV4cCI6MTY4NjQxODcyOH0.K7-MXjt_zfNK5v_08VjmCDnhAGF6SI7sEQr5sgDn7Jk"; //齐越珍珍
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTE0NjczMzA5NzQ5MjQ4IiwidGVhbUlkIjoiMTQ0ODY4MTU0NDE4ODE3MDI0MCIsImV4cCI6MTY4NjQ1OTY0Mn0.4yCbZxOtogD0N868-YgySR5A-16VNnrp8fC13VCRs20"; //齐越耐克
#else #else
var uid = e.Args.Count() > 0 ? e.Args.LastOrDefault(args => args.StartsWith("uid:")) : string.Empty; var uid = e.Args.Count() > 0 ? e.Args.LastOrDefault(args => args.StartsWith("uid:")) : string.Empty;
if (string.IsNullOrEmpty(uid)) if (string.IsNullOrEmpty(uid))

2
BBWY.Client/Models/APIModel/Response/Order/ExportOrderResponse.cs

@ -69,7 +69,7 @@ namespace BBWY.Client.Models
public override string ToString() public override string ToString()
{ {
//日期,店铺订单号,SKU编码,代发下单单号,售价,采购金额,头程费用,仓储服务费,快递费,平台扣点,补差金额,利润,利润率,收件人联系方式 //日期,店铺订单号,SKU编码,代发下单单号,售价,商品成本,头程费用,仓储服务费,快递费,平台扣点,补差金额,利润,利润率,收件人联系方式
return $"{OrderStartTime:yyyy-MM-dd HH:mm:ss},{OrderId},{SkuIds},{StorageType},{PurchaseOrderIds},{OrderTotalPrice},{PurchaseSkuAmount},{FirstFreight},{StorageAmount},{DeliveryExpressFreight},{PlatformCommissionAmount},{FreightPrice},{Profit},{ProfitRatio},{ConsigneeStr}"; return $"{OrderStartTime:yyyy-MM-dd HH:mm:ss},{OrderId},{SkuIds},{StorageType},{PurchaseOrderIds},{OrderTotalPrice},{PurchaseSkuAmount},{FirstFreight},{StorageAmount},{DeliveryExpressFreight},{PlatformCommissionAmount},{FreightPrice},{Profit},{ProfitRatio},{ConsigneeStr}";
} }
} }

9
BBWY.Client/Models/APIModel/Response/Shop/ShopResponse.cs

@ -30,4 +30,13 @@ namespace BBWY.Client.Models
public string TeamName { get; set; } public string TeamName { get; set; }
} }
public class DepartmentResponse
{
public string Id { get; set; }
public string Name { get; set; }
public IList<ShopResponse> ShopList { get; set; }
}
} }

7
BBWY.Client/Models/MappingProfile.cs

@ -18,15 +18,16 @@ namespace BBWY.Client.Models
.ForMember(t => t.TeamName, opt => opt.MapFrom(f => f.DepartmentName)) .ForMember(t => t.TeamName, opt => opt.MapFrom(f => f.DepartmentName))
.ForMember(t => t.Name, opt => opt.MapFrom(f => f.UserName)); .ForMember(t => t.Name, opt => opt.MapFrom(f => f.UserName));
CreateMap<ShopResponse, Shop>().ForMember(t => t.ShopId, opt => opt.MapFrom(f => f.ShopId)) CreateMap<ShopResponse, Shop>().ForMember(t => t.VenderType, opt => opt.MapFrom(f => f.ShopType))
.ForMember(t => t.Name, opt => opt.MapFrom(f => f.ShopName))
.ForMember(t => t.VenderType, opt => opt.MapFrom(f => f.ShopType))
.ForMember(t => t.Platform, opt => opt.MapFrom(f => f.PlatformId)) .ForMember(t => t.Platform, opt => opt.MapFrom(f => f.PlatformId))
.ForMember(t => t.PurchaseAccountList, opt => opt.MapFrom(f => f.PurchaseList)); .ForMember(t => t.PurchaseAccountList, opt => opt.MapFrom(f => f.PurchaseList));
CreateMap<PurchaseAccountResponse, PurchaseAccount>(); CreateMap<PurchaseAccountResponse, PurchaseAccount>();
CreateMap<DepartmentResponse, Department>();
CreateMap<PurchaseOrderResponse, PurchaseOrder>(); CreateMap<PurchaseOrderResponse, PurchaseOrder>();
CreateMap<ToDayOrderAchievementResponse, ToDayOrderAchievement>(); CreateMap<ToDayOrderAchievementResponse, ToDayOrderAchievement>();
} }
} }
} }

203
BBWY.Client/Models/Order/ManualEditCostOrderSku.cs

@ -0,0 +1,203 @@
using System;
namespace BBWY.Client.Models
{
public class ManualEditCostOrderSku : NotifyObject
{
/// <summary>
/// 发货运费
/// </summary>
private decimal deliveryExpressFreight;
private string deliveryExpressFreightStr;
/// <summary>
/// 单件成本
/// </summary>
private decimal unitCost;
/// <summary>
/// Sku成本(商品成本)
/// </summary>
private decimal skuAmount;
private string skuAmountStr;
/// <summary>
/// 采购运费
/// </summary>
private decimal purchaseFreight;
private string purchaseFreightStr;
/// <summary>
/// 头程运费
/// </summary>
private decimal firstFreight;
private string firstFreightStr;
/// <summary>
/// 操作费
/// </summary>
private decimal operationAmount;
private string operationAmountStr;
/// <summary>
/// 耗材费
/// </summary>
private decimal consumableAmount;
private string consumableAmountStr;
/// <summary>
/// 仓储费
/// </summary>
private decimal storageAmount;
private string storageAmountStr;
/// <summary>
/// 总计(不含发货运费)
/// </summary>
private decimal totalCost;
/// <summary>
/// SkuId
/// </summary>
public string Id { get; set; }
public int ItemTotal { get; set; }
public string ProductId { get; set; }
public string ProductItemNum { get; set; }
public double Price { get; set; }
/// <summary>
/// Sku标题
/// </summary>
public string Title { get; set; }
public string Logo { get; set; }
public decimal DeliveryExpressFreight
{
get => deliveryExpressFreight; set
{
if (Set(ref deliveryExpressFreight, value))
{
OnAmountChanged?.Invoke();
}
}
}
public decimal UnitCost { get => unitCost; set { Set(ref unitCost, value); } }
public decimal SkuAmount
{
get => skuAmount; set
{
if (Set(ref skuAmount, value))
{
CalculationCost();
}
}
}
public decimal PurchaseFreight { get => purchaseFreight; set { if (Set(ref purchaseFreight, value)) { CalculationCost(); } } }
public decimal FirstFreight { get => firstFreight; set { if (Set(ref firstFreight, value)) { CalculationCost(); } } }
public decimal OperationAmount { get => operationAmount; set { if (Set(ref operationAmount, value)) { CalculationCost(); } } }
public decimal ConsumableAmount { get => consumableAmount; set { if (Set(ref consumableAmount, value)) { CalculationCost(); } } }
public decimal StorageAmount { get => storageAmount; set { if (Set(ref storageAmount, value)) { CalculationCost(); } } }
public decimal TotalCost
{
get => totalCost; set
{
if (Set(ref totalCost, value))
{
OnAmountChanged?.Invoke();
}
}
}
private void CalculationCost()
{
TotalCost = SkuAmount + PurchaseFreight + FirstFreight + OperationAmount + ConsumableAmount + StorageAmount;
UnitCost = ItemTotal == 0 ? 0 : TotalCost / ItemTotal;
}
public Action OnAmountChanged { get; set; }
public string SkuAmountStr
{
get => skuAmountStr; set
{
if (Set(ref skuAmountStr, value))
{
if (decimal.TryParse(skuAmountStr, out decimal d))
SkuAmount = d;
}
}
}
public string PurchaseFreightStr
{
get => purchaseFreightStr; set
{
if (Set(ref purchaseFreightStr, value))
{
if (decimal.TryParse(purchaseFreightStr, out decimal d))
PurchaseFreight = d;
}
}
}
public string FirstFreightStr
{
get => firstFreightStr; set
{
if (Set(ref firstFreightStr, value))
{
if (decimal.TryParse(firstFreightStr, out decimal d))
FirstFreight = d;
}
}
}
public string ConsumableAmountStr
{
get => consumableAmountStr; set
{
if (Set(ref consumableAmountStr, value))
{
if (decimal.TryParse(consumableAmountStr, out decimal d))
ConsumableAmount = d;
}
}
}
public string StorageAmountStr
{
get => storageAmountStr; set
{
if (Set(ref storageAmountStr, value))
{
if (decimal.TryParse(storageAmountStr, out decimal d))
StorageAmount = d;
}
}
}
public string OperationAmountStr
{
get => operationAmountStr; set
{
if (Set(ref operationAmountStr, value))
{
if (decimal.TryParse(operationAmountStr, out decimal d))
OperationAmount = d;
}
}
}
public string DeliveryExpressFreightStr
{
get => deliveryExpressFreightStr; set
{
if (Set(ref deliveryExpressFreightStr, value))
{
if (decimal.TryParse(deliveryExpressFreightStr, out decimal d))
DeliveryExpressFreight = d;
}
}
}
}
}

5
BBWY.Client/Models/Order/Order.cs

@ -80,6 +80,11 @@ namespace BBWY.Client.Models
/// </summary> /// </summary>
public decimal FreightPrice { get; set; } public decimal FreightPrice { get; set; }
/// <summary>
/// 实收金额
/// </summary>
public decimal ActualAmount { get { return OrderSellerPrice + FreightPrice; } }
/// <summary> /// <summary>
/// 商家优惠金额 /// 商家优惠金额
/// </summary> /// </summary>

23
BBWY.Client/Models/Shop/Department.cs

@ -8,30 +8,11 @@ namespace BBWY.Client.Models
public string Name { get; set; } public string Name { get; set; }
public IList<SimpleShop> ShopList { get; set; } public IList<Shop> ShopList { get; set; }
public Department() public Department()
{ {
ShopList = new List<SimpleShop>(); ShopList = new List<Shop>();
}
}
public class SimpleShop : NotifyObject
{
private bool isSelected;
/// <summary>
/// ShopId
/// </summary>
public long Id { get; set; }
public string Name { get; set; }
public bool IsSelected { get => isSelected; set { Set(ref isSelected, value); } }
public override string ToString()
{
return Name;
} }
} }
} }

18
BBWY.Client/Models/Shop/Department2.cs

@ -1,18 +0,0 @@
using System.Collections.Generic;
namespace BBWY.Client.Models
{
public class Department2
{
public string Id { get; set; }
public string Name { get; set; }
public IList<Shop> ShopList { get; set; }
public Department2()
{
ShopList = new List<Shop>();
}
}
}

11
BBWY.Client/Models/Shop/Shop.cs

@ -4,8 +4,10 @@ namespace BBWY.Client.Models
{ {
public class Shop : NotifyObject public class Shop : NotifyObject
{ {
private string name; private bool isSelected;
private string shopName;
public bool IsSelected { get => isSelected; set { Set(ref isSelected, value); } }
/// <summary> /// <summary>
/// 店铺Id /// 店铺Id
/// </summary> /// </summary>
@ -27,7 +29,7 @@ namespace BBWY.Client.Models
public string AppToken { get; set; } public string AppToken { get; set; }
public string Name { get => name; set { Set(ref name, value); } } public string ShopName { get => shopName; set { Set(ref shopName, value); } }
public IList<PurchaseAccount> PurchaseAccountList { get; set; } public IList<PurchaseAccount> PurchaseAccountList { get; set; }
@ -40,5 +42,10 @@ namespace BBWY.Client.Models
public string TeamId { get; set; } public string TeamId { get; set; }
public string TeamName { get; set; } public string TeamName { get; set; }
public override string ToString()
{
return ShopName;
}
} }
} }

2
BBWY.Client/Models/User/User.cs

@ -24,6 +24,6 @@ namespace BBWY.Client.Models
public Shop Shop { get => shop; set { Set(ref shop, value); } } public Shop Shop { get => shop; set { Set(ref shop, value); } }
public IList<Department2> DepartmentList { get; set; } public IList<Department> DepartmentList { get; set; }
} }
} }

29
BBWY.Client/ViewModels/FinancialTerminal/ProcurementAuditViewModel.cs

@ -20,6 +20,7 @@ namespace BBWY.Client.ViewModels
{ {
public class ProcurementAuditViewModel : BaseVM, IDenpendency public class ProcurementAuditViewModel : BaseVM, IDenpendency
{ {
private GlobalContext globalContext;
private AuditFile selectAuditFile; private AuditFile selectAuditFile;
private bool isLoading; private bool isLoading;
private bool isAudited; private bool isAudited;
@ -138,8 +139,9 @@ namespace BBWY.Client.ViewModels
public ICommand ImportJDShopOrderCommand { get; set; } public ICommand ImportJDShopOrderCommand { get; set; }
public ProcurementAuditViewModel(ShopService shopService, PurchaseOrderService purchaseOrderService) public ProcurementAuditViewModel(ShopService shopService, PurchaseOrderService purchaseOrderService, GlobalContext globalContext)
{ {
this.globalContext = globalContext;
AuditFileList = new ObservableCollection<AuditFile>(); AuditFileList = new ObservableCollection<AuditFile>();
AuditCommand = new RelayCommand(Audit); AuditCommand = new RelayCommand(Audit);
ClearAuditCommand = new RelayCommand(ClearAudit); ClearAuditCommand = new RelayCommand(ClearAudit);
@ -166,22 +168,9 @@ namespace BBWY.Client.ViewModels
private void LoadDepartment() private void LoadDepartment()
{ {
Task.Factory.StartNew(() => shopService.GetDepartmentList()).ContinueWith(t => foreach (var d in globalContext.User.DepartmentList)
{ DepartmentList.Add(d);
var response = t.Result; SelectedDepartment = DepartmentList[0];
if (!response.Success)
{
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示"));
return;
}
App.Current.Dispatcher.Invoke(() =>
{
foreach (var d in response.Data)
DepartmentList.Add(d);
SelectedDepartment = DepartmentList[0];
});
});
} }
private void Audit() private void Audit()
@ -220,11 +209,11 @@ namespace BBWY.Client.ViewModels
} }
private void AuditByPayBill(EventWaitHandle ewh, IList<SimpleShop> shopList, DateTime startDate, DateTime endDate) private void AuditByPayBill(EventWaitHandle ewh, IList<Shop> shopList, DateTime startDate, DateTime endDate)
{ {
try try
{ {
var auditPurchaseOrderResponse = purchaseOrderService.GetAuditPurchaseOrderList(shopList.Select(s => s.Id).ToList(), startDate, endDate); var auditPurchaseOrderResponse = purchaseOrderService.GetAuditPurchaseOrderList(shopList.Select(s => s.ShopId).ToList(), startDate, endDate);
if (!auditPurchaseOrderResponse.Success) if (!auditPurchaseOrderResponse.Success)
throw new Exception($"获取采购单失败,{auditPurchaseOrderResponse.Msg}"); throw new Exception($"获取采购单失败,{auditPurchaseOrderResponse.Msg}");
@ -243,7 +232,7 @@ namespace BBWY.Client.ViewModels
payBill.RelationPurchaseOrderId = relationPurchaseOrder.PurchaseOrderId; payBill.RelationPurchaseOrderId = relationPurchaseOrder.PurchaseOrderId;
payBill.RelationShopOrderId = relationPurchaseOrder.OrderId; payBill.RelationShopOrderId = relationPurchaseOrder.OrderId;
payBill.BelongShopId = relationPurchaseOrder.ShopId; payBill.BelongShopId = relationPurchaseOrder.ShopId;
payBill.BelongShop = shopList.FirstOrDefault(s => s.Id == relationPurchaseOrder.ShopId)?.Name; payBill.BelongShop = shopList.FirstOrDefault(s => s.ShopId == relationPurchaseOrder.ShopId)?.ShopName;
#endregion #endregion
} }
} }

128
BBWY.Client/ViewModels/MainViewModel.cs

@ -24,11 +24,13 @@ namespace BBWY.Client.ViewModels
private IHttpClientFactory httpClientFactory; private IHttpClientFactory httpClientFactory;
private MdsApiService mdsApiService; private MdsApiService mdsApiService;
private LogisticsService logisticsService; private LogisticsService logisticsService;
private ShopService shopService;
private MenuModel selectedMenuModel; private MenuModel selectedMenuModel;
private bool showShopChoosePanel; private bool showShopChoosePanel;
private bool showWB2RuntimeDownloadPanel; private bool showWB2RuntimeDownloadPanel;
private double wb2DownloadProgress; private double wb2DownloadProgress;
private IList<string> managerDepartment;
private WebView2Manager w2m;
public GlobalContext GlobalContext { get; set; } public GlobalContext GlobalContext { get; set; }
public IList<MenuModel> MenuList { get; set; } public IList<MenuModel> MenuList { get; set; }
@ -78,11 +80,19 @@ namespace BBWY.Client.ViewModels
#endregion #endregion
#region Methods #region Methods
public MainViewModel(GlobalContext globalContext, MdsApiService mdsApiService, LogisticsService logisticsService, IHttpClientFactory httpClientFactory) public MainViewModel(GlobalContext globalContext,
MdsApiService mdsApiService,
LogisticsService logisticsService,
ShopService shopService,
IHttpClientFactory httpClientFactory,
WebView2Manager w2m)
{ {
this.w2m = w2m;
this.managerDepartment = new List<string>() { "董事办", "财务部", "技术部" };
this.httpClientFactory = httpClientFactory; this.httpClientFactory = httpClientFactory;
this.mdsApiService = mdsApiService; this.mdsApiService = mdsApiService;
this.logisticsService = logisticsService; this.logisticsService = logisticsService;
this.shopService = shopService;
ClosingCommand = new RelayCommand<System.ComponentModel.CancelEventArgs>(Exit); ClosingCommand = new RelayCommand<System.ComponentModel.CancelEventArgs>(Exit);
//ChooseShopCommand = new RelayCommand<Shop>((s) => ChooseShop(s)); //ChooseShopCommand = new RelayCommand<Shop>((s) => ChooseShop(s));
OpenSelectShopCommand = new RelayCommand(OpenSelectShop); OpenSelectShopCommand = new RelayCommand(OpenSelectShop);
@ -151,14 +161,7 @@ namespace BBWY.Client.ViewModels
GlobalContext.User = mdsUserResponse.Data.Map<User>(); GlobalContext.User = mdsUserResponse.Data.Map<User>();
#if RELEASE #if RELEASE
if (GlobalContext.User.TeamName == "财务部") if (!managerDepartment.Contains(GlobalContext.User.TeamName)) //非管理账号,屏蔽财务端
{
App.Current.Dispatcher.Invoke(() =>
{
for (var i = 0; i < 3; i++) { MenuList.RemoveAt(0); }
});
}
else
{ {
App.Current.Dispatcher.Invoke(() => App.Current.Dispatcher.Invoke(() =>
{ {
@ -167,22 +170,9 @@ namespace BBWY.Client.ViewModels
} }
#endif #endif
IList<Department> departmentList = null;
//请求用户信息接口 if (!managerDepartment.Contains(GlobalContext.User.TeamName))
//GlobalContext.User = new User()
//{
// Id = userId,
// Name = "ShanJ",
// Store = new Store()
// {
// Platform = Platform.京东,
// AppKey = "120EA9EC65AB017567D78CC1139EEEA5",
// AppSecret = "866a9877f5f24b03b537483b4defe75d",
// AppToken = "d8433fb2a4994484b5d9e5a5896a6dfdmyjj" //10388155
// }
//};
if (GlobalContext.User.TeamName != "财务部")
{ {
var shopListResponse = mdsApiService.GetShopsByUserTeam(GlobalContext.User.Id); var shopListResponse = mdsApiService.GetShopsByUserTeam(GlobalContext.User.Id);
if (!shopListResponse.Success) if (!shopListResponse.Success)
@ -194,44 +184,46 @@ namespace BBWY.Client.ViewModels
{ {
ShowShopChoosePanel = false; ShowShopChoosePanel = false;
ChooseShop(shopList[0], true); ChooseShop(shopList[0], true);
return;
} }
else else
{ {
ShowShopChoosePanel = true; ShowShopChoosePanel = true;
IList<Department2> department2s = new List<Department2>(); departmentList = new List<Department>();
foreach (var shop in shopList) foreach (var shop in shopList)
{ {
var department = department2s.FirstOrDefault(d => d.Id == shop.TeamId); var department = departmentList.FirstOrDefault(d => d.Id == shop.TeamId);
if (department == null) if (department == null)
{ {
department = new Department2() { Id = shop.TeamId, Name = shop.TeamName }; department = new Department() { Id = shop.TeamId, Name = shop.TeamName };
department2s.Add(department); departmentList.Add(department);
} }
department.ShopList.Add(shop); department.ShopList.Add(shop);
} }
GlobalContext.User.DepartmentList = department2s;
App.Current.Dispatcher.Invoke(() =>
{
var selectShop = new SelectShop(department2s);
if (selectShop.ShowDialog() == true)
{
ChooseShop(selectShop.Shop, true);
}
else
{
Environment.Exit(Environment.ExitCode);
}
});
//App.Current.Dispatcher.Invoke(() =>
//{
// foreach (var s in shopList)
// ShopList.Add(s);
//});
//ShowShopChoosePanel = true;
} }
} }
else
{
ShowShopChoosePanel = true;
var response = shopService.GetDepartmentList();
if (!response.Success)
throw new Exception(response.Msg);
departmentList = response.Data.Map<IList<Department>>();
}
GlobalContext.User.DepartmentList = departmentList;
App.Current.Dispatcher.Invoke(() =>
{
var selectShop = new SelectShop(departmentList);
if (selectShop.ShowDialog() == true)
{
ChooseShop(selectShop.Shop, true);
}
else
{
Environment.Exit(Environment.ExitCode);
}
});
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -245,19 +237,31 @@ namespace BBWY.Client.ViewModels
private void OpenSelectShop() private void OpenSelectShop()
{ {
var selectShop = new SelectShop(GlobalContext.User.DepartmentList); try
if (selectShop.ShowDialog() == true)
{ {
ChooseShop(selectShop.Shop, true); var selectShop = new SelectShop(GlobalContext.User.DepartmentList);
var vm = App.Current.Resources["Locator"] as ViewModelLocator; if (selectShop.ShowDialog() == true)
if (vm.IsCreateOrderList) {
vm.OrderList.Refresh(); ChooseShop(selectShop.Shop, true);
if (vm.IsCreateWareManager) var vm = App.Current.Resources["Locator"] as ViewModelLocator;
vm.WareManager.Refresh(); if (vm.IsCreateOrderList)
if (vm.IsCreateWareStock) vm.OrderList.Refresh();
vm.WareStock.Refresh(); if (vm.IsCreateWareManager)
} vm.WareManager.Refresh();
if (vm.IsCreateWareStock)
vm.WareStock.Refresh();
try
{
w2m.Close();
}
catch { }
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "切换失败");
}
} }
private void ChooseShop(Shop shop, bool _throw = false) private void ChooseShop(Shop shop, bool _throw = false)
@ -268,7 +272,7 @@ namespace BBWY.Client.ViewModels
string.IsNullOrEmpty(shop.AppToken) || string.IsNullOrEmpty(shop.AppToken) ||
(shop.Platform == Platform. && string.IsNullOrEmpty(shop.VenderType))) (shop.Platform == Platform. && string.IsNullOrEmpty(shop.VenderType)))
{ {
var error = $"{shop.Name} 店铺数据不完整"; var error = $"{shop.ShopName} 店铺数据不完整";
if (_throw) if (_throw)
throw new Exception(error); throw new Exception(error);
else else

52
BBWY.Client/ViewModels/Order/OrderListViewModel.cs

@ -313,7 +313,7 @@ namespace BBWY.Client.ViewModels
} }
else if (storageType == StorageType.SD) else if (storageType == StorageType.SD)
{ {
var sd = new SD(orderId, true, order.VenderRemark, order.Flag, string.Empty, null, string.Empty, string.Empty); var sd = new SD(orderId, true, order.VenderRemark, order.Flag, string.Empty, null, string.Empty, string.Empty, 0M, 0M);
sd.Closed += Sd_Closed; sd.Closed += Sd_Closed;
sd.ShowDialog(); sd.ShowDialog();
} }
@ -432,7 +432,7 @@ namespace BBWY.Client.ViewModels
} }
else if (order.StorageType == StorageType.SD) else if (order.StorageType == StorageType.SD)
{ {
var sd = new SD(order.Id, false, order.VenderRemark, order.Flag, order.SDKey, order.SDPayChannel, order.SDPayBillNo, order.SDOperator); var sd = new SD(order.Id, false, order.VenderRemark, order.Flag, order.SDKey, order.SDPayChannel, order.SDPayBillNo, order.SDOperator, order.OrderCost.SDCommissionAmount, order.OrderCost.DeliveryExpressFreight);
sd.Closed += Sd_Closed; sd.Closed += Sd_Closed;
sd.ShowDialog(); sd.ShowDialog();
} }
@ -475,7 +475,42 @@ namespace BBWY.Client.ViewModels
} }
else else
{ {
var manualCalculationCost = new ManualCalculationCost(orderId, isSetStorageType, storageType); var order = OrderList.FirstOrDefault(o => o.Id == orderId);
var orderSkuList = order.ItemList.Select(osku => new ManualEditCostOrderSku()
{
Id = osku.Id,
ItemTotal = osku.ItemTotal,
Logo = osku.Logo,
Price = osku.Price,
Title = osku.Title,
ProductId = osku.ProductId,
ProductItemNum = osku.ProductItemNum
}).ToList();
foreach (var manualEditCostOrderSku in orderSkuList)
{
var orderCostDetailList = order.OrderCostDetailGroupList?.FirstOrDefault(g => g.SkuId == manualEditCostOrderSku.Id)?.Items;
if (orderCostDetailList != null && orderCostDetailList.Count > 0)
{
manualEditCostOrderSku.ConsumableAmount = orderCostDetailList.Sum(ocd => ocd.ConsumableAmount);
manualEditCostOrderSku.DeliveryExpressFreight = orderCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight);
manualEditCostOrderSku.FirstFreight = orderCostDetailList.Sum(ocd => ocd.FirstFreight);
manualEditCostOrderSku.OperationAmount = orderCostDetailList.Sum(ocd => ocd.OperationAmount);
manualEditCostOrderSku.PurchaseFreight = orderCostDetailList.Sum(ocd => ocd.PurchaseFreight);
manualEditCostOrderSku.SkuAmount = orderCostDetailList.Sum(ocd => ocd.SkuAmount);
manualEditCostOrderSku.StorageAmount = orderCostDetailList.Sum(ocd => ocd.StorageAmount);
manualEditCostOrderSku.TotalCost = orderCostDetailList.Sum(ocd => ocd.TotalCost);
manualEditCostOrderSku.UnitCost = orderCostDetailList.FirstOrDefault().UnitCost;
}
manualEditCostOrderSku.ConsumableAmountStr = manualEditCostOrderSku.ConsumableAmount.ToString();
manualEditCostOrderSku.DeliveryExpressFreightStr = manualEditCostOrderSku.DeliveryExpressFreight.ToString();
manualEditCostOrderSku.FirstFreightStr = manualEditCostOrderSku.FirstFreight.ToString();
manualEditCostOrderSku.OperationAmountStr = manualEditCostOrderSku.OperationAmount.ToString();
manualEditCostOrderSku.PurchaseFreightStr = manualEditCostOrderSku.PurchaseFreight.ToString();
manualEditCostOrderSku.SkuAmountStr = manualEditCostOrderSku.SkuAmount.ToString();
manualEditCostOrderSku.StorageAmountStr = manualEditCostOrderSku.StorageAmount.ToString();
}
var manualCalculationCost = new ManualCalculationCost(orderId, isSetStorageType, storageType, orderSkuList);
manualCalculationCost.Closed += ManualCalculationCost_Closed; manualCalculationCost.Closed += ManualCalculationCost_Closed;
manualCalculationCost.ShowDialog(); manualCalculationCost.ShowDialog();
} }
@ -491,11 +526,14 @@ namespace BBWY.Client.ViewModels
var orderId = manualCalculationCost.OrderId; var orderId = manualCalculationCost.OrderId;
var storageType = manualCalculationCost.StorageType; var storageType = manualCalculationCost.StorageType;
var isSetStorageType = manualCalculationCost.IsSetStorageType; var isSetStorageType = manualCalculationCost.IsSetStorageType;
var purchaseCost = manualCalculationCost.PurchaseCost; var manualEditCostOrderSkuList = manualCalculationCost.ManualEditCostOrderSkuList;
var deliveryExpressFreight = manualCalculationCost.DeliveryExpressFreight;
IsLoading = true; IsLoading = true;
Task.Factory.StartNew(() => orderService.ManualCalculationCost(orderId, isSetStorageType, storageType, purchaseCost, deliveryExpressFreight, globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M)).ContinueWith(r => Task.Factory.StartNew(() => orderService.ManualCalculationCost(orderId,
isSetStorageType,
storageType,
manualEditCostOrderSkuList,
globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M)).ContinueWith(r =>
{ {
var response = r.Result; var response = r.Result;
if (!response.Success) if (!response.Success)
@ -631,7 +669,7 @@ namespace BBWY.Client.ViewModels
try try
{ {
var list = r.Data.Select(x => x.ToString()).ToList(); var list = r.Data.Select(x => x.ToString()).ToList();
list.Insert(0, "日期,店铺订单号,SKU编码,仓储类型,代发下单单号,售价,采购金额,头程费用,仓储服务费,快递费,平台扣点,补差金额,利润,利润率,收件人联系方式,售后类型,售后与特殊情况备注"); list.Insert(0, "日期,店铺订单号,SKU编码,仓储类型,代发下单单号,售价,商品成本,头程费用,仓储服务费,快递费,平台扣点,补差金额,利润,利润率,收件人联系方式,售后类型,售后与特殊情况备注");
System.IO.File.WriteAllLines(ssaveFileName, list, Encoding.UTF8); System.IO.File.WriteAllLines(ssaveFileName, list, Encoding.UTF8);
App.Current.Dispatcher.Invoke(() => MessageBox.Show("导出完成", "导出")); App.Current.Dispatcher.Invoke(() => MessageBox.Show("导出完成", "导出"));
} }

2
BBWY.Client/Views/FinancialTerminal/ProcurementAudit.xaml

@ -43,7 +43,7 @@
<hc:CheckComboBox.ItemTemplate> <hc:CheckComboBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<StackPanel Orientation="Horizontal" Margin="5,2.5"> <StackPanel Orientation="Horizontal" Margin="5,2.5">
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> <CheckBox Content="{Binding ShopName}" IsChecked="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel> </StackPanel>
</DataTemplate> </DataTemplate>
</hc:CheckComboBox.ItemTemplate> </hc:CheckComboBox.ItemTemplate>

6
BBWY.Client/Views/MainWindow.xaml

@ -9,7 +9,7 @@
DataContext="{Binding Main,Source={StaticResource Locator}}" DataContext="{Binding Main,Source={StaticResource Locator}}"
mc:Ignorable="d" mc:Ignorable="d"
Style="{StaticResource bwstyle}" Style="{StaticResource bwstyle}"
Title="{Binding GlobalContext.User.Shop.Name,StringFormat=步步为盈 \{0\}}" Height="450" Width="800"> Title="{Binding GlobalContext.User.Shop.ShopName,StringFormat=步步为盈 \{0\}}" Height="450" Width="800">
<b:Interaction.Triggers> <b:Interaction.Triggers>
<b:EventTrigger EventName="Closing"> <b:EventTrigger EventName="Closing">
<b:InvokeCommandAction Command="{Binding ClosingCommand}" PassEventArgsToCommand="True"/> <b:InvokeCommandAction Command="{Binding ClosingCommand}" PassEventArgsToCommand="True"/>
@ -25,8 +25,8 @@
<TextBlock Text="{Binding GlobalContext.User.Name}"/> <TextBlock Text="{Binding GlobalContext.User.Name}"/>
<!--<TextBlock Text="{Binding GlobalContext.User.TeamName}" Margin="5,0,0,0"/> <!--<TextBlock Text="{Binding GlobalContext.User.TeamName}" Margin="5,0,0,0"/>
<TextBlock Text="{Binding GlobalContext.User.Shop.Platform}" Margin="5,0,0,0"/>--> <TextBlock Text="{Binding GlobalContext.User.Shop.Platform}" Margin="5,0,0,0"/>-->
<TextBlock Text="{Binding GlobalContext.User.Shop.Name}" Margin="5,0,0,0"/> <TextBlock Text="{Binding GlobalContext.User.Shop.ShopName}" Margin="5,0,0,0"/>
<TextBlock Text="v10019" Margin="5,0,0,0"/> <TextBlock Text="v10023" Margin="5,0,0,0"/>
</StackPanel> </StackPanel>
</Border> </Border>
<Grid Grid.Row="1"> <Grid Grid.Row="1">

1
BBWY.Client/Views/Order/GrabJDMibole.xaml.cs

@ -42,6 +42,7 @@ namespace BBWY.Client.Views.Order
{ {
w2m = s.ServiceProvider.GetRequiredService<WebView2Manager>(); w2m = s.ServiceProvider.GetRequiredService<WebView2Manager>();
} }
w2m.Init();
grid.Children.Add(w2m.wb2); grid.Children.Add(w2m.wb2);
if (w2m.IsInitializationCompleted) if (w2m.IsInitializationCompleted)

151
BBWY.Client/Views/Order/ManualCalculationCost.xaml

@ -6,7 +6,7 @@
xmlns:local="clr-namespace:BBWY.Client.Views.Order" xmlns:local="clr-namespace:BBWY.Client.Views.Order"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls" xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
mc:Ignorable="d" mc:Ignorable="d"
Title="手动计算成本" Height="450" Width="300" Title="手动计算成本" Height="450" Width="1100"
Style="{StaticResource bwstyle}" Style="{StaticResource bwstyle}"
MinButtonVisibility="Collapsed" MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed"> MaxButtonVisibility="Collapsed">
@ -21,7 +21,140 @@
<TextBlock x:Name="txt_StorageType" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock x:Name="txt_StorageType" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border> </Border>
<Grid Grid.Row="1"> <DataGrid ItemsSource="{Binding ManualEditCostOrderSkuList}"
Grid.Row="1"
RowHeight="103">
<DataGrid.Columns>
<DataGridTemplateColumn Header="货品信息" Width="400">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox_orerSku}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<!--{Binding Logo}-->
<c:BAsyncImage UrlSource="{Binding Logo}"
Width="80" DecodePixelWidth="80"
VerticalAlignment="Top" Margin="0,5,0,0"/>
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="0,3,0,5">
<TextBlock TextWrapping="Wrap">
<Run Text="SKU名称:"/>
<Run Text="{Binding Title}"/>
</TextBlock>
<TextBlock TextWrapping="Wrap">
<Run Text="单价:"/>
<Run Text="{Binding Price}"/>
</TextBlock>
<TextBlock TextWrapping="Wrap">
<Run Text="数量:"/>
<Run Text="{Binding ItemTotal}"/>
</TextBlock>
<TextBlock>
<Run Text="SPU:" />
<Run Text="{Binding ProductId}"/>
</TextBlock>
<TextBlock>
<Run Text="SKU:" />
<Run Text="{Binding Id}"/>
</TextBlock>
<TextBlock>
<Run Text="货号:" />
<Run Text="{Binding ProductItemNum}"/>
</TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="数量" Width="50" Binding="{Binding ItemTotal}"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}"
ElementStyle="{StaticResource middleTextBlock}"/>
<DataGridTemplateColumn Header="商品成本" Width="70"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding SkuAmountStr,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="采购运费" Width="70"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding PurchaseFreightStr,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="头程运费" Width="70"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding FirstFreightStr,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="仓储费" Width="70"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding StorageAmountStr,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="操作费" Width="70"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding OperationAmountStr,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="耗材费" Width="70"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding ConsumableAmountStr,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="销售运费" Width="70"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding DeliveryExpressFreightStr,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="单件成本" Width="70"
HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding UnitCost,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="*" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.Header>
<StackPanel>
<TextBlock Text="总采购成本" HorizontalAlignment="Center"/>
<TextBlock Text="(不含销售运费)" HorizontalAlignment="Center"/>
</StackPanel>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<c:BTextBox Text="{Binding TotalCost,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="5,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<!--<Grid Grid.Row="1" Visibility="Collapsed">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="10"/> <RowDefinition Height="10"/>
<RowDefinition Height="40"/> <RowDefinition Height="40"/>
@ -68,9 +201,19 @@
<c:BButton x:Name="btn_fillFromLately" Content="填入最近一次信息" Grid.Row="9" Grid.ColumnSpan="2" Width="120" <c:BButton x:Name="btn_fillFromLately" Content="填入最近一次信息" Grid.Row="9" Grid.ColumnSpan="2" Width="120"
Click="btn_fillFromLately_Click"/> Click="btn_fillFromLately_Click"/>
</Grid> </Grid>-->
<StackPanel Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Right" Margin="0,0,8,0">
<TextBlock Text="销售运费总计" VerticalAlignment="Center"/>
<TextBlock x:Name="txtTotalDeliveryExpressFreight" Text="100" VerticalAlignment="Center" Margin="2,0" Foreground="#EC808D"/>
<TextBlock Text="元" VerticalAlignment="Center"/>
<TextBlock Text="采购成本总计" VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock x:Name="txtTotalCost" Text="100" VerticalAlignment="Center" Margin="2,0" Foreground="#EC808D"/>
<TextBlock Text="元" VerticalAlignment="Center"/>
<c:BButton x:Name="btn_Save" Content="保存" Grid.Row="2" Width="60" HorizontalAlignment="Right" Margin="0,0,8,0" <c:BButton x:Name="btn_Save" Content="保存" Width="60" Margin="10,0,0,0"
Click="btn_Save_Click"/> Click="btn_Save_Click"/>
</StackPanel>
</Grid> </Grid>
</c:BWindow> </c:BWindow>

56
BBWY.Client/Views/Order/ManualCalculationCost.xaml.cs

@ -1,5 +1,7 @@
using BBWY.Client.Models; using BBWY.Client.Models;
using BBWY.Controls; using BBWY.Controls;
using System.Collections.Generic;
using System.Linq;
using System.Windows; using System.Windows;
namespace BBWY.Client.Views.Order namespace BBWY.Client.Views.Order
@ -15,13 +17,20 @@ namespace BBWY.Client.Views.Order
public StorageType StorageType { get; private set; } public StorageType StorageType { get; private set; }
public decimal PurchaseCost { get; private set; } public List<ManualEditCostOrderSku> ManualEditCostOrderSkuList { get; set; }
public decimal DeliveryExpressFreight { get; private set; } public ManualCalculationCost(string orderId, bool isSetStorageType, StorageType storageType, IList<ManualEditCostOrderSku> manualEditCostOrderSkuList)
public ManualCalculationCost(string orderId, bool isSetStorageType, StorageType storageType)
{ {
InitializeComponent(); InitializeComponent();
this.DataContext = this;
ManualEditCostOrderSkuList = new List<ManualEditCostOrderSku>();
ManualEditCostOrderSkuList.AddRange(manualEditCostOrderSkuList);
foreach (var manualEditCostOrderSku in ManualEditCostOrderSkuList)
manualEditCostOrderSku.OnAmountChanged = () =>
{
txtTotalCost.Text = ManualEditCostOrderSkuList.Sum(osku => osku.TotalCost).ToString();
txtTotalDeliveryExpressFreight.Text = ManualEditCostOrderSkuList.Sum(osku => osku.DeliveryExpressFreight).ToString();
};
this.OrderId = orderId; this.OrderId = orderId;
this.IsSetStorageType = isSetStorageType; this.IsSetStorageType = isSetStorageType;
this.StorageType = storageType; this.StorageType = storageType;
@ -32,11 +41,14 @@ namespace BBWY.Client.Views.Order
{ {
txt_StorageType.Text = $"{this.StorageType}-手动计算成本"; txt_StorageType.Text = $"{this.StorageType}-手动计算成本";
if (StorageType != StorageType. && StorageType != StorageType.) //if (StorageType != StorageType.云仓 && StorageType != StorageType.京仓)
{ //{
txtFirstFreight.Visibility = Visibility.Collapsed; // txtFirstFreight.Visibility = Visibility.Collapsed;
this.Height = 290; // this.Height = 290;
} //}
txtTotalCost.Text = ManualEditCostOrderSkuList.Sum(osku => osku.TotalCost).ToString();
txtTotalDeliveryExpressFreight.Text = ManualEditCostOrderSkuList.Sum(osku => osku.DeliveryExpressFreight).ToString();
} }
private void btn_fillFromLately_Click(object sender, System.Windows.RoutedEventArgs e) private void btn_fillFromLately_Click(object sender, System.Windows.RoutedEventArgs e)
@ -46,22 +58,22 @@ namespace BBWY.Client.Views.Order
private void btn_Save_Click(object sender, System.Windows.RoutedEventArgs e) private void btn_Save_Click(object sender, System.Windows.RoutedEventArgs e)
{ {
if (!decimal.TryParse(txtSkuAmount.Text, out decimal skuAmount) || //if (!decimal.TryParse(txtSkuAmount.Text, out decimal skuAmount) ||
!decimal.TryParse(txtFeright.Text, out decimal feright) || // !decimal.TryParse(txtFeright.Text, out decimal feright) ||
!decimal.TryParse(txtDeliveryExpressFreight.Text, out decimal deliveryExpressFreight)) // !decimal.TryParse(txtDeliveryExpressFreight.Text, out decimal deliveryExpressFreight))
{ //{
MessageBox.Show("请填写完整信息", "手动编辑成本"); // MessageBox.Show("请填写完整信息", "手动编辑成本");
return; // return;
} //}
decimal.TryParse(txtFirstFreight.Text, out decimal firstFreight); //decimal.TryParse(txtFirstFreight.Text, out decimal firstFreight);
decimal.TryParse(txtOperationAmount.Text, out decimal operationAmount); //decimal.TryParse(txtOperationAmount.Text, out decimal operationAmount);
decimal.TryParse(txtConsumableAmount.Text, out decimal consumableAmount); //decimal.TryParse(txtConsumableAmount.Text, out decimal consumableAmount);
decimal.TryParse(txtStorageAmount.Text, out decimal storageAmount); //decimal.TryParse(txtStorageAmount.Text, out decimal storageAmount);
this.PurchaseCost = skuAmount + feright + firstFreight + operationAmount + consumableAmount + storageAmount; //this.PurchaseCost = skuAmount + feright + firstFreight + operationAmount + consumableAmount + storageAmount;
this.DeliveryExpressFreight = deliveryExpressFreight; //this.DeliveryExpressFreight = deliveryExpressFreight;
this.DialogResult = true; this.DialogResult = true;
this.Close(); this.Close();
} }

41
BBWY.Client/Views/Order/OrderList.xaml

@ -482,7 +482,7 @@
CommandParameter="{Binding OrderDropShipping.PurchaseOrderId}"/> CommandParameter="{Binding OrderDropShipping.PurchaseOrderId}"/>
</StackPanel> </StackPanel>
<TextBlock> <TextBlock>
<Run Text="采购金额"/> <Run Text="采购成本"/>
<Run Text="{Binding OrderDropShipping.PurchaseAmount}"/> <Run Text="{Binding OrderDropShipping.PurchaseAmount}"/>
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
@ -495,10 +495,30 @@
<StackPanel Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,0,10"> <StackPanel Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,0,10">
<TextBlock> <StackPanel Orientation="Horizontal">
<Run Text="实收金额"/> <TextBlock>
<Run Text="{Binding OrderSellerPrice}"/> <Run Text="实收金额"/>
</TextBlock> <Run Text="{Binding ActualAmount,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"/>
</TextBlock>
<Path Style="{StaticResource path_question}" Width="14" Margin="5,0,0,0" Fill="#EC808D" ToolTipService.InitialShowDelay="0">
<Path.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<StackPanel>
<TextBlock>
<Run Text="货款金额"/>
<Run Text="{Binding OrderSellerPrice}"/>
</TextBlock>
<TextBlock>
<Run Text="用户支付运费"/>
<Run Text="{Binding FreightPrice}"/>
</TextBlock>
</StackPanel>
</ToolTip>
</Path.ToolTip>
</Path>
</StackPanel>
<StackPanel x:Name="sp_orderCoupon" Orientation="Horizontal"> <StackPanel x:Name="sp_orderCoupon" Orientation="Horizontal">
<TextBlock> <TextBlock>
@ -510,12 +530,12 @@
<Path.ToolTip> <Path.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}"> <ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<ListBox ItemsSource="{Binding OrderCouponList}" <ListBox ItemsSource="{Binding OrderCouponList}"
Style="{StaticResource NoScrollViewListBoxStyle}"> Style="{StaticResource NoScrollViewListBoxStyle}" Foreground="{StaticResource Text.Color}">
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<TextBlock> <TextBlock>
<Run Text="{Binding CouponType}"/> <Run Text="{Binding CouponType}"/>
<Run Text="{Binding CouponPrice,StringFormat=¥{0}}"/> <Run Text="{Binding CouponPrice,StringFormat=¥{0}}"/>
</TextBlock> </TextBlock>
</DataTemplate> </DataTemplate>
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
@ -527,7 +547,7 @@
<StackPanel x:Name="sp_purchaseAmount" Orientation="Horizontal"> <StackPanel x:Name="sp_purchaseAmount" Orientation="Horizontal">
<TextBlock> <TextBlock>
<Run Text="采购金额"/> <Run Text="采购成本"/>
<Run Text="{Binding OrderCost.PurchaseAmount}"/> <Run Text="{Binding OrderCost.PurchaseAmount}"/>
</TextBlock> </TextBlock>
@ -550,7 +570,8 @@
<ListBox Grid.Row="1" <ListBox Grid.Row="1"
ItemsSource="{Binding OrderCostDetailGroupList}" ItemsSource="{Binding OrderCostDetailGroupList}"
Style="{StaticResource NoScrollViewListBoxStyle}" Style="{StaticResource NoScrollViewListBoxStyle}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"> ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
Foreground="{StaticResource Text.Color}">
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid> <Grid>

2
BBWY.Client/Views/Order/RelationPurchaseOrder.xaml

@ -138,7 +138,7 @@
<StackPanel Orientation="Horizontal" Grid.Row="3" HorizontalAlignment="Right"> <StackPanel Orientation="Horizontal" Grid.Row="3" HorizontalAlignment="Right">
<TextBlock VerticalAlignment="Center" Margin="0,0,8,0"> <TextBlock VerticalAlignment="Center" Margin="0,0,8,0">
<Run Text="总计"/> <Run Text="总计"/>
<Run Text="{Binding OrderDropShipping.PurchaseAmount}"/> <Run Text="{Binding OrderDropShipping.PurchaseAmount}" Foreground="#EC808D"/>
<Run Text="元"/> <Run Text="元"/>
</TextBlock> </TextBlock>
<c:BButton x:Name="btn_Save" Content="保存" Width="60" Margin="0,0,8,0" <c:BButton x:Name="btn_Save" Content="保存" Width="60" Margin="0,0,8,0"

6
BBWY.Client/Views/Order/SD.xaml.cs

@ -34,7 +34,7 @@ namespace BBWY.Client.Views.Order
public string SdOperator { get; set; } public string SdOperator { get; set; }
public SD(string orderId, bool isSetStorageType, string venderRemark, string flag, string sdKey, PayBillType? payChannel, string sdPayBillNo, string sdOperator) public SD(string orderId, bool isSetStorageType, string venderRemark, string flag, string sdKey, PayBillType? payChannel, string sdPayBillNo, string sdOperator, decimal sdCommissionAmount, decimal deliveryExpressFreight)
{ {
InitializeComponent(); InitializeComponent();
this.OrderId = orderId; this.OrderId = orderId;
@ -45,6 +45,8 @@ namespace BBWY.Client.Views.Order
this.PayChannel = payChannel; this.PayChannel = payChannel;
this.SdPayBillNo = sdPayBillNo; this.SdPayBillNo = sdPayBillNo;
this.SdOperator = sdOperator; this.SdOperator = sdOperator;
this.SDCommissionAmount = sdCommissionAmount;
this.DeliveryExpressFreight = deliveryExpressFreight;
} }
private void BWindow_Loaded(object sender, RoutedEventArgs e) private void BWindow_Loaded(object sender, RoutedEventArgs e)
{ {
@ -67,6 +69,8 @@ namespace BBWY.Client.Views.Order
this.cbx_SDPayChannel.SelectedItem = PayChannel; this.cbx_SDPayChannel.SelectedItem = PayChannel;
this.txt_SDPayBillNo.Text = SdPayBillNo; this.txt_SDPayBillNo.Text = SdPayBillNo;
this.txt_SDOperator.Text = SdOperator; this.txt_SDOperator.Text = SdOperator;
this.txtDeliveryExpressFreight.Text = DeliveryExpressFreight.ToString();
this.txtSDCommissionAmount.Text = SDCommissionAmount.ToString();
} }
private void btn_Save_Click(object sender, RoutedEventArgs e) private void btn_Save_Click(object sender, RoutedEventArgs e)

2
BBWY.Client/Views/SelectShop.xaml

@ -46,7 +46,7 @@
<ComboBox x:Name="cbx_shop" Width="150" Height="25" <ComboBox x:Name="cbx_shop" Width="150" Height="25"
SelectedIndex="0" SelectedIndex="0"
HorizontalAlignment="Left" VerticalContentAlignment="Center" HorizontalAlignment="Left" VerticalContentAlignment="Center"
DisplayMemberPath="Name" DisplayMemberPath="ShopName"
Grid.Column="1" Grid.Row="1" Margin="5,5,0,5"/> Grid.Column="1" Grid.Row="1" Margin="5,5,0,5"/>
</Grid> </Grid>

9
BBWY.Client/Views/SelectShop.xaml.cs

@ -19,10 +19,10 @@ namespace BBWY.Client.Views
/// </summary> /// </summary>
public partial class SelectShop : BWindow public partial class SelectShop : BWindow
{ {
public IList<Department2> DepartmentList { get; set; } public IList<Department> DepartmentList { get; set; }
public Shop Shop { get; set; } public Shop Shop { get; set; }
public SelectShop(IList<Department2> departmentList) public SelectShop(IList<Department> departmentList)
{ {
InitializeComponent(); InitializeComponent();
this.DepartmentList = departmentList; this.DepartmentList = departmentList;
@ -31,7 +31,7 @@ namespace BBWY.Client.Views
private void SelectShop_Loaded(object sender, RoutedEventArgs e) private void SelectShop_Loaded(object sender, RoutedEventArgs e)
{ {
var d = cbx_department.SelectedItem as Department2; var d = cbx_department.SelectedItem as Department;
cbx_shop.ItemsSource = d.ShopList; cbx_shop.ItemsSource = d.ShopList;
} }
@ -45,8 +45,9 @@ namespace BBWY.Client.Views
private void cbx_department_SelectionChanged(object sender, SelectionChangedEventArgs e) private void cbx_department_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
var d = cbx_department.SelectedItem as Department2; var d = cbx_department.SelectedItem as Department;
cbx_shop.ItemsSource = d.ShopList; cbx_shop.ItemsSource = d.ShopList;
cbx_shop.SelectedIndex = 0;
} }
} }
} }

29
BBWY.Client/WebView2Manager.cs

@ -11,22 +11,27 @@ namespace BBWY.Client
public class WebView2Manager : IDenpendency public class WebView2Manager : IDenpendency
{ {
public WebView2 wb2 { get; private set; } public WebView2 wb2 { get; private set; }
private bool isInitializationCompleted; //public WebView2Manager()
//{
public WebView2Manager() // Init();
//}
public void Init()
{ {
wb2 = new WebView2(); if (wb2 == null)
var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WebView2UserData")).Result; {
wb2.EnsureCoreWebView2Async(wb2Setting); wb2 = new WebView2();
wb2.CoreWebView2InitializationCompleted += Wb2_CoreWebView2InitializationCompleted; var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WebView2UserData")).Result;
wb2.NavigationCompleted += Wb2_NavigationCompleted; wb2.EnsureCoreWebView2Async(wb2Setting);
wb2.WebMessageReceived += Wb2_WebMessageReceived; wb2.CoreWebView2InitializationCompleted += Wb2_CoreWebView2InitializationCompleted;
wb2.NavigationCompleted += Wb2_NavigationCompleted;
wb2.WebMessageReceived += Wb2_WebMessageReceived;
}
} }
public Action<CoreWebView2WebMessageReceivedEventArgs> OnWebMessageReceived; public Action<CoreWebView2WebMessageReceivedEventArgs> OnWebMessageReceived;
public Action<CoreWebView2NavigationCompletedEventArgs> OnNavigationCompleted; public Action<CoreWebView2NavigationCompletedEventArgs> OnNavigationCompleted;
public Action<CoreWebView2InitializationCompletedEventArgs> CoreWebView2InitializationCompleted; public Action<CoreWebView2InitializationCompletedEventArgs> CoreWebView2InitializationCompleted;
public bool IsInitializationCompleted { get => isInitializationCompleted; } public bool IsInitializationCompleted { get ; private set; }
private void Wb2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e) private void Wb2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
{ {
@ -41,18 +46,20 @@ namespace BBWY.Client
private void Wb2_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e) private void Wb2_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
{ {
CoreWebView2InitializationCompleted?.Invoke(e); CoreWebView2InitializationCompleted?.Invoke(e);
isInitializationCompleted = true; IsInitializationCompleted = true;
} }
public void Close() public void Close()
{ {
if (wb2 != null && wb2.CoreWebView2 != null) if (wb2 != null && wb2.CoreWebView2 != null)
{ {
IsInitializationCompleted = false;
wb2.CoreWebView2InitializationCompleted -= Wb2_CoreWebView2InitializationCompleted; wb2.CoreWebView2InitializationCompleted -= Wb2_CoreWebView2InitializationCompleted;
wb2.NavigationCompleted -= Wb2_NavigationCompleted; wb2.NavigationCompleted -= Wb2_NavigationCompleted;
wb2.WebMessageReceived -= Wb2_WebMessageReceived; wb2.WebMessageReceived -= Wb2_WebMessageReceived;
var udf = wb2.CoreWebView2.Environment.UserDataFolder; var udf = wb2.CoreWebView2.Environment.UserDataFolder;
wb2.Dispose(); wb2.Dispose();
wb2 = null;
try try
{ {
io.Directory.Delete(udf, true); io.Directory.Delete(udf, true);

8
BBWY.Server.Business/MDSBusiness.cs

@ -42,10 +42,10 @@ namespace BBWY.Server.Business
AppKey = shopJToken.Value<string>("AppKey"), AppKey = shopJToken.Value<string>("AppKey"),
AppSecret = shopJToken.Value<string>("AppSecret"), AppSecret = shopJToken.Value<string>("AppSecret"),
AppToken = shopJToken.Value<string>("AppToken"), AppToken = shopJToken.Value<string>("AppToken"),
Platform = (Enums.Platform)shopJToken.Value<int>("PlatformId"), PlatformId = (Enums.Platform)shopJToken.Value<int>("PlatformId"),
VenderType = shopJToken.Value<string>("ShopType"), ShopType = shopJToken.Value<string>("ShopType"),
ShopId = shopId, ShopId = shopId.ToString(),
Name = shopJToken.Value<string>("ShopName"), ShopName = shopJToken.Value<string>("ShopName"),
ManagePwd = shopJToken.Value<string>("ManagePwd") ManagePwd = shopJToken.Value<string>("ManagePwd")
}; };
try { shopResponse.PlatformCommissionRatio = shopJToken.Value<decimal?>("PlatformCommissionRatio"); } try { shopResponse.PlatformCommissionRatio = shopJToken.Value<decimal?>("PlatformCommissionRatio"); }

65
BBWY.Server.Business/Order/OrderBusiness.cs

@ -167,7 +167,7 @@ namespace BBWY.Server.Business
#endregion #endregion
#region 处理订单成本明细 #region 处理订单成本明细
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId)).ToList().Map<IList<OrderCostDetailResponse>>(); var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList().Map<IList<OrderCostDetailResponse>>();
foreach (var order in orderList) foreach (var order in orderList)
order.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList(); order.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList();
#endregion #endregion
@ -242,13 +242,14 @@ namespace BBWY.Server.Business
var orderIdList = orderSourceList.Select(o => o.OrderId).ToList(); var orderIdList = orderSourceList.Select(o => o.OrderId).ToList();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList(); var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList();
var orderCostDetailGroup = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId)).GroupBy(ocd => ocd.OrderId).ToList(g => new var orderCostDetailGroup = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true)
{ .GroupBy(ocd => ocd.OrderId).ToList(g => new
OrderId = g.Key, {
SkuAmount = g.Sum(g.Value.SkuAmount), OrderId = g.Key,
FirstFreight = g.Sum(g.Value.FirstFreight), SkuAmount = g.Sum(g.Value.SkuAmount),
StorageAmount = g.Sum(g.Value.StorageAmount) FirstFreight = g.Sum(g.Value.FirstFreight),
}); StorageAmount = g.Sum(g.Value.StorageAmount)
});
foreach (var order in orderSourceList) foreach (var order in orderSourceList)
{ {
@ -333,7 +334,7 @@ namespace BBWY.Server.Business
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == orderId).ToList().Map<IList<OrderSkuResponse>>(); var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == orderId).ToList().Map<IList<OrderSkuResponse>>();
var orderCouponList = fsql.Select<OrderCoupon>().Where(oc => oc.OrderId == orderId).ToList().Map<IList<OrderCouponResponse>>(); var orderCouponList = fsql.Select<OrderCoupon>().Where(oc => oc.OrderId == orderId).ToList().Map<IList<OrderCouponResponse>>();
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == orderId).ToList().Map<IList<OrderCostDetailResponse>>(); var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == orderId && ocd.IsEnabled == true).ToList().Map<IList<OrderCostDetailResponse>>();
orderResponse.ItemList = orderSkuList; orderResponse.ItemList = orderSkuList;
orderResponse.OrderCouponList = orderCouponList; orderResponse.OrderCouponList = orderCouponList;
@ -415,7 +416,7 @@ namespace BBWY.Server.Business
throw new BusinessException("库存为零不能自动计算成本"); throw new BusinessException("库存为零不能自动计算成本");
var orderCost = fsql.Select<OrderCost>(autoCalculationCostRequest.OrderId).ToOne(); var orderCost = fsql.Select<OrderCost>(autoCalculationCostRequest.OrderId).ToOne();
var orderCostDetails = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == autoCalculationCostRequest.OrderId).ToList(); var orderCostDetails = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == autoCalculationCostRequest.OrderId && ocd.IsEnabled == true).ToList();
IUpdate<Order> orderUpdate = null; IUpdate<Order> orderUpdate = null;
IUpdate<OrderCost> updateOrderCost = null; IUpdate<OrderCost> updateOrderCost = null;
@ -558,13 +559,35 @@ namespace BBWY.Server.Business
var dbOrder = fsql.Select<Order>(manualCalculationCostRequest.OrderId).ToOne(); var dbOrder = fsql.Select<Order>(manualCalculationCostRequest.OrderId).ToOne();
if (dbOrder == null) if (dbOrder == null)
throw new BusinessException($"订单号{manualCalculationCostRequest.OrderId}不存在"); throw new BusinessException($"订单号{manualCalculationCostRequest.OrderId}不存在");
if (manualCalculationCostRequest.OrderCostDetailList == null || manualCalculationCostRequest.OrderCostDetailList.Count() == 0)
throw new BusinessException($"缺少明细信息");
IUpdate<Order> orderUpdate = null; IUpdate<Order> orderUpdate = null;
IUpdate<OrderCost> updateOrderCost = null; IUpdate<OrderCost> updateOrderCost = null;
IInsert<OrderCost> insertOrderCost = null; IInsert<OrderCost> insertOrderCost = null;
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>();
if (manualCalculationCostRequest.IsSetStorageType) if (manualCalculationCostRequest.IsSetStorageType)
orderUpdate = fsql.Update<Order>(manualCalculationCostRequest.OrderId).Set(o => o.StorageType, manualCalculationCostRequest.StorageType); orderUpdate = fsql.Update<Order>(manualCalculationCostRequest.OrderId).Set(o => o.StorageType, manualCalculationCostRequest.StorageType);
insertOrderCostDetailList.AddRange(manualCalculationCostRequest.OrderCostDetailList.Map<IList<OrderCostDetail>>());
foreach (var orderCostDetail in insertOrderCostDetailList)
{
orderCostDetail.Id = idGenerator.NewLong();
orderCostDetail.CreateTime = DateTime.Now;
orderCostDetail.OrderId = manualCalculationCostRequest.OrderId;
orderCostDetail.PurchaseOrderPKId = 0;
//orderCostDetail.TotalCost = orderCostDetail.SkuAmount +
// orderCostDetail.PurchaseFreight +
// orderCostDetail.FirstFreight +
// orderCostDetail.StorageAmount +
// orderCostDetail.ConsumableAmount +
// orderCostDetail.OperationAmount;
//orderCostDetail.UnitCost = orderCostDetail.TotalCost / orderCostDetail.DeductionQuantity;
}
var totalPurchaseCost = insertOrderCostDetailList.Sum(ocd => ocd.TotalCost);
var totalDeliveryExpressFreight = insertOrderCostDetailList.Sum(ocd => ocd.DeliveryExpressFreight);
var orderCost = fsql.Select<OrderCost>(manualCalculationCostRequest.OrderId).ToOne(); var orderCost = fsql.Select<OrderCost>(manualCalculationCostRequest.OrderId).ToOne();
if (orderCost == null) if (orderCost == null)
@ -577,8 +600,8 @@ namespace BBWY.Server.Business
PlatformCommissionRatio = manualCalculationCostRequest.PlatformCommissionRatio, PlatformCommissionRatio = manualCalculationCostRequest.PlatformCommissionRatio,
PreferentialAmount = dbOrder.PreferentialAmount, PreferentialAmount = dbOrder.PreferentialAmount,
Profit = 0, Profit = 0,
PurchaseAmount = manualCalculationCostRequest.PurchaseCost, PurchaseAmount = totalPurchaseCost,
DeliveryExpressFreight = manualCalculationCostRequest.DeliveryExpressFreight, DeliveryExpressFreight = totalDeliveryExpressFreight,
CreateTime = DateTime.Now, CreateTime = DateTime.Now,
IsManualEdited = true IsManualEdited = true
}; };
@ -592,8 +615,8 @@ namespace BBWY.Server.Business
} }
else else
{ {
orderCost.PurchaseAmount = manualCalculationCostRequest.PurchaseCost; orderCost.PurchaseAmount = totalPurchaseCost;
orderCost.DeliveryExpressFreight = manualCalculationCostRequest.DeliveryExpressFreight; orderCost.DeliveryExpressFreight = totalDeliveryExpressFreight;
orderCost.Profit = dbOrder.OrderSellerPrice + orderCost.Profit = dbOrder.OrderSellerPrice +
dbOrder.FreightPrice - dbOrder.FreightPrice -
orderCost.PurchaseAmount - orderCost.PurchaseAmount -
@ -605,9 +628,11 @@ namespace BBWY.Server.Business
fsql.Transaction(() => fsql.Transaction(() =>
{ {
fsql.Update<OrderCostDetail>().Set(ocd => ocd.IsEnabled, false).Where(ocd => ocd.OrderId == manualCalculationCostRequest.OrderId).ExecuteAffrows();
orderUpdate?.ExecuteAffrows(); orderUpdate?.ExecuteAffrows();
insertOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows();
updateOrderCost?.ExecuteAffrows(); updateOrderCost?.ExecuteAffrows();
fsql.Insert(insertOrderCostDetailList).ExecuteAffrows();
}); });
} }
@ -913,10 +938,10 @@ namespace BBWY.Server.Business
var shop = mdsBusiness.GetShopInfoByShopId(shopId); var shop = mdsBusiness.GetShopInfoByShopId(shopId);
try try
{ {
if (!syncOrderMethodDic.ContainsKey(shop.Platform)) if (!syncOrderMethodDic.ContainsKey(shop.PlatformId))
throw new Exception("不支持的平台"); throw new Exception("不支持的平台");
var relayAPIHost = GetPlatformRelayAPIHost(shop.Platform); var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var orderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetOrderList", new SearchPlatformOrderRequest() var orderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetOrderList", new SearchPlatformOrderRequest()
{ {
StartDate = startTime ?? DateTime.Now.AddHours(-3), StartDate = startTime ?? DateTime.Now.AddHours(-3),
@ -926,8 +951,8 @@ namespace BBWY.Server.Business
AppToken = shop.AppToken, AppToken = shop.AppToken,
PageIndex = 1, PageIndex = 1,
PageSize = 100, PageSize = 100,
Platform = shop.Platform, Platform = shop.PlatformId,
JDColType = string.IsNullOrEmpty(shop.VenderType) ? "0" : shop.VenderType, JDColType = string.IsNullOrEmpty(shop.ShopType) ? "0" : shop.ShopType,
SaveResponseLog = true, SaveResponseLog = true,
OrderId = orderId OrderId = orderId
}, null, HttpMethod.Post); }, null, HttpMethod.Post);
@ -941,7 +966,7 @@ namespace BBWY.Server.Business
if (orderListResponse.Data == null || orderListResponse.Data.Count == 0) if (orderListResponse.Data == null || orderListResponse.Data.Count == 0)
return; return;
syncOrderMethodDic[shop.Platform](orderListResponse.Data, shopId, relayAPIHost, shop.AppKey, shop.AppSecret, shop.AppToken, shop.PlatformCommissionRatio ?? 0.05M); syncOrderMethodDic[shop.PlatformId](orderListResponse.Data, shopId, relayAPIHost, shop.AppKey, shop.AppSecret, shop.AppToken, shop.PlatformCommissionRatio ?? 0.05M);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -1029,7 +1054,7 @@ namespace BBWY.Server.Business
if (interfaceCanceledOrderIdList.Count() > 0 && if (interfaceCanceledOrderIdList.Count() > 0 &&
dbOrderList.Any(dbOrder => interfaceCanceledOrderIdList.Contains(dbOrder.Id) && dbOrder.OrderState != Enums.OrderState.)) dbOrderList.Any(dbOrder => interfaceCanceledOrderIdList.Contains(dbOrder.Id) && dbOrder.OrderState != Enums.OrderState.))
{ {
dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => interfaceCanceledOrderIdList.Contains(ocd.OrderId)).ToList(); dbOrderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => interfaceCanceledOrderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList();
} }
var orderSkuIds = new List<string>(); var orderSkuIds = new List<string>();

6
BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -543,7 +543,7 @@ namespace BBWY.Server.Business
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
AppToken = shop.AppToken, AppToken = shop.AppToken,
Platform = shop.Platform Platform = shop.PlatformId
}); });
if (logisticsCompanyList != null) if (logisticsCompanyList != null)
logisticsCompanyListInfo = JsonConvert.SerializeObject(logisticsCompanyList); logisticsCompanyListInfo = JsonConvert.SerializeObject(logisticsCompanyList);
@ -552,7 +552,7 @@ namespace BBWY.Server.Business
#region 物流公司翻译 #region 物流公司翻译
currentProgress = "物流公司翻译"; currentProgress = "物流公司翻译";
//logisticsCompanyId = ConvertLogisticsCompanyId(wayBillNoResponse.LogisticsCompanyName, logisticsCompanyList, shop.Platform); //logisticsCompanyId = ConvertLogisticsCompanyId(wayBillNoResponse.LogisticsCompanyName, logisticsCompanyList, shop.Platform);
logisticsCompanyId = logisticsCompanyConverter.Converter(wayBillNoResponse.LogisticsCompanyName, callbackPlatform, shop.Platform, logisticsCompanyList); logisticsCompanyId = logisticsCompanyConverter.Converter(wayBillNoResponse.LogisticsCompanyName, callbackPlatform, shop.PlatformId, logisticsCompanyList);
#endregion #endregion
#region 店铺平台订单出库 #region 店铺平台订单出库
@ -563,7 +563,7 @@ namespace BBWY.Server.Business
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
AppToken = shop.AppToken, AppToken = shop.AppToken,
OrderId = orderDropshipping.OrderId, OrderId = orderDropshipping.OrderId,
Platform = shop.Platform, Platform = shop.PlatformId,
WayBillNo = wayBillNoResponse.WayBillNo, WayBillNo = wayBillNoResponse.WayBillNo,
LogisticsId = logisticsCompanyId, //物流公司Id LogisticsId = logisticsCompanyId, //物流公司Id
SaveResponseLog = true SaveResponseLog = true

2
BBWY.Server.Business/Statistics/StatisticsBusiness.cs

@ -88,7 +88,7 @@ namespace BBWY.Server.Business
//查询orderSku //查询orderSku
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList(); var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList();
//查询成本明细 //查询成本明细
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId)).ToList(); var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => orderIdList.Contains(ocd.OrderId) && ocd.IsEnabled == true).ToList();
detailList = new List<XingXiangItemResponse>(); detailList = new List<XingXiangItemResponse>();
var totalSDOrderCost = 0M; var totalSDOrderCost = 0M;

52
BBWY.Server.Business/Vender/VenderBusiness.cs

@ -159,23 +159,65 @@ namespace BBWY.Server.Business
{ {
DepartmentId = ud.Id, DepartmentId = ud.Id,
ud.DepartmentName, ud.DepartmentName,
ShopPKId = s.Id,
s.ShopId, s.ShopId,
s.ShopName s.ShopName,
s.ShopType,
s.AppKey,
s.AppSecret,
s.AppToken,
s.ManagePwd,
s.PlatformCommissionRatio,
s.PlatformId
}).GroupBy(x => x.DepartmentId); }).GroupBy(x => x.DepartmentId);
if (relationGroups.Count() == 0) if (relationGroups.Count() == 0)
return null; return null;
var list = new List<DepartmentResponse>(); var departmentList = new List<DepartmentResponse>();
var shopIdList = new List<string>(); //主键Id集合
foreach (var relationGroup in relationGroups) foreach (var relationGroup in relationGroups)
{ {
var department = new DepartmentResponse() var department = new DepartmentResponse()
{ {
Id = relationGroup.Key, Id = relationGroup.Key,
Name = relationGroup.FirstOrDefault().DepartmentName, Name = relationGroup.FirstOrDefault().DepartmentName,
ShopList = relationGroup.Select(x => new SimpleShopResponse() { Id = x.ShopId, Name = x.ShopName }).ToList() ShopList = relationGroup.Select(x => new ShopResponse()
{
Id = x.ShopPKId,
AppKey = string.IsNullOrEmpty(x.AppKey) ? "120EA9EC65AB017567D78CC1139EEEA5" : x.AppKey,
AppSecret = string.IsNullOrEmpty(x.AppSecret) ? "866a9877f5f24b03b537483b4defe75d" : x.AppSecret,
AppToken = x.AppToken,
ManagePwd = x.ManagePwd,
PlatformId = (Enums.Platform)x.PlatformId,
PlatformCommissionRatio = x.PlatformCommissionRatio,
ShopId = x.ShopId,
ShopName = x.ShopName,
ShopType = x.ShopType
}).ToList()
}; };
list.Add(department); departmentList.Add(department);
shopIdList.AddRange(department.ShopList.Select(s => s.Id));
}
shopIdList = shopIdList.Distinct().ToList();
var purchaseAccountList = freeSqlMultiDBManager.MDSfsql.Select<Purchaseaccount>().Where(pa => shopIdList.Contains(pa.ShopId))
.ToList(pa => new PurchaseAccountResponse()
{
AccountName = pa.AccountName,
AppKey = pa.AppKey,
AppSecret = pa.AppSecret,
AppToken = pa.AppToken,
Id = pa.Id,
ShopId = pa.ShopId,
PurchasePlatformId = (Enums.Platform)int.Parse(pa.PurchasePlatformId)
});
foreach (var d in departmentList)
{
foreach (var s in d.ShopList)
{
s.PurchaseList = purchaseAccountList.Where(pa => pa.ShopId == s.Id).ToList();
}
} }
return list; return departmentList;
} }
} }
} }

170
BBWY.Server.Model/Db/Order/OrderCostDetail.cs

@ -5,88 +5,92 @@ namespace BBWY.Server.Model.Db
{ {
[Table(Name = "ordercostdetail", DisableSyncStructure = true)] [Table(Name = "ordercostdetail", DisableSyncStructure = true)]
public partial class OrderCostDetail { public partial class OrderCostDetail
{
[Column(DbType = "bigint(1)", IsPrimary = true)]
public long Id { get; set; } [Column(DbType = "bigint(1)", IsPrimary = true)]
public long Id { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; } [Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 扣减数量 /// <summary>
/// </summary> /// 扣减数量
[Column(DbType = "int(1)")] /// </summary>
public int DeductionQuantity { get; set; } = 0; [Column(DbType = "int(1)")]
public int DeductionQuantity { get; set; } = 0;
/// <summary>
/// 发货运费 /// <summary>
/// </summary> /// 发货运费
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal DeliveryExpressFreight { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
public decimal DeliveryExpressFreight { get; set; } = 0.00M;
[Column(StringLength = 50)]
public string OrderId { get; set; } [Column(StringLength = 50)]
public string OrderId { get; set; }
[Column(StringLength = 50)]
public string ProductId { get; set; } [Column(StringLength = 50)]
public string ProductId { get; set; }
/// <summary>
/// 单件成本 /// <summary>
/// </summary> /// 单件成本
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal UnitCost { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
public decimal UnitCost { get; set; } = 0.00M;
/// <summary>
/// 采购单流水Id /// <summary>
/// </summary> /// 采购单流水Id
[Column(DbType = "bigint(1)")] /// </summary>
public long PurchaseOrderPKId { get; set; } [Column(DbType = "bigint(1)")]
public long PurchaseOrderPKId { get; set; }
[Column(StringLength = 50)]
public string SkuId { get; set; } [Column(StringLength = 50)]
public string SkuId { get; set; }
/// <summary>
/// Sku成本(商品成本) /// <summary>
/// </summary> /// Sku成本(商品成本)
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal SkuAmount { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
public decimal SkuAmount { get; set; } = 0.00M;
/// <summary>
/// 采购运费 /// <summary>
/// </summary> /// 采购运费
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal PurchaseFreight { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
public decimal PurchaseFreight { get; set; } = 0.00M;
/// <summary>
/// 头程运费 /// <summary>
/// </summary> /// 头程运费
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal FirstFreight { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
public decimal FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 操作费 /// <summary>
/// </summary> /// 操作费
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal OperationAmount { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
public decimal OperationAmount { get; set; } = 0.00M;
/// <summary>
/// 耗材费 /// <summary>
/// </summary> /// 耗材费
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal ConsumableAmount { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
public decimal ConsumableAmount { get; set; } = 0.00M;
/// <summary>
/// 仓储费 /// <summary>
/// </summary> /// 仓储费
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal StorageAmount { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
public decimal StorageAmount { get; set; } = 0.00M;
/// <summary>
/// 总计(不含发货运费) /// <summary>
/// </summary> /// 总计(不含发货运费)
[Column(DbType = "decimal(20,2)")] /// </summary>
public decimal TotalCost { get; set; } = 0.00M; [Column(DbType = "decimal(20,2)")]
} public decimal TotalCost { get; set; } = 0.00M;
[Column(DbType = "bit")]
public bool IsEnabled { get; set; } = true;
}
} }

69
BBWY.Server.Model/Dto/Request/Order/ManualCalculationCostRequest.cs

@ -1,4 +1,6 @@
namespace BBWY.Server.Model.Dto using System.Collections.Generic;
namespace BBWY.Server.Model.Dto
{ {
public class ManualCalculationCostRequest public class ManualCalculationCostRequest
{ {
@ -8,19 +10,60 @@
public Enums.StorageType? StorageType { get; set; } public Enums.StorageType? StorageType { get; set; }
/// <summary> ///// <summary>
/// 采购成本 ///// 采购成本
/// </summary> ///// </summary>
public decimal PurchaseCost { get; set; } //public decimal PurchaseCost { get; set; }
///// <summary>
///// 发货运费
///// </summary>
//public decimal DeliveryExpressFreight { get; set; }
/// <summary> public IList<OrderCostDetailRequest> OrderCostDetailList { get; set; }
/// 发货运费
/// </summary>
public decimal DeliveryExpressFreight { get; set; }
/// <summary> /// <summary>
/// 平台扣点 /// 平台扣点
/// </summary> /// </summary>
public decimal PlatformCommissionRatio { get; set; } public decimal PlatformCommissionRatio { get; set; }
} }
public class OrderCostDetailRequest
{
public int DeductionQuantity { get; set; } = 0;
public decimal DeliveryExpressFreight { get; set; } = 0.00M;
public string ProductId { get; set; }
public string SkuId { get; set; }
public decimal SkuAmount { get; set; } = 0.00M;
public decimal PurchaseFreight { get; set; } = 0.00M;
/// <summary>
/// 头程运费
/// </summary>
public decimal FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 操作费
/// </summary>
public decimal OperationAmount { get; set; } = 0.00M;
/// <summary>
/// 耗材费
/// </summary>
public decimal ConsumableAmount { get; set; } = 0.00M;
/// <summary>
/// 仓储费
/// </summary>
public decimal StorageAmount { get; set; } = 0.00M;
public decimal TotalCost { get; set; } = 0M;
public decimal UnitCost { get; set; } = 0M;
}
} }

16
BBWY.Server.Model/Dto/Response/Vender/DepartmentResponse.cs

@ -8,21 +8,11 @@ namespace BBWY.Server.Model.Dto
public string Name { get; set; } public string Name { get; set; }
public IList<SimpleShopResponse> ShopList { get; set; } public IList<ShopResponse> ShopList { get; set; }
public DepartmentResponse() public DepartmentResponse()
{ {
ShopList = new List<SimpleShopResponse>(); ShopList = new List<ShopResponse>();
} }
} }
public class SimpleShopResponse
{
/// <summary>
/// ShopId
/// </summary>
public string Id { get; set; }
public string Name { get; set; }
}
} }

30
BBWY.Server.Model/Dto/Response/Vender/ShopResponse.cs

@ -1,25 +1,26 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using static BBWY.Server.Model.Enums;
namespace BBWY.Server.Model.Dto namespace BBWY.Server.Model.Dto
{ {
public class ShopResponse public class ShopResponse
{ {
public long ShopId { get; set; } public string Id { get; set; }
public string Name { get; set; } public string ShopId { get; set; }
public string ShopName { get; set; }
/// <summary> /// <summary>
/// 商家类型 /// 商家类型
/// </summary> /// </summary>
public string VenderType { get; set; } public string ShopType { get; set; }
/// <summary> /// <summary>
/// 店铺平台 /// 店铺平台
/// </summary> /// </summary>
public Platform Platform { get; set; } public Enums.Platform PlatformId { get; set; }
public string AppKey { get; set; } public string AppKey { get; set; }
@ -30,5 +31,24 @@ namespace BBWY.Server.Model.Dto
public string ManagePwd { get; set; } public string ManagePwd { get; set; }
public decimal? PlatformCommissionRatio { get; set; } public decimal? PlatformCommissionRatio { get; set; }
public IList<PurchaseAccountResponse> PurchaseList { get; set; }
}
public class PurchaseAccountResponse
{
public string Id { get; set; }
public string AccountName { get; set; }
public string ShopId { get; set; }
public Enums.Platform PurchasePlatformId { get; set; }
public string AppKey { get; set; }
public string AppSecret { get; set; }
public string AppToken { get; set; }
} }
} }

1
BBWY.Server.Model/MappingProfiles.cs

@ -25,6 +25,7 @@ namespace BBWY.Server.Model
CreateMap<PurchaseOrder, PurchaseOrderResponse>(); CreateMap<PurchaseOrder, PurchaseOrderResponse>();
CreateMap<OrderDropShippingRequest, OrderDropShipping>(); CreateMap<OrderDropShippingRequest, OrderDropShipping>();
CreateMap<OrderCostDetailRequest, OrderCostDetail>();
CreateMap<OrderCostDetail, OrderCostDetailResponse>(); CreateMap<OrderCostDetail, OrderCostDetailResponse>();
CreateMap<OrderConsignee, ConsigneeResponse>(); CreateMap<OrderConsignee, ConsigneeResponse>();
CreateMap<OrderCost, OrderCostResponse>(); CreateMap<OrderCost, OrderCostResponse>();

Loading…
Cancel
Save