use of org.broadleafcommerce.profile.core.domain.Address in project BroadleafCommerce by BroadleafCommerce.
the class PricingTest method testPricing.
@Test(groups = { "testPricing" }, dependsOnGroups = { "testShippingInsert", "createCustomerIdGeneration" })
@Transactional
public void testPricing() throws Exception {
Order order = orderService.createNewCartForCustomer(createCustomer());
customerService.saveCustomer(order.getCustomer());
Country country = new CountryImpl();
country.setAbbreviation("US");
country.setName("United States");
country = countryService.save(country);
ISOCountry isoCountry = new ISOCountryImpl();
isoCountry.setAlpha2("US");
isoCountry.setName("UNITED STATES");
isoCountry = isoService.save(isoCountry);
State state = new StateImpl();
state.setAbbreviation("TX");
state.setName("Texas");
state.setCountry(country);
state = stateService.save(state);
Address address = new AddressImpl();
address.setAddressLine1("123 Test Rd");
address.setCity("Dallas");
address.setFirstName("Jeff");
address.setLastName("Fischer");
address.setPostalCode("75240");
address.setPrimaryPhone("972-978-9067");
address.setState(state);
address.setCountry(country);
address.setIsoCountrySubdivision("US-TX");
address.setIsoCountryAlpha2(isoCountry);
FulfillmentGroup group = new FulfillmentGroupImpl();
group.setAddress(address);
List<FulfillmentGroup> groups = new ArrayList<>();
group.setMethod("standard");
group.setService(ShippingServiceType.BANDED_SHIPPING.getType());
group.setOrder(order);
groups.add(group);
order.setFulfillmentGroups(groups);
Money total = new Money(8.5D);
group.setShippingPrice(total);
{
DiscreteOrderItem item = new DiscreteOrderItemImpl();
Sku sku = new SkuImpl();
sku.setName("Test Sku");
sku.setRetailPrice(new Money(10D));
sku.setDiscountable(true);
SkuFee fee = new SkuFeeImpl();
fee.setFeeType(SkuFeeType.FULFILLMENT);
fee.setName("fee test");
fee.setAmount(new Money(10D));
fee = catalogService.saveSkuFee(fee);
List<SkuFee> fees = new ArrayList<>();
fees.add(fee);
sku.setFees(fees);
sku = catalogService.saveSku(sku);
item.setSku(sku);
item.setQuantity(2);
item.setOrder(order);
item = (DiscreteOrderItem) orderItemService.saveOrderItem(item);
order.addOrderItem(item);
FulfillmentGroupItem fgItem = new FulfillmentGroupItemImpl();
fgItem.setFulfillmentGroup(group);
fgItem.setOrderItem(item);
fgItem.setQuantity(2);
// fgItem.setPrice(new Money(0D));
group.addFulfillmentGroupItem(fgItem);
}
{
DiscreteOrderItem item = new DiscreteOrderItemImpl();
Sku sku = new SkuImpl();
sku.setName("Test Product 2");
sku.setRetailPrice(new Money(20D));
sku.setDiscountable(true);
sku = catalogService.saveSku(sku);
item.setSku(sku);
item.setQuantity(1);
item.setOrder(order);
item = (DiscreteOrderItem) orderItemService.saveOrderItem(item);
order.addOrderItem(item);
FulfillmentGroupItem fgItem = new FulfillmentGroupItemImpl();
fgItem.setFulfillmentGroup(group);
fgItem.setOrderItem(item);
fgItem.setQuantity(1);
// fgItem.setPrice(new Money(0D));
group.addFulfillmentGroupItem(fgItem);
}
order.addOfferCode(createOfferCode("20 Percent Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.PERCENT_OFF, 20, null, "discreteOrderItem.sku.name==\"Test Sku\""));
order.addOfferCode(createOfferCode("3 Dollars Off Item Offer", OfferType.ORDER_ITEM, OfferDiscountType.AMOUNT_OFF, 3, null, "discreteOrderItem.sku.name!=\"Test Sku\""));
order.addOfferCode(createOfferCode("1.20 Dollars Off Order Offer", OfferType.ORDER, OfferDiscountType.AMOUNT_OFF, 1.20, null, null));
order.setTotalShipping(new Money(0D));
orderService.save(order, true);
assert order.getSubTotal().subtract(order.getOrderAdjustmentsValue()).equals(new Money(31.80D));
assert (order.getTotal().greaterThan(order.getSubTotal()));
// Shipping is not taxable
assert (order.getTotalTax().equals(order.getSubTotal().subtract(order.getOrderAdjustmentsValue()).multiply(0.05D)));
// determine the total cost of the fulfillment group fees
Money fulfillmentGroupFeeTotal = getFulfillmentGroupFeeTotal(order);
assert (order.getTotal().equals(order.getSubTotal().add(order.getTotalTax()).add(order.getTotalShipping()).add(fulfillmentGroupFeeTotal).subtract(order.getOrderAdjustmentsValue())));
}
use of org.broadleafcommerce.profile.core.domain.Address in project BroadleafCommerce by BroadleafCommerce.
the class PricingTest method testShipping.
@Test(groups = { "testShipping" }, dependsOnGroups = { "testShippingInsert", "createCustomerIdGeneration" })
@Transactional
public void testShipping() throws Exception {
Order order = orderService.createNewCartForCustomer(createCustomer());
customerService.saveCustomer(order.getCustomer());
FulfillmentGroup group1 = new FulfillmentGroupImpl();
FulfillmentGroup group2 = new FulfillmentGroupImpl();
// setup group1 - standard
group1.setMethod("standard");
group1.setService(ShippingServiceType.BANDED_SHIPPING.getType());
Country country = new CountryImpl();
country.setAbbreviation("US");
country.setName("United States");
country = countryService.save(country);
ISOCountry isoCountry = new ISOCountryImpl();
isoCountry.setAlpha2("US");
isoCountry.setName("UNITED STATES");
isoCountry = isoService.save(isoCountry);
State state = new StateImpl();
state.setAbbreviation("TX");
state.setName("Texas");
state.setCountry(country);
state = stateService.save(state);
Address address = new AddressImpl();
address.setAddressLine1("123 Test Rd");
address.setCity("Dallas");
address.setFirstName("Jeff");
address.setLastName("Fischer");
address.setPostalCode("75240");
address.setPrimaryPhone("972-978-9067");
address.setState(state);
address.setCountry(country);
address.setIsoCountrySubdivision("US-TX");
address.setIsoCountryAlpha2(isoCountry);
group1.setAddress(address);
group1.setOrder(order);
// setup group2 - truck
group2.setMethod("truck");
group2.setService(ShippingServiceType.BANDED_SHIPPING.getType());
group2.setOrder(order);
List<FulfillmentGroup> groups = new ArrayList<>();
groups.add(group1);
// groups.add(group2);
order.setFulfillmentGroups(groups);
Money total = new Money(8.5D);
group1.setShippingPrice(total);
group2.setShippingPrice(total);
// group1.setTotalTax(new Money(1D));
// group2.setTotalTax(new Money(1D));
order.setSubTotal(total);
order.setTotal(total);
DiscreteOrderItem item = new DiscreteOrderItemImpl();
Sku sku = new SkuImpl();
sku.setRetailPrice(new Money(15D));
sku.setDiscountable(true);
sku.setName("Test Sku");
sku = catalogService.saveSku(sku);
item.setSku(sku);
item.setQuantity(1);
item.setOrder(order);
item = (DiscreteOrderItem) orderItemService.saveOrderItem(item);
List<OrderItem> items = new ArrayList<>();
items.add(item);
order.setOrderItems(items);
for (OrderItem orderItem : items) {
FulfillmentGroupItem fgi = new FulfillmentGroupItemImpl();
fgi.setOrderItem(orderItem);
fgi.setQuantity(orderItem.getQuantity());
fgi.setFulfillmentGroup(group1);
// fgi.setRetailPrice(new Money(15D));
group1.addFulfillmentGroupItem(fgi);
}
order.setTotalShipping(new Money(0D));
orderService.save(order, true);
assert (order.getTotal().greaterThan(order.getSubTotal()));
// Shipping price is not taxable
assert (order.getTotalTax().equals(order.getSubTotal().multiply(0.05D)));
assert (order.getTotal().equals(order.getSubTotal().add(order.getTotalTax().add(order.getTotalShipping()))));
}
use of org.broadleafcommerce.profile.core.domain.Address in project BroadleafCommerce by BroadleafCommerce.
the class AddressDataProvider method createAddress.
@DataProvider(name = "setupAddress")
public static Object[][] createAddress() {
Address address1 = new AddressImpl();
address1.setAddressLine1("1234 Merit Drive");
address1.setCity("Dallas");
State state = new StateImpl();
state.setAbbreviation("TX");
address1.setState(state);
address1.setPostalCode("75251");
Address address2 = new AddressImpl();
address2.setAddressLine1("12 Testing Drive");
address2.setCity("San Jose");
state = new StateImpl();
state.setAbbreviation("CA");
address2.setState(state);
address2.setPostalCode("75251");
return new Object[][] { new Object[] { address1 }, new Object[] { address2 } };
}
use of org.broadleafcommerce.profile.core.domain.Address in project BroadleafCommerce by BroadleafCommerce.
the class OfferServiceTest method createTestOrderWithOfferAndGiftWrap.
private Order createTestOrderWithOfferAndGiftWrap() throws PricingException {
Customer customer = customerService.createCustomerFromId(null);
Order order = orderService.createNewCartForCustomer(customer);
customerService.saveCustomer(order.getCustomer());
createCountry();
createState();
Address address = new AddressImpl();
address.setAddressLine1("123 Test Rd");
address.setCity("Dallas");
address.setFirstName("Jeff");
address.setLastName("Fischer");
address.setPostalCode("75240");
address.setPrimaryPhone("972-978-9067");
address.setState(stateService.findStateByAbbreviation("KY"));
address.setCountry(countryService.findCountryByAbbreviation("US"));
address.setIsoCountrySubdivision("US-KY");
address.setIsoCountryAlpha2(isoService.findISOCountryByAlpha2Code("US"));
FulfillmentGroup group = new FulfillmentGroupImpl();
group.setAddress(address);
group.setIsShippingPriceTaxable(true);
List<FulfillmentGroup> groups = new ArrayList<FulfillmentGroup>();
FixedPriceFulfillmentOption option = new FixedPriceFulfillmentOptionImpl();
option.setPrice(new Money("8.50"));
option.setFulfillmentType(FulfillmentType.PHYSICAL_SHIP);
group.setFulfillmentOption(option);
group.setFulfillmentOption(option);
group.setOrder(order);
groups.add(group);
order.setFulfillmentGroups(groups);
Money total = new Money(5D);
group.setRetailShippingPrice(total);
group.setShippingPrice(total);
DiscreteOrderItem item1;
{
item1 = new DiscreteOrderItemImpl();
Sku sku = new SkuImpl();
sku.setName("Test Sku");
sku.setRetailPrice(new Money(10D));
sku.setDiscountable(true);
sku = catalogService.saveSku(sku);
item1.setSku(sku);
item1.setQuantity(2);
item1.setOrder(order);
item1.setOrderItemType(OrderItemType.DISCRETE);
item1 = (DiscreteOrderItem) orderItemService.saveOrderItem(item1);
order.addOrderItem(item1);
FulfillmentGroupItem fgItem = new FulfillmentGroupItemImpl();
fgItem.setFulfillmentGroup(group);
fgItem.setOrderItem(item1);
fgItem.setQuantity(2);
// fgItem.setPrice(new Money(0D));
group.addFulfillmentGroupItem(fgItem);
}
{
DiscreteOrderItem item = new DiscreteOrderItemImpl();
Sku sku = new SkuImpl();
sku.setName("Test Product 2");
sku.setRetailPrice(new Money(20D));
sku.setDiscountable(true);
sku = catalogService.saveSku(sku);
item.setSku(sku);
item.setQuantity(1);
item.setOrder(order);
item.setOrderItemType(OrderItemType.DISCRETE);
item = (DiscreteOrderItem) orderItemService.saveOrderItem(item);
order.addOrderItem(item);
FulfillmentGroupItem fgItem = new FulfillmentGroupItemImpl();
fgItem.setFulfillmentGroup(group);
fgItem.setOrderItem(item);
fgItem.setQuantity(1);
// fgItem.setPrice(new Money(0D));
group.addFulfillmentGroupItem(fgItem);
}
{
GiftWrapOrderItem item = new GiftWrapOrderItemImpl();
Sku sku = new SkuImpl();
sku.setName("Test GiftWrap");
sku.setRetailPrice(new Money(1D));
sku.setDiscountable(true);
sku = catalogService.saveSku(sku);
item.setSku(sku);
item.setQuantity(1);
item.setOrder(order);
item.getWrappedItems().add(item1);
item.setOrderItemType(OrderItemType.GIFTWRAP);
item = (GiftWrapOrderItem) orderItemService.saveOrderItem(item);
order.addOrderItem(item);
FulfillmentGroupItem fgItem = new FulfillmentGroupItemImpl();
fgItem.setFulfillmentGroup(group);
fgItem.setOrderItem(item);
fgItem.setQuantity(1);
// fgItem.setPrice(new Money(0D));
group.addFulfillmentGroupItem(fgItem);
}
return order;
}
use of org.broadleafcommerce.profile.core.domain.Address in project BroadleafCommerce by BroadleafCommerce.
the class OfferDataItemProvider method createOrderWithBundle.
/**
* Create order with a bundle with two items. Bundle has a quantity of 2.
* Bundle item 1 has quantity of 2, bundle item 2 has quantity of 3
* @return
*/
public Order createOrderWithBundle() {
Order order = new OrderImpl();
order.setId(getOrderId());
Category category1 = new CategoryImpl();
category1.setName("test1");
category1.setId(1L);
Product product1 = new ProductImpl();
Sku sku1 = new SkuImpl();
sku1.setName("test1");
sku1.setId(1L);
sku1.setDiscountable(true);
sku1.setRetailPrice(new Money(10D));
product1.setDefaultSku(sku1);
CategoryProductXref xref1 = new CategoryProductXrefImpl();
xref1.setProduct(product1);
xref1.setCategory(category1);
category1.getAllProductXrefs().add(xref1);
Category category2 = new CategoryImpl();
category2.setName("test2");
category2.setId(2L);
Product product2 = new ProductImpl();
Sku sku2 = new SkuImpl();
sku2.setName("test2");
sku2.setId(2L);
sku2.setDiscountable(true);
sku2.setRetailPrice(new Money(10D));
product2.setDefaultSku(sku2);
CategoryProductXref xref2 = new CategoryProductXrefImpl();
xref2.setProduct(product2);
xref2.setCategory(category2);
category2.getAllProductXrefs().add(xref2);
ProductBundle pb = new ProductBundleImpl();
pb.setPricingModel(ProductBundlePricingModelType.ITEM_SUM);
BundleOrderItem bundleOrderItem = new BundleOrderItemImpl();
bundleOrderItem.setCategory(category1);
bundleOrderItem.setName("test1");
bundleOrderItem.setOrder(order);
bundleOrderItem.setOrderItemType(OrderItemType.DISCRETE);
bundleOrderItem.setQuantity(2);
bundleOrderItem.setId(getOrderItemId());
bundleOrderItem.setOrder(order);
bundleOrderItem.setRetailPrice(new Money(10D));
bundleOrderItem.setProductBundle(pb);
OrderItemPriceDetail priceDetail = new OrderItemPriceDetailImpl();
priceDetail.setOrderItem(bundleOrderItem);
priceDetail.setQuantity(2);
bundleOrderItem.getOrderItemPriceDetails().add(priceDetail);
order.getOrderItems().add(bundleOrderItem);
DiscreteOrderItem orderItem1 = new DiscreteOrderItemImpl();
orderItem1.setCategory(category1);
orderItem1.setName("test1");
orderItem1.setOrder(order);
orderItem1.setOrderItemType(OrderItemType.DISCRETE);
orderItem1.setProduct(product1);
orderItem1.setQuantity(2);
orderItem1.setSku(sku1);
orderItem1.setId(getOrderItemId());
orderItem1.setOrder(order);
OrderItemPriceDetail priceDetail1 = new OrderItemPriceDetailImpl();
priceDetail1.setOrderItem(orderItem1);
priceDetail1.setQuantity(2);
orderItem1.getOrderItemPriceDetails().add(priceDetail1);
bundleOrderItem.getDiscreteOrderItems().add(orderItem1);
DiscreteOrderItem orderItem2 = new DiscreteOrderItemImpl();
orderItem2.setCategory(category2);
orderItem2.setName("test2");
orderItem2.setOrder(order);
orderItem2.setOrderItemType(OrderItemType.DISCRETE);
orderItem2.setProduct(product2);
orderItem2.setQuantity(3);
orderItem2.setSku(sku2);
orderItem2.setId(getOrderItemId());
orderItem2.setOrder(order);
OrderItemPriceDetail priceDetail2 = new OrderItemPriceDetailImpl();
priceDetail2.setOrderItem(orderItem2);
priceDetail2.setQuantity(3);
orderItem2.getOrderItemPriceDetails().add(priceDetail2);
bundleOrderItem.getDiscreteOrderItems().add(orderItem2);
Customer customer = new CustomerImpl();
customer.setEmailAddress("test@test.com");
customer.setFirstName("John");
customer.setLastName("Tester");
customer.setReceiveEmail(true);
customer.setRegistered(true);
order.setCustomer(customer);
order.setEmailAddress("test@test.com");
FulfillmentGroup fg1 = new FulfillmentGroupImpl();
fg1.setId(1L);
Address address1 = new AddressImpl();
address1.setAddressLine1("123 Test Road");
address1.setCity("Dallas");
Country country = new CountryImpl();
country.setAbbreviation("US");
country.setName("United States");
ISOCountry isoCountry = new ISOCountryImpl();
isoCountry.setAlpha2("US");
isoCountry.setName("UNITED STATES");
address1.setCountry(country);
address1.setIsoCountryAlpha2(isoCountry);
address1.setDefault(true);
address1.setFirstName("John");
address1.setLastName("Tester");
address1.setPostalCode("75244");
Phone primary = new PhoneImpl();
primary.setPhoneNumber("972-976-1234");
address1.setPhonePrimary(primary);
State state = new StateImpl();
state.setAbbreviation("TX");
state.setCountry(country);
state.setName("Texas");
address1.setState(state);
address1.setIsoCountrySubdivision("US-TX");
fg1.setAddress(address1);
fg1.setOrder(order);
fg1.setPrimary(true);
fg1.setRetailShippingPrice(new Money(10D));
fg1.setShippingPrice(new Money(10D));
fg1.setType(FulfillmentType.PHYSICAL_SHIP);
fg1.setOrder(order);
FulfillmentGroupItem fgItem1 = new FulfillmentGroupItemImpl();
fgItem1.setFulfillmentGroup(fg1);
fgItem1.setOrderItem(orderItem1);
fgItem1.setQuantity(2);
// fgItem1.setRetailPrice(new Money(19.99D));
fg1.getFulfillmentGroupItems().add(fgItem1);
order.getFulfillmentGroups().add(fg1);
FulfillmentGroup fg2 = new FulfillmentGroupImpl();
fg2.setId(2L);
Address address2 = new AddressImpl();
address2.setAddressLine1("124 Test Road");
address2.setCity("Dallas");
Country country2 = new CountryImpl();
country2.setAbbreviation("US");
country2.setName("United States");
ISOCountry isoCountry2 = new ISOCountryImpl();
isoCountry2.setAlpha2("US");
isoCountry2.setName("UNITED STATES");
address2.setCountry(country2);
address2.setIsoCountryAlpha2(isoCountry2);
address2.setDefault(true);
address2.setFirstName("John");
address2.setLastName("Tester");
address2.setPostalCode("75244");
Phone primary2 = new PhoneImpl();
primary2.setPhoneNumber("972-976-1234");
address2.setPhonePrimary(primary2);
State state2 = new StateImpl();
state2.setAbbreviation("TX");
state2.setCountry(country2);
state2.setName("Texas");
address2.setState(state2);
address2.setIsoCountrySubdivision("US-TX");
fg2.setAddress(address2);
fg2.setOrder(order);
fg2.setPrimary(true);
fg2.setRetailShippingPrice(new Money(20D));
fg2.setShippingPrice(new Money(20D));
fg2.setType(FulfillmentType.PHYSICAL_SHIP);
fg2.setOrder(order);
FulfillmentGroupItem fgItem2 = new FulfillmentGroupItemImpl();
fgItem2.setFulfillmentGroup(fg2);
fgItem2.setOrderItem(orderItem2);
fgItem2.setQuantity(3);
// fgItem2.setRetailPrice(new Money(29.99D));
fg2.getFulfillmentGroupItems().add(fgItem2);
order.getFulfillmentGroups().add(fg2);
order.setSubTotal(new Money((2 * 19.99D) + (3 * 29.99D)));
orders.put(order.getId(), order);
return order;
}
Aggregations