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 System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
namespace BBWY.Client.APIServices
@ -94,10 +95,12 @@ namespace BBWY.Client.APIServices
/// 手动计算成本
/// </summary>
/// <param name="orderId"></param>
/// <param name="isSetStorageType">是否设置仓储类型</param>
/// <param name="isSetStorageType"></param>
/// <param name="storageType"></param>
/// <param name="manualEditCostOrderSkuList"></param>
/// <param name="platformCommissionRatio"></param>
/// <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",
new
@ -105,8 +108,21 @@ namespace BBWY.Client.APIServices
orderId,
isSetStorageType,
storageType,
purchaseCost,
deliveryExpressFreight,
OrderCostDetailList = manualEditCostOrderSkuList.Select(osku => new
{
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
}, null, HttpMethod.Post);
}

4
BBWY.Client/APIServices/ShopService.cs

@ -42,9 +42,9 @@ namespace BBWY.Client.APIServices
/// 获取部门及下属店铺
/// </summary>
/// <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();
string userToken = string.Empty;
#if DEBUG
userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA3NDY1MDMzNDIwODAwIiwidGVhbUlkIjoiMTQzNjI4ODUwMDIzNTI0MzUyMCIsImV4cCI6MTY4MjU3NzUzNn0.76Ll9syp3R21VD01NxpHmcs7TyBKzqeob3i5avpLv-E"; //齐越小一
//"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDUzOTA0NTczMjM5Mzk4NDAwIiwidGVhbUlkIjoiMTQzOTg5ODI2MDg3MjM2ODEyOCIsImV4cCI6MTY4MjQwODY1OH0.Po9-Dw_CgbAB7kjh7broLGIjOdsL2JifPtodNKClRIw";
userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDA1MTUxNjE5NTk0NTg4MTYwIiwidGVhbUlkIjoiMTQxMDk1NTYwNDYxMjA5MTkwNCIsImV4cCI6MTY4NjQ4MjU0M30.emnQNDcbqnuO2jH0Kgfk2Ui7crrwzRb986Sa511iS-U"; //齐越小一
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA1OTcyOTk3ODUzMTg0IiwidGVhbUlkIjoiMTQzOTkwNDA1MDc3NzY5MDExMiIsImV4cCI6MTY4NjQxODcyOH0.K7-MXjt_zfNK5v_08VjmCDnhAGF6SI7sEQr5sgDn7Jk"; //齐越珍珍
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTE0NjczMzA5NzQ5MjQ4IiwidGVhbUlkIjoiMTQ0ODY4MTU0NDE4ODE3MDI0MCIsImV4cCI6MTY4NjQ1OTY0Mn0.4yCbZxOtogD0N868-YgySR5A-16VNnrp8fC13VCRs20"; //齐越耐克
#else
var uid = e.Args.Count() > 0 ? e.Args.LastOrDefault(args => args.StartsWith("uid:")) : string.Empty;
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()
{
//日期,店铺订单号,SKU编码,代发下单单号,售价,采购金额,头程费用,仓储服务费,快递费,平台扣点,补差金额,利润,利润率,收件人联系方式
//日期,店铺订单号,SKU编码,代发下单单号,售价,商品成本,头程费用,仓储服务费,快递费,平台扣点,补差金额,利润,利润率,收件人联系方式
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 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.Name, opt => opt.MapFrom(f => f.UserName));
CreateMap<ShopResponse, Shop>().ForMember(t => t.ShopId, opt => opt.MapFrom(f => f.ShopId))
.ForMember(t => t.Name, opt => opt.MapFrom(f => f.ShopName))
.ForMember(t => t.VenderType, opt => opt.MapFrom(f => f.ShopType))
CreateMap<ShopResponse, Shop>().ForMember(t => t.VenderType, opt => opt.MapFrom(f => f.ShopType))
.ForMember(t => t.Platform, opt => opt.MapFrom(f => f.PlatformId))
.ForMember(t => t.PurchaseAccountList, opt => opt.MapFrom(f => f.PurchaseList));
CreateMap<PurchaseAccountResponse, PurchaseAccount>();
CreateMap<DepartmentResponse, Department>();
CreateMap<PurchaseOrderResponse, PurchaseOrder>();
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>
public decimal FreightPrice { get; set; }
/// <summary>
/// 实收金额
/// </summary>
public decimal ActualAmount { get { return OrderSellerPrice + FreightPrice; } }
/// <summary>
/// 商家优惠金额
/// </summary>

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

