package com.salesmanager.core.business.services.order; import java.io.ByteArrayOutputStream; import java.util.List; import com.salesmanager.core.business.exception.ServiceException; import com.salesmanager.core.business.services.common.generic.SalesManagerEntityService; import com.salesmanager.core.model.customer.Customer; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.core.model.order.Order; import com.salesmanager.core.model.order.OrderCriteria; import com.salesmanager.core.model.order.OrderList; import com.salesmanager.core.model.order.OrderSummary; import com.salesmanager.core.model.order.OrderTotalSummary; import com.salesmanager.core.model.order.orderstatus.OrderStatusHistory; import com.salesmanager.core.model.payments.Payment; import com.salesmanager.core.model.payments.Transaction; import com.salesmanager.core.model.reference.language.Language; import com.salesmanager.core.model.shoppingcart.ShoppingCart; import com.salesmanager.core.model.shoppingcart.ShoppingCartItem; public interface OrderService extends SalesManagerEntityService<Long, Order> { void addOrderStatusHistory(Order order, OrderStatusHistory history) throws ServiceException; /** * Can be used to calculates the final prices of all items contained in checkout page * @param orderSummary * @param customer * @param store * @param language * @return * @throws ServiceException */ OrderTotalSummary caculateOrderTotal(OrderSummary orderSummary, Customer customer, MerchantStore store, Language language) throws ServiceException; /** * Can be used to calculates the final prices of all items contained in a ShoppingCart * @param orderSummary * @param store * @param language * @return * @throws ServiceException */ OrderTotalSummary caculateOrderTotal(OrderSummary orderSummary, MerchantStore store, Language language) throws ServiceException; /** * Can be used to calculates the final prices of all items contained in checkout page * @param shoppingCart * @param customer * @param store * @param language * @return @return {@link OrderTotalSummary} * @throws ServiceException */ OrderTotalSummary calculateShoppingCartTotal(final ShoppingCart shoppingCart,final Customer customer, final MerchantStore store, final Language language) throws ServiceException; /** * Can be used to calculates the final prices of all items contained in a ShoppingCart * @param shoppingCart * @param store * @param language * @return {@link OrderTotalSummary} * @throws ServiceException */ OrderTotalSummary calculateShoppingCartTotal(final ShoppingCart shoppingCart,final MerchantStore store, final Language language) throws ServiceException; ByteArrayOutputStream generateInvoice(MerchantStore store, Order order, Language language) throws ServiceException; Order getOrder(Long id); //List<Order> listByStore(MerchantStore merchantStore); /** * For finding orders. Mainly used in the administration tool * @param store * @param criteria * @return */ OrderList listByStore(MerchantStore store, OrderCriteria criteria); void saveOrUpdate(Order order) throws ServiceException; Order processOrder(Order order, Customer customer, List<ShoppingCartItem> items, OrderTotalSummary summary, Payment payment, MerchantStore store) throws ServiceException; Order processOrder(Order order, Customer customer, List<ShoppingCartItem> items, OrderTotalSummary summary, Payment payment, Transaction transaction, MerchantStore store) throws ServiceException; /** * Determines if an Order has download files * @param order * @return * @throws ServiceException */ boolean hasDownloadFiles(Order order) throws ServiceException; }