rendered paste bodypackage vitalvinyl.inventory.action.order;import org.apache.log4j.Logger;import vitalvinyl.inventory.action.BaseAction;import vitalvinyl.model.order.*;import vitalvinyl.model.media.Media;import vitalvinyl.model.item.Item;import vitalvinyl.model.item.ItemDAOFactory;import vitalvinyl.model.gear.Gear;import vitalvinyl.model.promotion.TicketEvent;import vitalvinyl.model.person.Customer;import vitalvinyl.model.person.PersonDAOFactory;import vitalvinyl.model.usps.USPS;import vitalvinyl.model.usps.USPSRate;import vitalvinyl.model.shoppingcart.ShippingMethod;import vitalvinyl.model.ups.UPS;import vitalvinyl.model.ups.UPSRate;import vitalvinyl.Constants;import vitalvinyl.manager.customer.CustomerManager;import vitalvinyl.manager.customer.CustomerManagerFactory;import vitalvinyl.manager.order.OrderManager;import vitalvinyl.manager.order.OrderManagerFactory;import java.util.*;import webwork.action.ServletActionContext;/** * Created by IntelliJ IDEA. * User: mrblaq * Date: Apr 2, 2007 * Time: 7:37:43 PM * To change this template use File | Settings | File Templates. */public class ViewOrder extends BaseAction { private static final Logger logger = Logger.getLogger(ViewOrder.class); private long ID; private long purchaseItemID; public Order order = null; protected List mediaItems; protected List gearItems; protected List ticketItems; public String upsTrackingNumber; protected Enumeration parameterNames; public Customer customer; public String doDefault() { logger.debug("execute - start"); try { loadOrder(); } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); } finally { logger.debug("execute - end"); } return SUCCESS; } public void loadOrder() { try { // load up factory implementation OrderDAO dao = OrderDAOFactory.getDAO(); // set the load object order = dao.findOrderByID(ID); mediaItems = new ArrayList(); gearItems = new ArrayList(); ticketItems = new ArrayList(); // loop the item assigned to the order for (Iterator itr = order.getItems().iterator(); itr.hasNext();) { PurchaseItem purchaseItem = (PurchaseItem) itr.next(); Item inventoryItem = purchaseItem.getItem(); // put the item into the gear bucket if (inventoryItem instanceof Gear) { gearItems.add(purchaseItem); } // put the item into the media bucket if (inventoryItem instanceof Media) { mediaItems.add(purchaseItem); } // put the item into the media bucket if (inventoryItem instanceof TicketEvent) { ticketItems.add(purchaseItem); } } } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); } finally { logger.debug("execute - end"); } } public String doShipSelected() { try { loadOrder(); parameterNames = ServletActionContext.getRequest().getParameterNames(); double tempWeight = 0.0; // find each form variable that.. while (parameterNames.hasMoreElements()) { String parameterName = (String) parameterNames.nextElement(); //.. matches cartLineQuantity if (parameterName.matches("(itemCheckbox){1}\\d+")) { //get the int number of that cartLineQuantity's list ID String number = parameterName.substring(("itemCheckbox").length()); //get the quantity as entered in the UI form String checked = ServletActionContext.getRequest().getParameter("itemCheckbox" + number); for (Iterator itr = order.getItems().iterator(); itr.hasNext();) { PurchaseItem purchaseItem = (PurchaseItem) itr.next(); // if we've found the right shoppingCartLineItem, set it's shipping Type and quantity. if (purchaseItem.getID() == Integer.parseInt(number)) { if (purchaseItem.isInstore()) { purchaseItem.setOnlineStatus(Constants.ORDER_LINE_ITEM_STATUS_PICK_UP); } else { purchaseItem.setOnlineStatus(Constants.ORDER_LINE_ITEM_STATUS_SHIPPED); } tempWeight = tempWeight + purchaseItem.getItem().getWeight(); } } } } Shipment shipment = new Shipment(); shipment.setShippingAddress(order.getShippingAddress()); shipment.setShippingMethod(order.getShippingMethod()); shipment.setConception(new Date()); shipment.setResidential(1); shipment.setStatus(Constants.ORDER_SHIPMENT_STATUS_TO_BE_SHIPPED); shipment.setWeight(tempWeight); order.getShipments().add(shipment); order.setOnlineStatus(Constants.ORDER_ONLINE_STATUS_PROCESSING); OrderDAO dao = OrderDAOFactory.getDAO(); dao.update(order); } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); } finally { logger.debug("execute - end"); } return SUCCESS; } public String doCancelItem() { try { loadOrder(); for (Iterator itr = order.getItems().iterator(); itr.hasNext();) { PurchaseItem purchaseItem = (PurchaseItem) itr.next(); if (purchaseItem.getID() == purchaseItemID) { purchaseItem.setOnlineStatus(Constants.ORDER_LINE_ITEM_STATUS_CANCELLED); order.setOnlineStatus(Constants.ORDER_ONLINE_STATUS_PROCESSING); OrderDAOFactory.getDAO().update(order); refreshShippingPrice(); } } } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); } finally { logger.debug("execute - end"); } return SUCCESS; } public String doRestoreItem() { try { loadOrder(); for (Iterator itr = order.getItems().iterator(); itr.hasNext();) { PurchaseItem purchaseItem = (PurchaseItem) itr.next(); if (purchaseItem.getID() == purchaseItemID) { purchaseItem.setOnlineStatus(Constants.ORDER_LINE_ITEM_STATUS_NEW); order.setOnlineStatus(Constants.ORDER_ONLINE_STATUS_PROCESSING); OrderDAOFactory.getDAO().update(order); refreshShippingPrice(); } } } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); } finally { logger.debug("execute - end"); } return SUCCESS; } public String doRequestItem() { try { loadOrder(); loadCustomer(); for (Iterator itr = order.getItems().iterator(); itr.hasNext();) { PurchaseItem purchaseItem = (PurchaseItem) itr.next(); if (purchaseItem.getID() == purchaseItemID) { purchaseItem.setOnlineStatus(Constants.ORDER_LINE_ITEM_STATUS_REQUEST); customer.getSpecialRequests().add(purchaseItem.getItem()); PersonDAOFactory.getDAO().update(customer); order.setOnlineStatus(Constants.ORDER_ONLINE_STATUS_PROCESSING); OrderDAOFactory.getDAO().update(order); refreshShippingPrice(); } } } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); } finally { logger.debug("execute - end"); } return SUCCESS; } public String doCloseOrder() { try { loadOrder(); //look for any items that havn't been shipped or cancelled, if so, we need to error back and have the meployee deal with it first for (Iterator itr = order.getItems().iterator(); itr.hasNext();) { PurchaseItem purchaseItem = (PurchaseItem) itr.next(); if (purchaseItem.getOnlineStatus() == Constants.ORDER_LINE_ITEM_STATUS_NEW) { addErrorMessage("There are still items pending action"); return ERROR; } } //try to charge previous authorize, if fail, throw error and don't close. for (Iterator itr = order.getPayments().iterator(); itr.hasNext();) { Payment payment = (Payment) itr.next(); //only capture credit cards (duh) if (payment.getCreditAmount() > 0) { OrderManager manager = OrderManagerFactory.getManager(); //process card, if error, it's thrown to the catch. yay? manager.captureCreditCard(order, payment); } } //mark shipments as fully processed, set order status to processed, save order. for (Iterator itr = order.getShipments().iterator(); itr.hasNext();) { Shipment shipment = (Shipment) itr.next(); shipment.setStatus(Constants.ORDER_SHIPMENT_STATUS_SHIPPED); } //order is processed (closed) order.setOnlineStatus(Constants.ORDER_ONLINE_STATUS_PROCESSED); if (getHasErrors() || getHasErrorMessages()) { return ERROR; } OrderDAOFactory.getDAO().update(order); //a little inventory updating here... for (Iterator itr = order.getItems().iterator(); itr.hasNext();) { PurchaseItem purchaseItem = (PurchaseItem) itr.next(); Item item = purchaseItem.getItem(); item.setQuantity(item.getQuantity() - 1); ItemDAOFactory.getDAO().update(item); } } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); return ERROR; } finally { logger.debug("execute - end"); } return SUCCESS; } public void refreshShippingPrice() { try { loadOrder(); order.setEstimatedWeight(order.calculateWeight()); List tempList = new ArrayList(0); //TODO, these are returning nothing. tempList.addAll(getUpsShippingQuotes()); tempList.addAll(getUspsShippingQuotes()); boolean newQuoteAvailable = false; for (Iterator itr = tempList.iterator(); itr.hasNext();) { ShippingMethod shippingMethod = (ShippingMethod) itr.next(); if (shippingMethod.getShippingMethodTypeID() == order.getShippingMethod().getShippingMethodTypeID()) { order.setShippingMethod(shippingMethod); OrderDAOFactory.getDAO().update(order); newQuoteAvailable = true; } } if (!newQuoteAvailable) { addErrorMessage("No new shipping quote available"); } } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); } finally { logger.debug("setUsername - end"); } } protected void loadCustomer() { logger.debug("setUsername - end"); try { loadOrder(); CustomerManager customerManager = CustomerManagerFactory.getManager(); customer = customerManager.findCustomerByName(order.getCustomer().getUsername()); } catch (Exception e) { logger.warn(e.getMessage(), e); addErrorMessage(e.getMessage()); } finally { logger.debug("setUsername - end"); } } //Get any applicable UPS and USPS shipping methods, store them to a list and save to the shopping Cart public List getUspsShippingQuotes() { logger.debug("getUspsShippingQuotes - start"); List shippingQuotes = new ArrayList(0); List uspsShippingRates; boolean doAdd = false; try { if (order.getShippingAddress() != null) { String zipCode = order.getShippingAddress().getZipcode(); String country = order.getShippingAddress().getCountry().getName(); double weight = order.calculateWeight(); int pounds = (int) Math.floor(weight); int ounces = (int) Math.floor((weight - pounds) * 16); USPS usps = new USPS(); uspsShippingRates = usps.getUPSRatesV2("55403", zipCode, country, pounds, ounces, "1", "0", "0", "0", 0); for (Iterator itr = uspsShippingRates.iterator(); itr.hasNext();) { USPSRate uspsRate = (USPSRate) itr.next(); String tempService = ""; int tempShippingMethodID = 0; if (uspsRate.getName().equals("First-Class Mail")) { doAdd = true; tempService = getText("SVC_METHOD_USPS_FIRST_CLASS_MAIL"); tempShippingMethodID = Constants.SHIPPING_METHOD_USPS_FIRST_CLASS_MAIL; } else if (uspsRate.getName().equals("Parcel Post")) { doAdd = true; tempService = getText("SVC_METHOD_USPS_PARCEL_POST"); tempShippingMethodID = Constants.SHIPPING_METHOD_USPS_PARCEL_POST; } else if (uspsRate.getName().equals("Airmail Letter Post")) { doAdd = true; tempService = getText("SVC_METHOD_USPS_AIRMAIL_LETTER_POST"); tempShippingMethodID = Constants.SHIPPING_METHOD_USPS_AIRMAIL_LETTER_POST; } else if (uspsRate.getName().equals("Airmail Parcel Post")) { doAdd = true; tempService = getText("SVC_METHOD_USPS_AIRMAIL_PARCEL_POST"); tempShippingMethodID = Constants.SHIPPING_METHOD_USPS_AIRMAIL_PARCEL_POST; } if (doAdd) { ShippingMethod shippingMethod = new ShippingMethod(); shippingMethod.setName(tempService); shippingMethod.setCost(uspsRate.getPrice()); shippingMethod.setShippingMethodTypeID(tempShippingMethodID); shippingQuotes.add(shippingMethod); doAdd = false; } } } return shippingQuotes; } catch (Exception e) { logger.debug(e.getMessage(), e); } finally { logger.debug("getUspsShippingQuotes - end"); } return shippingQuotes; } //Get any applicable UPS and USPS shipping methods, store them to a list and save to the shopping Cart public List getUpsShippingQuotes() { logger.debug("getUpsShippingQuotes - start"); List shippingQuotes = new ArrayList(0); List upsShippingRates = new ArrayList(0); try { if (order.getShippingAddress() != null) { String zipCode = order.getShippingAddress().getZipcode(); String country = order.getShippingAddress().getCountry().getAbbreviation(); double weight = order.calculateWeight(); UPS ups = new UPS(); upsShippingRates = ups.getUPSRates("55403", zipCode, country, weight, "1", "0", "0", "0", 0); for (Iterator itr = upsShippingRates.iterator(); itr.hasNext();) { UPSRate upsRate = (UPSRate) itr.next(); String tempService = ""; int tempShippingMethodID = 0; if (upsRate.getServiceType() == Constants.SVC_METHOD_GROUND || upsRate.getServiceType() == Constants.SVC_METHOD_SECOND_DAY_AIR || upsRate.getServiceType() == Constants.SVC_METHOD_NEXT_DAY_AIR) { switch (upsRate.getServiceType()) { case Constants.SVC_METHOD_GROUND: tempService = getText("SVC_METHOD_GROUND"); tempShippingMethodID = Constants.SHIPPING_METHOD_UPS_GROUND; break; case Constants.SVC_METHOD_NEXT_DAY_AIR: tempService = getText("SVC_METHOD_NEXT_DAY_AIR"); tempShippingMethodID = Constants.SHIPPING_METHOD_UPS_NEXT_DAY_AIR; break; case Constants.SVC_METHOD_SECOND_DAY_AIR: tempService = getText("SVC_METHOD_SECOND_DAY_AIR"); tempShippingMethodID = Constants.SHIPPING_METHOD_UPS_SECOND_DAY_AIR; break; } ShippingMethod shippingMethod = new ShippingMethod(); shippingMethod.setName(tempService); shippingMethod.setEstimatedDeliveryDate(upsRate.getShipDays()); shippingMethod.setCost(upsRate.getPrice()); shippingMethod.setShippingMethodTypeID(tempShippingMethodID); shippingMethod.setUpsServiceID(upsRate.getServiceType()); shippingQuotes.add(shippingMethod); } } } return shippingQuotes; } catch (Exception e) { logger.debug(e.getMessage(), e); } finally { logger.debug("getUpsShippingQuotes - end"); } return shippingQuotes; } public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } public long getID() { return ID; } public void setID(long ID) { this.ID = ID; } public List getMediaItems() { if (mediaItems == null) { mediaItems = new ArrayList(0); } return mediaItems; } public void setMediaItems(List mediaItems) { this.mediaItems = mediaItems; } public List getGearItems() { if (gearItems == null) { gearItems = new ArrayList(0); } return gearItems; } public void setGearItems(List gearItems) { this.gearItems = gearItems; } public List getTicketItems() { if (ticketItems == null) { ticketItems = new ArrayList(0); } return ticketItems; } public void setTicketItems(List ticketItems) { this.ticketItems = ticketItems; } public String getUpsTrackingNumber() { return upsTrackingNumber; } public void setUpsTrackingNumber(String upsTrackingNumber) { this.upsTrackingNumber = upsTrackingNumber; } public long getPurchaseItemID() { return purchaseItemID; } public void setPurchaseItemID(long purchaseItemID) { this.purchaseItemID = purchaseItemID; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public Enumeration getParameterNames() { return parameterNames; } public void setParameterNames(Enumeration parameterNames) { this.parameterNames = parameterNames; }}