@ -8,30 +8,11 @@ namespace BBWY.Client.Models
public string Name { get; set; }
public IList<SimpleShop> ShopList { get; set; }
public IList<Shop> ShopList { get; set; }
public Department()
{
ShopList = new List<SimpleShop>();
}
}
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;
ShopList = new List<Shop>();
}
}
}

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
{
private string name;
private bool isSelected;
private string shopName;
public bool IsSelected { get => isSelected; set { Set(ref isSelected, value); } }
/// <summary>
/// 店铺Id
/// </summary>
@ -27,7 +29,7 @@ namespace BBWY.Client.Models
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; }
@ -40,5 +42,10 @@ namespace BBWY.Client.Models
public string TeamId { 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 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
{
private GlobalContext globalContext;
private AuditFile selectAuditFile;
private bool isLoading;
private bool isAudited;
@ -138,8 +139,9 @@ namespace BBWY.Client.ViewModels
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>();
AuditCommand = new RelayCommand(Audit);
ClearAuditCommand = new RelayCommand(ClearAudit);
@ -166,22 +168,9 @@ namespace BBWY.Client.ViewModels
private void LoadDepartment()
{
Task.Factory.StartNew(() => shopService.GetDepartmentList()).ContinueWith(t =>
{
var response = t.Result;
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];
});
});
foreach (var d in globalContext.User.DepartmentList)
DepartmentList.Add(d);
SelectedDepartment = DepartmentList[0];
}
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
{
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)
throw new Exception($"获取采购单失败,{auditPurchaseOrderResponse.Msg}");
@ -243,7 +232,7 @@ namespace BBWY.Client.ViewModels
payBill.RelationPurchaseOrderId = relationPurchaseOrder.PurchaseOrderId;
payBill.RelationShopOrderId = relationPurchaseOrder.OrderId;
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
}
}

128
BBWY.Client/ViewModels/MainViewModel.cs

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

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

@ -313,7 +313,7 @@ namespace BBWY.Client.ViewModels
}
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.ShowDialog();
}
@ -432,7 +432,7 @@ namespace BBWY.Client.ViewModels
}
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.ShowDialog();
}
@ -475,7 +475,42 @@ namespace BBWY.Client.ViewModels
}
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.ShowDialog();
}
@ -491,11 +526,14 @@ namespace BBWY.Client.ViewModels
var orderId = manualCalculationCost.OrderId;
var storageType = manualCalculationCost.StorageType;
var isSetStorageType = manualCalculationCost.IsSetStorageType;
var purchaseCost = manualCalculationCost.PurchaseCost;
var deliveryExpressFreight = manualCalculationCost.DeliveryExpressFreight;
var manualEditCostOrderSkuList = manualCalculationCost.ManualEditCostOrderSkuList;
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;
if (!response.Success)
@ -631,7 +669,7 @@ namespace BBWY.Client.ViewModels
try
{
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);
App.Current.Dispatcher.Invoke(() => MessageBox.Show("导出完成", "导出"));
}

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

@ -43,7 +43,7 @@
<hc:CheckComboBox.ItemTemplate>
<DataTemplate>
<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>
</DataTemplate>
</hc:CheckComboBox.ItemTemplate>

6
BBWY.Client/Views/MainWindow.xaml

