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<OrderPurchaseInfo> insertOrderPurchaseInfos = new List<OrderPurchaseInfo>();
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<string> updatePurchaseTimeLimitTaskOrderSkuList = new List<string>();
List<QiKuPackTaskSkuPurchaseSchemeIdRequest> notifyQikuPackSchemeParamList = null;
@ -328,6 +328,7 @@ namespace BBWYB.Server.Business
IUpdate<OrderCost> updateOrderCost = null;
List<OrderSkuCost> insertOrderSkuCostList = new List<OrderSkuCost>();
IList<IUpdate<OrderSkuCost>> updateOrderSkuCostList = new List<IUpdate<OrderSkuCost>>();
List<PP_QueryOrderDetailSkuResponse> createdPurchaseOrderItemList = new List<PP_QueryOrderDetailSkuResponse>();
foreach (var cargoParamGroup in request.CargoParamGroupList)
{
@ -338,8 +339,6 @@ namespace BBWYB.Server.Business
var client = ppPlatformClientFactory.GetClient((AdapterEnums.PlatformType)cargoParamGroup.PurchasePlatform);
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 createOrderResponse = client.CreateOrder(new PP_CreateOrderRequest()
@ -372,15 +371,15 @@ namespace BBWYB.Server.Business
AppToken = purchaseAccount.AppToken,
OrderId = createOrderResponse.OrderId
});
createdPurchaseOrderItemList.AddRange(purchaseOrderSimpleInfo.ItemList);
//totalPurchaseProductAmount += purchaseOrderSimpleInfo.ProductAmount;
//totalPurchaseFreight += purchaseOrderSimpleInfo.FreightAmount;
#region 创建订单采购关系
foreach (var cargoParam in cargoParamGroup.CargoParamList)
{
var orderSku = orderSkus.FirstOrDefault(osku => osku.SkuId == cargoParam.BelongSkuId);
#region 创建订单采购关系
insertOrderPurchaseRelationInfoList.Add(new OrderPurchaseRelationInfo()
{
Id = idGenerator.NewLong(),
@ -395,8 +394,8 @@ namespace BBWYB.Server.Business
SchemeId = cargoParam.SchemeId,
SourceSkuId = orderSku?.BelongSkuId
});
#endregion
}
#endregion
#region 等比计算采购成本
var proportionalCalculationResultList = ProportionalCalculationCost(cargoParamGroup.CargoParamList, purchaseOrderSimpleInfo);
@ -497,6 +496,27 @@ namespace BBWYB.Server.Business
#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成本
var allOrderCostDetail = orderCostDetailList.Union(insertOrderCostDetails).ToList();
foreach (var orderSku in orderSkus)
@ -590,8 +610,11 @@ namespace BBWYB.Server.Business
fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows();
updateOrderCost?.ExecuteAffrows();
insertOrderCost?.ExecuteAffrows();
if (updatePurchaseTimeSchemeIdList.Count() > 0)
fsql.Update<PurchaseScheme>(updatePurchaseTimeSchemeIdList).Set(p => p.LastPurchaseTime, DateTime.Now).ExecuteAffrows();
if (updatePurchaseSchemeList.Count() > 0)
{
foreach (var update in updatePurchaseSchemeList)
update.ExecuteAffrows();
}
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState)
.SetIf(!string.IsNullOrEmpty(request.Remark), o => o.PurchaseRemark, request.Remark)
.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.Dto;
using FreeSql;
using MySqlX.XDevAPI;
using Newtonsoft.Json;
using Org.BouncyCastle.Asn1.X509.Qualified;
using System.Net.Http.Headers;
using Yitter.IdGenerator;
namespace BBWYB.Server.Business

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

@ -17,7 +17,7 @@
public string SpecId { get; set; }
/// <summary>
/// 采购数量
/// 采购配件数量 (订单sku数量 * 采购比例)
/// </summary>
public int Quantity { get; set; }
@ -30,6 +30,11 @@
/// 采购方案Id
/// </summary>
public long SchemeId { get; set; }
/// <summary>
/// 配件的采购比例 不传值默认1
/// </summary>
public int? PurchaseRatio { get; set; }
}
public class CargoParamGroupRequest
{
@ -52,6 +57,6 @@
/// <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>
public IList<PurchaseAccountRequest> PurchaseAccountList { get; set; }
public List<PurchaseAccountRequest> PurchaseAccountList { get; set; }
public Enums.PurchaseOrderMode PurchaseOrderMode { get; set; }
@ -19,7 +19,7 @@ namespace BBWYB.Server.Model.Dto
/// <summary>
/// 采购参数列表(以采购商分组)
/// </summary>
public IList<CargoParamGroupRequest> CargoParamGroupList { get; set; }
public List<CargoParamGroupRequest> CargoParamGroupList { get; set; }
}
}

Loading…
Cancel
Save