Search in sources :

Example 71 with Sku

use of org.broadleafcommerce.core.catalog.domain.Sku in project BroadleafCommerce by BroadleafCommerce.

the class BandedPriceFulfillmentTest method createCandidateOrder.

/**
 * @param total - this number divided by the number of items to create is the value of either the weight or the price
 * (depending on which <b>option</b> is being passed in) for a single order item. Note that the final price of each item
 * will be: (<b>total</b> / <b>orderItemsToCreate</b>) * <b>quantity</b>
 * @param orderItemsToCreate - the number of order items to split the retail total across
 * @param flatRates - the flat rates to assign to the OrderItems that are created. To have an Order that is mixed between OrderItems and
 * DiscreteOrderItems (which are created for flat rates) ensure that the size of this array is less than <b>orderItemsToCreate</b>
 * @param quantities - the quantities to assign to each OrderItem. If specified, this should be equal to the number of
 * items to create
 * @param option - the option to associate with the flat rates
 * @return
 */
protected Order createCandidateOrder(BigDecimal total, int orderItemsToCreate, String[] flatRates, int[] quantities, FulfillmentOption option) {
    if (flatRates != null && flatRates.length > orderItemsToCreate) {
        throw new IllegalStateException("Flat rates for Skus should be less than or equal to the number of order items being created");
    }
    if (quantities != null && quantities.length != orderItemsToCreate) {
        throw new IllegalStateException("Quantities for Skus should be less than or equal to the number of order items being created");
    }
    Order result = new OrderImpl();
    List<FulfillmentGroupItem> fulfillmentItems = new ArrayList<FulfillmentGroupItem>();
    for (int i = 0; i < orderItemsToCreate; i++) {
        DiscreteOrderItem orderItem = new DiscreteOrderItemImpl();
        Sku sku = new SkuImpl();
        // set the sku price to some arbitrary amount - won't matter because the test is based on order item price
        sku.setRetailPrice(new Money("1"));
        orderItem.setSku(sku);
        if (flatRates != null && i < flatRates.length) {
            sku.getFulfillmentFlatRates().put(option, new BigDecimal(flatRates[i]));
        }
        if (option instanceof BandedPriceFulfillmentOption) {
            orderItem.setPrice(new Money(total.divide(new BigDecimal(orderItemsToCreate))));
        } else if (option instanceof BandedWeightFulfillmentOption) {
            Weight weight = new Weight();
            weight.setWeight(total.divide(new BigDecimal(orderItemsToCreate)));
            weight.setWeightUnitOfMeasure(WeightUnitOfMeasureType.POUNDS);
            orderItem.getSku().setWeight(weight);
            orderItem.setPrice(new Money(BigDecimal.ZERO));
        }
        orderItem.setOrder(result);
        FulfillmentGroupItem fulfillmentItem = new FulfillmentGroupItemImpl();
        fulfillmentItem.setOrderItem(orderItem);
        if (quantities == null) {
            fulfillmentItem.setQuantity(1);
        } else {
            fulfillmentItem.setQuantity(quantities[i]);
        }
        fulfillmentItems.add(fulfillmentItem);
    }
    FulfillmentGroup group = new FulfillmentGroupImpl();
    group.setOrder(result);
    group.setFulfillmentGroupItems(fulfillmentItems);
    List<FulfillmentGroup> groups = new ArrayList<FulfillmentGroup>();
    groups.add(group);
    result.setFulfillmentGroups(groups);
    return result;
}
Also used : Order(org.broadleafcommerce.core.order.domain.Order) DiscreteOrderItem(org.broadleafcommerce.core.order.domain.DiscreteOrderItem) FulfillmentGroupImpl(org.broadleafcommerce.core.order.domain.FulfillmentGroupImpl) DiscreteOrderItemImpl(org.broadleafcommerce.core.order.domain.DiscreteOrderItemImpl) ArrayList(java.util.ArrayList) BandedPriceFulfillmentOption(org.broadleafcommerce.core.order.fulfillment.domain.BandedPriceFulfillmentOption) BigDecimal(java.math.BigDecimal) Weight(org.broadleafcommerce.core.catalog.domain.Weight) Money(org.broadleafcommerce.common.money.Money) SkuImpl(org.broadleafcommerce.core.catalog.domain.SkuImpl) FulfillmentGroupItem(org.broadleafcommerce.core.order.domain.FulfillmentGroupItem) OrderImpl(org.broadleafcommerce.core.order.domain.OrderImpl) FulfillmentGroup(org.broadleafcommerce.core.order.domain.FulfillmentGroup) Sku(org.broadleafcommerce.core.catalog.domain.Sku) BandedWeightFulfillmentOption(org.broadleafcommerce.core.order.fulfillment.domain.BandedWeightFulfillmentOption) FulfillmentGroupItemImpl(org.broadleafcommerce.core.order.domain.FulfillmentGroupItemImpl)