@ -9,7 +9,7 @@
DataContext="{Binding Main,Source={StaticResource Locator}}"
mc:Ignorable="d"
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:EventTrigger EventName="Closing">
<b:InvokeCommandAction Command="{Binding ClosingCommand}" PassEventArgsToCommand="True"/>
@ -25,8 +25,8 @@
<TextBlock Text="{Binding GlobalContext.User.Name}"/>
<!--<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.Name}" Margin="5,0,0,0"/>
<TextBlock Text="v10019" Margin="5,0,0,0"/>
<TextBlock Text="{Binding GlobalContext.User.Shop.ShopName}" Margin="5,0,0,0"/>
<TextBlock Text="v10023" Margin="5,0,0,0"/>
</StackPanel>
</Border>
<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.Init();
grid.Children.Add(w2m.wb2);
if (w2m.IsInitializationCompleted)

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

@ -6,7 +6,7 @@
xmlns:local="clr-namespace:BBWY.Client.Views.Order"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
mc:Ignorable="d"
Title="手动计算成本" Height="450" Width="300"
Title="手动计算成本" Height="450" Width="1100"
Style="{StaticResource bwstyle}"
MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed">
@ -21,7 +21,140 @@
<TextBlock x:Name="txt_StorageType" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</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>
<RowDefinition Height="10"/>
<RowDefinition Height="40"/>
@ -68,9 +201,19 @@
<c:BButton x:Name="btn_fillFromLately" Content="填入最近一次信息" Grid.Row="9" Grid.ColumnSpan="2" Width="120"
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"/>
</StackPanel>
</Grid>
</c:BWindow>

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

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

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

@ -482,7 +482,7 @@
CommandParameter="{Binding OrderDropShipping.PurchaseOrderId}"/>
</StackPanel>
<TextBlock>
<Run Text="采购金额"/>
<Run Text="采购成本"/>
<Run Text="{Binding OrderDropShipping.PurchaseAmount}"/>
</TextBlock>
</StackPanel>
@ -495,10 +495,30 @@
<StackPanel Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,0,10">
<TextBlock>
<Run Text="实收金额"/>
<Run Text="{Binding OrderSellerPrice}"/>
</TextBlock>
<StackPanel Orientation="Horizontal">
<TextBlock>
<Run Text="实收金额"/>
<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">
<TextBlock>
@ -510,12 +530,12 @@
<Path.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<ListBox ItemsSource="{Binding OrderCouponList}"
Style="{StaticResource NoScrollViewListBoxStyle}">
Style="{StaticResource NoScrollViewListBoxStyle}" Foreground="{StaticResource Text.Color}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding CouponType}"/>
<Run Text="{Binding CouponPrice,StringFormat=¥{0}}"/>
<Run Text="{Binding CouponType}"/>
<Run Text="{Binding CouponPrice,StringFormat=¥{0}}"/>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
@ -527,7 +547,7 @@
<StackPanel x:Name="sp_purchaseAmount" Orientation="Horizontal">
<TextBlock>
<Run Text="采购金额"/>
<Run Text="采购成本"/>
<Run Text="{Binding OrderCost.PurchaseAmount}"/>
</TextBlock>
@ -550,7 +570,8 @@
<ListBox Grid.Row="1"
ItemsSource="{Binding OrderCostDetailGroupList}"
Style="{StaticResource NoScrollViewListBoxStyle}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}">
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
Foreground="{StaticResource Text.Color}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>

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

