Beispiel #1
0
        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();
        }
Beispiel #2
0
 internal void Save()
 {
     XrmContext.SaveChanges();
 }