use of com.salesmanager.core.model.catalog.product.price.ProductPriceDescription in project shopizer by shopizer-ecommerce.
the class PersistableProductDefinitionMapper method merge.
@Override
public Product merge(PersistableProductDefinition source, Product destination, MerchantStore store, Language language) {
Validate.notNull(destination, "Product must not be null");
try {
destination.setSku(source.getIdentifier());
destination.setAvailable(source.isVisible());
destination.setDateAvailable(new Date());
destination.setRefSku(source.getIdentifier());
if (source.getId() != null && source.getId().longValue() == 0) {
destination.setId(null);
} else {
destination.setId(source.getId());
}
// MANUFACTURER
if (!StringUtils.isBlank(source.getManufacturer())) {
Manufacturer manufacturer = manufacturerService.getByCode(store, source.getManufacturer());
if (manufacturer == null) {
throw new ConversionException("Manufacturer [" + source.getManufacturer() + "] does not exist");
}
destination.setManufacturer(manufacturer);
}
// PRODUCT TYPE
if (!StringUtils.isBlank(source.getType())) {
ProductType type = productTypeService.getByCode(source.getType(), store, language);
if (type == null) {
throw new ConversionException("Product type [" + source.getType() + "] does not exist");
}
destination.setType(type);
}
if (!StringUtils.isBlank(source.getDateAvailable())) {
destination.setDateAvailable(DateUtil.getDate(source.getDateAvailable()));
}
destination.setMerchantStore(store);
List<Language> languages = new ArrayList<Language>();
Set<ProductDescription> descriptions = new HashSet<ProductDescription>();
if (!CollectionUtils.isEmpty(source.getDescriptions())) {
for (com.salesmanager.shop.model.catalog.product.ProductDescription description : source.getDescriptions()) {
ProductDescription productDescription = new ProductDescription();
Language lang = languageService.getByCode(description.getLanguage());
if (lang == null) {
throw new ConversionException("Language code " + description.getLanguage() + " is invalid, use ISO code (en, fr ...)");
}
if (!CollectionUtils.isEmpty(destination.getDescriptions())) {
for (ProductDescription desc : destination.getDescriptions()) {
if (desc.getLanguage().getCode().equals(description.getLanguage())) {
productDescription = desc;
break;
}
}
}
productDescription.setProduct(destination);
productDescription.setDescription(description.getDescription());
productDescription.setProductHighlight(description.getHighlights());
productDescription.setName(description.getName());
productDescription.setSeUrl(description.getFriendlyUrl());
productDescription.setMetatagKeywords(description.getKeyWords());
productDescription.setMetatagDescription(description.getMetaDescription());
productDescription.setTitle(description.getTitle());
languages.add(lang);
productDescription.setLanguage(lang);
descriptions.add(productDescription);
}
}
if (descriptions.size() > 0) {
destination.setDescriptions(descriptions);
}
// if(source.getRating() != null) {
// destination.setProductReviewAvg(new BigDecimal(source.getRating()));
// }
// destination.setProductReviewCount(source.getRatingCount());
/**
* Product definition
*/
ProductAvailability productAvailability = null;
ProductPrice defaultPrice = null;
if (!CollectionUtils.isEmpty(destination.getAvailabilities())) {
for (ProductAvailability avail : destination.getAvailabilities()) {
Set<ProductPrice> prices = avail.getPrices();
for (ProductPrice p : prices) {
if (p.isDefaultPrice()) {
if (productAvailability == null) {
productAvailability = avail;
defaultPrice = p;
productAvailability.setProductQuantity(source.getQuantity());
productAvailability.setProductStatus(source.isCanBePurchased());
p.setProductPriceAmount(source.getPrice());
break;
}
}
}
}
}
if (productAvailability == null) {
// create with default values
productAvailability = new ProductAvailability(destination, store);
destination.getAvailabilities().add(productAvailability);
productAvailability.setProductQuantity(source.getQuantity());
productAvailability.setProductQuantityOrderMin(1);
productAvailability.setProductQuantityOrderMax(1);
productAvailability.setRegion(Constants.ALL_REGIONS);
productAvailability.setAvailable(Boolean.valueOf(destination.isAvailable()));
productAvailability.setProductStatus(source.isCanBePurchased());
}
if (defaultPrice == null) {
defaultPrice = new ProductPrice();
defaultPrice.setDefaultPrice(true);
defaultPrice.setProductPriceAmount(source.getPrice());
defaultPrice.setCode(ProductPriceEntity.DEFAULT_PRICE_CODE);
defaultPrice.setProductAvailability(productAvailability);
productAvailability.getPrices().add(defaultPrice);
for (Language lang : languages) {
ProductPriceDescription ppd = new ProductPriceDescription();
ppd.setProductPrice(defaultPrice);
ppd.setLanguage(lang);
ppd.setName(ProductPriceDescription.DEFAULT_PRICE_DESCRIPTION);
defaultPrice.getDescriptions().add(ppd);
}
}
if (source.getProductSpecifications() != null) {
destination.setProductHeight(source.getProductSpecifications().getHeight());
destination.setProductLength(source.getProductSpecifications().getLength());
destination.setProductWeight(source.getProductSpecifications().getWeight());
destination.setProductWidth(source.getProductSpecifications().getWidth());
if (source.getProductSpecifications().getManufacturer() != null) {
Manufacturer manuf = null;
if (!StringUtils.isBlank(source.getProductSpecifications().getManufacturer())) {
manuf = manufacturerService.getByCode(store, source.getProductSpecifications().getManufacturer());
}
if (manuf == null) {
throw new ConversionException("Invalid manufacturer id");
}
if (manuf != null) {
if (manuf.getMerchantStore().getId().intValue() != store.getId().intValue()) {
throw new ConversionException("Invalid manufacturer id");
}
destination.setManufacturer(manuf);
}
}
}
destination.setSortOrder(source.getSortOrder());
destination.setProductVirtual(source.isVirtual());
destination.setProductShipeable(source.isShipeable());
// attributes
if (source.getProperties() != null) {
for (com.salesmanager.shop.model.catalog.product.attribute.PersistableProductAttribute attr : source.getProperties()) {
ProductAttribute attribute = persistableProductAttributeMapper.convert(attr, store, language);
attribute.setProduct(destination);
destination.getAttributes().add(attribute);
}
}
// categories
if (!CollectionUtils.isEmpty(source.getCategories())) {
for (com.salesmanager.shop.model.catalog.category.Category categ : source.getCategories()) {
Category c = null;
if (!StringUtils.isBlank(categ.getCode())) {
c = categoryService.getByCode(store, categ.getCode());
} else {
Validate.notNull(categ.getId(), "Category id nust not be null");
c = categoryService.getById(categ.getId(), store.getId());
}
if (c == null) {
throw new ConversionException("Category id " + categ.getId() + " does not exist");
}
if (c.getMerchantStore().getId().intValue() != store.getId().intValue()) {
throw new ConversionException("Invalid category id");
}
destination.getCategories().add(c);
}
}
return destination;
} catch (Exception e) {
throw new ConversionRuntimeException("Error converting product mapper", e);
}
}
use of com.salesmanager.core.model.catalog.product.price.ProductPriceDescription in project shopizer by shopizer-ecommerce.
the class ShippingQuoteByWeightTest method testGetCustomShippingQuotesByWeight.
@Ignore
public // @Test
void testGetCustomShippingQuotesByWeight() throws ServiceException {
Language en = languageService.getByCode("en");
Country country = countryService.getByCode("CA");
Zone zone = zoneService.getByCode("QC");
MerchantStore store = merchantService.getByCode(MerchantStore.DEFAULT_STORE);
ProductType generalType = productTypeService.getProductType(ProductType.GENERAL_TYPE);
// set valid store postal code
store.setStorepostalcode("J4B-9J9");
Product product = new Product();
product.setProductHeight(new BigDecimal(4));
product.setProductLength(new BigDecimal(3));
product.setProductWidth(new BigDecimal(5));
product.setProductWeight(new BigDecimal(8));
product.setSku("TESTSKU");
product.setType(generalType);
product.setMerchantStore(store);
// Product description
ProductDescription description = new ProductDescription();
description.setName("Product 1");
description.setLanguage(en);
description.setProduct(product);
product.getDescriptions().add(description);
productService.create(product);
// productService.saveOrUpdate(product);
// Availability
ProductAvailability availability = new ProductAvailability();
availability.setProductDateAvailable(new Date());
availability.setProductQuantity(100);
availability.setRegion("*");
// associate with product
availability.setProduct(product);
product.getAvailabilities().add(availability);
productAvailabilityService.create(availability);
ProductPrice dprice = new ProductPrice();
dprice.setDefaultPrice(true);
dprice.setProductPriceAmount(new BigDecimal(29.99));
dprice.setProductAvailability(availability);
ProductPriceDescription dpd = new ProductPriceDescription();
dpd.setName("Base price");
dpd.setProductPrice(dprice);
dpd.setLanguage(en);
dprice.getDescriptions().add(dpd);
availability.getPrices().add(dprice);
productPriceService.create(dprice);
// get product
product = productService.getByCode("TESTSKU", en);
// check the product
Set<ProductAvailability> avails = product.getAvailabilities();
for (ProductAvailability as : avails) {
Set<ProductPrice> availabilityPrices = as.getPrices();
for (ProductPrice ps : availabilityPrices) {
System.out.println(ps.getProductPriceAmount().toString());
}
}
// check availability
Set<ProductPrice> availabilityPrices = availability.getPrices();
for (ProductPrice ps : availabilityPrices) {
System.out.println(ps.getProductPriceAmount().toString());
}
// configure shipping
ShippingConfiguration shippingConfiguration = new ShippingConfiguration();
// based on shipping or billing address
shippingConfiguration.setShippingBasisType(ShippingBasisType.SHIPPING);
shippingConfiguration.setShippingType(ShippingType.INTERNATIONAL);
// individual item pricing or box packaging (see unit test above)
shippingConfiguration.setShippingPackageType(ShippingPackageType.ITEM);
// only if package type is package
shippingConfiguration.setBoxHeight(5);
shippingConfiguration.setBoxLength(5);
shippingConfiguration.setBoxWidth(5);
shippingConfiguration.setBoxWeight(1);
shippingConfiguration.setMaxWeight(10);
List<String> supportedCountries = new ArrayList<String>();
supportedCountries.add("CA");
supportedCountries.add("US");
supportedCountries.add("UK");
supportedCountries.add("FR");
shippingService.setSupportedCountries(store, supportedCountries);
CustomShippingQuotesConfiguration customConfiguration = new CustomShippingQuotesConfiguration();
customConfiguration.setModuleCode("weightBased");
customConfiguration.setActive(true);
CustomShippingQuotesRegion northRegion = new CustomShippingQuotesRegion();
northRegion.setCustomRegionName("NORTH");
List<String> countries = new ArrayList<String>();
countries.add("CA");
countries.add("US");
northRegion.setCountries(countries);
CustomShippingQuoteWeightItem caQuote4 = new CustomShippingQuoteWeightItem();
caQuote4.setMaximumWeight(4);
caQuote4.setPrice(new BigDecimal(20));
CustomShippingQuoteWeightItem caQuote10 = new CustomShippingQuoteWeightItem();
caQuote10.setMaximumWeight(10);
caQuote10.setPrice(new BigDecimal(50));
CustomShippingQuoteWeightItem caQuote100 = new CustomShippingQuoteWeightItem();
caQuote100.setMaximumWeight(100);
caQuote100.setPrice(new BigDecimal(120));
List<CustomShippingQuoteWeightItem> quotes = new ArrayList<CustomShippingQuoteWeightItem>();
quotes.add(caQuote4);
quotes.add(caQuote10);
quotes.add(caQuote100);
northRegion.setQuoteItems(quotes);
customConfiguration.getRegions().add(northRegion);
// create an integration configuration - USPS
IntegrationConfiguration configuration = new IntegrationConfiguration();
configuration.setActive(true);
configuration.setEnvironment(Environment.TEST.name());
configuration.setModuleCode("weightBased");
// configure module
shippingService.saveShippingConfiguration(shippingConfiguration, store);
// create the basic configuration
shippingService.saveShippingQuoteModuleConfiguration(configuration, store);
// and the custom configuration
shippingService.saveCustomShippingConfiguration("weightBased", customConfiguration, store);
// now create ShippingProduct
ShippingProduct shippingProduct1 = new ShippingProduct(product);
FinalPrice price = pricingService.calculateProductPrice(product);
shippingProduct1.setFinalPrice(price);
List<ShippingProduct> shippingProducts = new ArrayList<ShippingProduct>();
shippingProducts.add(shippingProduct1);
Customer customer = new Customer();
customer.setMerchantStore(store);
customer.setEmailAddress("test@test.com");
customer.setGender(CustomerGender.M);
customer.setDefaultLanguage(en);
customer.setAnonymous(true);
customer.setCompany("ifactory");
customer.setDateOfBirth(new Date());
customer.setNick("My nick");
customer.setPassword("123456");
Delivery delivery = new Delivery();
delivery.setAddress("Shipping address");
delivery.setCity("Boucherville");
delivery.setCountry(country);
delivery.setZone(zone);
delivery.setPostalCode("J5C-6J4");
// overwrite delivery to US
/* delivery.setPostalCode("90002");
delivery.setCountry(us);
Zone california = zoneService.getByCode("CA");
delivery.setZone(california);*/
Billing billing = new Billing();
billing.setAddress("Billing address");
billing.setCountry(country);
billing.setZone(zone);
billing.setPostalCode("J4B-8J9");
billing.setFirstName("Carl");
billing.setLastName("Samson");
customer.setBilling(billing);
customer.setDelivery(delivery);
customerService.create(customer);
// for correlation
Long dummyCartId = 0L;
ShippingQuote shippingQuote = shippingService.getShippingQuote(dummyCartId, store, delivery, shippingProducts, en);
Assert.notNull(shippingQuote);
}
use of com.salesmanager.core.model.catalog.product.price.ProductPriceDescription in project shopizer by shopizer-ecommerce.
the class ProductTest method testCreateRelationShip.
private void testCreateRelationShip(Product product) throws Exception {
MerchantStore store = merchantService.getByCode(MerchantStore.DEFAULT_STORE);
Language en = languageService.getByCode("en");
Manufacturer oreilley = manufacturerService.getByCode(store, "oreilley");
ProductType generalType = productTypeService.getProductType(ProductType.GENERAL_TYPE);
Category tech = categoryService.getByCode(store, "tech");
// create new related product
// PRODUCT 1
Product related = new Product();
related.setProductHeight(new BigDecimal(4));
related.setProductLength(new BigDecimal(3));
related.setProductWidth(new BigDecimal(1));
related.setSku("TB67891");
related.setManufacturer(oreilley);
related.setType(generalType);
related.setMerchantStore(store);
// Product description
ProductDescription description = new ProductDescription();
description.setName("Spring 4 in Action");
description.setLanguage(en);
description.setProduct(related);
product.getDescriptions().add(description);
// add category
product.getCategories().add(tech);
// Availability
ProductAvailability availability = new ProductAvailability();
availability.setProductDateAvailable(date);
availability.setProductQuantity(200);
availability.setRegion("*");
// associate with product
availability.setProduct(related);
// productAvailabilityService.create(availability);
related.getAvailabilities().add(availability);
ProductPrice dprice = new ProductPrice();
dprice.setDefaultPrice(true);
dprice.setProductPriceAmount(new BigDecimal(39.99));
dprice.setProductAvailability(availability);
ProductPriceDescription dpd = new ProductPriceDescription();
dpd.setName("Base price");
dpd.setProductPrice(dprice);
dpd.setLanguage(en);
dprice.getDescriptions().add(dpd);
availability.getPrices().add(dprice);
related.getAvailabilities().add(availability);
productService.save(related);
ProductRelationship relationship = new ProductRelationship();
relationship.setActive(true);
relationship.setCode("spring");
relationship.setProduct(product);
relationship.setRelatedProduct(related);
relationship.setStore(store);
// because relationships are nor joined fetched, make sure you query relationships first, then ad to an existing list
// so relationship and review are they only objects not joined fetch when querying a product
// need to do a subsequent query
List<ProductRelationship> relationships = productRelationshipService.listByProduct(product);
relationships.add(relationship);
product.setRelationships(new HashSet<ProductRelationship>(relationships));
productService.save(product);
}
use of com.salesmanager.core.model.catalog.product.price.ProductPriceDescription in project shopizer by shopizer-ecommerce.
the class PersistableProductPopulator method populate.
@Override
public Product populate(PersistableProduct source, Product target, MerchantStore store, Language language) throws ConversionException {
Validate.notNull(target, "Product must not be null");
try {
target.setSku(source.getSku());
target.setAvailable(source.isAvailable());
target.setPreOrder(source.isPreOrder());
target.setRefSku(source.getRefSku());
if (source.getId() != null && source.getId().longValue() == 0) {
target.setId(null);
} else {
target.setId(source.getId());
}
// PRODUCT TYPE
if (!StringUtils.isBlank(source.getType())) {
ProductType type = productTypeService.getByCode(source.getType(), store, language);
if (type == null) {
throw new ConversionException("Product type [" + source.getType() + "] does not exist");
}
target.setType(type);
}
if (source.getOwner() != null && source.getOwner().getId() != null) {
com.salesmanager.core.model.customer.Customer owner = customerService.getById(source.getOwner().getId());
target.setOwner(owner);
}
if (!StringUtils.isBlank(source.getDateAvailable())) {
target.setDateAvailable(DateUtil.getDate(source.getDateAvailable()));
}
target.setMerchantStore(store);
List<Language> languages = new ArrayList<Language>();
Set<ProductDescription> descriptions = new HashSet<ProductDescription>();
if (!CollectionUtils.isEmpty(source.getDescriptions())) {
for (com.salesmanager.shop.model.catalog.product.ProductDescription description : source.getDescriptions()) {
ProductDescription productDescription = new ProductDescription();
Language lang = languageService.getByCode(description.getLanguage());
if (lang == null) {
throw new ConversionException("Language code " + description.getLanguage() + " is invalid, use ISO code (en, fr ...)");
}
if (!CollectionUtils.isEmpty(target.getDescriptions())) {
for (ProductDescription desc : target.getDescriptions()) {
if (desc.getLanguage().getCode().equals(description.getLanguage())) {
productDescription = desc;
break;
}
}
}
productDescription.setProduct(target);
productDescription.setDescription(description.getDescription());
productDescription.setProductHighlight(description.getHighlights());
productDescription.setName(description.getName());
productDescription.setSeUrl(description.getFriendlyUrl());
productDescription.setMetatagKeywords(description.getKeyWords());
productDescription.setMetatagDescription(description.getMetaDescription());
productDescription.setTitle(description.getTitle());
languages.add(lang);
productDescription.setLanguage(lang);
descriptions.add(productDescription);
}
}
if (descriptions.size() > 0) {
target.setDescriptions(descriptions);
}
if (source.getProductSpecifications() != null) {
target.setProductHeight(source.getProductSpecifications().getHeight());
target.setProductLength(source.getProductSpecifications().getLength());
target.setProductWeight(source.getProductSpecifications().getWeight());
target.setProductWidth(source.getProductSpecifications().getWidth());
if (source.getProductSpecifications().getManufacturer() != null) {
Manufacturer manuf = null;
if (!StringUtils.isBlank(source.getProductSpecifications().getManufacturer())) {
manuf = manufacturerService.getByCode(store, source.getProductSpecifications().getManufacturer());
}
if (manuf == null) {
throw new ConversionException("Invalid manufacturer id");
}
if (manuf != null) {
if (manuf.getMerchantStore().getId().intValue() != store.getId().intValue()) {
throw new ConversionException("Invalid manufacturer id");
}
target.setManufacturer(manuf);
}
}
}
target.setSortOrder(source.getSortOrder());
target.setProductVirtual(source.isProductVirtual());
target.setProductShipeable(source.isProductShipeable());
if (source.getRating() != null) {
target.setProductReviewAvg(new BigDecimal(source.getRating()));
}
target.setProductReviewCount(source.getRatingCount());
if (CollectionUtils.isNotEmpty(source.getProductPrices())) {
// get product availability
// create new ProductAvailability
ProductAvailability productAvailability = new ProductAvailability(target, store);
// todo now support for specific regions
productAvailability.setRegion(Constants.ALL_REGIONS);
productAvailability.setProductQuantity(source.getQuantity());
productAvailability.setProductQuantityOrderMin(1);
productAvailability.setProductQuantityOrderMax(1);
productAvailability.setAvailable(Boolean.valueOf(target.isAvailable()));
for (com.salesmanager.shop.model.catalog.product.PersistableProductPrice priceEntity : source.getProductPrices()) {
ProductPrice price = new ProductPrice();
price.setProductAvailability(productAvailability);
price.setDefaultPrice(priceEntity.isDefaultPrice());
price.setProductPriceAmount(priceEntity.getOriginalPrice());
price.setCode(priceEntity.getCode());
price.setProductPriceSpecialAmount(priceEntity.getDiscountedPrice());
if (priceEntity.getDiscountStartDate() != null) {
Date startDate = DateUtil.getDate(priceEntity.getDiscountStartDate());
price.setProductPriceSpecialStartDate(startDate);
}
if (priceEntity.getDiscountEndDate() != null) {
Date endDate = DateUtil.getDate(priceEntity.getDiscountEndDate());
price.setProductPriceSpecialEndDate(endDate);
}
productAvailability.getPrices().add(price);
target.getAvailabilities().add(productAvailability);
for (Language lang : languages) {
ProductPriceDescription ppd = new ProductPriceDescription();
ppd.setProductPrice(price);
ppd.setLanguage(lang);
ppd.setName(ProductPriceDescription.DEFAULT_PRICE_DESCRIPTION);
// price appender
Optional<com.salesmanager.shop.model.catalog.product.ProductPriceDescription> description = priceEntity.getDescriptions().stream().filter(d -> d.getLanguage() != null && d.getLanguage().equals(lang.getCode())).findFirst();
if (description.isPresent()) {
ppd.setPriceAppender(description.get().getPriceAppender());
}
price.getDescriptions().add(ppd);
}
}
} else {
// create
ProductAvailability productAvailability = null;
ProductPrice defaultPrice = null;
if (!CollectionUtils.isEmpty(target.getAvailabilities())) {
for (ProductAvailability avail : target.getAvailabilities()) {
Set<ProductPrice> prices = avail.getPrices();
for (ProductPrice p : prices) {
if (p.isDefaultPrice()) {
if (productAvailability == null) {
productAvailability = avail;
defaultPrice = p;
break;
}
p.setDefaultPrice(false);
}
}
}
}
if (productAvailability == null) {
productAvailability = new ProductAvailability(target, store);
target.getAvailabilities().add(productAvailability);
}
productAvailability.setProductQuantity(source.getQuantity());
productAvailability.setProductQuantityOrderMin(1);
productAvailability.setProductQuantityOrderMax(1);
productAvailability.setRegion(Constants.ALL_REGIONS);
productAvailability.setAvailable(Boolean.valueOf(target.isAvailable()));
if (defaultPrice != null) {
defaultPrice.setProductPriceAmount(source.getPrice());
} else {
defaultPrice = new ProductPrice();
defaultPrice.setDefaultPrice(true);
defaultPrice.setProductPriceAmount(source.getPrice());
defaultPrice.setCode(ProductPriceEntity.DEFAULT_PRICE_CODE);
defaultPrice.setProductAvailability(productAvailability);
productAvailability.getPrices().add(defaultPrice);
for (Language lang : languages) {
ProductPriceDescription ppd = new ProductPriceDescription();
ppd.setProductPrice(defaultPrice);
ppd.setLanguage(lang);
ppd.setName(ProductPriceDescription.DEFAULT_PRICE_DESCRIPTION);
defaultPrice.getDescriptions().add(ppd);
}
}
}
// image
if (source.getImages() != null) {
for (PersistableImage img : source.getImages()) {
ProductImage productImage = new ProductImage();
productImage.setImageType(img.getImageType());
productImage.setDefaultImage(img.isDefaultImage());
if (img.getImageType() == 1) {
productImage.setProductImageUrl(img.getImageUrl());
productImage.setImage(new ByteArrayInputStream(new byte[0]));
} else {
ByteArrayInputStream in = new ByteArrayInputStream(img.getBytes());
productImage.setImage(in);
}
productImage.setProduct(target);
productImage.setProductImage(img.getName());
target.getImages().add(productImage);
}
}
// attributes
if (source.getAttributes() != null) {
for (com.salesmanager.shop.model.catalog.product.attribute.PersistableProductAttribute attr : source.getAttributes()) {
ProductAttribute attribute = persistableProductAttributeMapper.convert(attr, store, language);
attribute.setProduct(target);
target.getAttributes().add(attribute);
}
}
// categories
if (!CollectionUtils.isEmpty(source.getCategories())) {
for (com.salesmanager.shop.model.catalog.category.Category categ : source.getCategories()) {
Category c = null;
if (!StringUtils.isBlank(categ.getCode())) {
c = categoryService.getByCode(store, categ.getCode());
} else {
Validate.notNull(categ.getId(), "Category id nust not be null");
c = categoryService.getById(categ.getId(), store.getId());
}
if (c == null) {
throw new ConversionException("Category id " + categ.getId() + " does not exist");
}
if (c.getMerchantStore().getId().intValue() != store.getId().intValue()) {
throw new ConversionException("Invalid category id");
}
target.getCategories().add(c);
}
}
return target;
} catch (Exception e) {
throw new ConversionException(e);
}
}
use of com.salesmanager.core.model.catalog.product.price.ProductPriceDescription in project shopizer by shopizer-ecommerce.
the class ReadableProductPricePopulator method populate.
@Override
public ReadableProductPrice populate(ProductPrice source, ReadableProductPrice target, MerchantStore store, Language language) throws ConversionException {
Validate.notNull(pricingService, "pricingService must be set");
Validate.notNull(source.getProductAvailability(), "productPrice.availability cannot be null");
Validate.notNull(source.getProductAvailability().getProduct(), "productPrice.availability.product cannot be null");
try {
if (language == null) {
target = new ReadableProductPriceFull();
}
if (source.getId() != null && source.getId() > 0) {
target.setId(source.getId());
}
FinalPrice finalPrice = pricingService.calculateProductPrice(source.getProductAvailability().getProduct());
target.setOriginalPrice(pricingService.getDisplayAmount(source.getProductPriceAmount(), store));
if (finalPrice.isDiscounted()) {
target.setDiscounted(true);
target.setFinalPrice(pricingService.getDisplayAmount(source.getProductPriceSpecialAmount(), store));
} else {
target.setFinalPrice(pricingService.getDisplayAmount(finalPrice.getOriginalPrice(), store));
}
if (source.getDescriptions() != null && source.getDescriptions().size() > 0) {
List<com.salesmanager.shop.model.catalog.product.ProductPriceDescription> fulldescriptions = new ArrayList<com.salesmanager.shop.model.catalog.product.ProductPriceDescription>();
Set<ProductPriceDescription> descriptions = source.getDescriptions();
ProductPriceDescription description = null;
for (ProductPriceDescription desc : descriptions) {
if (language != null && desc.getLanguage().getCode().equals(language.getCode())) {
description = desc;
break;
} else {
fulldescriptions.add(populateDescription(desc));
}
}
if (description != null) {
com.salesmanager.shop.model.catalog.product.ProductPriceDescription d = populateDescription(description);
target.setDescription(d);
}
if (target instanceof ReadableProductPriceFull) {
((ReadableProductPriceFull) target).setDescriptions(fulldescriptions);
}
}
} catch (Exception e) {
throw new ConversionException("Exception while converting to ReadableProductPrice", e);
}
return target;
}
Aggregations