use of com.salesmanager.core.model.order.orderproduct.OrderProduct in project shopizer by shopizer-ecommerce.
the class OrderTest method getMerchantOrders.
@Test
public void getMerchantOrders() throws ServiceException {
Currency currency = currencyService.getByCode(USD_CURRENCY_CODE);
Country country = countryService.getByCode("US");
Zone zone = zoneService.getByCode("VT");
Language en = languageService.getByCode("en");
MerchantStore merchant = merchantService.getByCode(MerchantStore.DEFAULT_STORE);
/**
* Create a customer *
*/
Customer customer = new Customer();
customer.setMerchantStore(merchant);
customer.setDefaultLanguage(en);
customer.setEmailAddress("email@email.com");
customer.setPassword("-1999");
customer.setNick("My New nick");
customer.setCompany(" Apple");
customer.setGender(CustomerGender.M);
customer.setDateOfBirth(new Date());
Billing billing = new Billing();
billing.setAddress("Billing address");
billing.setCity("Billing city");
billing.setCompany("Billing company");
billing.setCountry(country);
billing.setFirstName("Carl");
billing.setLastName("Samson");
billing.setPostalCode("Billing postal code");
billing.setState("Billing state");
billing.setZone(zone);
Delivery delivery = new Delivery();
delivery.setAddress("Shipping address");
delivery.setCountry(country);
delivery.setZone(zone);
customer.setBilling(billing);
customer.setDelivery(delivery);
customerService.create(customer);
// create a product with attributes
/**
* CATALOG CREATION *
*/
ProductType generalType = productTypeService.getProductType(ProductType.GENERAL_TYPE);
/**
* Create the category
*/
Category shirts = new Category();
shirts.setMerchantStore(merchant);
shirts.setCode("shirts");
CategoryDescription shirtsEnglishDescription = new CategoryDescription();
shirtsEnglishDescription.setName("Shirts");
shirtsEnglishDescription.setCategory(shirts);
shirtsEnglishDescription.setLanguage(en);
Set<CategoryDescription> descriptions = new HashSet<CategoryDescription>();
descriptions.add(shirtsEnglishDescription);
shirts.setDescriptions(descriptions);
categoryService.create(shirts);
/**
* Create a manufacturer
*/
Manufacturer addidas = new Manufacturer();
addidas.setMerchantStore(merchant);
addidas.setCode("addidas");
ManufacturerDescription addidasDesc = new ManufacturerDescription();
addidasDesc.setLanguage(en);
addidasDesc.setManufacturer(addidas);
addidasDesc.setName("Addidas");
addidas.getDescriptions().add(addidasDesc);
manufacturerService.create(addidas);
/**
* Create an option
*/
ProductOption option = new ProductOption();
option.setMerchantStore(merchant);
option.setCode("color");
option.setProductOptionType(ProductOptionType.Radio.name());
ProductOptionDescription optionDescription = new ProductOptionDescription();
optionDescription.setLanguage(en);
optionDescription.setName("Color");
optionDescription.setDescription("Item color");
optionDescription.setProductOption(option);
option.getDescriptions().add(optionDescription);
productOptionService.saveOrUpdate(option);
/**
* first option value *
*/
ProductOptionValue white = new ProductOptionValue();
white.setMerchantStore(merchant);
white.setCode("white");
ProductOptionValueDescription whiteDescription = new ProductOptionValueDescription();
whiteDescription.setLanguage(en);
whiteDescription.setName("White");
whiteDescription.setDescription("White color");
whiteDescription.setProductOptionValue(white);
white.getDescriptions().add(whiteDescription);
productOptionValueService.saveOrUpdate(white);
ProductOptionValue black = new ProductOptionValue();
black.setMerchantStore(merchant);
black.setCode("black");
/**
* second option value *
*/
ProductOptionValueDescription blackDesc = new ProductOptionValueDescription();
blackDesc.setLanguage(en);
blackDesc.setName("Black");
blackDesc.setDescription("Black color");
blackDesc.setProductOptionValue(black);
black.getDescriptions().add(blackDesc);
productOptionValueService.saveOrUpdate(black);
/**
* Create a complex product
*/
Product product = new Product();
product.setProductHeight(new BigDecimal(4));
product.setProductLength(new BigDecimal(3));
product.setProductWidth(new BigDecimal(1));
product.setSku("TB12345");
product.setManufacturer(addidas);
product.setType(generalType);
product.setMerchantStore(merchant);
// Product description
ProductDescription description = new ProductDescription();
description.setName("Short sleeves shirt");
description.setLanguage(en);
description.setProduct(product);
product.getDescriptions().add(description);
product.getCategories().add(shirts);
// availability
ProductAvailability availability = new ProductAvailability();
availability.setProductDateAvailable(new Date());
availability.setProductQuantity(100);
availability.setRegion("*");
// associate with product
availability.setProduct(product);
// price
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);
product.getAvailabilities().add(availability);
// attributes
// white
ProductAttribute whiteAttribute = new ProductAttribute();
whiteAttribute.setProduct(product);
whiteAttribute.setProductOption(option);
whiteAttribute.setAttributeDefault(true);
// no price variation
whiteAttribute.setProductAttributePrice(new BigDecimal(0));
// no weight variation
whiteAttribute.setProductAttributeWeight(new BigDecimal(0));
whiteAttribute.setProductOption(option);
whiteAttribute.setProductOptionValue(white);
product.getAttributes().add(whiteAttribute);
// black
ProductAttribute blackAttribute = new ProductAttribute();
blackAttribute.setProduct(product);
blackAttribute.setProductOption(option);
// 5 + dollars
blackAttribute.setProductAttributePrice(new BigDecimal(5));
// no weight variation
blackAttribute.setProductAttributeWeight(new BigDecimal(0));
blackAttribute.setProductOption(option);
blackAttribute.setProductOptionValue(black);
product.getAttributes().add(blackAttribute);
productService.create(product);
/**
* Create an order *
*/
Order order = new Order();
/**
* payment details *
*/
CreditCard creditCard = new CreditCard();
creditCard.setCardType(CreditCardType.VISA);
creditCard.setCcCvv("123");
creditCard.setCcExpires("12/30/2020");
creditCard.setCcNumber("123456789");
creditCard.setCcOwner("ccOwner");
order.setCreditCard(creditCard);
/**
* order core attributes *
*/
order.setDatePurchased(new Date());
order.setCurrency(currency);
order.setMerchant(merchant);
order.setLastModified(new Date());
// no price variation because of the currency
order.setCurrencyValue(new BigDecimal(1));
order.setCustomerId(1L);
order.setDelivery(delivery);
order.setIpAddress("ipAddress");
order.setMerchant(merchant);
order.setOrderDateFinished(new Date());
order.setPaymentType(PaymentType.CREDITCARD);
order.setPaymentModuleCode("payment Module Code");
order.setShippingModuleCode("UPS");
order.setStatus(OrderStatus.ORDERED);
order.setCustomerAgreement(true);
order.setConfirmedAddress(true);
order.setTotal(dprice.getProductPriceAmount());
order.setCustomerEmailAddress(customer.getEmailAddress());
order.setBilling(billing);
order.setDelivery(delivery);
/**
* ORDER PRODUCT *
*/
// OrderProduct
OrderProduct oproduct = new OrderProduct();
oproduct.setDownloads(null);
oproduct.setOneTimeCharge(dprice.getProductPriceAmount());
oproduct.setOrder(order);
oproduct.setProductName(description.getName());
oproduct.setProductQuantity(1);
oproduct.setSku(product.getSku());
// set order product price
OrderProductPrice orderProductPrice = new OrderProductPrice();
// default price (same as default product price)
orderProductPrice.setDefaultPrice(true);
orderProductPrice.setOrderProduct(oproduct);
orderProductPrice.setProductPrice(dprice.getProductPriceAmount());
orderProductPrice.setProductPriceCode(ProductPriceType.ONE_TIME.name());
oproduct.getPrices().add(orderProductPrice);
// order product attribute
OrderProductAttribute orderProductAttribute = new OrderProductAttribute();
orderProductAttribute.setOrderProduct(oproduct);
// no extra charge
orderProductAttribute.setProductAttributePrice(new BigDecimal("0.00"));
orderProductAttribute.setProductAttributeName(whiteDescription.getName());
orderProductAttribute.setProductOptionId(option.getId());
orderProductAttribute.setProductOptionValueId(white.getId());
oproduct.getOrderAttributes().add(orderProductAttribute);
order.getOrderProducts().add(oproduct);
/**
* ORDER TOTAL *
*/
OrderTotal subTotal = new OrderTotal();
subTotal.setOrder(order);
subTotal.setOrderTotalCode(Constants.OT_SUBTOTAL_MODULE_CODE);
subTotal.setSortOrder(0);
subTotal.setTitle("Sub Total");
subTotal.setValue(dprice.getProductPriceAmount());
order.getOrderTotal().add(subTotal);
OrderTotal total = new OrderTotal();
total.setOrder(order);
total.setOrderTotalCode(Constants.OT_TOTAL_MODULE_CODE);
total.setSortOrder(1);
total.setTitle("Total");
total.setValue(dprice.getProductPriceAmount());
order.getOrderTotal().add(total);
/**
* ORDER HISTORY *
*/
// create a log entry in order history
OrderStatusHistory history = new OrderStatusHistory();
history.setOrder(order);
history.setDateAdded(new Date());
history.setStatus(OrderStatus.ORDERED);
history.setComments("We received your order");
order.getOrderHistory().add(history);
/**
* CREATE ORDER *
*/
orderService.create(order);
/**
* SEARCH ORDERS *
*/
OrderCriteria criteria = new OrderCriteria();
criteria.setStartIndex(0);
criteria.setMaxCount(10);
OrderList ordserList = orderService.listByStore(merchant, criteria);
Assert.assertNotNull(ordserList);
Assert.assertNotNull("Merchant Orders are null.", ordserList.getOrders());
Assert.assertTrue("Merchant Orders count is not one.", (ordserList.getOrders() != null && ordserList.getOrders().size() == 1));
}
use of com.salesmanager.core.model.order.orderproduct.OrderProduct in project shopizer by shopizer-ecommerce.
the class EmailTemplatesUtils method sendOrderEmail.
/**
* Sends an email to the customer after a completed order
* @param customer
* @param order
* @param customerLocale
* @param language
* @param merchantStore
* @param contextPath
*/
@Async
public void sendOrderEmail(String toEmail, Customer customer, Order order, Locale customerLocale, Language language, MerchantStore merchantStore, String contextPath) {
/**
* issue with putting that elsewhere *
*/
LOGGER.info("Sending welcome email to customer");
try {
Map<String, Zone> zones = zoneService.getZones(language);
Map<String, Country> countries = countryService.getCountriesMap(language);
// format Billing address
StringBuilder billing = new StringBuilder();
if (StringUtils.isBlank(order.getBilling().getCompany())) {
billing.append(order.getBilling().getFirstName()).append(" ").append(order.getBilling().getLastName()).append(LINE_BREAK);
} else {
billing.append(order.getBilling().getCompany()).append(LINE_BREAK);
}
billing.append(order.getBilling().getAddress()).append(LINE_BREAK);
billing.append(order.getBilling().getCity()).append(", ");
if (order.getBilling().getZone() != null) {
Zone zone = zones.get(order.getBilling().getZone().getCode());
if (zone != null) {
billing.append(zone.getName());
}
billing.append(LINE_BREAK);
} else if (!StringUtils.isBlank(order.getBilling().getState())) {
billing.append(order.getBilling().getState()).append(LINE_BREAK);
}
Country country = countries.get(order.getBilling().getCountry().getIsoCode());
if (country != null) {
billing.append(country.getName()).append(" ");
}
billing.append(order.getBilling().getPostalCode());
// format shipping address
StringBuilder shipping = null;
if (order.getDelivery() != null && !StringUtils.isBlank(order.getDelivery().getFirstName())) {
shipping = new StringBuilder();
if (StringUtils.isBlank(order.getDelivery().getCompany())) {
shipping.append(order.getDelivery().getFirstName()).append(" ").append(order.getDelivery().getLastName()).append(LINE_BREAK);
} else {
shipping.append(order.getDelivery().getCompany()).append(LINE_BREAK);
}
shipping.append(order.getDelivery().getAddress()).append(LINE_BREAK);
shipping.append(order.getDelivery().getCity()).append(", ");
if (order.getDelivery().getZone() != null) {
Zone zone = zones.get(order.getDelivery().getZone().getCode());
if (zone != null) {
shipping.append(zone.getName());
}
shipping.append(LINE_BREAK);
} else if (!StringUtils.isBlank(order.getDelivery().getState())) {
shipping.append(order.getDelivery().getState()).append(LINE_BREAK);
}
Country deliveryCountry = countries.get(order.getDelivery().getCountry().getIsoCode());
if (country != null) {
shipping.append(deliveryCountry.getName()).append(" ");
}
shipping.append(order.getDelivery().getPostalCode());
}
if (shipping == null && StringUtils.isNotBlank(order.getShippingModuleCode())) {
// TODO IF HAS NO SHIPPING
shipping = billing;
}
// format order
// String storeUri = FilePathUtils.buildStoreUri(merchantStore, contextPath);
StringBuilder orderTable = new StringBuilder();
orderTable.append(TABLE);
for (OrderProduct product : order.getOrderProducts()) {
// Product productModel = productService.getByCode(product.getSku(), language);
orderTable.append(TR);
orderTable.append(TD).append(product.getProductName()).append(" - ").append(product.getSku()).append(CLOSING_TD);
orderTable.append(TD).append(messages.getMessage("label.quantity", customerLocale)).append(": ").append(product.getProductQuantity()).append(CLOSING_TD);
orderTable.append(TD).append(pricingService.getDisplayAmount(product.getOneTimeCharge(), merchantStore)).append(CLOSING_TD);
orderTable.append(CLOSING_TR);
}
// order totals
for (OrderTotal total : order.getOrderTotal()) {
orderTable.append(TR_BORDER);
// orderTable.append(TD);
// orderTable.append(CLOSING_TD);
orderTable.append(TD);
orderTable.append(CLOSING_TD);
orderTable.append(TD);
orderTable.append("<strong>");
if (total.getModule().equals("tax")) {
orderTable.append(total.getText()).append(": ");
} else {
// if(total.getModule().equals("total") || total.getModule().equals("subtotal")) {
// }
orderTable.append(messages.getMessage(total.getOrderTotalCode(), customerLocale)).append(": ");
// if(total.getModule().equals("total") || total.getModule().equals("subtotal")) {
// }
}
orderTable.append("</strong>");
orderTable.append(CLOSING_TD);
orderTable.append(TD);
orderTable.append("<strong>");
orderTable.append(pricingService.getDisplayAmount(total.getValue(), merchantStore));
orderTable.append("</strong>");
orderTable.append(CLOSING_TD);
orderTable.append(CLOSING_TR);
}
orderTable.append(CLOSING_TABLE);
Map<String, String> templateTokens = emailUtils.createEmailObjectsMap(contextPath, merchantStore, messages, customerLocale);
templateTokens.put(EmailConstants.LABEL_HI, messages.getMessage("label.generic.hi", customerLocale));
templateTokens.put(EmailConstants.EMAIL_CUSTOMER_FIRSTNAME, order.getBilling().getFirstName());
templateTokens.put(EmailConstants.EMAIL_CUSTOMER_LASTNAME, order.getBilling().getLastName());
String[] params = { String.valueOf(order.getId()) };
String[] dt = { DateUtil.formatDate(order.getDatePurchased()) };
templateTokens.put(EmailConstants.EMAIL_ORDER_NUMBER, messages.getMessage("email.order.confirmation", params, customerLocale));
templateTokens.put(EmailConstants.EMAIL_ORDER_DATE, messages.getMessage("email.order.ordered", dt, customerLocale));
templateTokens.put(EmailConstants.EMAIL_ORDER_THANKS, messages.getMessage("email.order.thanks", customerLocale));
templateTokens.put(EmailConstants.ADDRESS_BILLING, billing.toString());
templateTokens.put(EmailConstants.ORDER_PRODUCTS_DETAILS, orderTable.toString());
templateTokens.put(EmailConstants.EMAIL_ORDER_DETAILS_TITLE, messages.getMessage("label.order.details", customerLocale));
templateTokens.put(EmailConstants.ADDRESS_BILLING_TITLE, messages.getMessage("label.customer.billinginformation", customerLocale));
templateTokens.put(EmailConstants.PAYMENT_METHOD_TITLE, messages.getMessage("label.order.paymentmode", customerLocale));
templateTokens.put(EmailConstants.PAYMENT_METHOD_DETAILS, messages.getMessage(new StringBuilder().append("payment.type.").append(order.getPaymentType().name()).toString(), customerLocale, order.getPaymentType().name()));
if (StringUtils.isNotBlank(order.getShippingModuleCode())) {
// templateTokens.put(EmailConstants.SHIPPING_METHOD_DETAILS, messages.getMessage(new StringBuilder().append("module.shipping.").append(order.getShippingModuleCode()).toString(),customerLocale,order.getShippingModuleCode()));
templateTokens.put(EmailConstants.SHIPPING_METHOD_DETAILS, messages.getMessage(new StringBuilder().append("module.shipping.").append(order.getShippingModuleCode()).toString(), new String[] { merchantStore.getStorename() }, customerLocale));
templateTokens.put(EmailConstants.ADDRESS_SHIPPING_TITLE, messages.getMessage("label.order.shippingmethod", customerLocale));
templateTokens.put(EmailConstants.ADDRESS_DELIVERY_TITLE, messages.getMessage("label.customer.shippinginformation", customerLocale));
templateTokens.put(EmailConstants.SHIPPING_METHOD_TITLE, messages.getMessage("label.customer.shippinginformation", customerLocale));
templateTokens.put(EmailConstants.ADDRESS_DELIVERY, shipping.toString());
} else {
templateTokens.put(EmailConstants.SHIPPING_METHOD_DETAILS, "");
templateTokens.put(EmailConstants.ADDRESS_SHIPPING_TITLE, "");
templateTokens.put(EmailConstants.ADDRESS_DELIVERY_TITLE, "");
templateTokens.put(EmailConstants.SHIPPING_METHOD_TITLE, "");
templateTokens.put(EmailConstants.ADDRESS_DELIVERY, "");
}
String status = messages.getMessage("label.order." + order.getStatus().name(), customerLocale, order.getStatus().name());
String[] statusMessage = { DateUtil.formatDate(order.getDatePurchased()), status };
templateTokens.put(EmailConstants.ORDER_STATUS, messages.getMessage("email.order.status", statusMessage, customerLocale));
String[] title = { merchantStore.getStorename(), String.valueOf(order.getId()) };
Email email = new Email();
email.setFrom(merchantStore.getStorename());
email.setFromEmail(merchantStore.getStoreEmailAddress());
email.setSubject(messages.getMessage("email.order.title", title, customerLocale));
email.setTo(toEmail);
email.setTemplateName(EmailConstants.EMAIL_ORDER_TPL);
email.setTemplateTokens(templateTokens);
LOGGER.debug("Sending email to {} for order id {} ", customer.getEmailAddress(), order.getId());
emailService.sendHtmlEmail(merchantStore, email);
} catch (Exception e) {
LOGGER.error("Error occured while sending order confirmation email ", e);
}
}
use of com.salesmanager.core.model.order.orderproduct.OrderProduct 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;
}
Aggregations