internal void CreateProducts(List <IntermidiateProduct> products) { if (products.Count == 0) { return; } DateTime startTime = DateTime.Now; foreach (IntermidiateProduct product in products) { // If price list product is active in CRM Product existingCrmProduct = XrmContext .ProductSet .Where(x => x.ProductNumber == product.SoftLineSku) .SingleOrDefault(); if (existingCrmProduct != null) { existingCrmProduct.Price = new Money(ConvertValueByCurrencyCodeToUsdValue(product.SprPrice ?? 0, product.Currency)); existingCrmProduct.new_PdrPrice = new Money(ConvertValueByCurrencyCodeToUsdValue(product.PdrPrice ?? 0, product.Currency)); existingCrmProduct.new_Retail1Frm = new Money(ConvertValueByCurrencyCodeToUsdValue(product.Retail1Frm ?? 0, product.Currency)); existingCrmProduct.new_Retail2Frm = new Money(ConvertValueByCurrencyCodeToUsdValue(product.Retail2Frm ?? 0, product.Currency)); existingCrmProduct.new_createdon = product.CreatedOn.ToUniversalTime(); existingCrmProduct.TransactionCurrencyId = GetCurrencyReferenceByIsoCode("USD"); //existingCrmProduct.new_softlinesku = product.SoftLineSku; //existingCrmProduct.new_manufacturername = product.Manufacturer; existingCrmProduct.VendorPartNumber = product.VendorSku; existingCrmProduct.new_Name_price_Softline = product.PricelistName; // Update product XrmContext.UpdateObject(existingCrmProduct); if (existingCrmProduct.StateCode == ProductState.Inactive) { ActivateProductById(existingCrmProduct.ProductId ?? Guid.Empty); Console.WriteLine("Activate {0}", existingCrmProduct.ProductNumber); } } else { string productName = (product.ProductDescription.Length > 720) ? product.ProductDescription.Substring(0, 710) : product.ProductDescription; var productToCreate = new Product { QuantityDecimal = 2, DefaultUoMId = DefaultUomReference, DefaultUoMScheduleId = DefaultUoMScheduleReference, new_createdon = product.CreatedOn.ToUniversalTime(), VendorName = product.Vendor, //new_manufacturername = product.Manufacturer, ProductNumber = product.SoftLineSku, //important VendorPartNumber = product.VendorSku, new_producfamily = product.SoftLineProductFamily, Name = productName, // imporant! Description = product.ProductDescription, new_version = product.Version, new_language = product.Language, new_fullorupdate = product.FullOrUpdate, new_boxorlicense = product.BoxOrLicense, new_aeorcom = product.AeOrCom, new_media = product.Media, new_os = product.Os, new_licenselevel = product.LicenseLevel, //point //license comment Price = new Money(ConvertValueByCurrencyCodeToUsdValue(product.SprPrice ?? 0, product.Currency ?? "USD")), new_PdrPrice = new Money(ConvertValueByCurrencyCodeToUsdValue(product.PdrPrice ?? 0, product.Currency ?? "USD")), //w new_Retail1Frm = new Money(ConvertValueByCurrencyCodeToUsdValue(product.Retail1Frm ?? 0, product.Currency ?? "USD")), new_Retail2Frm = new Money(ConvertValueByCurrencyCodeToUsdValue(product.Retail2Frm ?? 0, product.Currency ?? "USD")), new_type = product.Type, new_vatpercent = (product.VatPercent ?? 0), TransactionCurrencyId = GetCurrencyReferenceByIsoCode("USD"), new_Name_price_Softline = product.PricelistName }; _service.Create(productToCreate); } XrmContext.SaveChanges(); } // Get all active products that were not updated and deactivate them List <Guid?> productsToDeactivate = XrmContext .ProductSet .Where(x => x.StateCode == ProductState.Active && // x.new_manufacturername == products[0].Manufacturer && x.new_createdon < products[0].CreatedOn.ToUniversalTime()) .Select(x => x.ProductId) .ToList(); foreach (var pro in productsToDeactivate) { DeactivateProductById(pro ?? Guid.Empty); Console.WriteLine("Deactivated {0}", pro); } Console.WriteLine("{0} {1}", startTime, DateTime.Now); //Console.ReadLine(); }
internal void Save() { XrmContext.SaveChanges(); }