@ -138,7 +138,7 @@
<StackPanel Orientation="Horizontal" Grid.Row="3" HorizontalAlignment="Right">
<TextBlock VerticalAlignment="Center" Margin="0,0,8,0">
<Run Text="总计"/>
<Run Text="{Binding OrderDropShipping.PurchaseAmount}"/>
<Run Text="{Binding OrderDropShipping.PurchaseAmount}" Foreground="#EC808D"/>
<Run Text="元"/>
</TextBlock>
<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 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();
this.OrderId = orderId;
@ -45,6 +45,8 @@ namespace BBWY.Client.Views.Order
this.PayChannel = payChannel;
this.SdPayBillNo = sdPayBillNo;
this.SdOperator = sdOperator;
this.SDCommissionAmount = sdCommissionAmount;
this.DeliveryExpressFreight = deliveryExpressFreight;
}
private void BWindow_Loaded(object sender, RoutedEventArgs e)
{
@ -67,6 +69,8 @@ namespace BBWY.Client.Views.Order
this.cbx_SDPayChannel.SelectedItem = PayChannel;
this.txt_SDPayBillNo.Text = SdPayBillNo;
this.txt_SDOperator.Text = SdOperator;
this.txtDeliveryExpressFreight.Text = DeliveryExpressFreight.ToString();
this.txtSDCommissionAmount.Text = SDCommissionAmount.ToString();
}
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"
SelectedIndex="0"
HorizontalAlignment="Left" VerticalContentAlignment="Center"
DisplayMemberPath="Name"
DisplayMemberPath="ShopName"
Grid.Column="1" Grid.Row="1" Margin="5,5,0,5"/>
</Grid>

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

@ -19,10 +19,10 @@ namespace BBWY.Client.Views
/// </summary>
public partial class SelectShop : BWindow
{
public IList<Department2> DepartmentList { get; set; }
public IList<Department> DepartmentList { get; set; }
public Shop Shop { get; set; }
public SelectShop(IList<Department2> departmentList)
public SelectShop(IList<Department> departmentList)
{
InitializeComponent();
this.DepartmentList = departmentList;
@ -31,7 +31,7 @@ namespace BBWY.Client.Views
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;
}
@ -45,8 +45,9 @@ namespace BBWY.Client.Views
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.SelectedIndex = 0;
}
}
}

29
BBWY.Client/WebView2Manager.cs

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

8
BBWY.Server.Business/MDSBusiness.cs

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

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

