shanji 3 years ago
parent
commit
3b4275fbd7
  1. 2
      BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderResponse.cs
  2. 2
      BBWY.Client/Models/AfterSaleOrder/AfterSaleOrder.cs
  3. 96
      BBWY.Client/Views/Order/OrderList.xaml
  4. 55
      BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs
  5. 28
      BBWY.Server.Business/Extensions/OrderCostExtension.cs
  6. 7
      BBWY.Server.Business/Order/OrderBusiness.cs
  7. 6
      BBWY.Server.Model/Db/Order/AfterSaleOrder.cs

2
BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderResponse.cs

@ -119,5 +119,7 @@ namespace BBWY.Client.Models
public string Mobile { get; set; }
public decimal AfterTotalCost { get; set; } = 0.0M;
public decimal StorageAmount { get; set; } = 0.0M;
}
}

2
BBWY.Client/Models/AfterSaleOrder/AfterSaleOrder.cs

@ -105,6 +105,8 @@ namespace BBWY.Client.Models
public decimal ReissueFreight { get => reissueFreight; set { Set(ref reissueFreight, value); } }
public decimal ReissueProductAmount { get => reissueProductAmount; set { Set(ref reissueProductAmount, value); } }
public decimal StorageAmount { get; set; } = 0.0M;
public object Clone()
{
return this.MemberwiseClone();

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

@ -348,7 +348,7 @@
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox_order,Converter={StaticResource widthConverter},ConverterParameter=-0}"
MinHeight="185">
MinHeight="155">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
@ -453,7 +453,7 @@
<Run Text="货号:" />
<Run Text="{Binding ProductItemNum}"/>
</TextBlock>
<TextBlock DataContext="{Binding DataContext,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}"
<!--<TextBlock DataContext="{Binding DataContext,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox}}"
TextTrimming="CharacterEllipsis">
<TextBlock.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
@ -462,7 +462,7 @@
</TextBlock.ToolTip>
<Run Text="买家备注:" />
<Run Text="{Binding BuyerRemark}"/>
</TextBlock>
</TextBlock>-->
<Border BorderBrush="{StaticResource Text.Pink}" BorderThickness="1" HorizontalAlignment="Left" Padding="5,2"
Visibility="{Binding IsRefund,ConverterParameter=true:Visible:Collapsed,Converter={StaticResource objConverter}}">
<TextBlock Text="售后" Foreground="{StaticResource Text.Pink}"/>
@ -495,6 +495,11 @@
</MultiBinding>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
@ -749,7 +754,7 @@
<Run Text="{Binding OrderCost.RefundPurchaseAmount}"/>
</TextBlock>
<TextBlock>
<TextBlock >
<Run Text="快递费用"/>
<Run Text="{Binding OrderCost.DeliveryExpressFreight}"/>
</TextBlock>
@ -764,35 +769,6 @@
<Run Text="{Binding SDType,Converter={StaticResource objConverter},ConverterParameter=自刷:空单号/刷单号:SD佣金}"/>
<Run Text="{Binding OrderCost.SDCommissionAmount}"/>
</TextBlock>
<StackPanel Orientation="Horizontal"
Visibility="{Binding OrderCost.TotalReissue,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}">
<TextBlock>
<Run Text="补发总计"/>
<Run Text="{Binding OrderCost.TotalReissue,Mode=OneWay}"/>
</TextBlock>
<Path Style="{StaticResource path_question}" Width="14" Margin="5,0,0,0" Fill="{StaticResource Text.Pink}" ToolTipService.InitialShowDelay="0">
<Path.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<StackPanel>
<TextBlock>
<Run Text="补发快递成本"/>
<Run Text="{Binding OrderCost.ReissueFreight}"/>
</TextBlock>
<TextBlock>
<Run Text="补发货款成本"/>
<Run Text="{Binding OrderCost.ReissueProductAmount}"/>
</TextBlock>
<TextBlock>
<Run Text="售后补偿成本"/>
<Run Text="{Binding OrderCost.ReissueAfterSaleAmount}"/>
</TextBlock>
</StackPanel>
</ToolTip>
</Path.ToolTip>
</Path>
</StackPanel>
<TextBlock>
<Run Text="成本总计"/>
<Run Text="{Binding OrderCost.TotalCost,Mode=OneWay}"/>
@ -1071,7 +1047,7 @@
<Path Style="{StaticResource path_question}" Width="14" Margin="5,0,0,0" Fill="{StaticResource Text.Pink}" ToolTipService.InitialShowDelay="0">
<Path.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<Grid Width="700" Height="120">
<Grid Width="770" Height="120">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
@ -1094,6 +1070,7 @@
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
@ -1106,13 +1083,13 @@
<Grid Grid.ColumnSpan="2" Background="{StaticResource Border.Background}">
<TextBlock Text="商品成本"/>
</Grid>
<Grid Grid.Column="2" Grid.ColumnSpan="5" Background="{StaticResource Border.Background}">
<Grid Grid.Column="2" Grid.ColumnSpan="6" Background="{StaticResource Border.Background}">
<TextBlock Text="期间成本"/>
</Grid>
<Grid Grid.Column="7" Grid.ColumnSpan="2" Background="{StaticResource Border.Background}">
<Grid Grid.Column="8" Grid.ColumnSpan="2" Background="{StaticResource Border.Background}">
<TextBlock Text="售后损耗"/>
</Grid>
<Grid Grid.Column="9" Grid.RowSpan="2" Background="{StaticResource Border.Background}">
<Grid Grid.Column="10" Grid.RowSpan="2" Background="{StaticResource Border.Background}">
<TextBlock Text="退款采购成本"/>
</Grid>
@ -1139,49 +1116,56 @@
<TextBlock Text="出库操作费"/>
</Grid>
<Grid Grid.Row="1" Grid.Column="7" Background="{StaticResource Border.Background}">
<TextBlock Text="退货入库"/>
<TextBlock Text="仓储费"/>
</Grid>
<Grid Grid.Row="1" Grid.Column="8" Background="{StaticResource Border.Background}">
<TextBlock Text="退货入库"/>
</Grid>
<Grid Grid.Row="1" Grid.Column="9" Background="{StaticResource Border.Background}">
<TextBlock Text="售后补偿"/>
</Grid>
<!--Row 3-->
<TextBlock Grid.Row="2" Text="{Binding ReissueProductAmount}"
Visibility="{Binding ReissueProductAmount,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
Visibility="{Binding ReissueProductAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding ReissueFreight}"
Visibility="{Binding ReissueFreight,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
Visibility="{Binding ReissueFreight,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="2" Text="{Binding FirstFreight}"
Visibility="{Binding FirstFreight,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
Visibility="{Binding FirstFreight,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="3" Text="{Binding ConsumableAmount}"
Visibility="{Binding ConsumableAmount,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
Visibility="{Binding ConsumableAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="4" Text="{Binding DeliveryExpressFreight}"
Visibility="{Binding DeliveryExpressFreight,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
Visibility="{Binding DeliveryExpressFreight,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="5" Text="{Binding InStorageAmount}"
Visibility="{Binding InStorageAmount,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
Visibility="{Binding InStorageAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="6" Text="{Binding OutStorageAmount}"
Visibility="{Binding OutStorageAmount,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="7" Text="{Binding RefundInStorageAmount}"
Visibility="{Binding RefundInStorageAmount,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="8" Text="{Binding ReissueAfterSaleAmount}"
Visibility="{Binding ReissueAfterSaleAmount,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="9" Text="{Binding RefundPurchaseAmount}"
Visibility="{Binding RefundPurchaseAmount,ConverterParameter=0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
Visibility="{Binding OutStorageAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="7" Text="{Binding StorageAmount}"
Visibility="{Binding StorageAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="8" Text="{Binding RefundInStorageAmount}"
Visibility="{Binding RefundInStorageAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="9" Text="{Binding ReissueAfterSaleAmount}"
Visibility="{Binding ReissueAfterSaleAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="10" Text="{Binding RefundPurchaseAmount}"
Visibility="{Binding RefundPurchaseAmount,ConverterParameter=0|0.0|0.00:Collapsed:Visible,Converter={StaticResource objConverter}}"/>
<!--Line-->
<Border Width="1" Grid.Column="1" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="6" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="8" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="7" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="9" Grid.RowSpan="3" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="2" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="3" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="4" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="5" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="7" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="6" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="8" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" Grid.Column="9" Grid.Row="1" Grid.RowSpan="2" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Height="1" VerticalAlignment="Bottom" Grid.ColumnSpan="9" Background="{StaticResource Border.Brush}"/>
<Border Height="1" VerticalAlignment="Bottom" Grid.Row="1" Grid.ColumnSpan="10" Background="{StaticResource Border.Brush}"/>
<Border Height="1" VerticalAlignment="Bottom" Grid.ColumnSpan="10" Background="{StaticResource Border.Brush}"/>
<Border Height="1" VerticalAlignment="Bottom" Grid.Row="1" Grid.ColumnSpan="11" Background="{StaticResource Border.Brush}"/>
</Grid>
</Border>
<TextBlock Grid.Row="1" VerticalAlignment="Center" Margin="0,5">

