001 /** 002 * Copyright 2005-2013 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package edu.sampleu.bookstore.document.web; 017 018 import edu.sampleu.bookstore.bo.Book; 019 import edu.sampleu.bookstore.bo.BookOrder; 020 import edu.sampleu.bookstore.document.BookOrderDocument; 021 import org.apache.struts.action.ActionForm; 022 import org.apache.struts.action.ActionForward; 023 import org.apache.struts.action.ActionMapping; 024 import org.kuali.rice.core.api.util.type.KualiDecimal; 025 import org.kuali.rice.kns.service.KNSServiceLocator; 026 import org.kuali.rice.kns.web.struts.action.KualiTransactionalDocumentActionBase; 027 import org.kuali.rice.kns.web.struts.form.KualiForm; 028 import org.kuali.rice.krad.service.KRADServiceLocator; 029 030 import javax.servlet.http.HttpServletRequest; 031 import javax.servlet.http.HttpServletResponse; 032 033 /* 034 * BookOrderAction class file for BookOrder maintenance Object 035 * Actions prior to submit and post-Submit processes are handled. 036 */ 037 038 public class BookOrderAction extends KualiTransactionalDocumentActionBase { 039 040 public ActionForward addBookOrder(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { 041 BookOrderForm form = (BookOrderForm) actionForm; 042 BookOrderDocument document = form.getBookOrderDocument(); 043 044 BookOrder newBookEntry = form.getNewBookOrder(); 045 document.addBookOrder(newBookEntry); 046 047 for (BookOrder entry : document.getBookOrders()) { 048 if (entry.getBookId() != null) { 049 Book book = KNSServiceLocator.getBusinessObjectService().findBySinglePrimaryKey(Book.class, entry.getBookId()); 050 051 entry.setUnitPrice(book.getPrice()); 052 Double totalPrice = 0.0d; 053 if (book.getPrice() != null && entry.getQuantity() != null) { 054 totalPrice = book.getPrice().doubleValue() * entry.getQuantity().intValue(); 055 if (entry.getDiscount() != null && entry.getDiscount().doubleValue() > 0) { 056 totalPrice = totalPrice - (totalPrice * entry.getDiscount().doubleValue() / 100); 057 } 058 } 059 entry.setTotalPrice(new KualiDecimal(totalPrice)); 060 } 061 } 062 063 // clear the used book order entry 064 form.setNewBookOrder(new BookOrder()); 065 066 return mapping.findForward("basic"); 067 } 068 069 public ActionForward deleteBookOrder(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { 070 BookOrderForm form = (BookOrderForm) actionForm; 071 BookOrderDocument document = form.getBookOrderDocument(); 072 073 int deleteIndex = getLineToDelete(request); 074 document.removeBookOrder(deleteIndex); 075 076 return mapping.findForward("basic"); 077 } 078 079 @Override 080 protected void doProcessingAfterPost(KualiForm actionForm, HttpServletRequest request) { 081 super.doProcessingAfterPost(actionForm, request); 082 BookOrderForm form = (BookOrderForm) actionForm; 083 BookOrderDocument document = form.getBookOrderDocument(); 084 for (BookOrder entry : document.getBookOrders()) { 085 if(entry.getBookId() != null){ 086 Book book = KNSServiceLocator.getBusinessObjectService().findBySinglePrimaryKey(Book.class, entry.getBookId()); 087 entry.setUnitPrice(book.getPrice()); 088 Double totalPrice = 0.0d; 089 if (book.getPrice() != null && entry.getQuantity() != null) { 090 totalPrice = book.getPrice().doubleValue() * entry.getQuantity().intValue(); 091 if (entry.getDiscount() != null && entry.getDiscount().doubleValue() > 0) { 092 totalPrice = totalPrice - (totalPrice * entry.getDiscount().doubleValue() / 100); 093 } 094 } 095 entry.setTotalPrice(new KualiDecimal(totalPrice)); 096 entry.setBook(book); 097 } 098 } 099 } 100 101 102 103 104 105 }