Browse Source

采购方案最近采购成本是以采购单的实际单价为准

yijia
shanji 2 years ago
parent
commit
db58c1fa65
  1. 39
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  2. 3
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  3. 9
      BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs
  4. 4
      BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs

39
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -317,7 +317,7 @@ namespace BBWYB.Server.Business
List<OrderCostDetail> insertOrderCostDetails = new List<OrderCostDetail>(); List<OrderCostDetail> insertOrderCostDetails = new List<OrderCostDetail>();
List<OrderPurchaseInfo> insertOrderPurchaseInfos = new List<OrderPurchaseInfo>(); List<OrderPurchaseInfo> insertOrderPurchaseInfos = new List<OrderPurchaseInfo>();
List<OrderPurchaseSkuInfo> insertOrderPurchaseSkuInfos = new List<OrderPurchaseSkuInfo>(); List<OrderPurchaseSkuInfo> insertOrderPurchaseSkuInfos = new List<OrderPurchaseSkuInfo>();
List<long> updatePurchaseTimeSchemeIdList = new List<long>(); List<IUpdate<PurchaseScheme>> updatePurchaseSchemeList = new List<IUpdate<PurchaseScheme>>();
List<OrderPurchaseRelationInfo> insertOrderPurchaseRelationInfoList = new List<OrderPurchaseRelationInfo>(); List<OrderPurchaseRelationInfo> insertOrderPurchaseRelationInfoList = new List<OrderPurchaseRelationInfo>();
List<string> updatePurchaseTimeLimitTaskOrderSkuList = new List<string>(); List<string> updatePurchaseTimeLimitTaskOrderSkuList = new List<string>();
List<QiKuPackTaskSkuPurchaseSchemeIdRequest> notifyQikuPackSchemeParamList = null; List<QiKuPackTaskSkuPurchaseSchemeIdRequest> notifyQikuPackSchemeParamList = null;
@ -328,6 +328,7 @@ namespace BBWYB.Server.Business
IUpdate<OrderCost> updateOrderCost = null; IUpdate<OrderCost> updateOrderCost = null;
List<OrderSkuCost> insertOrderSkuCostList = new List<OrderSkuCost>(); List<OrderSkuCost> insertOrderSkuCostList = new List<OrderSkuCost>();
IList<IUpdate<OrderSkuCost>> updateOrderSkuCostList = new List<IUpdate<OrderSkuCost>>(); IList<IUpdate<OrderSkuCost>> updateOrderSkuCostList = new List<IUpdate<OrderSkuCost>>();
List<PP_QueryOrderDetailSkuResponse> createdPurchaseOrderItemList = new List<PP_QueryOrderDetailSkuResponse>();
foreach (var cargoParamGroup in request.CargoParamGroupList) foreach (var cargoParamGroup in request.CargoParamGroupList)
{ {
@ -338,8 +339,6 @@ namespace BBWYB.Server.Business
var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform); var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform);
var extJson = extJArray.FirstOrDefault(j => j.Value<string>("PurchaserId") == cargoParamGroup.PurchaserId); var extJson = extJArray.FirstOrDefault(j => j.Value<string>("PurchaserId") == cargoParamGroup.PurchaserId);
updatePurchaseTimeSchemeIdList.AddRange(cargoParamGroup.CargoParamList.Select(p => p.SchemeId).Distinct());
var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList); var orderProductParamList = CombineRepeatPurchaseSku(cargoParamGroup.CargoParamList);
var createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest() var createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest()
@ -372,15 +371,15 @@ namespace BBWYB.Server.Business
AppToken = purchaseAccount.AppToken, AppToken = purchaseAccount.AppToken,
OrderId = createOrderResponse.OrderId OrderId = createOrderResponse.OrderId
}); });
createdPurchaseOrderItemList.AddRange(purchaseOrderSimpleInfo.ItemList);
//totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount; //totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount;
//totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount; //totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount;
#region 创建订单采购关系
foreach (var cargoParam in cargoParamGroup.CargoParamList) foreach (var cargoParam in cargoParamGroup.CargoParamList)
{ {
var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == cargoParam.BelongSkuId); var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == cargoParam.BelongSkuId);
#region 创建订单采购关系
insertOrderPurchaseRelationInfoList.Add(new OrderPurchaseRelationInfo() insertOrderPurchaseRelationInfoList.Add(new OrderPurchaseRelationInfo()
{ {
Id = idGenerator.NewLong(), Id = idGenerator.NewLong(),
@ -395,8 +394,8 @@ namespace BBWYB.Server.Business
SchemeId = cargoParam.SchemeId, SchemeId = cargoParam.SchemeId,
SourceSkuId = orderSku?.BelongSkuId SourceSkuId = orderSku?.BelongSkuId
}); });
#endregion
} }
#endregion
#region 等比计算采购成本 #region 等比计算采购成本
var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamGroup.CargoParamList, purchaseOrderSimpleInfo); var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamGroup.CargoParamList, purchaseOrderSimpleInfo);
@ -497,6 +496,27 @@ namespace BBWYB.Server.Business
#endregion #endregion
} }
#region 更新采购方案最近采购价格
{
var allCargoParamList = new List<CargoParamRequest>();
request.CargoParamGroupList.ForEach(x => allCargoParamList.AddRange(x.CargoParamList));
var cargoParamGroupsBySchemeList = allCargoParamList.GroupBy(c => c.SchemeId);
foreach (var cargoParamGroupsByScheme in cargoParamGroupsBySchemeList)
{
var defalutCost = 0M;
var schemeId = cargoParamGroupsByScheme.Key;
defalutCost = cargoParamGroupsByScheme.Sum(cargoParam => createdPurchaseOrderItemList.Where(x => x.SkuId == cargoParam.SkuId)
.Select(x => x.Price * (cargoParam.PurchaseRatio ?? 1)).DefaultIfEmpty(0M).First());
var update = fsql.Update<PurchaseScheme>(schemeId).Set(ps => ps.LastPurchaseTime, DateTime.Now)
.Set(ps => ps.LastPurchasePriceCost, defalutCost);
updatePurchaseSchemeList.Add(update);
}
}
#endregion
#region 订单Sku成本 #region 订单Sku成本
var allOrderCostDetail = orderCostDetailList.Union(insertOrderCostDetails).ToList(); var allOrderCostDetail = orderCostDetailList.Union(insertOrderCostDetails).ToList();
foreach (var orderSku in orderSkus) foreach (var orderSku in orderSkus)
@ -590,8 +610,11 @@ namespace BBWYB.Server.Business
fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows(); fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows();
updateOrderCost?.ExecuteAffrows(); updateOrderCost?.ExecuteAffrows();
insertOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows();
if (updatePurchaseTimeSchemeIdList.Count() > 0) if (updatePurchaseSchemeList.Count() > 0)
fsql.Update<PurchaseScheme>(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows(); {
foreach (var update in updatePurchaseSchemeList)
update.ExecuteAffrows();
}
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState) fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState)
.SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark) .SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark)
.Set(o => o.IsPurchased, true) .Set(o => o.IsPurchased, true)

