コード例 #1
0
        public ResultJSON <ProductType> Get(int id)
        {
            ProductType s = r.Get(id);

            return(new ResultJSON <ProductType>
            {
                Code = 0,
                Data = s
            });
        }
コード例 #2
0
        protected override void Process()
        {
            var defaultVendorIDSetting = GetConfiguration().AppSettings.Settings["VendorID"];

            if (defaultVendorIDSetting == null)
            {
                throw new Exception("Setting VendorID is missing");
            }

            DefaultVendorID = Int32.Parse(defaultVendorIDSetting.Value);

            var vendorIdsToProcess = GetConfiguration().AppSettings.Settings["VendorIDs"];

            if (vendorIdsToProcess == null)
            {
                throw new Exception("Setting VendorIDs is missing");
            }

            _vendorIDs = vendorIdsToProcess.Value.Split(',').Select(x => Convert.ToInt32(x)).ToArray();

            var attributes = new List <ProductAttributeMetaData>();

            using (var unit = GetUnitOfWork())
            {
                try
                {
                    InitAttributeMapping();
                    SetupAttributes(unit, _attributeMapping, DefaultVendorID, out attributes);
                }
                catch (Exception e)
                {
                    log.Debug(e.InnerException);
                }

                foreach (var vendorID in _vendorIDs)
                {
                    _configuredAttributes = new Dictionary <string, List <string> >();



                    var repositoryProductTypes = new ProductTypeRepository((IServiceUnitOfWork)unit, DefaultVendorID);
                    var repositoryModels       = new ProductModelRepository((IServiceUnitOfWork)unit, DefaultVendorID);

                    bool useAdvicePrice        = false;
                    var  useAdvicePriceSetting = unit.Scope.Repository <VendorSetting>().GetSingle(c => c.VendorID == vendorID && c.SettingKey == USE_ADVICE_PRICE_FROM_XML_SETTING_KEY);
                    if (useAdvicePriceSetting != null)
                    {
                        bool.TryParse(useAdvicePriceSetting.Value, out useAdvicePrice);
                    }


                    var ReturnCostsVendorItemNumber = unit.Scope.Repository <VendorSetting>().GetSingle(c => c.VendorID == vendorID && c.SettingKey == "ReturnCostsProduct");
                    if (ReturnCostsVendorItemNumber != null)
                    {
                        ReturnVendorItemNumber = ReturnCostsVendorItemNumber.Value;
                    }

                    var ShipmentCostsVendorItemNumber = unit.Scope.Repository <VendorSetting>().GetSingle(c => c.VendorID == vendorID && c.SettingKey == "ShipmentCostsProduct");
                    if (ShipmentCostsVendorItemNumber != null)
                    {
                        ShipmentVendorItemNumber = ShipmentCostsVendorItemNumber.Value;
                    }

                    foreach (var attributeMapping in _attributeMapping)
                    {
                        attributeMapping.VendorID = vendorID;
                    }


                    var xmlAssortmentRepository = new XmlAssortmentRepository(vendorID, unit, log);
                    foreach (var assortment in xmlAssortmentRepository.GetAssortment(vendorID))
                    {
                        var assortmentList  = new List <VendorAssortmentBulk.VendorAssortmentItem>();
                        var stockPerProduct = (from p in unit.Scope.Repository <Product>().GetAll(c => c.SourceVendorID == vendorID)
                                               let stock = p.VendorStocks.FirstOrDefault(c => c.VendorID == vendorID)
                                                           where stock != null
                                                           select new
                        {
                            p.VendorItemNumber,
                            stock.QuantityOnHand
                        }).ToDictionary(c => c.VendorItemNumber, c => c.QuantityOnHand);

                        var productGroup = assortment.Assortments.GroupBy(c => c.ConfigurableVendorItemNumber).ToList();

                        foreach (var configurableProductGroup in productGroup)
                        {
                            var first = configurableProductGroup.First();
                            var isConfigurableProductAWebsiteProduct = configurableProductGroup.Select(x => x.Website).Contains("WEB");

                            var type = first.TypeCode;

                            var typeObject  = repositoryProductTypes.Get(type);
                            var modelObject = repositoryModels.Get(first.ModelCode);

                            #region "Configurable Product"
                            var configurableProduct = new VendorAssortmentBulk.VendorAssortmentItem();

                            if (first.ConfigurableVendorItemNumber != ShipmentVendorItemNumber && first.ConfigurableVendorItemNumber != ReturnVendorItemNumber)
                            {
                                #region BrandVendor
                                configurableProduct.BrandVendors = new List <VendorAssortmentBulk.VendorImportBrand>()
                                {
                                    new VendorAssortmentBulk.VendorImportBrand()
                                    {
                                        VendorID        = DefaultVendorID,
                                        VendorBrandCode = first.Brand,
                                        Name            = first.Brand
                                    }
                                };
                                #endregion

                                #region GeneralProductInfo
                                configurableProduct.VendorProduct = new VendorAssortmentBulk.VendorProduct
                                {
                                    VendorID                    = vendorID,
                                    DefaultVendorID             = DefaultVendorID,
                                    CustomItemNumber            = configurableProductGroup.Key,
                                    VendorItemNumber            = configurableProductGroup.Key,
                                    VendorBrandCode             = first.Brand,
                                    IsConfigurable              = 1,
                                    VendorProductGroupCode1     = first.ProductGroupCode1,
                                    VendorProductGroupCodeName1 = first.ProductGroupCode1,
                                    VendorProductGroupCode2     = first.ProductGroupCode2,
                                    VendorProductGroupCodeName2 = first.ProductGroupCode2,
                                    VendorProductGroupCode3     = first.ProductGroupCode3,
                                    VendorProductGroupCodeName3 = first.ProductGroupCode3,
                                    VendorProductGroupCode4     = first.Brand,
                                    VendorProductGroupCodeName4 = first.Brand,
                                    ShortDescription            = first.ShortDescription,
                                    LongDescription             = first.LongDescription,
                                    Barcode = String.Empty
                                };
                                #endregion

                                #region ProductDescription
                                configurableProduct.VendorProductDescriptions = new List <VendorAssortmentBulk.VendorProductDescription>()
                                {
                                    new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorProductDescription()
                                    {
                                        VendorID                = vendorID,
                                        DefaultVendorID         = DefaultVendorID,
                                        CustomItemNumber        = first.ConfigurableVendorItemNumber,
                                        LanguageID              = 1,
                                        ProductName             = first.ShortDescription,
                                        ShortContentDescription = first.ShortDescription,
                                        LongContentDescription  = first.LongDescription
                                    }
                                };
                                #endregion

                                #region Attributes

                                configurableProduct.VendorImportAttributeValues = new List
                                                                                  <VendorAssortmentBulk.VendorImportAttributeValue>()
                                {
                                    new VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "Season",
                                        Value            = first.ProductGroupCode2,
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "Season").AttributeID,
                                        CustomItemNumber = first.ConfigurableVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID
                                    },
                                    new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "IsBra",
                                        Value            = typeObject == null ? "false" : typeObject.IsBra.ToString(),
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "IsBra").AttributeID,
                                        CustomItemNumber = first.ConfigurableVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID
                                    },
                                    new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "Group",
                                        Value            = typeObject == null ? type : typeObject.ProductType.ToString(),
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "Group").AttributeID,
                                        CustomItemNumber = first.ConfigurableVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID
                                    }
                                };

                                #region ProductType Translation Attributes

                                if (typeObject != null) //add translations
                                {
                                    foreach (var translation in typeObject.Translations)
                                    {
                                        configurableProduct.VendorImportAttributeValues.Add(new VendorAssortmentBulk.VendorImportAttributeValue
                                        {
                                            AttributeCode    = "Type",
                                            Value            = translation.Value,
                                            AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "Type").AttributeID,
                                            CustomItemNumber = first.ConfigurableVendorItemNumber,
                                            DefaultVendorID  = DefaultVendorID,
                                            LanguageID       = translation.Key.ToString(),
                                            VendorID         = ConcentratorVendorID
                                        });
                                    }
                                }

                                #endregion

                                #region Model Translation

                                if (modelObject != null)
                                {
                                    configurableProduct.VendorImportAttributeValues.Add(new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "Model",
                                        Value            = modelObject.Translation,
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "Model").AttributeID,
                                        CustomItemNumber = first.ConfigurableVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID
                                    });
                                }

                                #endregion

                                #endregion

                                #region Prices
                                configurableProduct.VendorImportPrices =
                                    new List <Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportPrice>()
                                {
                                    new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportPrice()
                                    {
                                        VendorID         = vendorID,
                                        DefaultVendorID  = DefaultVendorID,
                                        CustomItemNumber = configurableProductGroup.Key,
                                        CommercialStatus = isConfigurableProductAWebsiteProduct ? "Active" : "Non-Web",
                                        Price            = "0"
                                    }
                                };
                                #endregion

                                #region VendorStock
                                configurableProduct.VendorImportStocks = new List <VendorAssortmentBulk.VendorImportStock>()
                                {
                                    new VendorAssortmentBulk.VendorImportStock()
                                    {
                                        VendorID         = vendorID,
                                        DefaultVendorID  = DefaultVendorID,
                                        CustomItemNumber = configurableProductGroup.Key,
                                        StockType        = "Webshop",
                                        StockStatus      = "NonStock"
                                    }
                                };
                                #endregion

                                assortmentList.Add(configurableProduct);

                                configurableProduct.RelatedProducts = new List <VendorAssortmentBulk.VendorImportRelatedProduct>();

                                var otherProductsFromModel =
                                    assortment.Assortments.Where(c => c.ModelCode == first.ModelCode && c.TypeCode != first.ModelCode)
                                    .Select(c => c.ConfigurableVendorItemNumber)
                                    .Distinct()
                                    .ToList();
                                var otherProductsFromModelAndSameType      = new List <string>();
                                var otherProductsFromModelAndDifferentType = new List <string>();

                                foreach (var product in otherProductsFromModel)
                                {
                                    //var typeRelated = product.Split(new char[] {'-'}, StringSplitOptions.RemoveEmptyEntries)[1];
                                    var typeObjectRelated = repositoryProductTypes.Get(type);

                                    if (typeObjectRelated != null && typeObject != null)
                                    {
                                        if (typeObjectRelated.IsBra == typeObject.IsBra)
                                        {
                                            otherProductsFromModelAndSameType.Add(product);
                                        }
                                        else
                                        {
                                            otherProductsFromModelAndDifferentType.Add(product);
                                        }
                                    }
                                }

                                foreach (var relatedFromType in otherProductsFromModelAndSameType)
                                {
                                    configurableProduct.RelatedProducts.Add(new VendorAssortmentBulk.VendorImportRelatedProduct()
                                    {
                                        CustomItemNumber        = configurableProductGroup.Key,
                                        DefaultVendorID         = DefaultVendorID,
                                        VendorID                = vendorID,
                                        RelatedCustomItemNumber = relatedFromType,
                                        IsConfigured            = 0,
                                        RelatedProductType      = "ModelType"
                                    });
                                }

                                foreach (var relatedFromType in otherProductsFromModelAndDifferentType)
                                {
                                    configurableProduct.RelatedProducts.Add(new VendorAssortmentBulk.VendorImportRelatedProduct()
                                    {
                                        CustomItemNumber        = configurableProductGroup.Key,
                                        DefaultVendorID         = DefaultVendorID,
                                        VendorID                = vendorID,
                                        RelatedCustomItemNumber = relatedFromType,
                                        IsConfigured            = 0,
                                        RelatedProductType      = "ModelTypeCross"
                                    });
                                }
                            }
                            #endregion

                            var isBra = typeObject != null && typeObject.IsBra;

                            foreach (var simpleItem in configurableProductGroup)
                            {
                                var cupsizeProduct = false;

                                #region "Simple Product"
                                var simpleProduct = new VendorAssortmentBulk.VendorAssortmentItem();

                                #region "Brand"
                                simpleProduct.BrandVendors = new List <VendorAssortmentBulk.VendorImportBrand>()
                                {
                                    new VendorAssortmentBulk.VendorImportBrand()
                                    {
                                        VendorID        = DefaultVendorID,
                                        VendorBrandCode = simpleItem.Brand,
                                        Name            = simpleItem.Brand
                                    }
                                };
                                #endregion

                                #region "Vendor Product"
                                simpleProduct.VendorProduct = new VendorAssortmentBulk.VendorProduct
                                {
                                    VendorID                    = vendorID,
                                    DefaultVendorID             = DefaultVendorID,
                                    CustomItemNumber            = simpleItem.SimpleVendorItemNumber,
                                    VendorItemNumber            = simpleItem.SimpleVendorItemNumber,
                                    VendorBrandCode             = first.Brand,
                                    IsConfigurable              = 0,
                                    VendorProductGroupCode1     = simpleItem.ProductGroupCode1,
                                    VendorProductGroupCodeName1 = simpleItem.ProductGroupCode1,
                                    VendorProductGroupCode2     = simpleItem.ProductGroupCode2,
                                    VendorProductGroupCodeName2 = simpleItem.ProductGroupCode2,
                                    VendorProductGroupCode3     = simpleItem.ProductGroupCode3,
                                    VendorProductGroupCodeName3 = simpleItem.ProductGroupCode3,
                                    VendorProductGroupCode4     = first.Brand,
                                    VendorProductGroupCodeName4 = first.Brand,
                                    ShortDescription            = simpleItem.ShortDescription,
                                    LongDescription             = simpleItem.LongDescription,
                                    Barcode = simpleItem.Barcode,
                                    ParentProductCustomItemNumber = configurableProductGroup.Key
                                };
                                #endregion

                                #region "Product Description"
                                simpleProduct.VendorProductDescriptions = new List <VendorAssortmentBulk.VendorProductDescription>()
                                {
                                    new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorProductDescription()
                                    {
                                        VendorID                = vendorID,
                                        DefaultVendorID         = DefaultVendorID,
                                        CustomItemNumber        = simpleItem.SimpleVendorItemNumber,
                                        LanguageID              = 1,
                                        ProductName             = simpleItem.ShortDescription,
                                        ShortContentDescription = simpleItem.ShortDescription,
                                        LongContentDescription  = simpleItem.LongDescription
                                    }
                                };
                                #endregion

                                #region "Attribute"
                                simpleProduct.VendorImportAttributeValues = new List <VendorAssortmentBulk.VendorImportAttributeValue>()
                                {
                                    new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "Color",
                                        Value            = simpleItem.ColourcodeSupplier,
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "Color").AttributeID,
                                        CustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID
                                    },
                                    new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "Group",
                                        Value            = typeObject == null ? type : typeObject.ProductType.ToString(),
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "Group").AttributeID,
                                        CustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID
                                    }
                                };

                                if (!string.IsNullOrEmpty(simpleItem.SubsizeSupplier))
                                {
                                    simpleProduct.VendorImportAttributeValues.Add(new VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "Size",
                                        Value            = string.Format("{0}{1}", simpleItem.SizeSupplier, simpleItem.SubsizeSupplier),
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "Size").AttributeID,
                                        CustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID
                                    });

                                    cupsizeProduct = true;
                                }
                                else
                                {
                                    simpleProduct.VendorImportAttributeValues.Add(new VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "Size",
                                        Value            = simpleItem.SizeSupplier,
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "Size").AttributeID,
                                        CustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID
                                    });
                                }

                                if (isBra)
                                {
                                    simpleProduct.VendorImportAttributeValues.Add(new VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "TopSize",
                                        Value            = string.Format("{0}{1}", simpleItem.SizeSupplier, simpleItem.SubsizeSupplier),
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "TopSize").AttributeID,
                                        CustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,     // 50
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID // 48
                                    });
                                }
                                else
                                {
                                    simpleProduct.VendorImportAttributeValues.Add(new VendorAssortmentBulk.VendorImportAttributeValue()
                                    {
                                        AttributeCode    = "BottomSize",
                                        Value            = simpleItem.SizeSupplier,
                                        AttributeID      = attributes.FirstOrDefault(c => c.AttributeCode == "BottomSize").AttributeID,
                                        CustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                        DefaultVendorID  = DefaultVendorID,     // 50
                                        LanguageID       = null,
                                        VendorID         = ConcentratorVendorID // 48
                                    });
                                }


                                #endregion

                                #region "Price"
                                simpleProduct.VendorImportPrices = new List <Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportPrice>()
                                {
                                    new Concentrator.Objects.Vendors.Bulk.VendorAssortmentBulk.VendorImportPrice()
                                    {
                                        VendorID         = vendorID,
                                        DefaultVendorID  = DefaultVendorID,
                                        CustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                        CommercialStatus = simpleItem.Website.Equals("WEB") ? "Active" : "Non-Web",
                                        Price            = (useAdvicePrice  ? simpleItem.AdvicePrice :  simpleItem.LabellingPrice).ToString(CultureInfo.InvariantCulture),
                                        CostPrice        = (useAdvicePrice  ? simpleItem.AdvicePrice :  simpleItem.LabellingPrice).ToString(CultureInfo.InvariantCulture)
                                    }
                                };
                                #endregion

                                #region "Stock"

                                if (!stockPerProduct.ContainsKey(simpleItem.SimpleVendorItemNumber))
                                {
                                    simpleProduct.VendorImportStocks = new List <VendorAssortmentBulk.VendorImportStock>()
                                    {
                                        new VendorAssortmentBulk.VendorImportStock()
                                        {
                                            VendorID         = vendorID,
                                            DefaultVendorID  = DefaultVendorID,
                                            CustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                            StockType        = "Webshop",
                                            StockStatus      = "ENA"
                                        }
                                    };
                                }
                                else
                                {
                                    simpleProduct.VendorImportStocks = new List <VendorAssortmentBulk.VendorImportStock>();
                                }
                                #endregion

                                assortmentList.Add(simpleProduct);

                                if (first.ConfigurableVendorItemNumber != ShipmentVendorItemNumber && first.ConfigurableVendorItemNumber != ReturnVendorItemNumber)
                                {
                                    configurableProduct.RelatedProducts.Add(new VendorAssortmentBulk.VendorImportRelatedProduct()
                                    {
                                        CustomItemNumber        = first.ConfigurableVendorItemNumber,
                                        DefaultVendorID         = DefaultVendorID,
                                        IsConfigured            = 1,
                                        VendorID                = vendorID,
                                        RelatedCustomItemNumber = simpleItem.SimpleVendorItemNumber,
                                        RelatedProductType      = "Configured product"
                                    });

                                    AddConfiguredAttributes(configurableProduct, cupsizeProduct);
                                }
                                #endregion
                            }
                        }

                        try
                        {
                            var bulkConfig = new VendorAssortmentBulkConfiguration {
                                IsPartialAssortment = IsPartialAssortment
                            };
                            using (var vendorAssortmentBulk = new VendorAssortmentBulk(assortmentList, vendorID, DefaultVendorID, bulkConfig))
                            {
                                vendorAssortmentBulk.Init(unit.Context);
                                vendorAssortmentBulk.Sync(unit.Context);
                            }
                        }
                        catch (Exception ex)
                        {
                            log.AuditError(ex.Message);
                        }

                        foreach (var productAttributeConfiguration in _configuredAttributes)
                        {
                            var product = unit.Scope.Repository <Product>().GetSingle(c => c.VendorItemNumber == productAttributeConfiguration.Key && c.IsConfigurable);

                            foreach (var code in productAttributeConfiguration.Value)
                            {
                                var ent = product.ProductAttributeMetaDatas.FirstOrDefault(c => c.AttributeCode == code);

                                if (ent == null)
                                {
                                    var attr = unit.Scope.Repository <ProductAttributeMetaData>().GetSingle(c => c.AttributeCode == code);

                                    product.ProductAttributeMetaDatas.Add(attr);
                                }
                            }
                        }
                        unit.Save();
                        CopyArticleInformationToTnt(assortment.FileName);
                    }
                }
            }
        }
