in pricat/src/main/java/org/apache/ofbiz/pricat/sample/SamplePricatParser.java [331:406]
private boolean parseCellContentsAndStoreV1(XSSFRow row, List<Object> cellContents) throws GenericTransactionException {
if (UtilValidate.isEmpty(cellContents)) {
return false;
}
// 1. check if facilityId is in the facilities belong to the user, or if the name is correct for the id
String facilityName = (String) getCellContent(cellContents, "Facility Name");
String facilityId = (String) getCellContent(cellContents, "FacilityId");
if (!isFacilityOk(row, facilityName, facilityId)) {
return false;
}
// 2. get productCategoryId
String ownerPartyId = getFacilities().get(facilityId)[1];
String productCategoryId = getProductCategoryId(cellContents, ownerPartyId);
// 3. get productFeatureId of brand
String brandName = (String) getCellContent(cellContents, "Brand");
String brandId = getBrandId(brandName, ownerPartyId);
if (UtilValidate.isEmpty(brandId)) {
return false;
}
// 4. get productId from brandId, model name
String modelName = (String) getCellContent(cellContents, "Style No");
String productName = (String) getCellContent(cellContents, "Product Name");
BigDecimal listPrice = (BigDecimal) getCellContent(cellContents, "List Price");
String productId = getProductId(row, brandId, modelName, productName, productCategoryId, ownerPartyId, listPrice);
if (UtilValidate.isEmpty(productId) || UtilValidate.isEmpty(listPrice)) {
return false;
}
// 5. update color and size if necessary
String color = (String) getCellContent(cellContents, "Color");
if (UtilValidate.isEmpty(color) || UtilValidate.isEmpty(color.trim())) {
color = DEFAULT_COL_NAME;
}
String dimension = (String) getCellContent(cellContents, "Size");
if (UtilValidate.isEmpty(dimension) || UtilValidate.isEmpty(dimension.trim())) {
dimension = DEFAULT_DIM_NAME;
}
Map<String, Object> features = updateColorAndDimension(productId, ownerPartyId, color, dimension);
if (ServiceUtil.isError(features)) {
if (features.containsKey("index") && String.valueOf(features.get("index")).contains("0")) {
int cell = headerColNames.indexOf("Color");
XSSFCell colorCell = row.getCell(cell);
getErrorMessages().put(new CellReference(colorCell), UtilProperties.getMessage(RESOURCE, "PricatColorError", getLocale()));
}
if (features.containsKey("index") && String.valueOf(features.get("index")).contains("1")) {
int cell = headerColNames.indexOf("Size");
XSSFCell colorCell = row.getCell(cell);
getErrorMessages().put(new CellReference(colorCell), UtilProperties.getMessage(RESOURCE, "PricatDimensionError", getLocale()));
}
return false;
}
String colorId = (String) features.get("colorId");
String dimensionId = (String) features.get("dimensionId");
// 6. update skuIds by productId
String barcode = (String) getCellContent(cellContents, "Barcode");
BigDecimal inventory = (BigDecimal) getCellContent(cellContents, "Stock Qty");
BigDecimal averageCost = (BigDecimal) getCellContent(cellContents, "Average Cost");
String skuId = updateSku(row, productId, ownerPartyId, facilityId, barcode, inventory, colorId, color, dimensionId, dimension, listPrice,
averageCost);
if (UtilValidate.isEmpty(skuId)) {
return false;
}
// 7. store prices
BigDecimal memberPrice = (BigDecimal) getCellContent(cellContents, "Member Price");
Map<String, Object> results = updateSkuPrice(skuId, ownerPartyId, memberPrice);
if (ServiceUtil.isError(results)) {
return false;
}
return true;
}