! 门店商品同步标志分为price, sale和基础信息modify`
This commit is contained in:
@@ -650,7 +650,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBind
|
|||||||
updateFieldMap[model.FieldUpdatedAt] = 1
|
updateFieldMap[model.FieldUpdatedAt] = 1
|
||||||
updateFieldMap[model.FieldLastOperator] = 1
|
updateFieldMap[model.FieldLastOperator] = 1
|
||||||
|
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask)
|
// setStoreSkuBindStatus(skuBind, model.SyncFlagModifiedMask)
|
||||||
dao.WrapUpdateULEntity(skuBind, userName)
|
dao.WrapUpdateULEntity(skuBind, userName)
|
||||||
if num, err = dao.UpdateEntity(db, skuBind /*, utils.Map2KeySlice(updateFieldMap)...*/); err != nil {
|
if num, err = dao.UpdateEntity(db, skuBind /*, utils.Map2KeySlice(updateFieldMap)...*/); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
@@ -823,11 +823,11 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode
|
|||||||
now,
|
now,
|
||||||
pricePercentage,
|
pricePercentage,
|
||||||
pricePercentage,
|
pricePercentage,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask,
|
model.SyncFlagPriceMask,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask,
|
model.SyncFlagPriceMask,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask,
|
model.SyncFlagPriceMask,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask,
|
model.SyncFlagPriceMask,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask,
|
model.SyncFlagPriceMask,
|
||||||
toStoreID,
|
toStoreID,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
@@ -927,11 +927,11 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode
|
|||||||
pricePercentage,
|
pricePercentage,
|
||||||
pricePercentage,
|
pricePercentage,
|
||||||
pricePercentage,
|
pricePercentage,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask,
|
model.SyncFlagStoreSkuOnlyMask,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask,
|
model.SyncFlagStoreSkuOnlyMask,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask,
|
model.SyncFlagStoreSkuOnlyMask,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask,
|
model.SyncFlagStoreSkuOnlyMask,
|
||||||
model.SyncFlagModifiedMask | model.SyncFlagPriceMask | model.SyncFlagSaleMask,
|
model.SyncFlagStoreSkuOnlyMask,
|
||||||
toStoreID,
|
toStoreID,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -777,7 +777,7 @@ func TransformJdSpu2Sku(ctx *jxcontext.Context, skuNameIDs []int, count int, isA
|
|||||||
rootTask.AddChild(subTask).Run()
|
rootTask.AddChild(subTask).Run()
|
||||||
if _, err = subTask.GetResult(0); err == nil {
|
if _, err = subTask.GetResult(0); err == nil {
|
||||||
if len(skuIDs) > 0 {
|
if len(skuIDs) > 0 {
|
||||||
if _, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, -1, skuIDs, model.SyncFlagModifiedMask|model.SyncFlagPriceMask|model.SyncFlagSaleMask); err == nil {
|
if _, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, -1, skuIDs, model.SyncFlagStoreSkuModifiedMask); err == nil {
|
||||||
// time.Sleep(20 * time.Second)
|
// time.Sleep(20 * time.Second)
|
||||||
// _, err = cms.CurVendorSync.SyncStoresSkus(ctx, db, []int{model.VendorIDJD}, nil, skuIDs, false, isContinueWhenError)
|
// _, err = cms.CurVendorSync.SyncStoresSkus(ctx, db, []int{model.VendorIDJD}, nil, skuIDs, false, isContinueWhenError)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,12 +67,15 @@ const (
|
|||||||
SyncFlagModifiedMask = 1
|
SyncFlagModifiedMask = 1
|
||||||
SyncFlagNewMask = 2
|
SyncFlagNewMask = 2
|
||||||
SyncFlagDeletedMask = 4
|
SyncFlagDeletedMask = 4
|
||||||
SyncFlagChangedMask = SyncFlagModifiedMask | SyncFlagNewMask | SyncFlagDeletedMask
|
|
||||||
|
|
||||||
SyncFlagSaleMask = 8
|
SyncFlagSaleMask = 8
|
||||||
SyncFlagPriceMask = 16
|
SyncFlagPriceMask = 16
|
||||||
SyncFlagSpecMask = 32
|
SyncFlagSpecMask = 32
|
||||||
|
|
||||||
|
SyncFlagStoreSkuOnlyMask = SyncFlagSaleMask | SyncFlagPriceMask
|
||||||
|
SyncFlagStoreSkuModifiedMask = SyncFlagStoreSkuOnlyMask | SyncFlagModifiedMask
|
||||||
|
SyncFlagChangedMask = SyncFlagSpecMask | SyncFlagNewMask | SyncFlagDeletedMask | SyncFlagStoreSkuModifiedMask
|
||||||
|
|
||||||
SyncFlagStoreName = 8
|
SyncFlagStoreName = 8
|
||||||
SyncFlagStoreAddress = 16
|
SyncFlagStoreAddress = 16
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs [
|
|||||||
func (p *PurchaseHandler) createCatByStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, db *dao.DaoDB, storeID int, storeSkuInfoList []*tStoreSkuFullInfo) (num int64, err error) {
|
func (p *PurchaseHandler) createCatByStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, db *dao.DaoDB, storeID int, storeSkuInfoList []*tStoreSkuFullInfo) (num int64, err error) {
|
||||||
catList2Add := make(map[int]int)
|
catList2Add := make(map[int]int)
|
||||||
for _, storeSku := range storeSkuInfoList {
|
for _, storeSku := range storeSkuInfoList {
|
||||||
if storeSku.SkuID != 0 && storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 {
|
if storeSku.SkuID != 0 && storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreSkuModifiedMask) != 0 {
|
||||||
if storeSku.ParentCatEbaiID == 0 && storeSku.ParentCatID != 0 {
|
if storeSku.ParentCatEbaiID == 0 && storeSku.ParentCatID != 0 {
|
||||||
catList2Add[storeSku.ParentCatID] = 1
|
catList2Add[storeSku.ParentCatID] = 1
|
||||||
}
|
}
|
||||||
@@ -248,7 +248,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
|||||||
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
storeSku := batchItemList[0].(*tStoreSkuFullInfo)
|
storeSku := batchItemList[0].(*tStoreSkuFullInfo)
|
||||||
updateFields := []string{model.FieldEbaiSyncStatus}
|
updateFields := []string{model.FieldEbaiSyncStatus}
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
if storeSku.SkuID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 {
|
if storeSku.SkuID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 {
|
||||||
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && storeSku.EbaiID != 0 {
|
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && storeSku.EbaiID != 0 {
|
||||||
err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID))
|
err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID))
|
||||||
@@ -263,7 +263,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
|||||||
updateFields = append(updateFields, model.FieldEbaiID)
|
updateFields = append(updateFields, model.FieldEbaiID)
|
||||||
_, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku))
|
_, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku))
|
||||||
}
|
}
|
||||||
} else if storeSku.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 {
|
} else if storeSku.EbaiSyncStatus&model.SyncFlagStoreSkuModifiedMask != 0 {
|
||||||
if jxutils.IsFakeID(storeSku.EbaiID) {
|
if jxutils.IsFakeID(storeSku.EbaiID) {
|
||||||
err = fmt.Errorf("京西数据异常,修改一个没有创建的饿百商品:%d, store:%s", storeSku.SkuID, strStoreID)
|
err = fmt.Errorf("京西数据异常,修改一个没有创建的饿百商品:%d, store:%s", storeSku.SkuID, strStoreID)
|
||||||
} else {
|
} else {
|
||||||
@@ -344,7 +344,7 @@ func (p *PurchaseHandler) DeleteRemoteSkus(ctx *jxcontext.Context, parentTask ta
|
|||||||
for k, v := range batchItemList {
|
for k, v := range batchItemList {
|
||||||
strList[k] = v.(string)
|
strList[k] = v.(string)
|
||||||
}
|
}
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
err = api.EbaiAPI.SkuDelete(utils.Int2Str(storeID), strings.Join(strList, ","))
|
err = api.EbaiAPI.SkuDelete(utils.Int2Str(storeID), strings.Join(strList, ","))
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -369,7 +369,7 @@ func (p *PurchaseHandler) DeleteRemoteCategories(ctx *jxcontext.Context, parentT
|
|||||||
}
|
}
|
||||||
task := tasksch.NewParallelTask("DeleteRemoteCategories", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
|
task := tasksch.NewParallelTask("DeleteRemoteCategories", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
|
||||||
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
err = api.EbaiAPI.ShopCategoryDelete(strStoreID, batchItemList[0].(int64))
|
err = api.EbaiAPI.ShopCategoryDelete(strStoreID, batchItemList[0].(int64))
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
|||||||
func (p *PurchaseHandler) FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func (p *PurchaseHandler) FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
globals.SugarLogger.Debugf("jd FullSyncStoreSkus, storeID:%d", storeID)
|
globals.SugarLogger.Debugf("jd FullSyncStoreSkus, storeID:%d", storeID)
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
_, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, storeID, nil, model.SyncFlagModifiedMask|model.SyncFlagPriceMask|model.SyncFlagSaleMask)
|
_, err = dao.SetStoreSkuSyncStatus(db, model.VendorIDJD, storeID, nil, model.SyncFlagStoreSkuOnlyMask)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t
|
|||||||
globals.SugarLogger.Debugf("RetailCatDelete vendorStoreID:%s, MtwmID:%s", vendorStoreID, catInfo.MtwmID)
|
globals.SugarLogger.Debugf("RetailCatDelete vendorStoreID:%s, MtwmID:%s", vendorStoreID, catInfo.MtwmID)
|
||||||
err = api.MtwmAPI.RetailCatDelete(vendorStoreID, catInfo.MtwmID)
|
err = api.MtwmAPI.RetailCatDelete(vendorStoreID, catInfo.MtwmID)
|
||||||
}
|
}
|
||||||
} else if catInfo.MtwmSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 { // 新增
|
} else if catInfo.MtwmSyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreSkuModifiedMask) != 0 { // 新增
|
||||||
catName := catInfo.CatName
|
catName := catInfo.CatName
|
||||||
subCatName := ""
|
subCatName := ""
|
||||||
originName := ""
|
originName := ""
|
||||||
@@ -259,43 +259,52 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
|||||||
if skuItem.SkuSyncStatus&model.SyncFlagNewMask == 0 && skuItem.VendorSkuID != "" {
|
if skuItem.SkuSyncStatus&model.SyncFlagNewMask == 0 && skuItem.VendorSkuID != "" {
|
||||||
err = api.MtwmAPI.RetailDelete(vendorStoreID, skuItem.VendorSkuID)
|
err = api.MtwmAPI.RetailDelete(vendorStoreID, skuItem.VendorSkuID)
|
||||||
}
|
}
|
||||||
} else if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask) != 0 {
|
} else if skuItem.SkuSyncStatus&(model.SyncFlagStoreSkuModifiedMask|model.SyncFlagNewMask) != 0 {
|
||||||
foodData := make(map[string]interface{})
|
foodData := make(map[string]interface{})
|
||||||
foodDataList[0] = foodData
|
foodDataList[0] = foodData
|
||||||
foodData[mtwmapi.KeyAppFoodCode] = utils.Int2Str(skuItem.ID)
|
foodData[mtwmapi.KeyAppFoodCode] = utils.Int2Str(skuItem.ID)
|
||||||
foodData["name"] = jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30)
|
|
||||||
foodData["description"] = skuItem.Comment
|
|
||||||
foodData["price"] = jxutils.IntPrice2Standard(int64(jxutils.CaculateSkuVendorPrice(int(skuItem.Price), int(storeDetail.PricePercentage))))
|
|
||||||
foodData["min_order_count"] = 1
|
|
||||||
foodData["unit"] = skuItem.Unit
|
|
||||||
foodData["box_num"] = 0
|
|
||||||
foodData["box_price"] = 0.0
|
|
||||||
foodData["category_name"] = skuItem.VendorCatID
|
|
||||||
foodData["is_sold_out"] = skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus))
|
|
||||||
foodData["picture"] = skuItem.Img
|
|
||||||
foodData["sequence"] = skuItem.Seq
|
|
||||||
if skuItem.VendorVendorCatID != 0 {
|
|
||||||
foodData["tag_id"] = utils.Int64ToStr(skuItem.VendorVendorCatID)
|
|
||||||
} else {
|
|
||||||
// foodData["tag_id"] = utils.Int64ToStr(defVendorCatID)
|
|
||||||
}
|
|
||||||
skus := []map[string]interface{}{
|
skus := []map[string]interface{}{
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
"sku_id": foodData[mtwmapi.KeyAppFoodCode],
|
"sku_id": foodData[mtwmapi.KeyAppFoodCode],
|
||||||
"spec": jxutils.ComposeSkuSpec(skuItem.SpecQuality, skuItem.SpecUnit),
|
|
||||||
"price": foodData["price"],
|
|
||||||
"stock": "*",
|
|
||||||
"upc": skuItem.Upc,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if foodData["tag_id"] != nil {
|
|
||||||
skus[0]["weight"] = skuItem.Weight // weight字段仅限服饰鞋帽、美妆、日用品、母婴、生鲜果蔬、生活超市下的便利店/超市门店品类的商家使用
|
|
||||||
}
|
|
||||||
foodData["skus"] = skus
|
foodData["skus"] = skus
|
||||||
if globals.EnableMtwmStoreWrite {
|
if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask|model.SyncFlagPriceMask) != 0 {
|
||||||
if err = api.MtwmAPI.RetailBatchInitData(vendorStoreID, foodDataList); err == nil {
|
foodData["name"] = jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30)
|
||||||
storeSkuBind.MtwmID = int64(skuItem.ID)
|
foodData["description"] = skuItem.Comment
|
||||||
updateFields = append(updateFields, model.FieldMtwmID)
|
foodData["price"] = jxutils.IntPrice2Standard(int64(jxutils.CaculateSkuVendorPrice(int(skuItem.Price), int(storeDetail.PricePercentage))))
|
||||||
|
foodData["min_order_count"] = 1
|
||||||
|
foodData["unit"] = skuItem.Unit
|
||||||
|
foodData["box_num"] = 0
|
||||||
|
foodData["box_price"] = 0.0
|
||||||
|
foodData["category_name"] = skuItem.VendorCatID
|
||||||
|
foodData["is_sold_out"] = skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus))
|
||||||
|
foodData["picture"] = skuItem.Img
|
||||||
|
foodData["sequence"] = skuItem.Seq
|
||||||
|
if skuItem.VendorVendorCatID != 0 {
|
||||||
|
foodData["tag_id"] = utils.Int64ToStr(skuItem.VendorVendorCatID)
|
||||||
|
} else {
|
||||||
|
// foodData["tag_id"] = utils.Int64ToStr(defVendorCatID)
|
||||||
|
}
|
||||||
|
skus[0]["spec"] = jxutils.ComposeSkuSpec(skuItem.SpecQuality, skuItem.SpecUnit)
|
||||||
|
skus[0]["price"] = foodData["price"]
|
||||||
|
skus[0]["stock"] = "*"
|
||||||
|
skus[0]["upc"] = skuItem.Upc
|
||||||
|
if foodData["tag_id"] != nil {
|
||||||
|
skus[0]["weight"] = skuItem.Weight // weight字段仅限服饰鞋帽、美妆、日用品、母婴、生鲜果蔬、生活超市下的便利店/超市门店品类的商家使用
|
||||||
|
}
|
||||||
|
if globals.EnableMtwmStoreWrite {
|
||||||
|
if err = api.MtwmAPI.RetailBatchInitData(vendorStoreID, foodDataList); err == nil {
|
||||||
|
storeSkuBind.MtwmID = int64(skuItem.ID)
|
||||||
|
updateFields = append(updateFields, model.FieldMtwmID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if skuItem.SkuSyncStatus&(model.SyncFlagSaleMask) != 0 {
|
||||||
|
sellStatus := skuStatusJX2Mtwm(jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus))
|
||||||
|
if globals.EnableMtwmStoreWrite {
|
||||||
|
err = api.MtwmAPI.RetailSkuSellStatus(vendorStoreID, foodDataList, sellStatus)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t
|
|||||||
if catInfo.WscID, err = api.WeimobAPI.AddClassify(catInfo.CatName, utils.Str2Int64WithDefault(catInfo.ParentVendorCatID, 0), catImg); err == nil {
|
if catInfo.WscID, err = api.WeimobAPI.AddClassify(catInfo.CatName, utils.Str2Int64WithDefault(catInfo.ParentVendorCatID, 0), catImg); err == nil {
|
||||||
updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[model.VendorIDWSC]))
|
updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[model.VendorIDWSC]))
|
||||||
}
|
}
|
||||||
} else if catInfo.WscSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagModifiedMask) != 0 { // 修改
|
} else if catInfo.WscSyncStatus&(model.SyncFlagModifiedMask) != 0 { // 修改
|
||||||
err = api.WeimobAPI.UpdateClassify(catInfo.WscID, catInfo.CatName, "")
|
err = api.WeimobAPI.UpdateClassify(catInfo.WscID, catInfo.CatName, "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -189,7 +189,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
|||||||
err = nil // 强制忽略
|
err = nil // 强制忽略
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask) != 0 {
|
} else if skuItem.SkuSyncStatus&(model.SyncFlagStoreSkuModifiedMask|model.SyncFlagNewMask) != 0 {
|
||||||
outerGoodsCode := utils.Int2Str(skuItem.NameID)
|
outerGoodsCode := utils.Int2Str(skuItem.NameID)
|
||||||
title := jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30)
|
title := jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 30)
|
||||||
isPutAway := jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus) == model.SkuStatusNormal
|
isPutAway := jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus) == model.SkuStatusNormal
|
||||||
|
|||||||
Reference in New Issue
Block a user