Example 72 with Sku

use of org.broadleafcommerce.core.catalog.domain.Sku in project BroadleafCommerce by BroadleafCommerce.

the class ProductSiteMapGeneratorTest method testProductSiteMapGenerator.

@Test
public void testProductSiteMapGenerator() throws SiteMapException, IOException {
    Product p1 = new ProductImpl();
    p1.setUrl("/hot-sauces/sudden_death_sauce");
    Sku s1 = new SkuImpl();
    p1.setDefaultSku(s1);
    Product p2 = new ProductImpl();
    p2.setUrl("hot-sauces/sweet_death_sauce");
    Sku s2 = new SkuImpl();
    p2.setDefaultSku(s2);
    Product p3 = new ProductImpl();
    p3.setUrl("/hot-sauces/hoppin_hot_sauce");
    Sku s3 = new SkuImpl();
    p3.setDefaultSku(s3);
    Product p4 = new ProductImpl();
    p4.setUrl("/hot-sauces/day_of_the_dead_chipotle_hot_sauce");
    Sku s4 = new SkuImpl();
    p4.setDefaultSku(s4);
    List<Product> products = new ArrayList<Product>();
    products.add(p1);
    products.add(p2);
    products.add(p3);
    products.add(p4);
    ProductDao productDao = EasyMock.createMock(ProductDao.class);
    EasyMock.expect(productDao.readAllActiveProducts(EasyMock.eq(0), EasyMock.eq(5))).andReturn(products);
    EasyMock.replay(productDao);
    ProductSiteMapGenerator psmg = new ProductSiteMapGenerator();
    psmg.setProductDao(productDao);
    psmg.setPageSize(5);
    SiteMapGeneratorConfiguration smgc = new SiteMapGeneratorConfigurationImpl();
    smgc.setDisabled(false);
    smgc.setSiteMapGeneratorType(SiteMapGeneratorType.PRODUCT);
    smgc.setSiteMapChangeFreq(SiteMapChangeFreqType.HOURLY);
    smgc.setSiteMapPriority(SiteMapPriorityType.POINT5);
    testGenerator(smgc, psmg);
    File file1 = fileService.getResource("/sitemap_index.xml");
    File file2 = fileService.getResource("/sitemap1.xml");
    File file3 = fileService.getResource("/sitemap2.xml");
    compareFiles(file1, "src/test/resources/org/broadleafcommerce/sitemap/product/sitemap_index.xml");
    compareFiles(file2, "src/test/resources/org/broadleafcommerce/sitemap/product/sitemap1.xml");
    compareFiles(file3, "src/test/resources/org/broadleafcommerce/sitemap/product/sitemap2.xml");
}
Also used : SkuImpl(org.broadleafcommerce.core.catalog.domain.SkuImpl) ProductImpl(org.broadleafcommerce.core.catalog.domain.ProductImpl) ArrayList(java.util.ArrayList) Product(org.broadleafcommerce.core.catalog.domain.Product) Sku(org.broadleafcommerce.core.catalog.domain.Sku) SiteMapGeneratorConfigurationImpl(org.broadleafcommerce.common.sitemap.domain.SiteMapGeneratorConfigurationImpl) ProductDao(org.broadleafcommerce.core.catalog.dao.ProductDao) SiteMapGeneratorConfiguration(org.broadleafcommerce.common.sitemap.domain.SiteMapGeneratorConfiguration) File(java.io.File) Test(org.junit.Test) SiteMapGeneratorTest(org.broadleafcommerce.common.sitemap.service.SiteMapGeneratorTest)

Example 73 with Sku

use of org.broadleafcommerce.core.catalog.domain.Sku in project BroadleafCommerce by BroadleafCommerce.

the class SkuSiteMapGeneratorTest method testSkuSiteMapGenerator.

