Merge remote-tracking branch 'origin/jdshop' into jxact
This commit is contained in:
@@ -736,7 +736,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
// if order.VendorID == model.VendorIDJX {
|
// if order.VendorID == model.VendorIDJX {
|
||||||
// excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS)
|
// excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS)
|
||||||
// }
|
// }
|
||||||
|
//TODO 2020-08-18 饿百美团订单暂时不自动发送三方
|
||||||
|
if order.VendorID == model.VendorIDEBAI || order.VendorID == model.VendorIDMTWM {
|
||||||
|
excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS, model.VendorIDDada)
|
||||||
|
}
|
||||||
if savedOrderInfo != nil {
|
if savedOrderInfo != nil {
|
||||||
//TODO 2020-07-21 发单时间要在门店的营业时间内
|
//TODO 2020-07-21 发单时间要在门店的营业时间内
|
||||||
if savedOrderInfo.storeDetail != nil {
|
if savedOrderInfo.storeDetail != nil {
|
||||||
|
|||||||
@@ -1077,7 +1077,7 @@ func DeleteStoresFromAct(ctx *jxcontext.Context, vendorID int, actTypes, storeID
|
|||||||
task := tasksch.NewParallelTask("将门店从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
task := tasksch.NewParallelTask("将门店从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
storeID := batchItemList[0].(int)
|
storeID := batchItemList[0].(int)
|
||||||
acts, _ := dao.QueryActs(db, 0, 0, 50, 0, "", vendorID, []int{1}, actTypes, nil, storeID, nil, 0, utils.ZeroTimeValue, utils.ZeroTimeValue, time.Now().AddDate(0, -3, 0), time.Now())
|
acts, _ := dao.QueryActs(db, 0, 0, 50, -1, "", vendorID, []int{1}, actTypes, nil, storeID, nil, 0, utils.ZeroTimeValue, utils.ZeroTimeValue, time.Now().AddDate(0, -3, 0), time.Now())
|
||||||
for _, v := range acts.Data {
|
for _, v := range acts.Data {
|
||||||
var actStoreSkuParam []*ActStoreSkuParam
|
var actStoreSkuParam []*ActStoreSkuParam
|
||||||
_, actStoreSkus, _ := dao.GetActStoreSkuVendorList(db, v.ID, []int{vendorID}, nil, nil, "", 0, 99999)
|
_, actStoreSkus, _ := dao.GetActStoreSkuVendorList(db, v.ID, []int{vendorID}, nil, nil, "", 0, 99999)
|
||||||
|
|||||||
@@ -1392,6 +1392,8 @@ func GetSupplySupportStoreSkus(db *DaoDB, fromDate, toDate time.Time, fromStoreI
|
|||||||
JOIN store_sku_bind d ON d.store_id = ? AND d.sku_id = c.sku_id AND d.deleted_at = ?
|
JOIN store_sku_bind d ON d.store_id = ? AND d.sku_id = c.sku_id AND d.deleted_at = ?
|
||||||
JOIN sku e ON e.id = d.sku_id
|
JOIN sku e ON e.id = d.sku_id
|
||||||
JOIN sku_name f ON f.id = e.name_id
|
JOIN sku_name f ON f.id = e.name_id
|
||||||
|
WHERE status <> ?
|
||||||
|
AND stock <> ?
|
||||||
ORDER BY c.count desc
|
ORDER BY c.count desc
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
@@ -1401,6 +1403,8 @@ func GetSupplySupportStoreSkus(db *DaoDB, fromDate, toDate time.Time, fromStoreI
|
|||||||
6039481, //葱姜蒜
|
6039481, //葱姜蒜
|
||||||
fromStoreID,
|
fromStoreID,
|
||||||
storeID, utils.DefaultTimeValue,
|
storeID, utils.DefaultTimeValue,
|
||||||
|
model.StoreSkuBindStatusDontSale,
|
||||||
|
0,
|
||||||
}
|
}
|
||||||
if err = GetRows(db, &getSupplySupportStoreSkusResult, sql, sqlParams); err == nil {
|
if err = GetRows(db, &getSupplySupportStoreSkusResult, sql, sqlParams); err == nil {
|
||||||
return getSupplySupportStoreSkusResult, err
|
return getSupplySupportStoreSkusResult, err
|
||||||
|
|||||||
@@ -585,11 +585,14 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
}
|
}
|
||||||
skuMap := make(map[int]*model.SkuAndName)
|
skuMap := make(map[int]*model.SkuAndName)
|
||||||
for _, v := range skuList {
|
for _, v := range skuList {
|
||||||
if jxOrder.OrderType == model.OrderTypeMatter {
|
if fromStoreID != 0 {
|
||||||
if v.EclpID == "" {
|
if v.EclpID == "" {
|
||||||
return nil, nil, fmt.Errorf("此商品物料编码为空,请联系管理员!skuID:[%v]", v.ID)
|
return nil, nil, fmt.Errorf("此商品物料编码为空,请联系管理员!skuID:[%v]", v.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// if jxOrder.OrderType == model.OrderTypeMatter {
|
||||||
|
|
||||||
|
// }
|
||||||
skuMap[v.ID] = v
|
skuMap[v.ID] = v
|
||||||
}
|
}
|
||||||
var (
|
var (
|
||||||
@@ -597,10 +600,14 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
sum int //申请物料的店的最近销量,以下会根据销量计算具体袋子的价格
|
sum int //申请物料的店的最近销量,以下会根据销量计算具体袋子的价格
|
||||||
flag = false //新店袋子拆分当个参数
|
flag = false //新店袋子拆分当个参数
|
||||||
)
|
)
|
||||||
if jxOrder.OrderType == model.OrderTypeMatter && fromStoreID != -1 {
|
if fromStoreID != 0 && fromStoreID != -1 {
|
||||||
result, _ = orderman.GetMatterStoreOrderCount(nil, fromStoreID)
|
result, _ = orderman.GetMatterStoreOrderCount(nil, fromStoreID)
|
||||||
sum = result.Count
|
sum = result.Count
|
||||||
}
|
}
|
||||||
|
// if jxOrder.OrderType == model.OrderTypeMatter && fromStoreID != -1 {
|
||||||
|
// result, _ = orderman.GetMatterStoreOrderCount(nil, fromStoreID)
|
||||||
|
// sum = result.Count
|
||||||
|
// }
|
||||||
if jxOrder.Weight == 0 {
|
if jxOrder.Weight == 0 {
|
||||||
for _, v := range jxOrder.Skus {
|
for _, v := range jxOrder.Skus {
|
||||||
v.Weight = storeSkuMap[v.SkuID].Weight
|
v.Weight = storeSkuMap[v.SkuID].Weight
|
||||||
@@ -609,13 +616,15 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
}
|
}
|
||||||
for _, v := range skus {
|
for _, v := range skus {
|
||||||
if storeSkuBind := storeSkuMap[v.SkuID]; storeSkuBind != nil {
|
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)
|
result2, _ := api.JdEclpAPI.QueryStock(storeSkuBind.EclpID)
|
||||||
if len(result2) > 0 {
|
if len(result2) > 0 {
|
||||||
if result2[0].UsableNum < v.Count {
|
if result2[0].UsableNum < v.Count {
|
||||||
return nil, nil, fmt.Errorf("此商品库存不足无法购买,请联系管理员!skuID:[%v]", v.SkuID)
|
return nil, nil, fmt.Errorf("此商品库存不足无法购买,请联系管理员!skuID:[%v]", v.SkuID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
if sku := skuMap[v.SkuID]; sku != nil {
|
if sku := skuMap[v.SkuID]; sku != nil {
|
||||||
jxSku := &JxSkuInfo{
|
jxSku := &JxSkuInfo{
|
||||||
@@ -647,7 +656,8 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if jxSku != nil {
|
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.Skus = append(outJxOrder.Skus, jxSku)
|
||||||
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
|
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
|
||||||
} else { //以下else为物料订单袋子金额和数量处理
|
} else { //以下else为物料订单袋子金额和数量处理
|
||||||
@@ -764,19 +774,19 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
return nil, nil, fmt.Errorf("fromStoreID有误,[%v]", fromStoreID)
|
return nil, nil, fmt.Errorf("fromStoreID有误,[%v]", fromStoreID)
|
||||||
}
|
}
|
||||||
outJxOrder.FromStoreID = fromStoreID
|
outJxOrder.FromStoreID = fromStoreID
|
||||||
if jxOrder.OrderType == model.OrderTypeMatter {
|
// if jxOrder.OrderType == model.OrderTypeMatter {
|
||||||
//TODO 修改配送费规则,2020-04-28
|
//TODO 修改配送费规则,2020-04-28
|
||||||
//3kg 5元,每多1kg加2元
|
//3kg 5元,每多1kg加2元
|
||||||
//配送费要按分包规则计算
|
//配送费要按分包规则计算
|
||||||
if outJxOrder.Weight <= 3000 {
|
if outJxOrder.Weight <= 3000 {
|
||||||
outJxOrder.FreightPrice = 500
|
outJxOrder.FreightPrice = 500
|
||||||
} else if outJxOrder.Weight > 3000 && outJxOrder.Weight <= splitMatterOrderMinWeight {
|
} else if outJxOrder.Weight > 3000 && outJxOrder.Weight <= splitMatterOrderMinWeight {
|
||||||
outJxOrder.FreightPrice = utils.Float64TwoInt64(500 + math.Ceil((utils.Int2Float64(outJxOrder.Weight)-3000)/1000)*200)
|
outJxOrder.FreightPrice = utils.Float64TwoInt64(500 + math.Ceil((utils.Int2Float64(outJxOrder.Weight)-3000)/1000)*200)
|
||||||
} else {
|
} else {
|
||||||
_, freightPrice, _ := tryToSplitMatterOrder(jxOrder)
|
_, freightPrice, _ := tryToSplitMatterOrder(jxOrder)
|
||||||
outJxOrder.FreightPrice = freightPrice
|
outJxOrder.FreightPrice = freightPrice
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
//要求配送人姓名填门店名
|
//要求配送人姓名填门店名
|
||||||
if fromStoreID != -1 {
|
if fromStoreID != -1 {
|
||||||
deliveryAddress.ConsigneeName = storeDetail2.Name
|
deliveryAddress.ConsigneeName = storeDetail2.Name
|
||||||
@@ -895,10 +905,10 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
|
|||||||
order.FromStoreID = jxOrder.FromStoreID
|
order.FromStoreID = jxOrder.FromStoreID
|
||||||
order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled
|
order.DeliveryFlag = model.OrderDeliveryFlagMaskScheduleDisabled
|
||||||
order.Flag = 1
|
order.Flag = 1
|
||||||
if jxOrder.OrderType == model.OrderTypeMatter {
|
// if jxOrder.OrderType == model.OrderTypeMatter {
|
||||||
order.WaybillVendorID = model.VendorIDJDWL
|
order.WaybillVendorID = model.VendorIDJDWL
|
||||||
order.ConsigneeAddress = deliveryAddress.Address
|
order.ConsigneeAddress = deliveryAddress.Address
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
//如果是自提单就设置
|
//如果是自提单就设置
|
||||||
if IsDeliverySelf {
|
if IsDeliverySelf {
|
||||||
@@ -932,8 +942,9 @@ func PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
|
func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
|
||||||
err = changeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "")
|
if order.FromStoreID != 0 {
|
||||||
if order.OrderType == model.OrderTypeMatter {
|
err = changeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "")
|
||||||
|
// if order.OrderType == model.OrderTypeMatter {
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
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) {
|
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 order.EclpOutID != "" {
|
||||||
//表示是京西的物料订单的子订单(拆分后的订单)
|
//表示是京西的物料订单的子订单(拆分后的订单)
|
||||||
if len(order.VendorOrderID) == 16 && order.VendorID == model.VendorIDJX {
|
if len(order.VendorOrderID) == 16 && order.VendorID == model.VendorIDJX {
|
||||||
|
|||||||
Reference in New Issue
Block a user