Search in sources :

Example 1 with ProductAttribute

use of com.salesmanager.shop.model.catalog.product.attribute.ProductAttribute in project shopizer by shopizer-ecommerce.

the class PersistableOrderProductPopulator method populate.

/**
 * Converts a ShoppingCartItem carried in the ShoppingCart to an OrderProduct
 * that will be saved in the system
 */
@Override
public OrderProduct populate(PersistableOrderProduct source, OrderProduct target, MerchantStore store, Language language) throws ConversionException {
    Validate.notNull(productService, "productService must be set");
    Validate.notNull(digitalProductService, "digitalProductService must be set");
    Validate.notNull(productAttributeService, "productAttributeService must be set");
    try {
        Product modelProduct = productService.getById(source.getProduct().getId());
        if (modelProduct == null) {
            throw new ConversionException("Cannot get product with id (productId) " + source.getProduct().getId());
        }
        if (modelProduct.getMerchantStore().getId().intValue() != store.getId().intValue()) {
            throw new ConversionException("Invalid product id " + source.getProduct().getId());
        }
        DigitalProduct digitalProduct = digitalProductService.getByProduct(store, modelProduct);
        if (digitalProduct != null) {
            OrderProductDownload orderProductDownload = new OrderProductDownload();
            orderProductDownload.setOrderProductFilename(digitalProduct.getProductFileName());
            orderProductDownload.setOrderProduct(target);
            orderProductDownload.setDownloadCount(0);
            orderProductDownload.setMaxdays(ApplicationConstants.MAX_DOWNLOAD_DAYS);
            target.getDownloads().add(orderProductDownload);
        }
        target.setOneTimeCharge(source.getPrice());
        target.setProductName(source.getProduct().getDescription().getName());
        target.setProductQuantity(source.getOrderedQuantity());
        target.setSku(source.getProduct().getSku());
        OrderProductPrice orderProductPrice = new OrderProductPrice();
        orderProductPrice.setDefaultPrice(true);
        orderProductPrice.setProductPrice(source.getPrice());
        orderProductPrice.setOrderProduct(target);
        Set<OrderProductPrice> prices = new HashSet<OrderProductPrice>();
        prices.add(orderProductPrice);
        /**
         * DO NOT SUPPORT MUTIPLE PRICES *
         */
        /*			//Other prices
			List<FinalPrice> otherPrices = finalPrice.getAdditionalPrices();
			if(otherPrices!=null) {
				for(FinalPrice otherPrice : otherPrices) {
					OrderProductPrice other = orderProductPrice(otherPrice);
					other.setOrderProduct(target);
					prices.add(other);
				}
			}*/
        target.setPrices(prices);
        // OrderProductAttribute
        List<ProductAttribute> attributeItems = source.getAttributes();
        if (!CollectionUtils.isEmpty(attributeItems)) {
            Set<OrderProductAttribute> attributes = new HashSet<OrderProductAttribute>();
            for (ProductAttribute attribute : attributeItems) {
                OrderProductAttribute orderProductAttribute = new OrderProductAttribute();
                orderProductAttribute.setOrderProduct(target);
                Long id = attribute.getId();
                com.salesmanager.core.model.catalog.product.attribute.ProductAttribute attr = productAttributeService.getById(id);
                if (attr == null) {
                    throw new ConversionException("Attribute id " + id + " does not exists");
                }
                if (attr.getProduct().getMerchantStore().getId().intValue() != store.getId().intValue()) {
                    throw new ConversionException("Attribute id " + id + " invalid for this store");
                }
                orderProductAttribute.setProductAttributeIsFree(attr.getProductAttributeIsFree());
                orderProductAttribute.setProductAttributeName(attr.getProductOption().getDescriptionsSettoList().get(0).getName());
                orderProductAttribute.setProductAttributeValueName(attr.getProductOptionValue().getDescriptionsSettoList().get(0).getName());
                orderProductAttribute.setProductAttributePrice(attr.getProductAttributePrice());
                orderProductAttribute.setProductAttributeWeight(attr.getProductAttributeWeight());
                orderProductAttribute.setProductOptionId(attr.getProductOption().getId());
                orderProductAttribute.setProductOptionValueId(attr.getProductOptionValue().getId());
                attributes.add(orderProductAttribute);
            }
            target.setOrderAttributes(attributes);
        }
    } catch (Exception e) {
        throw new ConversionException(e);
    }
    return target;
}
Also used : ConversionException(com.salesmanager.core.business.exception.ConversionException) Product(com.salesmanager.core.model.catalog.product.Product) OrderProduct(com.salesmanager.core.model.order.orderproduct.OrderProduct) PersistableOrderProduct(com.salesmanager.shop.model.order.PersistableOrderProduct) DigitalProduct(com.salesmanager.core.model.catalog.product.file.DigitalProduct) OrderProductAttribute(com.salesmanager.core.model.order.orderproduct.OrderProductAttribute) ProductAttribute(com.salesmanager.shop.model.catalog.product.attribute.ProductAttribute) ConversionException(com.salesmanager.core.business.exception.ConversionException) OrderProductPrice(com.salesmanager.core.model.order.orderproduct.OrderProductPrice) OrderProductAttribute(com.salesmanager.core.model.order.orderproduct.OrderProductAttribute) OrderProductDownload(com.salesmanager.core.model.order.orderproduct.OrderProductDownload) DigitalProduct(com.salesmanager.core.model.catalog.product.file.DigitalProduct) HashSet(java.util.HashSet)

Aggregations

ConversionException (com.salesmanager.core.business.exception.ConversionException)1 Product (com.salesmanager.core.model.catalog.product.Product)1 DigitalProduct (com.salesmanager.core.model.catalog.product.file.DigitalProduct)1 OrderProduct (com.salesmanager.core.model.order.orderproduct.OrderProduct)1 OrderProductAttribute (com.salesmanager.core.model.order.orderproduct.OrderProductAttribute)1 OrderProductDownload (com.salesmanager.core.model.order.orderproduct.OrderProductDownload)1 OrderProductPrice (com.salesmanager.core.model.order.orderproduct.OrderProductPrice)1 ProductAttribute (com.salesmanager.shop.model.catalog.product.attribute.ProductAttribute)1 PersistableOrderProduct (com.salesmanager.shop.model.order.PersistableOrderProduct)1 HashSet (java.util.HashSet)1