@Test
public void testSkuSiteMapGenerator() throws SiteMapException, IOException {
    Product p1 = new ProductImpl();
    p1.setUrl("/hot-sauces/sudden_death_sauce");
    Sku s1 = new SkuImpl();
    p1.setDefaultSku(s1);
    Product p2 = new ProductImpl();
    p2.setUrl("/merchandise/hawt_like_a_habanero_mens");
    Sku s2 = new SkuImpl();
    s2.setUrlKey("/black_s");
    s2.setProduct(p2);
    Sku s3 = new SkuImpl();
    s3.setUrlKey("/black_m");
    s3.setProduct(p2);
    Sku s4 = new SkuImpl();
    s4.setUrlKey("/black_l");
    s4.setProduct(p2);
    List<Sku> skus = new ArrayList<Sku>();
    skus.add(s1);
    skus.add(s2);
    skus.add(s3);
    skus.add(s4);
    SkuDao skuDao = EasyMock.createMock(SkuDao.class);
    EasyMock.expect(skuDao.readAllActiveSkus(EasyMock.eq(0), EasyMock.eq(5))).andReturn(skus);
    EasyMock.replay(skuDao);
    SkuSiteMapGenerator ssmg = new SkuSiteMapGenerator();
    ssmg.setSkuDao(skuDao);
    ssmg.setPageSize(5);
    SiteMapGeneratorConfiguration smgc = new SiteMapGeneratorConfigurationImpl();
    smgc.setDisabled(false);
    smgc.setSiteMapGeneratorType(SiteMapGeneratorType.SKU);
    smgc.setSiteMapChangeFreq(SiteMapChangeFreqType.HOURLY);
    smgc.setSiteMapPriority(SiteMapPriorityType.POINT5);
    testGenerator(smgc, ssmg);
    File file1 = fileService.getResource("/sitemap_index.xml");
    File file2 = fileService.getResource("/sitemap1.xml");
    File file3 = fileService.getResource("/sitemap2.xml");
    compareFiles(file1, "src/test/resources/org/broadleafcommerce/sitemap/sku/sitemap_index.xml");
    compareFiles(file2, "src/test/resources/org/broadleafcommerce/sitemap/sku/sitemap1.xml");
    compareFiles(file3, "src/test/resources/org/broadleafcommerce/sitemap/sku/sitemap2.xml");
}
Also used : SkuImpl(org.broadleafcommerce.core.catalog.domain.SkuImpl) ProductImpl(org.broadleafcommerce.core.catalog.domain.ProductImpl) ArrayList(java.util.ArrayList) Product(org.broadleafcommerce.core.catalog.domain.Product) SkuDao(org.broadleafcommerce.core.catalog.dao.SkuDao) Sku(org.broadleafcommerce.core.catalog.domain.Sku) SiteMapGeneratorConfigurationImpl(org.broadleafcommerce.common.sitemap.domain.SiteMapGeneratorConfigurationImpl) SiteMapGeneratorConfiguration(org.broadleafcommerce.common.sitemap.domain.SiteMapGeneratorConfiguration) File(java.io.File) Test(org.junit.Test) SiteMapGeneratorTest(org.broadleafcommerce.common.sitemap.service.SiteMapGeneratorTest)

Example 74 with Sku

use of org.broadleafcommerce.core.catalog.domain.Sku in project BroadleafCommerce by BroadleafCommerce.

the class OrderItemServiceImpl method createBundleOrderItem.

