物料订单分包测试
This commit is contained in:
@@ -841,23 +841,21 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
|
|||||||
}
|
}
|
||||||
jxOrder.Skus = skus
|
jxOrder.Skus = skus
|
||||||
outOrders, _, _ := tryToSplitMatterOrder(jxOrder)
|
outOrders, _, _ := tryToSplitMatterOrder(jxOrder)
|
||||||
for _, v := range outOrders {
|
for k, v := range outOrders {
|
||||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder6,[%v]", utils.Format4Output(v, false))
|
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, order.FromStoreID)
|
||||||
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, 0)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
globals.SugarLogger.Debugf("tryToSplitMatterOrder10,[%v]", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder10")
|
outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
|
||||||
outJxOrder.OrderID = GenOrderNo(jxcontext.AdminCtx)
|
|
||||||
outJxOrder.FromStoreID = order.FromStoreID
|
|
||||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder7,[%v]", utils.Format4Output(outJxOrder, false))
|
globals.SugarLogger.Debugf("tryToSplitMatterOrder7,[%v]", utils.Format4Output(outJxOrder, false))
|
||||||
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress)
|
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
order2.AddressID = order.AddressID
|
order2.AddressID = order.AddressID
|
||||||
order2.Status = model.OrderStatusDelivering
|
order2.Status = model.OrderStatusDelivering
|
||||||
globals.SugarLogger.Debugf("tryToSplitMatterOrder8,[%v]", utils.Format4Output(order2, false))
|
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)
|
orderSolutionForWuLiao(order2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1307,6 +1305,14 @@ func tryToSplitMatterOrder(jxOrder *JxOrderInfo) (outOrders []*JxOrderInfo, frei
|
|||||||
return outOrders, freightPrice, err
|
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) {
|
func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *JxOrderInfo) {
|
||||||
outOrder = &JxOrderInfo{}
|
outOrder = &JxOrderInfo{}
|
||||||
outOrder.StoreID = jxOrder.StoreID
|
outOrder.StoreID = jxOrder.StoreID
|
||||||
@@ -1318,7 +1324,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
|
|||||||
sum5 += weightList[i].Weight
|
sum5 += weightList[i].Weight
|
||||||
weightList[i].GroupSign = true
|
weightList[i].GroupSign = true
|
||||||
outOrder.Weight += weightList[i].Weight
|
outOrder.Weight += weightList[i].Weight
|
||||||
|
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]))
|
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if sum5 >= 5000 {
|
if sum5 >= 5000 {
|
||||||
break
|
break
|
||||||
@@ -1330,7 +1346,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
|
|||||||
sum3 += weightList[i].Weight
|
sum3 += weightList[i].Weight
|
||||||
weightList[i].GroupSign = true
|
weightList[i].GroupSign = true
|
||||||
outOrder.Weight += weightList[i].Weight
|
outOrder.Weight += weightList[i].Weight
|
||||||
|
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]))
|
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i]))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if sum3 >= 3000 {
|
if sum3 >= 3000 {
|
||||||
break
|
break
|
||||||
@@ -1344,7 +1370,7 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *
|
|||||||
|
|
||||||
func jxOrderChange(sku2 *JxSkuInfo2) *JxSkuInfo {
|
func jxOrderChange(sku2 *JxSkuInfo2) *JxSkuInfo {
|
||||||
sku := &JxSkuInfo{}
|
sku := &JxSkuInfo{}
|
||||||
sku.Count = sku2.Count
|
sku.Count = 1
|
||||||
sku.Name = sku2.Name
|
sku.Name = sku2.Name
|
||||||
sku.Price = sku2.Price
|
sku.Price = sku2.Price
|
||||||
sku.SalePrice = sku2.SalePrice
|
sku.SalePrice = sku2.SalePrice
|
||||||
|
|||||||
Reference in New Issue
Block a user