shanji 3 years ago
parent
commit
54aedd7d97
  1. 4
      BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs
  2. 12
      BBWY.Server.Business/Order/OrderBusiness.cs
  3. 5
      BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  4. 4
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  5. 93
      BBWY.Test/JDProductAPITest.cs

4
BBWY.JDSDK/Request/SkuWriteUpdateSkusRequest.cs

@ -42,5 +42,9 @@ namespace Jd.Api.Request
public string attrId { get; set; }
public List<string> attrValues { get; set; }
public List<string> attrValueAlias { get; set; }
public int index { get; set; }
}
}

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

@ -466,6 +466,8 @@ namespace BBWY.Server.Business
var orderCostPurchaseAmount = 0M;
var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价
var avgPreferential = dbOrder.PreferentialAmount / orderSkus.Count();
foreach (var orderSku in orderSkus)
{
//查询该sku的扣减明细
@ -533,7 +535,7 @@ namespace BBWY.Server.Business
SkuAmount = purchaseOrder.SingleSkuAmount * deductionQuantity,
StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity
};
orderCostDetail.SkuGrossProfit = orderSku.Price.Value * deductionQuantity - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio;
orderCostDetail.SkuGrossProfit = orderSku.Price.Value * deductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * deductionQuantity * autoCalculationCostRequest.PlatformCommissionRatio;
insertOrderCostDetailList.Add(orderCostDetail);
}
}
@ -603,6 +605,8 @@ namespace BBWY.Server.Business
osku.Price,
osku.ItemTotal
});
var avgPreferential = dbOrder.PreferentialAmount / orderSkuList.Count();
var dbAfterSaleOrderList = fsql.Select<AfterSaleOrder>().Where(aso => aso.OrderId == manualCalculationCostRequest.OrderId).ToList();
if (manualCalculationCostRequest.IsSetStorageType)
@ -619,7 +623,7 @@ namespace BBWY.Server.Business
var osku = orderSkuList.FirstOrDefault(o => o.SkuId == orderCostDetail.SkuId);
if (osku != null)
{
orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity -
orderCostDetail.SkuGrossProfit = osku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential -
(orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) -
osku.Price.Value * orderCostDetail.DeductionQuantity * manualCalculationCostRequest.PlatformCommissionRatio;
}
@ -795,7 +799,7 @@ namespace BBWY.Server.Business
deletePurchaseOrder = fsql.Delete<PurchaseOrder>().Where(po => oldPourchaseIdList.Contains(po.Id));
deleteOrderCostDetail = fsql.Delete<OrderCostDetail>().Where(ocd => ocd.OrderId == dbOrder.Id);
var avgPreferential = dbOrder.PreferentialAmount / dbOrderSkuList.Count();
foreach (var odsRequest in relationPurchaseOrderRequestV2.OrderDropShippingList)
{
@ -876,7 +880,7 @@ namespace BBWY.Server.Business
var dbOrderSku = dbOrderSkuList.FirstOrDefault(dbosku => dbosku.SkuId == relationOrderSku.SkuId);
if (dbOrderSku != null)
{
orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity -
orderCostDetail.SkuGrossProfit = dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential -
(orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) -
dbOrderSku.Price.Value * orderCostDetail.DeductionQuantity * relationPurchaseOrderRequestV2.PlatformCommissionRatio;
}

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

@ -189,6 +189,9 @@ namespace BBWY.Server.Business
IInsert<OrderCost> insertOrderCost = null;
IUpdate<OrderCost> updateOrderCost = null;
IInsert<OrderDropShipping> insertOrderDropShipping = null;
var avgPreferential = dbOrder.PreferentialAmount / orderSkus.Count();
foreach (var orderSku in orderSkus)
{
#region 计算当前sku的采购成本和采购运费
@ -261,7 +264,7 @@ namespace BBWY.Server.Business
//UnitCost = purchaseOrder.UnitCost,
//TotalCost = currentOrderSkuProductAmount + currentOrderSkuFreightAmount//purchaseOrder.UnitCost * orderSku.ItemTotal.Value
};
orderCostDetail.SkuGrossProfit = orderSku.Price.Value * orderCostDetail.DeductionQuantity - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * orderCostDetail.DeductionQuantity * createOnlinePurchaseOrderRequest.PlatformCommissionRatio;
orderCostDetail.SkuGrossProfit = orderSku.Price.Value * orderCostDetail.DeductionQuantity - avgPreferential - (orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) - orderSku.Price.Value * orderCostDetail.DeductionQuantity * createOnlinePurchaseOrderRequest.PlatformCommissionRatio;
insertOrderCostDetails.Add(orderCostDetail);
#endregion
}

4
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -492,6 +492,8 @@ namespace BBWY.Server.Business
var orderCostPurchaseAmount = 0M;
var orderDeliveryExpressFreight = 0M; //发货总运费,sku购买数量第二个开始半价
var avgPreferential = dbOrder.PreferentialAmount / orderSkuJArray.Count();
#region 扣减库存
foreach (var orderSkuJToken in orderSkuJArray)
{
@ -550,7 +552,7 @@ namespace BBWY.Server.Business
StorageAmount = purchaseOrder.SingleStorageAmount * deductionQuantity,
IsEnabled = true
};
orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity -
orderCostDetail.SkuGrossProfit = itemPrice * deductionQuantity - avgPreferential -
(orderCostDetail.TotalCost + orderCostDetail.DeliveryExpressFreight) -
itemPrice * deductionQuantity * platformCommissionRatio;
insertOrderCostDetailList.Add(orderCostDetail);