@ -167,7 +167,7 @@ namespace BBWY.Server.Business
#endregion
#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)
order.OrderCostDetailList = orderCostDetailList.Where(ocd => ocd.OrderId == order.Id).ToList();
#endregion
@ -242,13 +242,14 @@ namespace BBWY.Server.Business
var orderIdList = orderSourceList.Select(o => o.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
{
OrderId = g.Key,
SkuAmount = g.Sum(g.Value.SkuAmount),
FirstFreight = g.Sum(g.Value.FirstFreight),
StorageAmount = g.Sum(g.Value.StorageAmount)
});
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),
FirstFreight = g.Sum(g.Value.FirstFreight),
StorageAmount = g.Sum(g.Value.StorageAmount)
});
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 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.OrderCouponList = orderCouponList;
@ -415,7 +416,7 @@ namespace BBWY.Server.Business
throw new BusinessException("库存为零不能自动计算成本");
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<OrderCost> updateOrderCost = null;
@ -558,13 +559,35 @@ namespace BBWY.Server.Business
var dbOrder = fsql.Select<Order>(manualCalculationCostRequest.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException($"订单号{manualCalculationCostRequest.OrderId}不存在");
if (manualCalculationCostRequest.OrderCostDetailList == null || manualCalculationCostRequest.OrderCostDetailList.Count() == 0)
throw new BusinessException($"缺少明细信息");
IUpdate<Order> orderUpdate = null;
IUpdate<OrderCost> updateOrderCost = null;
IInsert<OrderCost> insertOrderCost = null;
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>();
if (manualCalculationCostRequest.IsSetStorageType)
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();
if (orderCost == null)
@ -577,8 +600,8 @@ namespace BBWY.Server.Business
PlatformCommissionRatio = manualCalculationCostRequest.PlatformCommissionRatio,
PreferentialAmount = dbOrder.PreferentialAmount,
Profit = 0,
PurchaseAmount = manualCalculationCostRequest.PurchaseCost,
DeliveryExpressFreight = manualCalculationCostRequest.DeliveryExpressFreight,
PurchaseAmount = totalPurchaseCost,
DeliveryExpressFreight = totalDeliveryExpressFreight,
CreateTime = DateTime.Now,
IsManualEdited = true
};
@ -592,8 +615,8 @@ namespace BBWY.Server.Business
}
else
{
orderCost.PurchaseAmount = manualCalculationCostRequest.PurchaseCost;
orderCost.DeliveryExpressFreight = manualCalculationCostRequest.DeliveryExpressFreight;
orderCost.PurchaseAmount = totalPurchaseCost;
orderCost.DeliveryExpressFreight = totalDeliveryExpressFreight;
orderCost.Profit = dbOrder.OrderSellerPrice +
dbOrder.FreightPrice -
orderCost.PurchaseAmount -
@ -605,9 +628,11 @@ namespace BBWY.Server.Business
fsql.Transaction(() =>
{
fsql.Update<OrderCostDetail>().Set(ocd => ocd.IsEnabled, false).Where(ocd => ocd.OrderId == manualCalculationCostRequest.OrderId).ExecuteAffrows();
orderUpdate?.ExecuteAffrows();
insertOrderCost?.ExecuteAffrows();
updateOrderCost?.ExecuteAffrows();
fsql.Insert(insertOrderCostDetailList).ExecuteAffrows();
});
}
@ -913,10 +938,10 @@ namespace BBWY.Server.Business
var shop = mdsBusiness.GetShopInfoByShopId(shopId);
try
{
if (!syncOrderMethodDic.ContainsKey(shop.Platform))
if (!syncOrderMethodDic.ContainsKey(shop.PlatformId))
throw new Exception("不支持的平台");
var relayAPIHost = GetPlatformRelayAPIHost(shop.Platform);
var relayAPIHost = GetPlatformRelayAPIHost(shop.PlatformId);
var orderListApiResult = restApiService.SendRequest(relayAPIHost, "api/PlatformSDK/GetOrderList", new SearchPlatformOrderRequest()
{
StartDate = startTime ?? DateTime.Now.AddHours(-3),
@ -926,8 +951,8 @@ namespace BBWY.Server.Business
AppToken = shop.AppToken,
PageIndex = 1,
PageSize = 100,
Platform = shop.Platform,
JDColType = string.IsNullOrEmpty(shop.VenderType) ? "0" : shop.VenderType,
Platform = shop.PlatformId,
JDColType = string.IsNullOrEmpty(shop.ShopType) ? "0" : shop.ShopType,
SaveResponseLog = true,
OrderId = orderId
}, null, HttpMethod.Post);
@ -941,7 +966,7 @@ namespace BBWY.Server.Business
if (orderListResponse.Data == null || orderListResponse.Data.Count == 0)
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)
{
@ -1029,7 +1054,7 @@ namespace BBWY.Server.Business
if (interfaceCanceledOrderIdList.Count() > 0 &&
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>();

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

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

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

@ -88,7 +88,7 @@ namespace BBWY.Server.Business
//查询orderSku
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>();
var totalSDOrderCost = 0M;

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

@ -159,23 +159,65 @@ namespace BBWY.Server.Business
{
DepartmentId = ud.Id,
ud.DepartmentName,
ShopPKId = s.Id,
s.ShopId,
s.ShopName
s.ShopName,
s.ShopType,
s.AppKey,
s.AppSecret,
s.AppToken,
s.ManagePwd,
s.PlatformCommissionRatio,
s.PlatformId
}).GroupBy(x => x.DepartmentId);
if (relationGroups.Count() == 0)
return null;
var list = new List<DepartmentResponse>();
var departmentList = new List<DepartmentResponse>();
var shopIdList = new List<string>(); //主键Id集合
foreach (var relationGroup in relationGroups)
{
var department = new DepartmentResponse()
{
Id = relationGroup.Key,
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)]
public partial class OrderCostDetail {
[Column(DbType = "bigint(1)", IsPrimary = true)]
public long Id { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 扣减数量
/// </summary>
[Column(DbType = "int(1)")]
public int DeductionQuantity { get; set; } = 0;
/// <summary>
/// 发货运费
/// </summary>
[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 ProductId { get; set; }
/// <summary>
/// 单件成本
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal UnitCost { get; set; } = 0.00M;
/// <summary>
/// 采购单流水Id
/// </summary>
[Column(DbType = "bigint(1)")]
public long PurchaseOrderPKId { get; set; }
[Column(StringLength = 50)]
public string SkuId { get; set; }
/// <summary>
/// Sku成本(商品成本)
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal SkuAmount { get; set; } = 0.00M;
/// <summary>
/// 采购运费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal PurchaseFreight { get; set; } = 0.00M;
/// <summary>
/// 头程运费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 操作费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal OperationAmount { get; set; } = 0.00M;
/// <summary>
/// 耗材费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal ConsumableAmount { get; set; } = 0.00M;
/// <summary>
/// 仓储费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal StorageAmount { get; set; } = 0.00M;
/// <summary>
/// 总计(不含发货运费)
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal TotalCost { get; set; } = 0.00M;
}
public partial class OrderCostDetail
{
[Column(DbType = "bigint(1)", IsPrimary = true)]
public long Id { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 扣减数量
/// </summary>
[Column(DbType = "int(1)")]
public int DeductionQuantity { get; set; } = 0;
/// <summary>
/// 发货运费
/// </summary>
[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 ProductId { get; set; }
/// <summary>
/// 单件成本
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal UnitCost { get; set; } = 0.00M;
/// <summary>
/// 采购单流水Id
/// </summary>
[Column(DbType = "bigint(1)")]
public long PurchaseOrderPKId { get; set; }
[Column(StringLength = 50)]
public string SkuId { get; set; }
/// <summary>
/// Sku成本(商品成本)
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal SkuAmount { get; set; } = 0.00M;
/// <summary>
/// 采购运费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal PurchaseFreight { get; set; } = 0.00M;
/// <summary>
/// 头程运费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal FirstFreight { get; set; } = 0.00M;
/// <summary>
/// 操作费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal OperationAmount { get; set; } = 0.00M;
/// <summary>
/// 耗材费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal ConsumableAmount { get; set; } = 0.00M;
/// <summary>
/// 仓储费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal StorageAmount { get; set; } = 0.00M;
/// <summary>
/// 总计(不含发货运费)
/// </summary>
[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
{
@ -8,19 +10,60 @@
public Enums.StorageType? StorageType { get; set; }
/// <summary>
/// 采购成本
/// </summary>
public decimal PurchaseCost { get; set; }
///// <summary>
///// 采购成本
///// </summary>
//public decimal PurchaseCost { get; set; }
///// <summary>
///// 发货运费
///// </summary>
//public decimal DeliveryExpressFreight { get; set; }
/// <summary>
/// 发货运费
/// </summary>
public decimal DeliveryExpressFreight { get; set; }
public IList<OrderCostDetailRequest> OrderCostDetailList { get; set; }
/// <summary>
/// 平台扣点
/// </summary>
public decimal PlatformCommissionRatio { get; set; }
/// <summary>
/// 平台扣点
/// </summary>
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 IList<SimpleShopResponse> ShopList { get; set; }
public IList<ShopResponse> ShopList { get; set; }
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.Collections.Generic;
using System.Text;
using static BBWY.Server.Model.Enums;
namespace BBWY.Server.Model.Dto
{
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>
public string VenderType { get; set; }
public string ShopType { get; set; }
/// <summary>
/// 店铺平台
/// </summary>
public Platform Platform { get; set; }
public Enums.Platform PlatformId { get; set; }
public string AppKey { get; set; }
@ -30,5 +31,24 @@ namespace BBWY.Server.Model.Dto
public string ManagePwd { 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<OrderDropShippingRequest, OrderDropShipping>();
CreateMap<OrderCostDetailRequest, OrderCostDetail>();
CreateMap<OrderCostDetail, OrderCostDetailResponse>();
CreateMap<OrderConsignee, ConsigneeResponse>();
CreateMap<OrderCost, OrderCostResponse>();

Loading…
Cancel
Save