物料订单分包测试
This commit is contained in:
@@ -841,23 +841,21 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
|
||||
}
|
||||
jxOrder.Skus = skus
|
||||
outOrders, _, _ := tryToSplitMatterOrder(jxOrder)
|
||||
for _, v := range outOrders {
|
||||
for k, v := range outOrders {
|
||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder6,[%v]", utils.Format4Output(v, false))
|
||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder9,[%v]", utils.Format4Output(order, false))
|
||||
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, 0)
|
||||
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID)
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder10,[%v]", err)
|
||||
return err
|
||||
}
|
||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder10")
|
||||
outJxOrder.OrderID = GenOrderNo(jxcontext.AdminCtx)
|
||||
outJxOrder.FromStoreID = order.FromStoreID
|
||||
outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
|
||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder7,[%v]", utils.Format4Output(outJxOrder, false))
|
||||
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress)
|
||||
if err = err2; err == nil {
|
||||
order2.AddressID = order.AddressID
|
||||
order2.Status = model.OrderStatusDelivering
|
||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder8,[%v]", utils.Format4Output(order2, false))
|
||||
partner.CurOrderManager.SaveOrder(order2, false, db)
|
||||
err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order))
|
||||
orderSolutionForWuLiao(order2)
|
||||
}
|
||||
}
|
||||
@@ -1307,6 +1305,14 @@ func tryToSplitMatterOrder(jxOrder *JxOrderInfo) (outOrders []*JxOrderInfo, frei
|
||||
return outOrders, freightPrice, err
|
||||
}
|
||||
|
||||
//商品分包规则。最后一个包不超过5kg,其他包不超过3kg
|
||||
// 举例1:5.1kg,分为 2.5kg,2.6kg,确保每个包不超过3kg,最后一个包不超过5kg
|
||||
// 举例2:4kg,分为4kg
|
||||
// 举例3:10kg,分为 3kg,3kg,4kg
|
||||
// 举例4:8.1kg,分为 3kg,3kg,2.1kg ; 不能分为3kg,5.1kg
|
||||
//sum5表示5kg的计算
|
||||
//sum3表示3kg的计算
|
||||
//处理过程都是一样的,没单独拿一个函数出来了
|
||||
func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *JxOrderInfo) {
|
||||
outOrder = &JxOrderInfo{}
|
||||
outOrder.StoreID = jxOrder.StoreID
|
||||
@@ -1318,7 +1324,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
|
||||
sum5 += weightList[i].Weight
|
||||
weightList[i].GroupSign = true
|
||||
outOrder.Weight += weightList[i].Weight
|
||||
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||
if len(outOrder.Skus) > 0 {
|
||||
for _, v := range outOrder.Skus {
|
||||
if v.SkuID == weightList[i].SkuID {
|
||||
v.Count++
|
||||
} else {
|
||||
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||
}
|
||||
} else {
|
||||
if sum5 >= 5000 {
|
||||
break
|
||||
@@ -1330,7 +1346,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
|
||||
sum3 += weightList[i].Weight
|
||||
weightList[i].GroupSign = true
|
||||
outOrder.Weight += weightList[i].Weight
|
||||
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||
if len(outOrder.Skus) > 0 {
|
||||
for _, v := range outOrder.Skus {
|
||||
if v.SkuID == weightList[i].SkuID {
|
||||
v.Count++
|
||||
} else {
|
||||
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||
}
|
||||
} else {
|
||||
if sum3 >= 3000 {
|
||||
break
|
||||
@@ -1344,7 +1370,7 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
|
||||
|
||||
func jxOrderChange(sku2 *JxSkuInfo2) *JxSkuInfo {
|
||||
sku := &JxSkuInfo{}
|
||||
sku.Count = sku2.Count
|
||||
sku.Count = 1
|
||||
sku.Name = sku2.Name
|
||||
sku.Price = sku2.Price
|
||||
sku.SalePrice = sku2.SalePrice
|
||||
|
||||
Reference in New Issue
Block a user