shanji 3 years ago
parent
commit
0c1f19090b
  1. 24
      BBWY.Client/APIServices/OrderService.cs
  2. 2
      BBWY.Client/Models/APIModel/Response/Order/ExportOrderResponse.cs
  3. 203
      BBWY.Client/Models/Order/ManualEditCostOrderSku.cs
  4. 5
      BBWY.Client/Models/Order/Order.cs
  5. 52
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  6. 2
      BBWY.Client/Views/MainWindow.xaml
  7. 151
      BBWY.Client/Views/Order/ManualCalculationCost.xaml
  8. 56
      BBWY.Client/Views/Order/ManualCalculationCost.xaml.cs
  9. 41
      BBWY.Client/Views/Order/OrderList.xaml
  10. 2
      BBWY.Client/Views/Order/RelationPurchaseOrder.xaml
  11. 6
      BBWY.Client/Views/Order/SD.xaml.cs
  12. 55
      BBWY.Server.Business/Order/OrderBusiness.cs
  13. 2
      BBWY.Server.Business/Statistics/StatisticsBusiness.cs
  14. 170
      BBWY.Server.Model/Db/Order/OrderCostDetail.cs
  15. 69
      BBWY.Server.Model/Dto/Request/Order/ManualCalculationCostRequest.cs
  16. 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);
} }

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}";
} }
} }

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>

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/MainWindow.xaml

@ -26,7 +26,7 @@
<!--<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.ShopName}" Margin="5,0,0,0"/> <TextBlock Text="{Binding GlobalContext.User.Shop.ShopName}" Margin="5,0,0,0"/>
<TextBlock Text="v10022" 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">

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)

55
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();
}); });
} }
@ -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>();

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;

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;
}
} }

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