@@ -585,11 +585,14 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
}
skuMap := make ( map [ int ] * model . SkuAndName )
for _ , v := range skuList {
if jxOrder . OrderType = = model . OrderTypeMatter {
if fromStoreID ! = 0 {
if v . EclpID == "" {
return nil , nil , fmt . Errorf ( "此商品物料编码为空, 请联系管理员! skuID:[%v]" , v . ID )
}
}
// if jxOrder.OrderType == model.OrderTypeMatter {
// }
skuMap [ v . ID ] = v
}
var (
@@ -597,10 +600,14 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
sum int //申请物料的店的最近销量,以下会根据销量计算具体袋子的价格
flag = false //新店袋子拆分当个参数
)
if jxOrder . OrderType = = model . OrderTypeMatter && fromStoreID != - 1 {
if fromStoreID ! = 0 && fromStoreID != - 1 {
result , _ = orderman . GetMatterStoreOrderCount ( nil , fromStoreID )
sum = result . Count
}
// if jxOrder.OrderType == model.OrderTypeMatter && fromStoreID != -1 {
// result, _ = orderman.GetMatterStoreOrderCount(nil, fromStoreID)
// sum = result.Count
// }
if jxOrder . Weight == 0 {
for _ , v := range jxOrder . Skus {
v . Weight = storeSkuMap [ v . SkuID ] . Weight
@@ -609,13 +616,15 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
}
for _ , v := range skus {
if storeSkuBind := storeSkuMap [ v . SkuID ] ; storeSkuBind != nil {
if jxOrder . OrderType = = model . OrderTypeMatter {
if fromStoreID ! = 0 {
// if jxOrder.OrderType == model.OrderTypeMatter {
result2 , _ := api . JdEclpAPI . QueryStock ( storeSkuBind . EclpID )
if len ( result2 ) > 0 {
if result2 [ 0 ] . UsableNum < v . Count {
return nil , nil , fmt . Errorf ( "此商品库存不足无法购买, 请联系管理员! skuID:[%v]" , v . SkuID )
}
}
// }
}
if sku := skuMap [ v . SkuID ] ; sku != nil {
jxSku := & JxSkuInfo {
@@ -647,7 +656,8 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
}
}
if jxSku != nil {
if jxOrder . OrderType != model . OrderTypeMatter || ( jxOrder . OrderType == model . OrderTypeMatter && fromStoreID == - 1 ) {
if fromStoreID == 0 || fromStoreID == - 1 {
// if jxOrder.OrderType != model.OrderTypeMatter || (jxOrder.OrderType == model.OrderTypeMatter && fromStoreID == -1) {
outJxOrder . Skus = append ( outJxOrder . Skus , jxSku )
outJxOrder . OrderPrice += int64 ( jxSku . Count ) * jxSku . SalePrice
} else { //以下else为物料订单袋子金额和数量处理
@@ -764,19 +774,19 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
return nil , nil , fmt . Errorf ( "fromStoreID有误,[%v]" , fromStoreID )
}
outJxOrder . FromStoreID = fromStoreID
if jxOrder. OrderType == model . OrderTypeMatter {
//TODO 修改配送费规则, 2020-04-28
//3kg 5元, 每多1kg加2元
//配送费要按分包规则计算
if outJxOrder . Weight <= 3000 {
outJxOrder . FreightPrice = 500
} else if outJxOrder . Weight > 3000 && outJxOrder . Weight <= splitMatterOrderMinWeight {
outJxOrder . FreightPrice = utils . Float64TwoInt64 ( 500 + math . Ceil ( ( utils . Int2Float64 ( outJxOrder . Weight ) - 3000 ) / 1000 ) * 200 )
} else {
_ , freightPrice , _ := tryToSplitMatterOrder ( jxOrder )
outJxOrder . FreightPrice = freightPrice
}
// if jxOrder. OrderType == model. OrderTypeMatter {
//TODO 修改配送费规则, 2020-04-28
//3kg 5元, 每多1kg加2元
//配送费要按分包规则计算
if outJxOrder . Weight <= 3000 {
outJxOrder . FreightPrice = 500
} else if outJxOrder . Weight > 3000 && outJxOrder . Weight <= splitMatterOrderMinWeight {
outJxOrder . FreightPrice = utils . Float64TwoInt64 ( 500 + math . Ceil ( ( utils . Int2Float64 ( outJxOrder . Weight ) - 3000 ) / 1000 ) * 200 )
} else {
_ , freightPrice , _ := tryToSplitMatterOrder ( jxOrder )
outJxOrder . FreightPrice = freightPrice
}
// }
//要求配送人姓名填门店名
if fromStoreID != - 1 {
deliveryAddress . ConsigneeName = storeDetail2 . Name
@@ -895,10 +905,10 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
order . FromStoreID = jxOrder . FromStoreID
order . DeliveryFlag = model . OrderDeliveryFlagMaskScheduleDisabled
order . Flag = 1
if jxOrder. OrderType == model . OrderTypeMatter {
order . WaybillVendorID = model . VendorIDJDWL
order . ConsigneeAddress = deliveryAddress . Address
}
// if jxOrder. OrderType == model. OrderTypeMatter {
order . WaybillVendorID = model . VendorIDJDWL
order . ConsigneeAddress = deliveryAddress . Address
// }
}
//如果是自提单就设置
if IsDeliverySelf {
@@ -932,8 +942,9 @@ func PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string)
}
func orderSolutionForWuLiao ( order * model . GoodsOrder ) ( err error ) {
err = changeOrderStatus ( order . VendorOrderID , model . OrderStatusDelivering , "" )
if order . OrderType == model . OrderTypeMatter {
if order . FromStoreID != 0 {
err = changeOrderStatus ( order . VendorOrderID , model . OrderStatusDelivering , "" )
// if order.OrderType == model.OrderTypeMatter {
var (
db = dao . GetDB ( )
)
@@ -1116,7 +1127,8 @@ func CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string)
}
func CancelMatterOrder ( db * dao . DaoDB , order * model . GoodsOrder , reason string ) ( err error ) {
if order . OrderType = = model . OrderTypeMatter {
if order . FromStoreID ! = 0 {
// if order.OrderType == model.OrderTypeMatter {
if order . EclpOutID != "" {
//表示是京西的物料订单的子订单(拆分后的订单)
if len ( order . VendorOrderID ) == 16 && order . VendorID == model . VendorIDJX {