001 package edu.sampleu.bookstore.document.web;
002
003 import javax.servlet.http.HttpServletRequest;
004 import javax.servlet.http.HttpServletResponse;
005
006 import org.apache.struts.action.ActionForm;
007 import org.apache.struts.action.ActionForward;
008 import org.apache.struts.action.ActionMapping;
009 import org.kuali.rice.kns.service.KNSServiceLocator;
010 import org.kuali.rice.core.util.type.KualiDecimal;
011 import org.kuali.rice.core.util.type.KualiPercent;
012 import org.kuali.rice.kns.web.struts.action.KualiTransactionalDocumentActionBase;
013 import org.kuali.rice.kns.web.struts.form.KualiForm;
014 import edu.sampleu.bookstore.bo.Book;
015 import edu.sampleu.bookstore.bo.BookOrder;
016 import edu.sampleu.bookstore.document.BookOrderDocument;
017
018 /*
019 * BookOrderAction class file for BookOrder maintenance Object
020 * Actions prior to submit and post-Submit processes are handled.
021 */
022
023 public class BookOrderAction extends KualiTransactionalDocumentActionBase {
024
025 public ActionForward addBookOrder(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception {
026 BookOrderForm form = (BookOrderForm) actionForm;
027 BookOrderDocument document = form.getBookOrderDocument();
028
029 BookOrder newBookEntry = form.getNewBookOrder();
030 document.addBookOrder(newBookEntry);
031
032 for (BookOrder entry : document.getBookOrders()) {
033 if (entry.getBookId() != null) {
034 Book book = KNSServiceLocator.getBusinessObjectService().findBySinglePrimaryKey(Book.class, entry.getBookId());
035
036 entry.setUnitPrice(book.getPrice());
037 Double totalPrice = 0.0d;
038 if (book.getPrice() != null && entry.getQuantity() != null) {
039 totalPrice = book.getPrice().doubleValue() * entry.getQuantity().intValue();
040 if (entry.getDiscount() != null && entry.getDiscount().doubleValue() > 0) {
041 totalPrice = totalPrice - (totalPrice * entry.getDiscount().doubleValue() / 100);
042 }
043 }
044 entry.setTotalPrice(new KualiDecimal(totalPrice));
045 }
046 }
047
048 // clear the used book order entry
049 form.setNewBookOrder(new BookOrder());
050
051 return mapping.findForward("basic");
052 }
053
054 public ActionForward deleteBookOrder(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception {
055 BookOrderForm form = (BookOrderForm) actionForm;
056 BookOrderDocument document = form.getBookOrderDocument();
057
058 int deleteIndex = getLineToDelete(request);
059 document.removeBookOrder(deleteIndex);
060
061 return mapping.findForward("basic");
062 }
063
064 @Override
065 protected void doProcessingAfterPost(KualiForm actionForm, HttpServletRequest request) {
066 super.doProcessingAfterPost(actionForm, request);
067 BookOrderForm form = (BookOrderForm) actionForm;
068 BookOrderDocument document = form.getBookOrderDocument();
069 for (BookOrder entry : document.getBookOrders()) {
070 if(entry.getBookId() != null){
071 Book book = KNSServiceLocator.getBusinessObjectService().findBySinglePrimaryKey(Book.class, entry.getBookId());
072 entry.setUnitPrice(book.getPrice());
073 Double totalPrice = 0.0d;
074 if (book.getPrice() != null && entry.getQuantity() != null) {
075 totalPrice = book.getPrice().doubleValue() * entry.getQuantity().intValue();
076 if (entry.getDiscount() != null && entry.getDiscount().doubleValue() > 0) {
077 totalPrice = totalPrice - (totalPrice * entry.getDiscount().doubleValue() / 100);
078 }
079 }
080 entry.setTotalPrice(new KualiDecimal(totalPrice));
081 entry.setBook(book);
082 }
083 }
084 }
085
086
087
088
089
090 }