جستجو
منو بسته
3 بهمن 1403

افزودن دستی محصولات با شناسه محصول

4 سال پیش
#3808
سلام به همه،
ما در حال توسعه یک پلاگین برای وارد کردن محصولات به nopcommerce از وب سرویس، با استفاده از IProductService. InsertProduct )محصول)
آیا می توانید شناسه محصول ما را وارد کنید؟
foreach (Article articol in articols)
{
  //get product
  var product = _productService.GetProductBySku(articol.CODE);

  //check if product exist
  var isNew = (product == null);

  //create or update class product
  product ??= new Product();

  //default attributes
  product.ProductTypeId = (int)ProductType.SimpleProduct;
  product.VisibleIndividually = true;
  product.ManageInventoryMethodId = (int)ManageInventoryMethod.ManageStock;
  product.MarkAsNew = true;

  //add attributes
  product.Id = articol.ID; // IS IT POSSIBLE INSERT THIS ID?
  product.Sku = articol.CODE;
  product.Name = articol.CODE;
  product.ShortDescription = articol.DESCRIPTION : "";
  product.FullDescription = (traduzione != null) ? articol.DESCRIPTION : "";
  product.MetaKeywords = "";
  product.MetaDescription = "";
  product.MetaTitle = "";
  product.Price = 20;
  product.TaxCategoryId = _taxCategoryService.GetTaxCategoryById(1).Id;
  product.StockQuantity = 100;
  product.Length = 1;
  product.Height = 1;
  product.Width = 1;
  product.Weight = 1;
  product.Published = true;
  product.Deleted = false;

  //check if product is new
  if (isNew)
  {
    _productService.InsertProduct(product);
  }
  else
  {
    _productService.UpdateProduct(product);
  }
}
نقل قول
0
4 سال پیش
#3833
چرا باید شناسه وارد کنید؟ آیا SKU به اندازه کافی خوب نیست؟
نقل قول
0
4 سال پیش
#3838
سلام
برای سازگاری می خواهم از شناسه مشابه برنامه مدیریت استفاده کنم. در لحظه دوم نیز سفارشات را برای بازگشت به وب سرویس صادر می کنم و برنامه فقط شناسه را می پذیرد.
نقل قول
0
4 سال پیش
#3847
ممکن است امکان پذیر باشد، اما انجام آن آسان نیست. قسمت Id دارای ویژگی IDENTITY است.
اگر از فیلد دیگری (به عنوان مثال SKU ، GTIN یا ویژگی عمومی) استفاده کنید، آسان تر خواهد بود و سپس سرویس وب فقط مقدار صحیح را ارسال می کند.
نقل قول
0
4 سال پیش
#3859
از حمایتتان متشکرم. ما در نظر داریم "articol.ID"  را در ویژگی عمومی وارد کنیم.
//check if product is new
if (isNew)
{
  _productService.InsertProduct(product);

  //insert local id in generic
  _genericAttributeService.SaveAttribute<int>(product, "IdCodeLocal", articol.ID);
}
else
{
  _productService.UpdateProduct(product);

آیا می توان EntityId را با Key و Value بدست آورد ، مانند این؟
var id = _genericAttributeService.GetAttributeByKeyValue("IdCodeLocal", articol.ID).EntityId;
نقل قول
0
3 سال پیش
#3882
من بالاخره جواب رو پیدا کردم
public virtual int GetEntityIdByKeyGroupKeyAndValue(string keyGroup, string key, string value)
        {
            var genericAttribute = _genericAttributeRepository.Table.Where(x => x.KeyGroup == keyGroup && x.Key == key && x.Value == value).FirstOrDefault();
            
            if (genericAttribute == null)
                return 0;

            return genericAttribute.EntityId;
        }
نقل قول
0
3 سال پیش
#3887
این پاسخی برای سوال اصلی شما نیست اما راهی برای ارجاع شناسنامه قدیمی شماست
بنابراین روی Import Product شما قصد دارید رکورد جدیدی را در جدول ویژگی عمومی بنویسید تا بعداً به مقدار شناسه قدیمی دسترسی پیدا کنید.
یا به طور دقیق تر می توانید از طریق جستجوی جدول ویژگی عمومی به محصول جدید دسترسی پیدا کنید.
نقل قول
1
3 سال پیش
#3895
بله، حق با شماست. با توجه به اینکه استفاده از شناسه داخلی روش صحیحی نبود، ترجیح دادم برای همگام سازی محصولات از ویژگی های عمومی استفاده کنیم.
من راه حل خود را برای کمک به دیگران که همان مشکل را دارند ارسال کرده ام.
نقل قول
0
3 سال پیش
#3904
ممنون از کمک هاتون
مرسی
نقل قول
0
09127857628