//AF private void CreateProductAttributeIfNotExists(byte attrTypeCode, string code, string descriptionTR, string descriptionEN) { // 1'den 20'ye kadar, Ürün özellik tanımlarından biri olmalı. Bunlar hali hazırda kayıtlıdır. if (attrTypeCode > 20) { return; } NebimV3.Attributes.ProductAttributeType AttType = NebimV3.Attributes.ProductAttributeType.CreateInstance <NebimV3.Attributes.ProductAttributeType>(attrTypeCode); NebimV3.Attributes.ProductAttribute Att = new NebimV3.Attributes.ProductAttribute(AttType); Att.AttributeCode = code; if (Att.ExistsInDB()) { return; } Att.AttributeDescription = descriptionTR; NebimV3.v3Entities.LanguageDescription LanguageDescription = Att.Descriptions.Where((NebimV3.v3Entities.LanguageDescription X) => NebimV3.Library.ObjectComparer.AreEqual(X.DataLanguageCode, "EN")).FirstOrDefault(); if (LanguageDescription != null) { LanguageDescription.Description = descriptionEN; LanguageDescription.SaveOrUpdate(); } Att.Save(); }
//AF private void CreateItemDim1IfNotExists(string code, string descriptionTR, string descriptionEN) { NebimV3.Items.ItemDim1 ItemDim1 = new NebimV3.Items.ItemDim1(); ItemDim1.ItemDim1Code = code; if (ItemDim1.ExistsInDB()) { return; } ItemDim1.ItemDim1Description = descriptionTR; NebimV3.v3Entities.LanguageDescription LanguageDescription = ItemDim1.Descriptions.Where((NebimV3.v3Entities.LanguageDescription X) => NebimV3.Library.ObjectComparer.AreEqual(X.DataLanguageCode, "EN")).FirstOrDefault(); if (LanguageDescription != null) { LanguageDescription.Description = descriptionEN; LanguageDescription.SaveOrUpdate(); } ItemDim1.Save(); }
//AF private void CreateColorIfNotExists(string colorCode, string colorDescriptionTR, string colorDescriptionEN) { NebimV3.Items.Color Color = new NebimV3.Items.Color(); Color.ColorCode = colorCode; if (Color.ExistsInDB()) { return; } Color.ColorDescription = colorDescriptionTR; NebimV3.v3Entities.LanguageDescription LanguageDescription = Color.Descriptions.Where((NebimV3.v3Entities.LanguageDescription X) => NebimV3.Library.ObjectComparer.AreEqual(X.DataLanguageCode, "EN")).FirstOrDefault(); if (LanguageDescription != null) { LanguageDescription.Description = colorDescriptionEN; LanguageDescription.SaveOrUpdate(); } // Color.ColorHex = "#E0E0E0"; Color.Save(); }
//AF internal void CreateUpdateProduct( string Barcode, string ProductCode, /*sku*/ string ProductNameTR, string ProductNameEN, int ItemDimTypeCode, IList <Tuple <string, string, string, string, string, string, string> > combinations, //renk kodu,renk adı, renk adı, boyut kodu,boyut adı,boyut adı string UnitOfMeasureCode1, string CountryCode, string PurcVatRate, //tax rate string SellVatRate, //tax rate string ItemAccountGrCode, //tax rate int[] ProductHierarchyLevelCodes, IList <Tuple <byte, string, string, string> > attributes, //attr type code (1-20),attr code, attr name,attr name decimal price1, decimal price2, decimal price3, string currencyCode) { try { using (NebimV3.DataConnector.JoinedSqlTransactionScope Trans = new NebimV3.DataConnector.JoinedSqlTransactionScope()) { NebimV3.Items.Product Product = new NebimV3.Items.Product(); Product.ProductCode = ProductCode; Product.ProductDescription = ProductNameTR; //kampanya grubu Product.PromotionGroupCode = null;//"Sezon"; //sezon ürünleri #region hierarchy //TODO: yoksa önce hiyerarşi yaratılmalıdır. // Ürün hiyerarşisindeki yeri int?hierarchyId = FindProductHierarchy(ProductHierarchyLevelCodes); if (!hierarchyId.HasValue) { throw new Exception("CreateUpdateProduct=> kategori*hiyerarşi eşleşrtirilemedi. product code:" + ProductCode + "hierarchy levels:" + String.Join("-", ProductHierarchyLevelCodes.Select(x => x.ToString()))); } Product.ProductHierarchyID = 0;//ProductHierarchyLevel03.HasValue? ProductHierarchyLevel03.Value:ProductHierarchyLevel02.HasValue?ProductHierarchyLevel02.Value:ProductHierarchyLevel03.Value; #endregion hierarchy //NoDimension = 0, //OnlyColor = 1, //ColorAndOne = 2, //ColorAndTwo = 3, //ColorAndThree = 4, Product.ItemDimTypeCode = (byte)ItemDimTypeCode; // Örn: Renk + Beden + Ton // Vergi grubu Product.ItemTaxGrCode = ItemAccountGrCode; Product.SaveOrUpdate(); // Farklı dilde ürün açıklaması için string LangCode = "EN"; Product.Descriptions.Load(); NebimV3.v3Entities.LanguageDescription LanguageDescription = Product.Descriptions.Where((NebimV3.v3Entities.LanguageDescription X) => NebimV3.Library.ObjectComparer.AreEqual(X.DataLanguageCode, LangCode)).FirstOrDefault(); if (LanguageDescription != null) { LanguageDescription.Description = ProductNameEN; LanguageDescription.SaveOrUpdate(); } #region variants // Renk ve boyut ekleme foreach (var comb in combinations) { switch (ItemDimTypeCode) { case 0: CreateProductBarcode(Product, comb.Item7); break; case 1: CreateColorIfNotExists(comb.Item1, comb.Item2, comb.Item3); Product.Variants.Load(); //check if variant is already exists? if (Product.Variants.Any(x => x.ColorCode == comb.Item1)) { break; } Product.AddItemVariant(comb.Item1); CreateProductBarcode(Product, comb.Item7, comb.Item1); break; case 2: CreateColorIfNotExists(comb.Item1, comb.Item2, comb.Item3); CreateItemDim1IfNotExists(comb.Item4, comb.Item5, comb.Item6); Product.Variants.Load(); //check if variant is already exists? if (Product.Variants.Any(x => (x.ColorCode == comb.Item1) && (x.ItemDim1Code == comb.Item4))) { break; } Product.AddItemVariant(comb.Item1, comb.Item4); CreateProductBarcode(Product, comb.Item7, comb.Item1, comb.Item4); break; default: break; } } #endregion variants #region attributes Product.Attributes.Load(); for (byte i = 0; i < attributes.Count; i++) { var attr = attributes[i]; if (string.IsNullOrWhiteSpace(attr.Item2)) { continue; } if (Product.Attributes.Any(x => (x.AttributeCode == attr.Item2) && (x.AttributeTypeCode == attr.Item1))) { continue; } //this.CreateProductAttributeIfNotExists(attr.Item1, attr.Item2, attr.Item3, attr.Item4); NebimV3.Items.ProductAttribute Attribute = new NebimV3.Items.ProductAttribute(Product); Attribute.AttributeTypeCode = attr.Item1; Attribute.AttributeCode = attr.Item2; Attribute.SaveOrUpdate(); Product.Attributes.Add(Attribute); } #endregion attributes this.CreateProductBasePrice(Product, currencyCode, price1, price2, price3); Trans.Commit(); } } catch (Exception ex) { NebimV3.Library.V3Exception v3Ex = ex as NebimV3.Library.V3Exception; if (v3Ex != null) { throw new Exception(NebimV3.ApplicationCommon.ExceptionHandlerBase.Default.GetExceptionMessage(v3Ex), ex); } throw; } }