Обновите значение каждого локализованного логического атрибута на TRUE - PullRequest
0 голосов
/ 25 октября 2018

Я добавил новый атрибут "showFlag" с type = "localized: java.lang.Boolean к itemtype VariantProduct и установил значение по умолчанию TRUE.but, но для существующих вариантов продуктов значение принимается как н / д. enter image description here

Я хотел бы обновить все существующие варианты продуктов для всех языковых (локализованных) значений showFlag как Да. Как я могу это сделать?

Ответы [ 4 ]

0 голосов
/ 25 октября 2018

следующий сценарий импорта impex хорошо работал для вышеуказанной проблемы:

UPDATE VariantProduct[batchmode=true];itemtype(code)[unique=true];showFlag[lang=en_GL];showFlag[lang=en_ZA];showFlag[lang=en_CA];showFlag[lang=en_US];showFlag[lang=en_AP];showFlag[lang=en_IN];showFlag[lang=en_CE];showFlag[lang=en_ME];showFlag[lang=en_SG];showFlag[lang=en_AU];showFlag[lang=en_PH];showFlag[lang=en_MA];showFlag[lang=en_GB];

;HenkelVariantProduct;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE
0 голосов
/ 25 октября 2018

Простым решением для этого является использование скрипта Groovy, например,

import de.hybris.platform.servicelayer.model.ModelService;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import de.hybris.platform.servicelayer.search.FlexibleSearchService;
import de.hybris.platform.servicelayer.search.SearchResult
import de.hybris.platform.variants.jalo.VariantProduct


FlexibleSearchService flexibleSearchService=(FlexibleSearchService)spring.getBean("flexibleSearchService");
ModelService modelService=(ModelService)spring.getBean("modelService");

List<Locale> locals = Arrays.asList(Locale.getAvailableLocales()); 

queryString="Select {pk} from {variantProduct} ";

FlexibleSearchQuery query=new FlexibleSearchQuery(queryString);

SearchResult result=flexibleSearchService.search(query);


List<VariantProduct> products = result.getResult();

for(VariantProduct variantModel : products){

    for (Locale locale : locals){
        variantModel.setShowFlag(Boolean.TRUE,locale);
    }
    modelService.save(variantModel);
}

Адаптируйте этот код, чтобы он больше соответствовал вашим потребностям,

Надеюсь, это поможет

0 голосов
/ 25 октября 2018

Вы можете обновить все из них в пакетном режиме impex для быстрого доступа.

UPDATE Product[batchmode=true];itemType(code)[unique=true];description[en][default='test']
;Product;
;VariantProduct;
0 голосов
/ 25 октября 2018

Использовать оболочку bean и выполнять итерации по каждому языку с помощью i18nService?

...