Skip to content

Instantly share code, notes, and snippets.

@amontes-seidor
Last active February 5, 2025 13:37
Show Gist options
  • Save amontes-seidor/88ec6171c2a366f245dc24331b3666c4 to your computer and use it in GitHub Desktop.
Save amontes-seidor/88ec6171c2a366f245dc24331b3666c4 to your computer and use it in GitHub Desktop.
ES - set online stock false except E001
import de.hybris.platform.basecommerce.enums.InStockStatus
import de.hybris.platform.catalog.model.CatalogVersionModel
import de.hybris.platform.core.model.product.ProductModel
import de.hybris.platform.ordersplitting.model.StockLevelModel
import de.hybris.platform.ordersplitting.model.WarehouseModel
import org.jsoup.select.Collector
import java.util.stream.Collectors
catalogVersionService = spring.getBean("catalogVersionService")
flexibleSearchService = spring.getBean('flexibleSearchService')
stockService = spring.getBean("stockService")
modelService = spring.getBean("modelService")
toysCategoryService = spring.getBean("toysCategoryService")
query = "SELECT {p.pk} FROM {Product as p} WHERE {p.catalogversion} = ?catalogversion";
stockQuery = "SELECT {pk} FROM {StockLevel} WHERE {productcode} = ?code"
final CatalogVersionModel catalogVersionModelEs = catalogVersionService.getCatalogVersion("Catalog_RCE0_EC", "Staged");
params = new HashMap<>()
params.put("catalogversion", catalogVersionModelEs)
List<ProductModel> allProducts = flexibleSearchService.search(query, params).getResult()
List<StockLevelModel> stockLevels;
allProducts.forEach(product -> {
if (isTextileProduct(product)) {
params = new HashMap<>()
params.put("code", product.getCode())
stockLevels = flexibleSearchService.search(stockQuery, params).getResult()
stockLevels.forEach(stockLevel -> setForceNoStock(stockLevel))
}
})
def isTextileProduct(ProductModel product) {
return toysCategoryService.getAllSupercategoriesForProduct(product)
.stream()
.anyMatch(category -> category.getCode().equals("T01"))
}
def setForceNoStock(StockLevelModel stock) {
if (!stock.getWarehouse().getCode().equals("E001")) {
stock.setInStockStatus(InStockStatus.FORCEOUTOFSTOCK)
modelService.save(stock)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment