/* * Provided by CSTI Consulting * Following GNU LESSER GENERAL PUBLIC LICENSE * You may obtain more details at * * http://www.csticonsulting.com * Copyright (c) 2006-2010 Consultation CS-TI inc. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package com.salesmanager.central.invoice; import java.math.BigDecimal; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.opensymphony.xwork2.Preparable; import com.salesmanager.central.AuthorizationException; import com.salesmanager.central.BaseAction; import com.salesmanager.central.profile.Context; import com.salesmanager.core.constants.ConfigurationConstants; import com.salesmanager.core.constants.OrderConstants; import com.salesmanager.core.entity.catalog.Product; import com.salesmanager.core.entity.customer.Customer; import com.salesmanager.core.entity.merchant.MerchantConfiguration; import com.salesmanager.core.entity.merchant.MerchantStore; import com.salesmanager.core.entity.orders.Order; import com.salesmanager.core.entity.orders.OrderProduct; import com.salesmanager.core.entity.orders.OrderStatusHistory; import com.salesmanager.core.entity.orders.OrderTotal; import com.salesmanager.core.entity.orders.OrderTotalSummary; import com.salesmanager.core.entity.payment.PaymentMethod; import com.salesmanager.core.entity.reference.CoreModuleService; import com.salesmanager.core.entity.shipping.Shipping; import com.salesmanager.core.entity.shipping.ShippingInformation; import com.salesmanager.core.service.ServiceFactory; import com.salesmanager.core.service.catalog.CatalogService; import com.salesmanager.core.service.customer.CustomerService; import com.salesmanager.core.service.merchant.ConfigurationRequest; import com.salesmanager.core.service.merchant.ConfigurationResponse; import com.salesmanager.core.service.merchant.MerchantService; import com.salesmanager.core.service.order.OrderService; import com.salesmanager.core.service.payment.PaymentService; import com.salesmanager.core.service.system.SystemService; import com.salesmanager.core.util.CurrencyUtil; import com.salesmanager.core.util.DateUtil; import com.salesmanager.core.util.FileUtil; import com.salesmanager.core.util.LabelUtil; import com.salesmanager.core.util.LocaleUtil; import com.salesmanager.core.util.MessageUtil; import com.salesmanager.core.util.PaymentUtil; import com.salesmanager.core.util.ProductUtil; import com.salesmanager.core.util.www.SessionUtil; public class InvoiceDetailsAction extends BaseAction implements Preparable { private Logger log = Logger.getLogger(InvoiceDetailsAction.class); private Order order = null; private Customer customer;// submited from the invoicedetails.jsp file private String comments;// submited from the jsp page private List<OrderStatusHistory> statusHistory; private List<Integer> ids = new ArrayList<Integer>();// shopping cart lines private Collection applicablePayments = new ArrayList(); private String paymentModule;// submited when doing a payment private String invoiceDate; private OrderTotalSummary summary; private Collection orderproducts; private Collection ordertotals; private Collection companyList = new ArrayList();// reference private Collection customerList = new ArrayList();// reference private String customerText;// existing invoice private String sdate;// existing invoice private String edate;// existing invoice private String shippingMethodId;// shipping method used private MerchantStore store = null; private String shippingTotal = null;// for analytics private String invoiceUrl = null; public String getShippingTotal() { return shippingTotal; } public void setShippingTotal(String shippingTotal) { this.shippingTotal = shippingTotal; } public MerchantStore getStore() { return store; } public void setStore(MerchantStore store) { this.store = store; } private List productList = new ArrayList();// for modal box private String formatCustomer(Customer customer) { StringBuffer customerTextBuffer = new StringBuffer(); if (!StringUtils.isBlank(customer.getCustomerCompany())) { customerTextBuffer.append("\r\n").append( customer.getCustomerCompany()); } customerTextBuffer.append("\r\n").append( customer.getCustomerFirstname()).append(" ").append( customer.getCustomerLastname()).append("\r\n").append( customer.getCustomerBillingStreetAddress()).append("\r\n") .append(customer.getCustomerBillingPostalCode()).append("\r\n") .append(customer.getCustomerBillingCity()).append("\r\n") .append(customer.getBillingState()).append("\r\n").append( customer.getBillingCountry()); return customerTextBuffer.toString(); } /** * Sends an invoice email to invoice Customer * * @return */ public String sendInvoiceEmail() { try { this.prepareInvoiceReferences(); MerchantService mservice = (MerchantService) ServiceFactory .getService(ServiceFactory.MerchantService); MerchantStore store = mservice.getMerchantStore(super.getContext() .getMerchantid()); OrderService oservice = (OrderService) ServiceFactory .getService(ServiceFactory.OrderService); order = oservice.getOrder(this.getOrder().getOrderId()); CustomerService cservice = (CustomerService) ServiceFactory .getService(ServiceFactory.CustomerService); Customer customer = cservice.getCustomer(order.getCustomerId()); oservice .sendEmailInvoice(store, order, customer, super.getLocale()); super.setMessage("message.order.invoice.emailsent"); } catch (Exception e) { super.setTechnicalMessage(); log.error(e); } return SUCCESS; } /** * Gather all invoice lines and persist to the appropriate order tables * * @return */ public String saveInvoice() { try { this.prepareInvoiceReferences(); // gather cart lines /** * <tr> * <td class="item"> * <input type="hidden" name ="cartlineid-+data.lineId+" * id="cartlineid- +data.lineId+ " value=" + data.lineId+ "> <input * type="hidden" * name="productid-"+data.lineId+" id="productid-" +data.lineId+ " * value=" + data.productId + "> <input type="hidden" name="ids[]" * value="+data.lineId+"> <input type="hidden" * name="productname-"+data * .lineId+" id="productname-" +data.lineId+ " * value=" + data.productName + "> <div * id="productText">" + data.productName + " </div> " + prop + "</td> * <td class="quantity">"; <div * id="qmessage-"+data.lineId+"\"></div> <input type="text" * name="quantity-" +data.lineId+ * " value="1" id="quantity-" +data.lineId+ " maxlength="3" />";</td> * <td class="price"><div * id="pmessage-"+data.lineId+"></div><input type=" * text" name="price-" +data.lineId+ " value=" + data.priceText + " * id="price-" +data.lineId+ " size="5" maxlength="5" /></td> * </tr> */ Context ctx = super.getContext(); // check that customer.customerId is there // order Order savedOrder = SessionUtil.getOrder(super.getServletRequest()); // check sdate edate savedOrder.setDatePurchased(DateUtil.getDate(sdate)); savedOrder.setOrderDateFinished(DateUtil.getDate(edate)); savedOrder.setOrderId(this.getOrder().getOrderId()); savedOrder.setDisplayInvoicePayments(this.getOrder().isDisplayInvoicePayments()); OrderService oservice = (OrderService) ServiceFactory .getService(ServiceFactory.OrderService); Customer customer = SessionUtil.getCustomer(super .getServletRequest()); customer.setLocale(super.getLocale()); this.setCustomerText(formatCustomer(customer)); // get latest shipping information ShippingInformation shippingInformation = SessionUtil .getShippingInformation(super.getServletRequest()); Shipping shipping = null; if (shippingInformation != null && shippingInformation.getShippingMethodId() != null) { shipping = new Shipping(); shipping.setHandlingCost(shippingInformation.getHandlingCost()); shipping.setShippingCost(shippingInformation.getShippingCost()); shipping.setShippingDescription(shippingInformation .getShippingMethod()); shipping.setShippingModule(shippingInformation .getShippingModule()); } int cartLines = 0; List ids = this.getIds(); List processProducts = new ArrayList(); Map products = SessionUtil.getOrderProducts(super .getServletRequest()); if (ids == null || ids.size()==0) { MessageUtil.addErrorMessage(super.getServletRequest(), LabelUtil.getInstance().getText(super.getLocale(), "error.cart.recalculate")); return ERROR; } Iterator idIterator = ids.iterator(); boolean hasError = false; OrderProduct op = null; while (idIterator.hasNext()) { Object o = idIterator.next(); int iKey = -1; try { iKey = (Integer) o; } catch (Exception ignore) { continue; } try { cartLines = cartLines + iKey; // now get the productid, quantity and price String sProductId = super.getServletRequest().getParameter( "productid-" + iKey); String sQuantity = super.getServletRequest().getParameter( "quantity-" + iKey); String sPrice = super.getServletRequest().getParameter( "price-" + iKey); // get orderproduct op = (OrderProduct) products.get(String.valueOf(iKey)); if (op == null) { // throw an exception MessageUtil.addErrorMessage(super.getServletRequest(), LabelUtil.getInstance().getText( super.getLocale(), "error.cart.recalculate")); return ERROR; } op.setPriceText(sPrice); op.setQuantityText(sQuantity); processProducts.add(op); // validate quantity and price long productId = Long.parseLong(sProductId); int quantity = 0; try { quantity = Integer.parseInt(sQuantity); } catch (Exception e) { // TODO: handle exception hasError = true; if (op != null) { op.setErrorMessage(LabelUtil.getInstance().getText( super.getLocale(), "errors.quantity.invalid")); } } BigDecimal price = new BigDecimal("0"); try { price = CurrencyUtil.validateCurrency(sPrice, ctx .getCurrency()); } catch (Exception e) { // TODO: handle exception hasError = true; if (op != null) { op.setPriceErrorMessage(LabelUtil.getInstance() .getText(super.getLocale(), "messages.price.invalid")); } } // set the submited data op.setProductQuantity(quantity); op.setProductPrice(price); op.setPriceFormated(CurrencyUtil .displayFormatedAmountWithCurrency(price, ctx .getCurrency())); double finalPrice = price.doubleValue(); BigDecimal bdFinalPrice = new BigDecimal(finalPrice); op.setCostText(CurrencyUtil .displayFormatedAmountWithCurrency(bdFinalPrice, ctx.getCurrency())); op.setPriceText(CurrencyUtil .displayFormatedAmountNoCurrency(price, ctx .getCurrency())); BigDecimal bdFinalPriceQty = bdFinalPrice.multiply(new BigDecimal(quantity)); //op.setFinalPrice(bdFinalPrice); op.setFinalPrice(bdFinalPriceQty); } catch (Exception e) { log.error(e); super.setTechnicalMessage(); hasError = true; } } summary = oservice.calculateTotal(savedOrder, processProducts, customer, shipping, ctx.getCurrency(), super.getLocale()); OrderProduct[] opArray = new OrderProduct[processProducts.size()]; OrderProduct[] objects = (OrderProduct[]) processProducts .toArray(opArray); summary.setOrderProducts(objects); MerchantService mservice = (MerchantService) ServiceFactory .getService(ServiceFactory.MerchantService); MerchantStore store = mservice .getMerchantStore(ctx.getMerchantid()); super.getServletRequest() .setAttribute("ORDERTOTALSUMMARY", summary); if (hasError) { return ERROR; } oservice.saveInvoice(ctx.getMerchantid(), savedOrder.getOrderId(), savedOrder.getDatePurchased(), savedOrder .getOrderDateFinished(), this.getComments(), savedOrder.isDisplayInvoicePayments(), processProducts, customer, shipping, store, super .getLocale()); // url LabelUtil lhelper = LabelUtil.getInstance(); lhelper.setLocale(super.getLocale()); StringBuffer url = new StringBuffer().append("<a href='").append( FileUtil.getInvoiceUrl(savedOrder, customer)).append( "&request_locale=").append(customer.getCustomerLang()).append("_") .append(super.getLocale().getCountry()).append("' target='_blank'>"); url.append( lhelper.getText(customer.getCustomerLang(), "label.email.invoice.viewinvoice")).append("</a>"); this.setInvoiceUrl(url.toString()); super.setSuccessMessage(); return SUCCESS; } catch (Exception e) { log.error(e); super.setTechnicalMessage(); return ERROR; } } public String selectProduct() { try { // nothing } catch (Exception e) { log.error(e); } return SUCCESS; } public String createInvoice() { try { // create an order SystemService sservice = (SystemService) ServiceFactory .getService(ServiceFactory.SystemService); long nextOrderId = sservice.getNextOrderIdSequence(); SessionUtil.resetCart(super.getServletRequest()); Order o = new Order(); o.setChannel(OrderConstants.INVOICE_CHANNEL); o.setDatePurchased(new Date(new Date().getTime())); o.setOrderId(nextOrderId); o.setMerchantId(super.getContext().getMerchantid()); super.getServletRequest().getSession().setAttribute("ORDER", o); this.setOrder(o); return SUCCESS; } catch (Exception e) { log.error(e); super.setTechnicalMessage(); return ERROR; } } private void prepareInvoiceReferences() throws Exception { Context ctx = super.getContext(); List celist = new ArrayList(); List crlist = new ArrayList(); /** * For functionalities not going through struts (AJAX) and requiring * Labels which internally invokes ActionContext */ String selectDefaultCompany = LabelUtil.getInstance().getText( super.getLocale(), "label.customer.selectcompany"); Customer co = new Customer(); co.setCustomerCompany("-- " + selectDefaultCompany + " --"); celist.add(co); String selectDefaultCustomer = LabelUtil.getInstance().getText( super.getLocale(), "label.customer.selectcustomer"); Customer c = new Customer(); c.setName("-- " + selectDefaultCustomer + " --"); crlist.add(c); CustomerService cservice = (CustomerService) ServiceFactory .getService(ServiceFactory.CustomerService); Collection coll = cservice.getCustomersHavingCompanies(ctx .getMerchantid()); celist.addAll(coll); this.setCompanyList(celist); Collection collcust = cservice.getCustomerList(ctx.getMerchantid()); crlist.addAll(collcust); this.setCustomerList(crlist); } public String displayInvoiceCreate() { try { SessionUtil.resetCart(super.getServletRequest()); this.prepareInvoiceReferences(); customer = new Customer(); OrderService oservice = (OrderService) ServiceFactory .getService(ServiceFactory.OrderService); Order currentOrder = oservice .getOrder(this.getOrder().getOrderId()); if (currentOrder == null) {// creation of an invoice // log.error("Cannot retreive order " + // this.getOrder().getOrderId()); currentOrder = this.getOrder(); currentOrder.setDatePurchased(new Date(new Date().getTime())); } this.setOrder(currentOrder); DateFormat myDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String invoiceDate = myDateFormat.format(currentOrder .getDatePurchased()); this.setSdate(invoiceDate); if (currentOrder.getOrderDateFinished() != null) { String dueDate = myDateFormat.format(currentOrder .getOrderDateFinished()); this.setEdate(dueDate); } else { this.setEdate(myDateFormat .format(new Date(new Date().getTime()))); } // set customerText if (!StringUtils.isBlank(currentOrder.getBillingStreetAddress()) && !StringUtils.isBlank(currentOrder.getBillingCity()) && !StringUtils.isBlank(currentOrder.getBillingPostcode()) && !StringUtils.isBlank(currentOrder.getBillingState()) && !StringUtils.isBlank(currentOrder.getBillingCountry())) { StringBuffer customerInformation = new StringBuffer(); if (!StringUtils.isBlank(currentOrder.getBillingCompany())) { customerInformation .append(currentOrder.getBillingCompany()); } else { customerInformation.append(currentOrder.getBillingName()); } customerInformation.append("<br>"); customerInformation.append( currentOrder.getBillingStreetAddress()).append("<br>"); customerInformation.append(currentOrder.getBillingCity()) .append("<br>"); customerInformation.append(currentOrder.getBillingPostcode()) .append("<br>"); customerInformation.append(currentOrder.getBillingState()) .append("<br>"); customerInformation.append(currentOrder.getBillingCountry()); this.setCustomerText(customerInformation.toString()); } return SUCCESS; } catch (Exception e) { log.error(e); super.setTechnicalMessage(); return ERROR; } } public String receiveInvoicePayment() { try { if (order == null || order.getOrderId() == 0) { log.error("Missing orderId in request parameters"); super.setTechnicalMessage(); return SUCCESS; } OrderService oservice = (OrderService) ServiceFactory .getService(ServiceFactory.OrderService); Order o = oservice.getOrder(order.getOrderId()); super.authorize(o); this.setOrder(o); // get payment options configured Map payments = PaymentUtil.getPaymentMethods(o.getMerchantId(), super.getLocale()); // get all payment methods available PaymentService pservice = (PaymentService) ServiceFactory .getService(ServiceFactory.PaymentService); List services = pservice.getPaymentMethodsList(super.getLocale() .getCountry()); Iterator servicesIterator = services.iterator(); while (servicesIterator.hasNext()) { CoreModuleService cms = (CoreModuleService) servicesIterator .next(); String module = cms.getCoreModuleName(); // filter sub-type to 0 if (cms.getCoreModuleServiceSubtype() == 0 && payments.containsKey(module)) { applicablePayments .add((PaymentMethod) payments.get(module)); } } } catch (AuthorizationException ae) { super.setAuthorizationMessage(); return "AUTHORIZATIONEXCEPTION"; } catch (Exception e) { log.error(e); super.setTechnicalMessage(); } return SUCCESS; } public String processInvoicePayment() { try { this.receiveInvoicePayment(); if (order == null || order.getOrderId() == 0) { log.error("Missing orderId in request parameters"); super.setTechnicalMessage(); return SUCCESS; } if (StringUtils.isBlank(this.getPaymentModule())) { String msg = super.getText("error.cart.nopaymentmodule"); super.addActionError(msg); return ERROR; } OrderService oservice = (OrderService) ServiceFactory .getService(ServiceFactory.OrderService); Order o = oservice.getOrder(order.getOrderId()); super.authorize(o); this.setOrder(o); LabelUtil label = LabelUtil.getInstance(); label.setLocale(super.getLocale()); String moduleName = label.getText( "module." + this.getPaymentModule()); o.setPaymentMethod(moduleName); o.setPaymentModuleCode(this.getPaymentModule()); o.setOrderStatus(OrderConstants.STATUSUPDATE); o.setChannel(OrderConstants.ONLINE_CHANNEL); DateFormat myDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date dt = myDateFormat.parse(this.getInvoiceDate()); o.setDatePurchased(dt); oservice.updateOrderPayment(o); OrderStatusHistory history = new OrderStatusHistory(); history.setCustomerNotified(1); history.setDateAdded(new Date()); history.setOrderId(order.getOrderId()); history.setOrderStatusId(OrderConstants.STATUSINVOICEPAID); history.setComments(label.getText("invoice.status.paid")); oservice.addOrderStatusHistory(history); MerchantService mservice = (MerchantService) ServiceFactory .getService(ServiceFactory.MerchantService); store = mservice.getMerchantStore(o.getMerchantId()); order = o; Set orderTotalSet = order.getOrderTotal(); // transform totals to a list List totalsList = new ArrayList(); if (orderTotalSet != null && orderTotalSet.size() > 0) { Iterator totalsIterator = orderTotalSet.iterator(); while (totalsIterator.hasNext()) { OrderTotal total = (OrderTotal) totalsIterator.next(); totalsList.add(total); if (total.getModule().equals("ot_shipping")) { shippingTotal = CurrencyUtil .displayFormatedAmountNoCurrency(total .getValue(), order.getCurrency()); } } } ConfigurationRequest request = new ConfigurationRequest(store .getMerchantId(), ConfigurationConstants.G_API);// get all // configurations ConfigurationResponse vo = mservice.getConfiguration(request); if (vo != null) { MerchantConfiguration config = vo .getMerchantConfiguration(ConfigurationConstants.G_API); if(config!=null) { String analytics = config.getConfigurationValue(); if (!StringUtils.isBlank(analytics)) { super.getServletRequest().setAttribute("ANALYTICS", analytics); } } } } catch (AuthorizationException ae) { super.setAuthorizationMessage(); return "AUTHORIZATIONEXCEPTION"; } catch (Exception e) { log.error(e); super.setTechnicalMessage(); return ERROR; } super.setSuccessMessage(); return SUCCESS; } public String deleteInvoice() { try { if (order == null || order.getOrderId() == 0) { log.error("Missing orderId in request parameters"); super.setTechnicalMessage(); return SUCCESS; } OrderService oservice = (OrderService) ServiceFactory .getService(ServiceFactory.OrderService); Order o = oservice.getOrder(order.getOrderId()); super.authorize(o); oservice.deleteOrder(o); super.setSuccessMessage(); } catch (AuthorizationException ae) { super.setAuthorizationMessage(); } catch (Exception e) { super.setTechnicalMessage(); log.error(e); } return SUCCESS; } public String displayInvoiceDetails() { try { Context ctx = super.getContext(); if (this.getOrder() == null || this.getOrder().getOrderId() == 0) { super.setAuthorizationMessage(); return "AUTHORIZATIONEXCEPTION"; } this.prepareInvoiceReferences(); SessionUtil.resetCart(super.getServletRequest()); OrderService oservice = (OrderService) ServiceFactory .getService(ServiceFactory.OrderService); Order order = oservice.getOrder(this.getOrder().getOrderId()); order.setLocale(super.getLocale(), order.getCurrency()); Set prs = order.getOrderProducts(); LocaleUtil.setLocaleToEntityCollection(prs, super.getLocale()); SessionUtil.setOrder(order, super.getServletRequest()); this.setOrder(order); this.setSdate(DateUtil.formatDate(order.getDatePurchased())); this.setEdate(DateUtil.formatDate(order.getOrderDateFinished())); CustomerService cservice = (CustomerService) ServiceFactory .getService(ServiceFactory.CustomerService); Customer customer = cservice.getCustomer(order.getCustomerId()); SessionUtil.setCustomer(customer, super.getServletRequest()); this.setCustomer(customer); this.setCustomerText(formatCustomer(customer)); CatalogService catalogService = (CatalogService) ServiceFactory .getService(ServiceFactory.CatalogService); // Comments Set historySet = order.getOrderHistory(); if (historySet != null) { //history where customer notified = 0 Iterator historySetIterator = historySet.iterator(); while (historySetIterator.hasNext()) {// get the last entry OrderStatusHistory history = (OrderStatusHistory) historySetIterator .next(); if(history.getCustomerNotified()==0) { this.setComments(history.getComments()); } else { if(statusHistory==null) {//sent invoice statusHistory = new ArrayList(); } statusHistory.add(history); } } } OrderTotalSummary summary = new OrderTotalSummary(order.getCurrency()); Set orderProductsSet = order.getOrderProducts(); if (orderProductsSet != null) { Map orderAccountProducts = null; Iterator orderProductsSetIterator = orderProductsSet.iterator(); int lineId = 1; while (orderProductsSetIterator.hasNext()) { OrderProduct op = (OrderProduct) orderProductsSetIterator .next(); // set basic attributes op = ProductUtil.initOrderProduct(op, ctx.getCurrency()); Product p = catalogService.getProduct(op.getProductId()); if (StringUtils.isBlank(op.getAttributesLine())) { // Collection attrs = // catalogService.getProductAttributes(p.getProductId()); Collection attrs = catalogService.getProductAttributes( p.getProductId(), super.getLocale() .getLanguage()); if (attrs != null && attrs.size() > 0) { op.setAttributes(true); } } op.setProductImage(p.getProductImage()); op.setProductType(p.getProductType()); op.setProductVirtual(p.isProductVirtual()); op.setProductWidth(p.getProductWidth()); op.setProductWeight(p.getProductWeight()); op.setProductHeight(p.getProductHeight()); op.setProductLength(p.getProductLength()); op.setTaxClassId(p.getProductTaxClassId()); if (!p.isProductVirtual()) { op.setShipping(true); } op.setLineId(lineId); SessionUtil.addOrderTotalLine(op, String.valueOf(lineId), super.getServletRequest()); lineId++; } OrderProduct[] opArray = new OrderProduct[orderProductsSet .size()]; OrderProduct[] objects = (OrderProduct[]) orderProductsSet .toArray(opArray); summary.setOrderProducts(objects); } if (!StringUtils.isBlank(order.getShippingMethod())) { super.getServletRequest().getSession().removeAttribute( "PRODUCTLOADED"); // shipping information ShippingInformation shippingInformation = new ShippingInformation(); shippingInformation.setShippingModule(order .getShippingModuleCode()); shippingInformation .setShippingMethod(order.getShippingMethod()); shippingInformation.setShippingMethodId("1");// default to 1 // get OrderTotalHistory Set orderHistory = order.getOrderTotal(); if (orderHistory != null) { Iterator orderHistoryIterator = orderHistory.iterator(); while (orderHistoryIterator.hasNext()) { OrderTotal total = (OrderTotal) orderHistoryIterator .next(); if (total.getModule().equals("ot_shipping")) { shippingInformation.setShippingCost(total .getValue()); shippingInformation .setShippingCostText(CurrencyUtil .displayFormatedAmountNoCurrency( total.getValue(), ctx .getCurrency())); break; } } SessionUtil.setShippingInformation(shippingInformation, super.getServletRequest()); super.getServletRequest().getSession().setAttribute( "PRODUCTLOADED", "true"); } } this.setSummary(summary); super.getServletRequest() .setAttribute("ORDERTOTALSUMMARY", summary); // url LabelUtil lhelper = LabelUtil.getInstance(); lhelper.setLocale(super.getLocale()); StringBuffer url = new StringBuffer().append("<a href='").append( FileUtil.getInvoiceUrl(order, customer)).append( "&request_locale=").append(customer.getCustomerLang()).append("_") .append(super.getLocale().getCountry()).append(" ' target='_blank'>"); url.append( lhelper.getText(customer.getCustomerLang(), "label.email.invoice.viewinvoice")).append("</a>"); this.setInvoiceUrl(url.toString()); } catch (Exception e) { log.error(e); return ERROR; } return SUCCESS; } public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } public Collection getOrderproducts() { return orderproducts; } public void setOrderproducts(Collection orderproducts) { this.orderproducts = orderproducts; } public Collection getOrdertotals() { return ordertotals; } public void setOrdertotals(Collection ordertotals) { this.ordertotals = ordertotals; } public Collection getCompanyList() { return companyList; } public void setCompanyList(Collection companyList) { this.companyList = companyList; } public Collection getCustomerList() { return customerList; } public void setCustomerList(Collection customerList) { this.customerList = customerList; } public String getCustomerText() { return customerText; } public void setCustomerText(String customerText) { this.customerText = customerText; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public String getEdate() { return edate; } public void setEdate(String edate) { this.edate = edate; } public String getSdate() { return sdate; } public void setSdate(String sdate) { this.sdate = sdate; } public List getProductList() { return productList; } public void setProductList(List productList) { this.productList = productList; } public String getComments() { return comments; } public void setComments(String comments) { this.comments = comments; } public List<Integer> getIds() { return ids; } public void setIds(List<Integer> ids) { this.ids = ids; } public String getShippingMethodId() { return shippingMethodId; } public void setShippingMethodId(String shippingMethodId) { this.shippingMethodId = shippingMethodId; } public OrderTotalSummary getSummary() { return summary; } public void setSummary(OrderTotalSummary summary) { this.summary = summary; } public Collection getApplicablePayments() { return applicablePayments; } public void setApplicablePayments(Collection applicablePayments) { this.applicablePayments = applicablePayments; } public String getPaymentModule() { return paymentModule; } public void setPaymentModule(String paymentModule) { this.paymentModule = paymentModule; } public String getInvoiceDate() { return invoiceDate; } public void setInvoiceDate(String invoiceDate) { this.invoiceDate = invoiceDate; } public List<OrderStatusHistory> getStatusHistory() { return statusHistory; } public void setStatusHistory(List<OrderStatusHistory> statusHistory) { this.statusHistory = statusHistory; } public void prepare() throws Exception { super.setPageTitle("label.invoice.invoicedetails"); } public String getInvoiceUrl() { return invoiceUrl; } public void setInvoiceUrl(String invoiceUrl) { this.invoiceUrl = invoiceUrl; } }