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;
}
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");
}
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");
}
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;
}
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);
}
Aggregations