93
BBWY.Test/JDProductAPITest.cs

@ -58,7 +58,7 @@ namespace BBWY.Test
var barCode = "";
var categoryId = "";
IList<JToken> saleAttrs = null;
IList<JToken> multiCateProps = null;
var selectGiftSkuList = new List<ProductSkuResponse>();
@ -88,7 +88,7 @@ namespace BBWY.Test
barCode = skuList[0].Source.Value<string>("barCode");
categoryId = skuList[0].Source.Value<string>("categoryId");
saleAttrs = skuList[0].Source["saleAttrs"] != null ? skuList[0].Source["saleAttrs"].ToList() : null;
multiCateProps = skuList[0].Source["multiCateProps"] != null ? skuList[0].Source["multiCateProps"].ToList() : null;
}
#endregion
@ -125,50 +125,71 @@ namespace BBWY.Test
}
#endregion
#region 增量保存sku
#region 获取销售属性
IList<JToken> colorSaleAttrs = null;
{
var req = new CategoryReadFindAttrsByCategoryIdUnlimitCateRequest();
req.cid = long.Parse(categoryId);
req.attributeType = 4;
req.field = "attrValueList,attrGroup";
var response = client.Execute(req, token, DateTime.Now.ToLocalTime());
Console.WriteLine("销售属性");
if (response.Json == null)
response.Json = JObject.Parse(response.Body);
var colorProperty = response.Json["jingdong_category_read_findAttrsByCategoryIdUnlimitCate_responce"]["findattrsbycategoryidunlimitcate_result"].FirstOrDefault(j => j.Value<long>("id") == 1000007121);
if (colorProperty == null)
throw new Exception("缺少颜色属性");
colorSaleAttrs = colorProperty["attrValueList"].ToList();
}
#endregion
#region 增量保存sku
{
var skusParamList = new List<SkuWriteUpdateSkusItem>();
foreach (var sku in selectGiftSkuList)
var takeColorIndex = colorSaleAttrs.Count() - 1;
for (var i = 0; i < 2; i++)
{
var giftSku = selectGiftSkuList[i];
var p = new SkuWriteUpdateSkusItem()
{
wareId = long.Parse(mainSpu),
skuId = long.Parse(sku.Id),
//saleAttrs = sku.Source["saleAttrs"].Select(s => new SkuWriteUpdateSkusItemSaleAttrs()
//{
// attrId = s.Value<string>("attrId"),
// attrValues = s.Value<JArray>("attrValues").Select(x => x.ToString()).ToList()
//}).ToList(),
jdPrice = sku.Price,
stockNum = 5000,
//skuId = long.Parse(sku.Id),
jdPrice = giftSku.Price,
stockNum = 500,
barCode = barCode,
//multiCateProps = multiCateProps.Select(mp => new SkuWriteUpdateSkusItemSaleAttrs()
//{
// attrId = mp.Value<string>("attrId"),
// attrValues = mp.Value<JArray>("attrValues").Select(x => x.ToString()).ToList()
//}).ToList()
};
var colorProperty = colorSaleAttrs[takeColorIndex];
p.saleAttrs = new List<SkuWriteUpdateSkusItemSaleAttrs>();
foreach (var saleAttr in saleAttrs)
{
var m = new SkuWriteUpdateSkusItemSaleAttrs();
m.attrId = saleAttr.Value<string>("attrId");
m.attrValues = saleAttr.Value<JArray>("attrValues").Select(x => x.ToString()).ToList();
p.saleAttrs.Add(m);
}
p.multiCateProps = new List<SkuWriteUpdateSkusItemSaleAttrs>();
if (multiCateProps != null && multiCateProps.Count() > 0)
{
foreach (var multiCateProp in multiCateProps)
{
var m = new SkuWriteUpdateSkusItemSaleAttrs();
m.attrId = multiCateProp.Value<string>("attrId");
m.attrValues = multiCateProp.Value<JArray>("attrValues").Select(x => x.ToString()).ToList();
p.multiCateProps.Add(m);
}
}
var m = new SkuWriteUpdateSkusItemSaleAttrs();
m.attrId = colorProperty.Value<string>("attId");
m.attrValues = new List<string>() { colorProperty.Value<string>("id") };
m.attrValueAlias = new List<string>() { colorProperty.Value<string>("name") };
m.index = takeColorIndex;
p.saleAttrs.Add(m);
takeColorIndex--;
//foreach (var saleAttr in colorSaleAttrs)
//{
// var m = new SkuWriteUpdateSkusItemSaleAttrs();
// m.attrId = saleAttr.Value<string>("attrId");
// m.attrValues = saleAttr.Value<JArray>("attrValues").Select(x => x.ToString()).ToList();
// p.saleAttrs.Add(m);
//}
//p.multiCateProps = new List<SkuWriteUpdateSkusItemSaleAttrs>();
//if (multiCateProps != null && multiCateProps.Count() > 0)
//{
// foreach (var multiCateProp in multiCateProps)
// {
// var m = new SkuWriteUpdateSkusItemSaleAttrs();
// m.attrId = multiCateProp.Value<string>("attrId");
// m.attrValues = multiCateProp.Value<JArray>("attrValues").Select(x => x.ToString()).ToList();
// p.multiCateProps.Add(m);
// }
//}
skusParamList.Add(p);
}

Loading…
Cancel
Save