diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 210e8e2f8..4e19f97ad 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -1211,128 +1211,128 @@ func PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) { err = changeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "") - //TODO 2021-10-21 物料暂时不发京东配送,后续如果要发把下面注释放开就行了 - //if order.OrderType == model.OrderTypeMatter { - // var ( - // db = dao.GetDB() - // ) - // goods, err := dao.QueryOrders(db, order.VendorOrderID, -1, []int{model.VendorIDJX}, -1, utils.ZeroTimeValue, utils.ZeroTimeValue) - // if err != nil || len(goods) == 0 { - // return err - // } - // order.WaybillVendorID = model.VendorIDJDWL - // dao.UpdateEntity(db, order, "WaybillVendorID") - // orderSkus := goods[0].Skus - // if order.Weight <= splitMatterOrderMinWeight { //2020-04-26, 从5kg 改为小于4.5kg - // var ( - // goodsNos []string - // prices []string - // quantities []string - // countSum int - // ) - // for _, v := range orderSkus { - // skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) - // if err != nil || len(skus) == 0 { - // continue - // } - // goodsNos = append(goodsNos, skus[0].EclpID) - // prices = append(prices, "0") - // quantities = append(quantities, utils.Int2Str(v.Count)) - // countSum += v.Count - // } - // //总订单不足3kg && 商品数量不足3个 && 五香粉有库存,要送五香粉,补足3个 - // stockResult, err := api.JdEclpAPI.QueryStock(jxwxfMatterEclpID) - // if err == nil && len(stockResult) > 0 && stockResult[0].UsableNum > 0 { - // if order.Weight < 3000 && countSum < 3 { - // //要判断他本身买没买五香粉EMG4418113943423 - // var index = 9999 - // for k, v := range goodsNos { - // if v == jxwxfMatterEclpID { - // index = k - // } - // } - // //说明他买了五香粉 - // if index != 9999 { - // quantities[index] = utils.Int2Str(utils.Str2Int(quantities[index]) + 3 - countSum) - // } else { - // goodsNos = append(goodsNos, jxwxfMatterEclpID) - // prices = append(prices, "0") - // quantities = append(quantities, utils.Int2Str(3-countSum)) - // } - // } - // } - // result, err := api.JdEclpAPI.AddOrder(&jdeclpapi.AddOrderParam{ - // IsvUUID: order.VendorOrderID, - // IsvSource: jdeclpapi.IsvSource, - // ShopNo: jdeclpapi.ShopNo, - // DepartmentNo: jdeclpapi.DepartmentNo, - // ShipperNo: jdeclpapi.ShipperNo, - // WarehouseNo: jdeclpapi.WarehouseNo, - // SalesPlatformOrderNo: order.VendorOrderID, - // SalePlatformSource: jdeclpapi.SalePlatformSource, - // ConsigneeName: order.ConsigneeName, - // ConsigneeMobile: order.ConsigneeMobile, - // ConsigneeAddress: order.ConsigneeAddress, - // OrderMark: jdeclpapi.OrderMark, - // GoodsNo: strings.Join(goodsNos, ","), - // Price: strings.Join(prices, ","), - // Quantity: strings.Join(quantities, ","), - // }) - // if err != nil { - // return err - // } - // order.EclpOutID = result - // dao.UpdateEntity(db, order, "EclpOutID") - // waybill := &model.Waybill{ - // VendorOrderID: order.VendorOrderID, - // OrderVendorID: model.VendorIDJX, - // VendorWaybillID: order.EclpOutID, - // WaybillVendorID: model.VendorIDJDWL, - // Status: model.WaybillStatusDelivering, - // WaybillCreatedAt: time.Now(), - // StatusTime: time.Now(), - // WaybillFinishedAt: utils.DefaultTimeValue, - // DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled, - // } - // dao.CreateEntity(db, waybill) - // } else { //如果重量超过5kg则需要进行拆单分包,商品分包规则。最后一个包不超过5kg,其他包不超过3kg - // outOrders, _, _ := tryToSplitMatterOrder(buildJxOrderInfo(order, orderSkus)) - // //以下为仿照CreateOrder,改了一些参数 - // for k, v := range outOrders { - // v.OrderType = model.OrderTypeMatter - // v.FromStoreID = order.FromStoreID - // outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID, false, nil) - // if err != nil { - // return err - // } - // //分包后的子订单ID默认是后面加两位(目前的规则),要改的话要注意取消订单那的判断 - // outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1) - // checkMatterDeliveryAddress(deliveryAddress) - // order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID, false, nil) - // if err = err2; err == nil { - // order2.FromStoreID = v.FromStoreID - // order2.AddressID = order.AddressID - // order2.Status = model.OrderStatusDelivering - // err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2)) - // orderSolutionForWuLiao(order2) - // } - // } - // //刷新一下库存 - // for _, v := range goods[0].Skus { - // cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID) - // } - // } - // for _, v := range order.Skus { - // if bagSkuMap[v.SkuID] != 0 { - // stores, _ := dao.GetStoreList(db, []int{order.FromStoreID}, nil, nil, nil, nil, "") - // if len(stores) > 0 { - // store := stores[0] - // store.IsBoughtMatter = model.YES - // dao.UpdateEntity(db, store, "IsBoughtMatter") - // } - // } - // } - //} + if order.OrderType == model.OrderTypeMatter { + var ( + db = dao.GetDB() + ) + goods, err := dao.QueryOrders(db, order.VendorOrderID, -1, []int{model.VendorIDJX}, -1, utils.ZeroTimeValue, utils.ZeroTimeValue) + if err != nil || len(goods) == 0 { + return err + } + order.WaybillVendorID = model.VendorIDJDWL + dao.UpdateEntity(db, order, "WaybillVendorID") + orderSkus := goods[0].Skus + if order.Weight <= splitMatterOrderMinWeight { //2020-04-26, 从5kg 改为小于4.5kg + var ( + goodsNos []string + prices []string + quantities []string + countSum int + ) + for _, v := range orderSkus { + skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) + if err != nil || len(skus) == 0 { + continue + } + goodsNos = append(goodsNos, skus[0].EclpID) + prices = append(prices, "0") + quantities = append(quantities, utils.Int2Str(v.Count)) + countSum += v.Count + } + //总订单不足3kg && 商品数量不足3个 && 五香粉有库存,要送五香粉,补足3个 + stockResult, err := api.JdEclpAPI.QueryStock(jxwxfMatterEclpID) + if err == nil && len(stockResult) > 0 && stockResult[0].UsableNum > 0 { + if order.Weight < 3000 && countSum < 3 { + //要判断他本身买没买五香粉EMG4418113943423 + var index = 9999 + for k, v := range goodsNos { + if v == jxwxfMatterEclpID { + index = k + } + } + //说明他买了五香粉 + if index != 9999 { + quantities[index] = utils.Int2Str(utils.Str2Int(quantities[index]) + 3 - countSum) + } else { + goodsNos = append(goodsNos, jxwxfMatterEclpID) + prices = append(prices, "0") + quantities = append(quantities, utils.Int2Str(3-countSum)) + } + } + } + //TODO 2021-10-21 物料暂时不发京东配送,后续如果要发把下面注释放开就行了 + //result, err := api.JdEclpAPI.AddOrder(&jdeclpapi.AddOrderParam{ + // IsvUUID: order.VendorOrderID, + // IsvSource: jdeclpapi.IsvSource, + // ShopNo: jdeclpapi.ShopNo, + // DepartmentNo: jdeclpapi.DepartmentNo, + // ShipperNo: jdeclpapi.ShipperNo, + // WarehouseNo: jdeclpapi.WarehouseNo, + // SalesPlatformOrderNo: order.VendorOrderID, + // SalePlatformSource: jdeclpapi.SalePlatformSource, + // ConsigneeName: order.ConsigneeName, + // ConsigneeMobile: order.ConsigneeMobile, + // ConsigneeAddress: order.ConsigneeAddress, + // OrderMark: jdeclpapi.OrderMark, + // GoodsNo: strings.Join(goodsNos, ","), + // Price: strings.Join(prices, ","), + // Quantity: strings.Join(quantities, ","), + //}) + //if err != nil { + // return err + //} + //order.EclpOutID = result + dao.UpdateEntity(db, order, "EclpOutID") + waybill := &model.Waybill{ + VendorOrderID: order.VendorOrderID, + OrderVendorID: model.VendorIDJX, + VendorWaybillID: order.EclpOutID, + WaybillVendorID: model.VendorIDJDWL, + Status: model.WaybillStatusDelivering, + WaybillCreatedAt: time.Now(), + StatusTime: time.Now(), + WaybillFinishedAt: utils.DefaultTimeValue, + DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled, + } + dao.CreateEntity(db, waybill) + } else { //如果重量超过5kg则需要进行拆单分包,商品分包规则。最后一个包不超过5kg,其他包不超过3kg + outOrders, _, _ := tryToSplitMatterOrder(buildJxOrderInfo(order, orderSkus)) + //以下为仿照CreateOrder,改了一些参数 + for k, v := range outOrders { + v.OrderType = model.OrderTypeMatter + v.FromStoreID = order.FromStoreID + outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID, false, nil) + if err != nil { + return err + } + //分包后的子订单ID默认是后面加两位(目前的规则),要改的话要注意取消订单那的判断 + outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1) + checkMatterDeliveryAddress(deliveryAddress) + order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID, false, nil) + if err = err2; err == nil { + order2.FromStoreID = v.FromStoreID + order2.AddressID = order.AddressID + order2.Status = model.OrderStatusDelivering + err = partner.CurOrderManager.OnOrderNew(order2, model.Order2Status(order2)) + orderSolutionForWuLiao(order2) + } + } + //刷新一下库存 + for _, v := range goods[0].Skus { + cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID) + } + } + for _, v := range order.Skus { + if bagSkuMap[v.SkuID] != 0 { + stores, _ := dao.GetStoreList(db, []int{order.FromStoreID}, nil, nil, nil, nil, "") + if len(stores) > 0 { + store := stores[0] + store.IsBoughtMatter = model.YES + dao.UpdateEntity(db, store, "IsBoughtMatter") + } + } + } + } return err }