コード例 #3
0
        protected override void Process()
        {
            var vendorIDsToProcessSetting = GetConfiguration().AppSettings.Settings["VendorIDs"];

            if (vendorIDsToProcessSetting == null)
            {
                throw new Exception("Setting VendorIDs is missing");
            }

            var vendorIDsToProcess = vendorIDsToProcessSetting.Value.Split(',').Select(x => Convert.ToInt32(x)).ToArray();

            var defaultVendorIDSetting = GetConfiguration().AppSettings.Settings["VendorID"];

            if (defaultVendorIDSetting == null)
            {
                throw new Exception("Setting VendorID is missing");
            }

            var defaultVendorID = Int32.Parse(defaultVendorIDSetting.Value);

            using (var unit = GetUnitOfWork())
            {
                ProductTypeRepository repositoryProductTypes = new ProductTypeRepository((IServiceUnitOfWork)unit, defaultVendorID);
                var att                       = unit.Scope.Repository <ProductAttributeMetaData>().GetAll().ToList().FirstOrDefault(c => c.AttributeCode.ToLower() == "type");
                var typeAttributeID           = att.AttributeID;
                var productAttributeValueRepo = unit.Scope.Repository <ProductAttributeValue>();
                var products                  = unit.Scope.Repository <Product>().GetAll(c => vendorIDsToProcess.Contains(c.SourceVendorID) && c.IsConfigurable).ToList();

                foreach (var product in products)
                {
                    var typeCode = product.VendorItemNumber.Try(c => c.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries)[1], string.Empty);


                    if (string.IsNullOrEmpty(typeCode)) //if model code can't be retrieved from the product, continue
                    {
                        continue;
                    }

                    var typeTranslations = repositoryProductTypes.Get(typeCode);

                    if (typeTranslations == null || typeTranslations.Translations == null)//if translation hasn't been set, continue
                    {
                        continue;
                    }

                    foreach (var typeTranslation in typeTranslations.Translations)
                    {
                        var languageID  = typeTranslation.Key;
                        var translation = typeTranslation.Value;

                        var value = product.ProductAttributeValues.FirstOrDefault(c => c.AttributeID == typeAttributeID && c.LanguageID == languageID);
                        if (value == null)
                        {
                            value = new ProductAttributeValue()
                            {
                                Product     = product,
                                AttributeID = typeAttributeID,
                                LanguageID  = languageID
                            };

                            productAttributeValueRepo.Add(value);
                        }

                        value.Value = translation;
                    }

                    unit.Save();
                }
            }
        }