55
BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs

@ -1,4 +1,5 @@
using BBWY.Common.Models;
using BBWY.Server.Business.Extensions;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using System;
@ -28,6 +29,7 @@ namespace BBWY.Server.Business
Logo = osku.Logo,
OrderId = aso.OrderId,
OutStorageAmount = aso.OutStorageAmount,
StorageAmount = aso.StorageAmount,
ProductHealth = aso.ProductHealth,
ProductId = aso.ProductId,
ProductResult = aso.ProductResult,
@ -94,6 +96,10 @@ namespace BBWY.Server.Business
var afterSaleOrderList = fsql.Select<AfterSaleOrder>().Where(aso => aso.OrderId == editAfterSaleOrderRequest.OrderId).ToList();
var dbAfterSaleOrder = afterSaleOrderList.FirstOrDefault(aso => aso.Id == editAfterSaleOrderRequest.Id);
var dbOrder = fsql.Select<Order>(editAfterSaleOrderRequest.OrderId).ToOne();
var dbOrderCostDetail = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == editAfterSaleOrderRequest.OrderId &&
ocd.SkuId == dbAfterSaleOrder.SkuId &&
ocd.IsEnabled == true).ToOne();
var dbOrderCost = fsql.Select<OrderCost>(editAfterSaleOrderRequest.OrderId).ToOne();
#region 更新当前服务单属性
dbAfterSaleOrder.ServiceResult = editAfterSaleOrderRequest.ServiceResult;
@ -109,6 +115,7 @@ namespace BBWY.Server.Business
dbAfterSaleOrder.RefundInStorageAmount = 0M;
dbAfterSaleOrder.ReissueFreight = 0M;
dbAfterSaleOrder.ReissueProductAmount = 0M;
dbAfterSaleOrder.StorageAmount = 0M;
dbAfterSaleOrder.AfterTotalCost = 0M;
if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult. ||
@ -119,21 +126,39 @@ namespace BBWY.Server.Business
dbAfterSaleOrder.ProductHealth = Model.Enums.ProductHealth.退;
dbAfterSaleOrder.ReissueProductAmount = editAfterSaleOrderRequest.ReissueProductAmount;
dbAfterSaleOrder.ReissueFreight = editAfterSaleOrderRequest.ReissueFreight;
if (dbOrder.StorageType == Model.Enums.StorageType.)
dbAfterSaleOrder.ReissueFreight = editAfterSaleOrderRequest.ReissueFreight; //其他单单更新采购运费
else
dbAfterSaleOrder.DeliveryExpressFreight = editAfterSaleOrderRequest.ReissueFreight; //代发单更新快递费
}
else if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.退)
else if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.)
{
if (dbAfterSaleOrder.ProductResult == Model.Enums.ProductResult.退 ||
dbAfterSaleOrder.ProductResult == Model.Enums.ProductResult.退)
dbAfterSaleOrder.ConsumableAmount = dbOrderCostDetail.ConsumableAmount;
dbAfterSaleOrder.DeliveryExpressFreight = dbOrderCostDetail.DeliveryExpressFreight;
dbAfterSaleOrder.FirstFreight = dbOrderCostDetail.FirstFreight;
dbAfterSaleOrder.ReissueProductAmount = dbOrderCostDetail.SkuAmount;
dbAfterSaleOrder.ReissueFreight = dbOrderCostDetail.PurchaseFreight;
dbAfterSaleOrder.StorageAmount = dbOrderCostDetail.StorageAmount;
if (dbOrder.StorageType == Model.Enums.StorageType.)
{
dbAfterSaleOrder.InStorageAmount = 0.2M * dbOrderCostDetail.DeductionQuantity;
dbAfterSaleOrder.OutStorageAmount = 0.9M * dbOrderCostDetail.DeductionQuantity;
}
else if (dbOrder.StorageType == Model.Enums.StorageType.)
{
dbAfterSaleOrder.InStorageAmount = 1.4M * dbOrderCostDetail.DeductionQuantity;
dbAfterSaleOrder.OutStorageAmount = 1.4M * dbOrderCostDetail.DeductionQuantity;
}
}
if (dbAfterSaleOrder.ProductResult == Model.Enums.ProductResult.退 || dbAfterSaleOrder.ProductResult == Model.Enums.ProductResult.退)
dbAfterSaleOrder.RefundInStorageAmount = 1M;
if (dbAfterSaleOrder.ProductHealth == Model.Enums.ProductHealth.)
{
//原sku采购成本
dbAfterSaleOrder.RefundPurchaseAmount = dbOrderCostDetail.TotalCost;
}
else if (dbAfterSaleOrder.ProductHealth == Model.Enums.ProductHealth._ ||
dbAfterSaleOrder.ProductHealth == Model.Enums.ProductHealth.退 ||
@ -142,9 +167,27 @@ namespace BBWY.Server.Business
dbAfterSaleOrder.RefundPurchaseAmount = 0M;
}
dbAfterSaleOrder.AfterTotalCost = dbAfterSaleOrder.ReissueAfterSaleAmount.Value +
dbAfterSaleOrder.ConsumableAmount.Value +
dbAfterSaleOrder.DeliveryExpressFreight.Value +
dbAfterSaleOrder.FirstFreight.Value +
dbAfterSaleOrder.InStorageAmount.Value +
dbAfterSaleOrder.OutStorageAmount.Value +
dbAfterSaleOrder.RefundInStorageAmount.Value +
dbAfterSaleOrder.ReissueFreight.Value +
dbAfterSaleOrder.ReissueProductAmount.Value +
dbAfterSaleOrder.StorageAmount;
#endregion
dbOrderCost.CalculationOrderProfitAndCost(dbOrder, afterSaleOrderList);
fsql.Transaction(() =>
{
fsql.Update<OrderCost>().SetSource(dbOrderCost).ExecuteAffrows();
fsql.Update<AfterSaleOrder>().SetSource(dbAfterSaleOrder).ExecuteAffrows();
});
}
}
}