@Override
public BundleOrderItem createBundleOrderItem(final ProductBundleOrderItemRequest itemRequest, boolean saveItem) {
    ProductBundle productBundle = itemRequest.getProductBundle();
    BundleOrderItem bundleOrderItem = (BundleOrderItem) orderItemDao.create(OrderItemType.BUNDLE);
    bundleOrderItem.setQuantity(itemRequest.getQuantity());
    bundleOrderItem.setCategory(itemRequest.getCategory());
    bundleOrderItem.setSku(itemRequest.getSku());
    bundleOrderItem.setName(itemRequest.getName());
    bundleOrderItem.setProductBundle(productBundle);
    bundleOrderItem.setOrder(itemRequest.getOrder());
    if (itemRequest.getSalePriceOverride() != null) {
        bundleOrderItem.setSalePriceOverride(Boolean.TRUE);
        bundleOrderItem.setSalePrice(itemRequest.getSalePriceOverride());
        bundleOrderItem.setBaseSalePrice(itemRequest.getSalePriceOverride());
    }
    if (itemRequest.getRetailPriceOverride() != null) {
        bundleOrderItem.setRetailPriceOverride(Boolean.TRUE);
        bundleOrderItem.setRetailPrice(itemRequest.getRetailPriceOverride());
        bundleOrderItem.setBaseRetailPrice(itemRequest.getRetailPriceOverride());
    }
    for (SkuBundleItem skuBundleItem : productBundle.getSkuBundleItems()) {
        Product bundleProduct = skuBundleItem.getBundle();
        Sku bundleSku = skuBundleItem.getSku();
        Category bundleCategory = null;
        if (itemRequest.getCategory() != null) {
            bundleCategory = itemRequest.getCategory();
        }
        if (bundleCategory == null && bundleProduct != null) {
            bundleCategory = bundleProduct.getDefaultCategory();
        }
        DiscreteOrderItemRequest bundleItemRequest = new DiscreteOrderItemRequest();
        bundleItemRequest.setCategory(bundleCategory);
        bundleItemRequest.setProduct(bundleProduct);
        bundleItemRequest.setQuantity(skuBundleItem.getQuantity());
        bundleItemRequest.setSku(bundleSku);
        bundleItemRequest.setItemAttributes(itemRequest.getItemAttributes());
        bundleItemRequest.setSalePriceOverride(skuBundleItem.getSalePrice());
        bundleItemRequest.setBundleOrderItem(bundleOrderItem);
        DiscreteOrderItem bundleDiscreteItem = createDiscreteOrderItem(bundleItemRequest);
        bundleDiscreteItem.setSkuBundleItem(skuBundleItem);
        bundleOrderItem.getDiscreteOrderItems().add(bundleDiscreteItem);
    }
    if (saveItem) {
        bundleOrderItem = (BundleOrderItem) saveOrderItem(bundleOrderItem);
    }
    applyAdditionalOrderItemProperties(bundleOrderItem);
    return bundleOrderItem;
}
Also used : DiscreteOrderItem(org.broadleafcommerce.core.order.domain.DiscreteOrderItem) Category(org.broadleafcommerce.core.catalog.domain.Category) BundleOrderItem(org.broadleafcommerce.core.order.domain.BundleOrderItem) DiscreteOrderItemRequest(org.broadleafcommerce.core.order.service.call.DiscreteOrderItemRequest) SkuBundleItem(org.broadleafcommerce.core.catalog.domain.SkuBundleItem) ProductBundle(org.broadleafcommerce.core.catalog.domain.ProductBundle) Product(org.broadleafcommerce.core.catalog.domain.Product) Sku(org.broadleafcommerce.core.catalog.domain.Sku)

Example 75 with Sku

use of org.broadleafcommerce.core.catalog.domain.Sku in project BroadleafCommerce by BroadleafCommerce.

the class LegacyOrderServiceImpl method createDiscreteOrderItemRequest.

@Override
public DiscreteOrderItemRequest createDiscreteOrderItemRequest(Long orderId, Long skuId, Long productId, Long categoryId, Integer quantity) {
    Sku sku = skuDao.readSkuById(skuId);
    Product product;
    if (productId != null) {
        product = productDao.readProductById(productId);
    } else {
        product = null;
    }
    Category category;
    if (categoryId != null) {
        category = categoryDao.readCategoryById(categoryId);
    } else {
        category = null;
    }
    Order order = orderDao.readOrderById(orderId);
    return createDiscreteOrderItemRequest(order, null, sku, product, category, quantity, null);
}
Also used : Order(org.broadleafcommerce.core.order.domain.Order) Category(org.broadleafcommerce.core.catalog.domain.Category) Product(org.broadleafcommerce.core.catalog.domain.Product) Sku(org.broadleafcommerce.core.catalog.domain.Sku)

Aggregations

Sku (org.broadleafcommerce.core.catalog.domain.Sku)80 Product (org.broadleafcommerce.core.catalog.domain.Product)34 ArrayList (java.util.ArrayList)27 SkuImpl (org.broadleafcommerce.core.catalog.domain.SkuImpl)22 DiscreteOrderItem (org.broadleafcommerce.core.order.domain.DiscreteOrderItem)18 Money (org.broadleafcommerce.common.money.Money)16 ProductImpl (org.broadleafcommerce.core.catalog.domain.ProductImpl)16 Order (org.broadleafcommerce.core.order.domain.Order)15 Category (org.broadleafcommerce.core.catalog.domain.Category)13 FulfillmentGroupItem (org.broadleafcommerce.core.order.domain.FulfillmentGroupItem)12 Test (org.testng.annotations.Test)12 DiscreteOrderItemImpl (org.broadleafcommerce.core.order.domain.DiscreteOrderItemImpl)10 OrderItem (org.broadleafcommerce.core.order.domain.OrderItem)10 Transactional (org.springframework.transaction.annotation.Transactional)10 ProductBundle (org.broadleafcommerce.core.catalog.domain.ProductBundle)9 BundleOrderItem (org.broadleafcommerce.core.order.domain.BundleOrderItem)9 HashMap (java.util.HashMap)8 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)8 FulfillmentGroup (org.broadleafcommerce.core.order.domain.FulfillmentGroup)8 Entity (org.broadleafcommerce.openadmin.dto.Entity)8