3
BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

@ -6,10 +6,7 @@ using BBWYB.Server.Model;
using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto; using BBWYB.Server.Model.Dto;
using FreeSql; using FreeSql;
using MySqlX.XDevAPI;
using Newtonsoft.Json; using Newtonsoft.Json;
using Org.BouncyCastle.Asn1.X509.Qualified;
using System.Net.Http.Headers;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWYB.Server.Business namespace BBWYB.Server.Business

9
BBWYB.Server.Model/Dto/Request/PurchaseOrder/CargoParamRequest.cs

@ -17,7 +17,7 @@
public string SpecId { get; set; } public string SpecId { get; set; }
/// <summary> /// <summary>
/// 采购数量 /// 采购配件数量 (订单sku数量 * 采购比例)
/// </summary> /// </summary>
public int Quantity { get; set; } public int Quantity { get; set; }
@ -30,6 +30,11 @@
/// 采购方案Id /// 采购方案Id
/// </summary> /// </summary>
public long SchemeId { get; set; } public long SchemeId { get; set; }
/// <summary>
/// 配件的采购比例 不传值默认1
/// </summary>
public int? PurchaseRatio { get; set; }
} }
public class CargoParamGroupRequest public class CargoParamGroupRequest
{ {
@ -52,6 +57,6 @@
/// <summary> /// <summary>
/// 采购商品列表 /// 采购商品列表
/// </summary> /// </summary>
public IList<CargoParamRequest> CargoParamList { get; set; } public List<CargoParamRequest> CargoParamList { get; set; }
} }
} }

4
BBWYB.Server.Model/Dto/Request/PurchaseOrder/PreviewOrderRequest.cs

@ -7,7 +7,7 @@ namespace BBWYB.Server.Model.Dto
/// <summary> /// <summary>
/// 采购账号列表 /// 采购账号列表
/// </summary> /// </summary>
public IList<PurchaseAccountRequest> PurchaseAccountList { get; set; } public List<PurchaseAccountRequest> PurchaseAccountList { get; set; }
public Enums.PurchaseOrderMode PurchaseOrderMode { get; set; } public Enums.PurchaseOrderMode PurchaseOrderMode { get; set; }
@ -19,7 +19,7 @@ namespace BBWYB.Server.Model.Dto
/// <summary> /// <summary>
/// 采购参数列表(以采购商分组) /// 采购参数列表(以采购商分组)
/// </summary> /// </summary>
public IList<CargoParamGroupRequest> CargoParamGroupList { get; set; } public List<CargoParamGroupRequest> CargoParamGroupList { get; set; }
} }
} }

Loading…
Cancel
Save