28
BBWY.Server.Business/Extensions/OrderCostExtension.cs

@ -0,0 +1,28 @@
using BBWY.Server.Model.Db;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BBWY.Server.Business.Extensions
{
public static class OrderCostExtension
{
public static void CalculationOrderProfitAndCost(this OrderCost orderCost, Order order, IList<AfterSaleOrder> afterSaleOrders)
{
orderCost.AfterTotalCost = afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost);
orderCost.RefundAmount = afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.RefundAmount ?? 0M);
orderCost.RefundPurchaseAmount = afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0);
//退款之后平台扣点
orderCost.PlatformCommissionAmount = (order.OrderSellerPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio);
orderCost.Profit = order.OrderSellerPrice + order.FreightPrice - orderCost.RefundAmount -
orderCost.PurchaseAmount -
orderCost.DeliveryExpressFreight -
orderCost.PlatformCommissionAmount -
orderCost.AfterTotalCost +
orderCost.RefundPurchaseAmount;
}
}
}

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

@ -620,13 +620,6 @@ namespace BBWY.Server.Business
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);

6
BBWY.Server.Model/Db/Order/AfterSaleOrder.cs

@ -133,6 +133,12 @@ namespace BBWY.Server.Model.Db
[Column(DbType = "decimal(20,2)")]
public decimal AfterTotalCost { get; set; } = 0.0M;
/// <summary>
/// 仓储费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal StorageAmount { get; set; } = 0.0M;
}
}

Loading…
Cancel
Save