package com.gpc.client.pointofsale.message; // Java Imports import java.awt.Component; import java.awt.Container; import java.awt.Cursor; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.FocusEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.math.BigDecimal; import java.sql.*; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.Vector; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import javax.swing.border.Border; import javax.swing.border.TitledBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import com.gpc.valueobjects.system.ResourceUsageVO; import org.apache.log4j.Logger; import com.gpc.client.common.ClientApplicationContext; import com.gpc.client.common.ClientPropConstants; import com.gpc.client.common.event.InvoiceEvent; import com.gpc.client.common.focusmanager.FocusDecider; import com.gpc.client.common.input.document.FwoValidatedDecimalNumberDocument; import com.gpc.client.common.input.document.FwoValidatedWholeNumberDocument; import com.gpc.client.common.input.verifier.FwoBaseInputVerifier; import com.gpc.client.common.mvc.IView; import com.gpc.client.common.report.PrinterSelectionController; import com.gpc.client.pointofsale.customer.CustomerBL; import com.gpc.client.pointofsale.invoice.InvoiceBL; import com.gpc.client.pointofsale.invoice.InvoiceInitializerFunctions; import com.gpc.client.pointofsale.invoice.PasswordController; import com.gpc.client.pointofsale.invoice.RecallSavedInvoiceController; import com.gpc.client.pointofsale.invoice.RecallSavedInvoiceDialog; import com.gpc.client.pointofsale.util.SequenceField; import com.gpc.client.pointofsale.invoice.line.InvoiceLineBL; import com.gpc.client.pointofsale.invoice.line.InvoiceListModel; import com.gpc.client.pointofsale.invoice.line.LineGenerationQueue; import com.gpc.client.pointofsale.invoice.line.QuantityDocument; import com.gpc.client.pointofsale.invoice.line.QuantityVerifier; import com.gpc.client.pointofsale.util.BaseController; import com.gpc.client.pointofsale.util.MessageWithoutOptionController; import com.gpc.common.ApplicationContext; import com.gpc.common.FwiConstant; import com.gpc.common.Profile; import com.gpc.common.ResourceBundleReader; import com.gpc.common.SystemConfig; import com.gpc.common.TsoConstant; import com.gpc.common.constants.PasswordConstants; import com.gpc.common.constants.refvalues.RefCommunicationType; import com.gpc.common.constants.refvalues.RefInvoiceNoteType; import com.gpc.common.constants.refvalues.RefNXPInterstoreOrderType; import com.gpc.common.exception.ApplicationException; import com.gpc.common.pattern.DatePatternFormatException; import com.gpc.common.pattern.FwoDatePattern; import com.gpc.common.pattern.FwoPattern; import com.gpc.common.pattern.FwoTimePattern; import com.gpc.common.pattern.TimePatternFormatException; import com.gpc.common.util.FwoUtil; import com.gpc.common.util.LockableBoolean; import com.gpc.common.util.PartNumberFormatCertifier; import com.gpc.common.util.RefStoreConfigurationUtil; import com.gpc.valueobjects.PointOfSaleVO; import com.gpc.valueobjects.customer.CustomerVO; import com.gpc.valueobjects.employee.EmployeeVO; import com.gpc.valueobjects.inventory.InventoryVO; import com.gpc.valueobjects.invoice.InvoiceVO; import com.gpc.valueobjects.invoice.line.BaseLineItemVO; import com.gpc.valueobjects.invoice.line.InvoiceLineItemVO; import com.gpc.valueobjects.invoice.line.InvoiceNoteVO; import com.gpc.valueobjects.invoice.line.KitLineItemVO; import com.gpc.valueobjects.message.MessageBaseVO; import com.gpc.valueobjects.message.MessageHeaderVO; import com.gpc.valueobjects.message.MessagePartVO; import com.gpc.valueobjects.message.MessageTextVO; import com.gpc.valueobjects.message.SelectMessageVO; import com.gpc.valueobjects.ordering.salesorder.SalesOrderRecipientAddressVO; import com.gpc.valueobjects.ordering.salesorder.SalesOrderDeliveryAddressVO; import com.gpc.valueobjects.ordering.salesorder.SalesOrderVO; import com.gpc.valueobjects.price.PricesOutVO; import com.gpc.valueobjects.profile.InventoryProfileVO; import com.gpc.valueobjects.profile.InvoicingProfileVO; import com.gpc.valueobjects.profile.StoreProfileVO; import com.gpc.valueobjects.report.FwoPrintSettings; import com.gpc.valueobjects.report.FwoPrinterSelectionSettings; import com.gpc.common.constants.refvalues.RefNOLOrderStatus; import com.gpc.backofficecommon.FwoSessionMgr; /** * *

Title:

*

Description:

*

Copyright: Copyright &#169 2003

*

Company: Genuine Parts Company

* @author Copyright &#169 2003 * @version 1.0 */ public class ReviewMessagesController extends BaseController implements ListSelectionListener { private static final Logger logger = Logger.getLogger(ReviewMessagesController.class); Vector messageHeaderIDs; ReviewMessagesDialog reviewMessagesDialog; InvoiceListModel invoiceListModel; int vectorIndex; MessageHeaderVO messageHeaderVO; private MessageWithoutOptionController messageWithoutOptionController; private Thread processingThread = null; private MessagePrintOptionController messagePrintOptionController; private Integer messageLockID; private static final int PPII_TIMEOUT = 54000; //same as legacy tams private PPIITimeoutThread ppiiTimeoutThread; private static final String NOL_ORDER_MSG = "NOL"; private static final String ATTN_MSG = "ATTENTION: "; private static final Map messageToBaseLineItems = new HashMap(); private static Set incompleteKitTracker = new HashSet(); private StoreProfileVO storeProfileVO = null; private Container parentContainer; private boolean isUseLegacyDcEjoei = false; private ResourceUsageVO resourceUsageVO = new ResourceUsageVO(); public ResourceUsageVO getResourceUsageVO() { return resourceUsageVO; } public void setResourceUsageVO(ResourceUsageVO resourceUsageVO) { this.resourceUsageVO = resourceUsageVO; } private class PPIITimeoutThread extends Thread { public void run() { while(true) { try { Thread.sleep(PPII_TIMEOUT); } catch(InterruptedException e) { return; } panelTimeout(); } } } public ReviewMessagesController() { } public ReviewMessagesController(Container parentContainer) { this.parentContainer = parentContainer; isUseLegacyDcEjoei = isUseLegacyDCEjoei(); reviewMessagesDialog = new ReviewMessagesDialog((Frame) parentContainer); reviewMessagesDialog.addWindowListener( new WindowAdapter() { public void windowOpened(WindowEvent e){ reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber.requestFocusInWindow(); } public void windowClosing(WindowEvent e) {dialogClosing();} }); install(); reviewMessagesDialog.pnlMessageAcknowledgement.setVisible(false); reviewMessagesDialog.pnlMessageSelection.btnNXPOrderHistory.setVisible(false); storeProfileVO = ApplicationContext.getInstance().getProfile(Profile.SERVER, loc.intValue()).getStoreProfile(); /** * NXP Order History Button is made visible only when NXP is turned on for particular store */ if(storeProfileVO.getUseNapaXpress().booleanValue() == LockableBoolean.TRUE.booleanValue()){ reviewMessagesDialog.pnlMessageSelection.btnNXPOrderHistory.setVisible(true); } invoiceListModel = new InvoiceListModel(); reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.setModel(invoiceListModel); messageWithoutOptionController = new MessageWithoutOptionController(reviewMessagesDialog); messagePrintOptionController = new MessagePrintOptionController(reviewMessagesDialog); localizeView(); logger.debug("2222 ReviewMessagesController ...."); } private void panelTimeout() { // The program has timed out waiting for user input. Returning to Invoicng. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageSelection, "2238"); dialogClosing(); setPanelTimeout(false); } public void setPanelTimeout(boolean startTimer) { if (clientApplicationContext.getApplicationType() != ClientApplicationContext.PARTS_PRO_II) { return; } if (startTimer) { if(ppiiTimeoutThread != null) { ppiiTimeoutThread.interrupt(); } ppiiTimeoutThread = new PPIITimeoutThread(); ppiiTimeoutThread.start(); } else { if(ppiiTimeoutThread != null) { ppiiTimeoutThread.interrupt(); } } } private void acknowledgeMessage() { boolean isRefOrderStatusIdCancelled = isRefOrderStatusIdCancelled(); messageHeaderVO.setAcknowledgedByEmpID(clientApplicationContext.getCurrentUser().getEmployeeId()); messageHeaderVO.setAcknowledgedDate(new Date()); boolean updateFlag = false; final boolean doesMessageContainNOLOrder = MessageBL .doesMessageContainNOLOrder(messageHeaderVO); boolean saveInvoiceSuccessfull = false; InvoiceVO invoice = null; if (doesMessageContainNOLOrder && !isRefOrderStatusIdCancelled) { invoice = createInvoiceVO(); try { if (invoice != null && invoice.getSalesOrderVO() != null) { clientApplicationContext.getOrderingDAO().updateRefOrderStatus( invoice.getSalesOrderVO().getId(), invoice.getLOC(), RefNOLOrderStatus.RECEIVED); } } catch (ApplicationException applicationException) { logger.error("Error occured while updating order status " + applicationException); } } try { updateFlag = clientApplicationContext.getMessageDAO() .updateMessageHeader(messageLockID, messageHeaderVO).booleanValue(); } catch (ApplicationException ae) { logger.error("Error updating Message data. ae= " + ae.toString()); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageAcknowledgement, ae.getUserMessageID(), ae.getUserMessageParameters()); } if (updateFlag) { reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.setEnabled(false); populateAckInfo(messageHeaderVO); boolean exists = false; try { exists = clientApplicationContext.getMessageDAO().unacknowledgedExist( messageHeaderIDs).booleanValue(); } catch (ApplicationException ae) { } reviewMessagesDialog.pnlMessageAcknowledgement.lblCustomerNum.setEnabled(!exists); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.setEnabled(!exists); reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch.setEnabled(!exists); if (messageHeaderVO.getSavedInvoiceId() != null && !isRefOrderStatusIdCancelled) { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders .setEnabled(true); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } else if ((messageHeaderVO.getMessageType().equals("O") || messageHeaderVO.getMessageType().equals("S")) && MessageBL.orderablePartsExist(messageHeaderVO.getMessageItems()) && (messageHeaderVO.getRefCommunicationTypeID().intValue() == 2 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 4 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 5 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 3 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 6 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 7) && !isRefOrderStatusIdCancelled && !doesMessageContainNOLOrder) { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders .setEnabled(true); if(isUseLegacyDcEjoei) { reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(true); } else { reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } } else { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.dispatchEvent( new KeyEvent(reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge, KeyEvent.KEY_PRESSED, new Date().getTime(), 0, KeyEvent.VK_TAB, '\t')); } // send acknowledgement notification only for inter store messages. if (messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.INTERSTORE) { try { SalesOrderVO salesOrderVO = new SalesOrderVO(); salesOrderVO.setId(messageHeaderVO.getSalesOrderId()); salesOrderVO.setLoc(new Integer(clientApplicationContext.getLocation())); boolean result = clientApplicationContext.getMessageDAO() .notifyInterstoreOrderAcknowledgement(salesOrderVO); } catch (ApplicationException ae) { logger.error("Error sending acknowledegement notification. ae= " + ae.toString()); } } if (doesMessageContainNOLOrder && !isRefOrderStatusIdCancelled()) { if (invoice != null && invoice.getID() != null) { displayPrintOption(); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageAcknowledgement, "10141"); if (MessageBL.doesMessageContainNOLBOPISOrder(messageHeaderVO)) { invokeInvoiceOrder(); } } } } public void recallSavedInvoice(Integer customerID, String customerTypeCD, Integer customerNumber, boolean doesMessageContainNOLBOPISOrder) { if (clientApplicationContext.getSystemDAO().askForPassword( PasswordConstants.RECALL_SAVED_PWD).booleanValue()) { PasswordController passwordController = new PasswordController((Frame) parentContainer); passwordController.setInitialData(PasswordConstants.RECALL_SAVED_PWD); passwordController.setViewVisible(true); if (!passwordController.getPasswordValid()) { return; } } final RecallSavedInvoiceController recallSavedInvoiceController = new RecallSavedInvoiceController(parentContainer); recallSavedInvoiceController.setCustomerID (customerID); recallSavedInvoiceController.setCustomerNumber(customerNumber); recallSavedInvoiceController.setCustomerTypeCD(customerTypeCD); recallSavedInvoiceController.setDoesMessageContainNOLBOPISOrder(doesMessageContainNOLBOPISOrder); recallSavedInvoiceController.show(); SwingUtilities.invokeLater(new Runnable() { public void run() { RecallSavedInvoiceDialog recallSavedInvoiceDialog = (RecallSavedInvoiceDialog) recallSavedInvoiceController.getView(); Component components[] = recallSavedInvoiceDialog.getContentPane().getComponents(); JButton editBtnComponent = null; JList listComponent = null; JScrollPane scrollPane = null; SequenceField seqField = null; for (int i = 0; i < components.length; i++) { if (components[i].getName() != null && components[i].getName().equals("scrlRecallSavedInvoices")) { scrollPane = (JScrollPane) components[i]; listComponent = (JList) scrollPane.getViewport().getView(); } if (components[i].getName() != null && components[i].getName().equals("btnEdit")) { editBtnComponent = (JButton) components[i]; } if (editBtnComponent != null && editBtnComponent != null) { break; } if (components[i].getName() != null && components[i].getName().equals("sqfldSavedInv")) { seqField = (SequenceField) components[i]; } } listComponent.setSelectedIndex(0); seqField.setText("1"); editBtnComponent.doClick(); } }); } private void dialogClosing() { if (clientApplicationContext.getApplicationType() == ClientApplicationContext.PARTS_PRO_II) { if (messageLockID != null) { clientApplicationContext.getMessageDAO().messageUnlock(messageLockID); messageLockID = null; } } if(getResourceUsageVO().getResource()!=null){ clientApplicationContext.getResourceUsageDAO().setResourceNotInUse(getResourceUsageVO()); } resetEditMessagePanel(); resetSelectMessagePanel(); hideMessageAcknowledgementPanel(); setViewVisible(false); } /** * This method is used to redirect from TAMSII Message dialogue to * Order History Page **/ private void redirectToOrderHistory() { try { String storeNumber = null; final String nxpUrl = ClientApplicationContext.getClientApplicationContext().getSystemDAO().getNapaXpressPunchoutURL(); final Properties properties = ClientApplicationContext.getInstance().getSystemConfig().getSystemConfiguration(SystemConfig.APPLICATION); final String nxpOrderSummaryUrn = properties.getProperty(ClientPropConstants.NXP_ORDER_SUMMARY_URN); final StringBuffer url = new StringBuffer(); url.append(nxpUrl); url.append(nxpOrderSummaryUrn); url.append("?storeNumber="); try { storeNumber = storeProfileVO.getStoreNum(); url.append(storeNumber); openURL(url.toString()); } catch (Exception Exception) { logger.error(Exception.getMessage(), Exception); } } catch (ApplicationException e) { logger.error(e.getMessage(), e); } } public void actionPerformed(ActionEvent ae) { fireStartTimer(); Component source = (Component) ae.getSource(); /** Condition to check if the Action Event is NXP ORDER HISTORY and call the method for redirection **/ if (source.getName().equals(MessageSelectionPanel.BTN_NXP_ORDER_HISTORY)) { setPanelTimeout(false); redirectToOrderHistory(); } if (source.getName().equals(MessageSelectionPanel.BTN_OK)) { setPanelTimeout(false); displayEditMessagePanel(); } else if (source.getName().equals(MessageSelectionPanel.BTN_CANCEL)) { setPanelTimeout(false); dialogClosing(); } else if (source.getName().equals(MessageAcknowledgementPanel.BTN_CLOSE)) { dialogClosing(); } else if (source.getName().equals(MessageAcknowledgementPanel.BTN_NEXT)) { if(vectorIndex + 1 < messageHeaderIDs.size()) { vectorIndex = vectorIndex + 1; displayMessage((Integer) messageHeaderIDs.get(vectorIndex)); } } else if (source.getName().equals(MessageAcknowledgementPanel.BTN_PREV)) { if(vectorIndex - 1 >= 0) { vectorIndex = vectorIndex - 1; displayMessage((Integer) messageHeaderIDs.get(vectorIndex)); } } else if (source.getName().equals(MessageAcknowledgementPanel.BTN_ACKNOWLEDGE)) { if (isMessageAlreadyAcknowledged()) { displayProcessedMessage("10021", "ACK"); reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.dispatchEvent( new KeyEvent(reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge, KeyEvent.KEY_PRESSED, new Date().getTime(), 0, KeyEvent.VK_TAB, '\t')); return; } if(messageHeaderVO != null && messageHeaderVO.getRefCommunicationTypeID() != null && messageHeaderVO.getRefCommunicationTypeID().intValue() != 3 && isRefOrderStatusIdCancelled()) { clientApplicationContext.getMessageMgr().showMessage( reviewMessagesDialog.pnlMessageAcknowledgement, "10144"); } acknowledgeMessage(); } else if (source.getName().equals(MessageAcknowledgementPanel.BTN_INVOICING_ORDERS)) { invokeInvoiceOrder(); } else if (source.getName().equals(MessageAcknowledgementPanel.BTN_SPECIAL_ORDERS)) { MessagePartVO messagePartVO = new MessagePartVO(); messagePartVO = isMessageSpecialOrdered(); Integer splOrderProcessedByEmpID = null; try { splOrderProcessedByEmpID = clientApplicationContext.getMessageDAO().isSplOrderProcessedBy(messageHeaderVO); } catch (ApplicationException e) { e.printStackTrace(); } if (messagePartVO.getProcessedByEmployeeID() != null) { try { String[] messageOptions = { clientApplicationContext.getEmployeeDAO() .getEmployeeInfo(messagePartVO.getProcessedByEmployeeID()) .getEmployeeNum().toString() }; clientApplicationContext.getMessageMgr().showMessage( reviewMessagesDialog.pnlMessageSelection, "10023", messageOptions); } catch (ApplicationException applicationException) { logger.error(" ApplicationException occured while refreshing Message header: " + applicationException.getMessage()); } enableButtons(messageHeaderVO); return; } else if (isMessageAlreadyInvoiced()) { displayProcessedMessage("10022", "INV"); reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders .dispatchEvent(new KeyEvent( reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders, KeyEvent.KEY_PRESSED, new Date().getTime(), 0, KeyEvent.VK_TAB, '\t')); }else if (messageHeaderVO.getCustomerVO() == null) { //1248 = Customer number not on file. Please correct the customer number in the // communications phone number record for this customer and try again. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1248"); return; }else if(splOrderProcessedByEmpID!=null){ messageHeaderVO.setSplOrderByEmpID(splOrderProcessedByEmpID); displayProcessedMessage("10024", "SPE"); }else{ specialOrder(); } } else if (source.getName().equals(MessageAcknowledgementPanel.BTN_SEARCH)) { customerSearch(); } else if (source.getName().equals(MessageAcknowledgementPanel.BTN_PRINT)) { displayPrintOption(); if(isMessageAlreadyAcknowledged()) { populateAckInfo(messageHeaderVO); enableButtons(messageHeaderVO); } } } private void invokeInvoiceOrder() { MessagePartVO messagePartVO = new MessagePartVO(); messagePartVO = isMessageSpecialOrdered(); Integer splOrderProcessedByEmpID = null; try { splOrderProcessedByEmpID = clientApplicationContext.getMessageDAO().isSplOrderProcessedBy(messageHeaderVO); } catch (ApplicationException e) { e.printStackTrace(); } if (messagePartVO.getProcessedByEmployeeID() != null) { try { String[] messageOptions = { clientApplicationContext.getEmployeeDAO() .getEmployeeInfo(messagePartVO.getProcessedByEmployeeID()) .getEmployeeNum().toString() }; clientApplicationContext.getMessageMgr().showMessage( reviewMessagesDialog.pnlMessageSelection, "10023", messageOptions); } catch (ApplicationException applicationException) { logger.error(" ApplicationException occured while refreshing Message header: " + applicationException.getMessage()); } }else if (isMessageAlreadyInvoiced()) { displayProcessedMessage("10022", "INV"); reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders .dispatchEvent(new KeyEvent( reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders, KeyEvent.KEY_PRESSED, new Date().getTime(), 0, KeyEvent.VK_TAB, '\t')); }else if(splOrderProcessedByEmpID!=null){ messageHeaderVO.setSplOrderByEmpID(splOrderProcessedByEmpID); displayProcessedMessage("10024", "SPE"); }else { if (messageHeaderVO != null) { messageHeaderVO.setInvoicedByEmpID(clientApplicationContext.getCurrentUser().getEmployeeId()); try { clientApplicationContext.getMessageDAO().updateInvoicedByEmpId(messageHeaderVO); invoiceOrders(); } catch (ApplicationException e) { logger.error("Error updating Message data. ae= " + e.toString()); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageAcknowledgement, "168"); } } } } private void displayProcessedMessage(final String messageId, String acknowledgedOrInvoiced) { if (acknowledgedOrInvoiced.equalsIgnoreCase("ACK")) { try { String[] messageOptions = { clientApplicationContext.getEmployeeDAO() .getEmployeeInfo(messageHeaderVO.getAcknowledgedByEmpID()) .getEmployeeNum().toString(), messageHeaderVO.getAcknowledgedDate().toString() }; clientApplicationContext.getMessageMgr().showMessage( reviewMessagesDialog.pnlMessageSelection, messageId, messageOptions); } catch (ApplicationException applicationException) { logger.error(" ApplicationException occured while refreshing Message header: " + applicationException.getMessage()); } populateAckInfo(messageHeaderVO); enableButtons(messageHeaderVO); } else if (acknowledgedOrInvoiced.equalsIgnoreCase("INV")) { try { String[] messageOptions = { clientApplicationContext.getEmployeeDAO() .getEmployeeInfo(messageHeaderVO.getInvoicedByEmpID()) .getEmployeeNum().toString() }; clientApplicationContext.getMessageMgr().showMessage( reviewMessagesDialog.pnlMessageSelection, messageId, messageOptions); } catch (ApplicationException applicationException) { logger.error(" ApplicationException occured while refreshing Message header: " + applicationException.getMessage()); } enableButtons(messageHeaderVO); }else if (acknowledgedOrInvoiced.equalsIgnoreCase("SPE")) { try { String[] messageOptions = { clientApplicationContext.getEmployeeDAO() .getEmployeeInfo(messageHeaderVO.getSplOrderByEmpID()) .getEmployeeNum().toString() }; clientApplicationContext.getMessageMgr().showMessage( reviewMessagesDialog.pnlMessageSelection, messageId, messageOptions); } catch (ApplicationException applicationException) { logger.error(" ApplicationException occured while refreshing Message header: " + applicationException.getMessage()); } } } /** * This method is used to Open URL in new Web Browser on * invoking Action Listener * **/ public static void openURL(String url) { String osName = System.getProperty("os.name"); try { if (osName.startsWith("Windows")) Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler " + url); else { String[] browsers = { "firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" }; String browser = null; for (int count = 0; count < browsers.length && browser == null; count++) if (Runtime.getRuntime().exec( new String[] { "which", browsers[count] }) .waitFor() == 0) browser = browsers[count]; Runtime.getRuntime().exec(new String[] { browser, url }); } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error in opening browser" + ":\n" + e.getLocalizedMessage()); } } /** * This method is used to check if the message is * already acknowledged by some other employee * **/ private boolean isMessageAlreadyAcknowledged() { Boolean returnValue = Boolean.FALSE; try { returnValue = clientApplicationContext.getMessageDAO().isMessageAcknowledged(loc, messageHeaderVO); if (returnValue.booleanValue()) { messageHeaderVO = clientApplicationContext.getMessageDAO() .findMessageByID(messageHeaderVO.getID(), messageLockID); } } catch (ApplicationException applicationException) { logger.error("Error occured , messageHeaderID= " + applicationException); logger.error("Error in isMessageAlreadyAcknowledged: ae= " + applicationException.toString()); clientApplicationContext.getMessageMgr() .showMessage(reviewMessagesDialog.pnlMessageSelection, "2227"); } return returnValue.booleanValue(); } /** * This method is used to check if the message is * already invoiced by some other employee * **/ private boolean isMessageAlreadyInvoiced() { Boolean returnValue = Boolean.FALSE; try { returnValue = clientApplicationContext.getMessageDAO().isMessageInvoiced(loc, messageHeaderVO); if (returnValue.booleanValue()) { messageHeaderVO = clientApplicationContext.getMessageDAO() .findMessageByID(messageHeaderVO.getID(), messageLockID); } } catch (ApplicationException applicationException) { logger.error("Error occured , messageHeaderID= " + applicationException); logger.error("Error in displayMessage: ae= " + applicationException.toString()); clientApplicationContext.getMessageMgr() .showMessage(reviewMessagesDialog.pnlMessageSelection, "2227"); } return returnValue.booleanValue(); } /** * This method is used to check if the message is * already special ordered by some other employee * **/ private MessagePartVO isMessageSpecialOrdered() { MessagePartVO messagePartVo = null; try { messagePartVo = clientApplicationContext.getMessageDAO().isMessageSpecialOrdered(loc, messageHeaderVO); if (messagePartVo != null) { messageHeaderVO = clientApplicationContext.getMessageDAO() .findMessageByID(messageHeaderVO.getID(), messageLockID); } } catch (ApplicationException applicationException) { logger.error("Error occured , messageHeaderID= " + applicationException); logger.error("Error in isMessageAlreadyAcknowledged: ae= " + applicationException.toString()); clientApplicationContext.getMessageMgr() .showMessage(reviewMessagesDialog.pnlMessageSelection, "2227"); } return messagePartVo; } public void displayEditMessagePanel() { logger.debug("displayEditMessagePanel()"); StringBuffer messageTypes = new StringBuffer(); if (reviewMessagesDialog.pnlMessageSelection.chkJoei.isSelected()) { messageTypes.append("1"); } if (reviewMessagesDialog.pnlMessageSelection.chkInterstore.isSelected()) { if (messageTypes.length() > 0) { messageTypes.append(","); } messageTypes.append("2"); } if (reviewMessagesDialog.pnlMessageSelection.chkProlink.isSelected()) { logger.debug("selected prolink messages"); if (messageTypes.length() > 0) { messageTypes.append(","); } messageTypes.append("4"); } if (reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.isSelected()) { if (messageTypes.length() > 0) { messageTypes.append(","); } messageTypes.append("5"); } if (reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.isSelected()) { if (messageTypes.length() > 0) { messageTypes.append(","); } messageTypes.append("3"); } if (reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.isSelected()) { if (messageTypes.length() > 0) { messageTypes.append(","); } messageTypes.append("6"); } if (reviewMessagesDialog.pnlMessageSelection.chkReturns.isSelected()) { if (messageTypes.length() > 0) { messageTypes.append(","); } messageTypes.append("7"); } if (messageTypes.length() > 0) { logger.debug("find ids by type ????"); try { if (!(reviewMessagesDialog.pnlMessageSelection.chkReturns.isSelected() || reviewMessagesDialog.pnlMessageSelection.chkNapaOnline .isSelected()) && clientApplicationContext.getMessageDAO().canConsolidateMessages(loc).booleanValue() && clientApplicationContext.getMessageMgr().showMessageYesNo(reviewMessagesDialog, "1398")) { clientApplicationContext.getMessageDAO().consolidateMessages(loc); } } catch (ApplicationException e) { logger.error(e.toString()); clientApplicationContext.getMessageMgr().showMessage(e.getUserMessageID()); return; } int selectedItemIndex = reviewMessagesDialog.pnlMessageSelection.cbSortOption .getSelectedIndex(); messageHeaderIDs = clientApplicationContext.getMessageDAO() .findIDsByType(new Integer(selectedItemIndex), messageTypes.toString()); clientApplicationContext.getMessageDAO() .setSortMessageOptionValue(new Integer(selectedItemIndex)); reviewMessagesDialog.pnlMessageSelection.setVisible(false); reviewMessagesDialog.setBounds(100, 100, ReviewMessagesDialog.ACKNOWLEDGEMENT_PANEL_WIDTH, ReviewMessagesDialog.ACKNOWLEDGEMENT_PANEL_HEIGHT); reviewMessagesDialog.validate(); reviewMessagesDialog.pnlMessageAcknowledgement.setVisible(true); if (isRefOrderStatusIdCancelled()) { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.setEnabled( messageHeaderVO.getAcknowledgedDate() == null); } vectorIndex = 0; displayMessage((Integer) messageHeaderIDs.get(0)); } else { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1251"); reviewMessagesDialog.pnlMessageSelection.btnCancel.dispatchEvent( new KeyEvent(reviewMessagesDialog.pnlMessageSelection.btnCancel, KeyEvent.KEY_PRESSED, new Date().getTime(), 0, KeyEvent.VK_TAB, '\t')); setPanelTimeout(true); } } public void hideMessageAcknowledgementPanel() { reviewMessagesDialog.setBounds(100, 100, ReviewMessagesDialog.SELECTION_PANEL_WIDTH, ReviewMessagesDialog.SELECTION_PANEL_HEIGHT + 20); reviewMessagesDialog.pnlMessageAcknowledgement.setVisible(false); reviewMessagesDialog.pnlMessageSelection.setVisible(true); } private void populateHeader(MessageHeaderVO messageHeaderVO) { logger.debug(" populateHeader: messageHeaderVO = "+messageHeaderVO); String customer = null; if (messageHeaderVO.getCustomerNumber() != null) { customer = messageHeaderVO.getCustomerNumber() + " " + messageHeaderVO.getCustomerVO().getName(); } else { String dcDivision = TsoConstant.DC_DIVISION; final ResourceBundleReader resourceBundleReader = clientApplicationContext .getResourceBundleReader(); final Locale currentLocale = clientApplicationContext.getCurrentLocale(); if (resourceBundleReader != null && currentLocale != null) { dcDivision = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI, MessageAcknowledgementPanel.DC_DIVISION_LABEL, currentLocale); } customer = dcDivision; } reviewMessagesDialog.pnlMessageAcknowledgement.dlblCustomer.setText(customer); FwoDatePattern fwoDatePattern = (FwoDatePattern) FwoPattern.getDatePatternInstance( clientApplicationContext.getCurrentLocale(), new Integer(clientApplicationContext.getProfile(Profile.POINT_OF_SALE_CLIENT, clientApplicationContext.getLocation() ).getStoreProfile().getRefDateFormatId().intValue())); FwoTimePattern fwoTimePattern = (FwoTimePattern) FwoPattern.getTimePatternInstance( ClientApplicationContext.getClientApplicationContext().getCurrentLocale()); String strDate = ""; try { strDate = fwoDatePattern.format(messageHeaderVO.getLogOnDate()); } catch (DatePatternFormatException dpfe) { } reviewMessagesDialog.pnlMessageAcknowledgement.dlblMessageDate.setText(strDate); String strTime = ""; try { strTime = fwoTimePattern.format(messageHeaderVO.getLogOnDate()); } catch (TimePatternFormatException tpfe) { } reviewMessagesDialog.pnlMessageAcknowledgement.dlblMessageTime.setText(strTime); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.setText(""); // Display External Order Number for NOL Orders (BOPIS / ROL) if (MessageBL.doesMessageContainNOLOrder(messageHeaderVO) && messageHeaderVO.getSalesOrderVO().getExternalOrderNumber() != null && messageHeaderVO.getSalesOrderVO().getExternalOrderNumber().trim().length() > 0) { reviewMessagesDialog.pnlMessageAcknowledgement.lblOrderNumber.setVisible(true); reviewMessagesDialog.pnlMessageAcknowledgement.lblOrderNumber.setEnabled(true); reviewMessagesDialog.pnlMessageAcknowledgement.dlblOrderNumber.setVisible(true); reviewMessagesDialog.pnlMessageAcknowledgement.dlblOrderNumber.setEnabled(true); reviewMessagesDialog.pnlMessageAcknowledgement.dlblOrderNumber.setText(messageHeaderVO .getSalesOrderVO().getExternalOrderNumber()); } else { reviewMessagesDialog.pnlMessageAcknowledgement.lblOrderNumber.setVisible(false); reviewMessagesDialog.pnlMessageAcknowledgement.dlblOrderNumber.setVisible(false); } } private void populateAckInfo(MessageHeaderVO messageHeaderVO) { String ackString = ""; if (messageHeaderVO.getAcknowledgedDate() != null) { if(messageHeaderVO.getAcknowledgedByEmpID() == null) { // auto-acknowledged ackString = clientApplicationContext.getResourceBundleReader() .getLocalizedText(ResourceBundleReader.UI,"MessageAcknowledgementPanel.lblAutoAcknowledged", clientApplicationContext.getCurrentLocale()); } else { EmployeeVO empVO = null; try { empVO = clientApplicationContext.getEmployeeDAO().getEmployeeInfo( messageHeaderVO.getAcknowledgedByEmpID()); } catch (ApplicationException ae) { logger.error("Error populating the Message Acknowledgement Information. ae= " + ae.toString()); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageAcknowledgement, ae.getUserMessageID(), ae.getUserMessageParameters()); } if (empVO != null) { ackString = empVO.getEmployeeNum() + " " + empVO.getFirstName() + " " + empVO.getLastName(); } } reviewMessagesDialog.pnlMessageAcknowledgement.dlblAcknowledgedBy.setText(ackString); if (clientApplicationContext.getApplicationType() == ClientApplicationContext.PARTS_PRO_II) { reviewMessagesDialog.pnlMessageAcknowledgement.lblAcknowledgedDate.setVisible(false); reviewMessagesDialog.pnlMessageAcknowledgement.lblAcknowledgedTime.setVisible(false); reviewMessagesDialog.pnlMessageAcknowledgement.dlblAcknowledgedDate.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblAcknowledgedTime.setText(""); } else { FwoDatePattern fwoDatePattern = (FwoDatePattern) FwoPattern.getDatePatternInstance( clientApplicationContext.getCurrentLocale(), new Integer( clientApplicationContext.getProfile(Profile.POINT_OF_SALE_CLIENT, clientApplicationContext.getLocation() ).getStoreProfile().getRefDateFormatId().intValue())); FwoTimePattern fwoTimePattern = (FwoTimePattern) FwoPattern.getTimePatternInstance( ClientApplicationContext.getClientApplicationContext().getCurrentLocale()); String strDate = ""; try { strDate = fwoDatePattern.format(messageHeaderVO.getAcknowledgedDate()); } catch (DatePatternFormatException dpfe) { } reviewMessagesDialog.pnlMessageAcknowledgement.dlblAcknowledgedDate.setText(strDate); String strTime = ""; try { strTime = fwoTimePattern.format(messageHeaderVO.getAcknowledgedDate()); } catch (TimePatternFormatException tpfe) { } reviewMessagesDialog.pnlMessageAcknowledgement.dlblAcknowledgedTime.setText(strTime); } } else { if (clientApplicationContext.getApplicationType() == ClientApplicationContext.PARTS_PRO_II) { reviewMessagesDialog.pnlMessageAcknowledgement.lblAcknowledgedDate.setVisible(false); reviewMessagesDialog.pnlMessageAcknowledgement.lblAcknowledgedTime.setVisible(false); } reviewMessagesDialog.pnlMessageAcknowledgement.dlblAcknowledgedBy.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblAcknowledgedDate.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblAcknowledgedTime.setText(""); } } private void enableButtons(MessageHeaderVO messageHeaderVO) { boolean isRefOrderStatusIdCancelled = isRefOrderStatusIdCancelled(); reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.setEnabled( ( messageHeaderVO.getAcknowledgedDate() == null)); if (messageHeaderVO.getSavedInvoiceId() != null && !isRefOrderStatusIdCancelled) { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders .setEnabled(messageHeaderVO.getAcknowledgedByEmpID() != null); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } else if ((messageHeaderVO.getMessageType().equals("O") || messageHeaderVO.getMessageType().equals("S")) && MessageBL.orderablePartsExist(messageHeaderVO.getMessageItems()) && (messageHeaderVO.getRefCommunicationTypeID().intValue() == 2 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 4 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 5 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 3 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 6 || messageHeaderVO.getRefCommunicationTypeID().intValue() == 7) && !isRefOrderStatusIdCancelled && !isMessageAlreadyInvoiced()) { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled( messageHeaderVO.getAcknowledgedByEmpID() != null); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled( messageHeaderVO.getAcknowledgedByEmpID() != null && isUseLegacyDcEjoei); } else { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.setEnabled(vectorIndex + 1 < messageHeaderIDs.size()); reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.setEnabled( vectorIndex != 0); if (reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled()) { reviewMessagesDialog.pnlMessageAcknowledgement.lblCustomerNum.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch.setEnabled(false); } else { if (!reviewMessagesDialog.pnlMessageAcknowledgement.lblCustomerNum.isEnabled()) { boolean exists = false; try { exists = clientApplicationContext.getMessageDAO().unacknowledgedExist( messageHeaderIDs).booleanValue(); } catch (ApplicationException ae) { } reviewMessagesDialog.pnlMessageAcknowledgement.lblCustomerNum.setEnabled(!exists); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.setEnabled(!exists); reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch.setEnabled(!exists); } } } /** //Class Variables for Hyperlink implementation as part of TII-21706 String message = null; int hrefIndex = 0; int counter = 0; **/ public void displayMessage(Integer messageHeaderID) { try { messageHeaderVO = clientApplicationContext.getMessageDAO().findMessageByID(messageHeaderID, messageLockID); } catch (ApplicationException ae) { logger.error("Error displayingMessage, messageHeaderID= " + messageHeaderID); logger.error("Error in displayMessage: ae= " + ae.toString()); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageSelection, "2227"); } if (clientApplicationContext.getProfile( Profile.POINT_OF_SALE_CLIENT, clientApplicationContext.getLocation()) .getStoreProfile().getIncludeTaxInPrice().booleanValue()) { setDisplayQuotedPriceWithTax(messageHeaderVO); } populateHeader(messageHeaderVO); populateAckInfo(messageHeaderVO); enableButtons(messageHeaderVO); InvoiceListModel invLstModel = (InvoiceListModel) reviewMessagesDialog.pnlMessageAcknowledgement.listMessages .getModel(); reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.setText(""); SwingUtilities.invokeLater(new Runnable() { public void run() { reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.requestFocusInWindow(); } }); invLstModel.clear(); invLstModel.setData(messageHeaderVO.getMessageItems()); // Display block sale message validateBlockSale(messageHeaderVO); Vector v = messageHeaderVO.getMessageItems(); /** //Code block for Hyperlink implementation as part of TII-21706 for (int i = 0; i < v.size(); i++) { MessageTextVO vo = (MessageTextVO) v.get(i); message = vo.getText(); //Regex to check if the Message line is extertnal URL String httpRegularExp = "^(http|https)://"; if (null != message && message.startsWith(httpRegularExp)) { hrefIndex = i; ++counter; //Listener to navigate to external URL on Mouse click reviewMessagesDialog.pnlMessageAcknowledgement.listMessages .addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 1) { int index = reviewMessagesDialog.pnlMessageAcknowledgement.listMessages .locationToIndex(evt.getPoint()); //Condition to check if Hyperlink is already clicked to avoid multiple opening // browser tabs if (hrefIndex == index && counter == 1) { openURL(message); counter = 0; } } } }); } } **/ reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.setVisible(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch.dispatchEvent(new KeyEvent( reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch, KeyEvent.KEY_PRESSED, new Date().getTime(), 0, KeyEvent.VK_TAB, '\t')); } /** * Block sale;Validates the presence of any banned parts in NOL and PROLink orders and dipaly message. * Additional order types will be added added in future releases. * @param messageHeaderVO */ private void validateBlockSale(MessageHeaderVO messageHeaderVO) { if (InvoiceLineBL.getBlockSaleFlag(false)) { int cntBannedPart= InvoiceLineBL.updateMessagesForBlockSaleParts(messageHeaderVO); if((messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.NAPA_ONLINE || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.PROLINK || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.DIRECT_SHIPMENT_MESSAGES || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.NAPA_ACCESS || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.INTERSTORE) && cntBannedPart > 0) { String rawMessage = clientApplicationContext.getResourceBundleReader().getLocalizedText( ResourceBundleReader.UI, reviewMessagesDialog.pnlMessageAcknowledgement.getName() + ".lblBlockSaleMessage"); String message = String.format( rawMessage,cntBannedPart); reviewMessagesDialog.pnlMessageAcknowledgement.lblBlockSaleMessage.setText(message); reviewMessagesDialog.pnlMessageAcknowledgement.lblBlockSaleMessage.setEnabled(true); reviewMessagesDialog.pnlMessageAcknowledgement.lblBlockSaleMessage.setVisible(true); } else { reviewMessagesDialog.pnlMessageAcknowledgement.lblBlockSaleMessage.setVisible(false); } }else { reviewMessagesDialog.pnlMessageAcknowledgement.lblBlockSaleMessage.setVisible(false); } } public void focusGained(FocusEvent fe) { if (fe.getComponent().getName().equals(MessageAcknowledgementPanel.BTN_PREV) || fe.getComponent().getName().equals(MessageAcknowledgementPanel.BTN_NEXT) || fe.getComponent().getName().equals(MessageAcknowledgementPanel.BTN_CLOSE)) { if (messageHeaderVO.getSavedInvoiceId() == null) { reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled( reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.isEnabled() && isUseLegacyDcEjoei); } } } public void focusLost(FocusEvent fe) { if (fe.getComponent().getName().equals(MessageAcknowledgementPanel.FLD_PRICE) && reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.isSelectionEmpty()) { reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.setVisible(false); } } public void keyPressed(KeyEvent ke) { } public void keyReleased(KeyEvent ke) { fireStartTimer(); if (reviewMessagesDialog.pnlMessageSelection.isVisible()) { if (ke.getKeyCode() == KeyEvent.VK_F8) { reviewMessagesDialog.pnlMessageSelection.btnOK.doClick(); } else if (ke.getKeyCode() == KeyEvent.VK_ESCAPE) { reviewMessagesDialog.pnlMessageSelection.btnCancel.doClick(); } if(reviewMessagesDialog.pnlMessageSelection.btnNXPOrderHistory.isVisible() && ke.getKeyCode() == KeyEvent.VK_F9){ reviewMessagesDialog.pnlMessageSelection.btnNXPOrderHistory.doClick(); } //} } else { switch (ke.getKeyCode()) { case KeyEvent.VK_F8: reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.doClick(); break; case KeyEvent.VK_ESCAPE: reviewMessagesDialog.pnlMessageAcknowledgement.btnClose.doClick(); break; case KeyEvent.VK_F2: reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint.doClick(); break; case KeyEvent.VK_F3: if (reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch.isEnabled()) { reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch.doClick(); } break; case KeyEvent.VK_F4: if (reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.isEnabled()) { reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.doClick(); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled( false); } break; case KeyEvent.VK_F11: if (reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.isEnabled()) { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.doClick(); } break; case KeyEvent.VK_F12: if (reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled()) { reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.doClick(); } break; case KeyEvent.VK_F7: reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.doClick(); break; } } } public void keyTyped(KeyEvent ke) { } public void mouseClicked(MouseEvent me) { } public void mouseEntered(MouseEvent me) { } public void mouseExited(MouseEvent me) { } public void mousePressed(MouseEvent me) { } public void mouseReleased(MouseEvent me) { } public JComponent getDefaultFocusableComponent(JComponent currentComponent, boolean transferFocusForward) { JComponent returnComponent = null; if (reviewMessagesDialog.pnlMessageSelection.isVisible()) { if (transferFocusForward) { if (currentComponent.getName().equals(MessageSelectionPanel.FLD_SEQ)) { returnComponent = reviewMessagesDialog.pnlMessageSelection.btnOK; } if (currentComponent.getName().equals(MessageSelectionPanel.BTN_OK)) { returnComponent = reviewMessagesDialog.pnlMessageSelection.btnCancel; } if (currentComponent.getName().equals(MessageSelectionPanel.BTN_CANCEL)) { returnComponent = reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber; } } else { if (currentComponent.getName().equals(MessageSelectionPanel.FLD_SEQ)) { returnComponent = reviewMessagesDialog.pnlMessageSelection.btnCancel; } if (currentComponent.getName().equals(MessageSelectionPanel.BTN_OK)) { returnComponent = reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber; } if (currentComponent.getName().equals(MessageSelectionPanel.BTN_CANCEL)) { returnComponent = reviewMessagesDialog.pnlMessageSelection.btnOK; } } } else { //pnlMessageSelection is not visible if (transferFocusForward) { if (currentComponent.getName().equals(MessageAcknowledgementPanel.SEQ_NUMBER)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.FLD_INV_QTY)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.FLD_PRICE)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.FLD_CUSTOMER_NUM)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_SEARCH)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_PRINT)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_SPECIAL_ORDERS)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_INVOICING_ORDERS)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_ACKNOWLEDGE)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_PREV)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_NEXT)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnClose; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_CLOSE)) { if (reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber; } } } else { if (currentComponent.getName().equals(MessageAcknowledgementPanel.SEQ_NUMBER)) { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnClose; } } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.FLD_INV_QTY)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.FLD_PRICE)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_SEARCH)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_PRINT)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_SPECIAL_ORDERS)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_INVOICING_ORDERS)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_ACKNOWLEDGE)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_PREV)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_NEXT)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage; } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_CLOSE)) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage; } } } return returnComponent; } private boolean validateSeqSelection() { String value = reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber.getText(); if (value.trim().length() == 0 ) { return true; } switch(value.charAt(0)) { case 'A': if (reviewMessagesDialog.pnlMessageSelection.chkProlink.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkProlink.setSelected(true); } if (reviewMessagesDialog.pnlMessageSelection.chkInterstore.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkInterstore.setSelected(true); } if (reviewMessagesDialog.pnlMessageSelection.chkJoei.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkJoei.setSelected(true); } if (reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.setSelected(true); } if (reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.setSelected(true); } if (reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.setSelected(true); } if (reviewMessagesDialog.pnlMessageSelection.chkReturns.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkReturns.setSelected(true); } setPanelTimeout(true); SwingUtilities.invokeLater(new Runnable() { public void run() { reviewMessagesDialog.pnlMessageSelection.btnOK.doClick(); } }); return false; case '1': if (reviewMessagesDialog.pnlMessageSelection.chkJoei.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkJoei.setSelected( !reviewMessagesDialog.pnlMessageSelection.chkJoei.isSelected()); setPanelTimeout(true); } break; case '2': if (reviewMessagesDialog.pnlMessageSelection.chkInterstore.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkInterstore.setSelected( !reviewMessagesDialog.pnlMessageSelection.chkInterstore.isSelected()); setPanelTimeout(true); } break; case '3': if (reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.setSelected( !reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.isSelected()); setPanelTimeout(true); } break; case '4': if (reviewMessagesDialog.pnlMessageSelection.chkProlink.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkProlink.setSelected( !reviewMessagesDialog.pnlMessageSelection.chkProlink.isSelected()); setPanelTimeout(true); } break; case '5': if (reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.setSelected( !reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.isSelected()); setPanelTimeout(true); } break; case '6': if (reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.setSelected( !reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.isSelected()); setPanelTimeout(true); } break; case '7': if (reviewMessagesDialog.pnlMessageSelection.chkReturns.isEnabled()) { reviewMessagesDialog.pnlMessageSelection.chkReturns.setSelected( !reviewMessagesDialog.pnlMessageSelection.chkReturns.isSelected()); setPanelTimeout(true); } break; default: return false; } reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber.setText(""); return false; } public JComponent getFocusableComponentAfterVerification(JComponent currentComponent, boolean transferFocusForward) { JComponent returnComponent = null; if (reviewMessagesDialog.pnlMessageAcknowledgement.isVisible()) { if (currentComponent.getName().equals(MessageAcknowledgementPanel.SEQ_NUMBER)) { if (transferFocusForward) { if (reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.isVisible()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint; } } else { if (reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnClose; } } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.BTN_SEARCH)) { if (transferFocusForward) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum; } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.FLD_INV_QTY)) { if ((reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText() == null || reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText().equals("")) && (reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.getText() != null && !reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.getText().equals(""))) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty; } else { if (transferFocusForward) { if (reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber; } } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber; } } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.FLD_PRICE)) { if ((reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.getText() == null || reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.getText().equals("")) && (reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.getText() != null && !reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.getText().equals(""))) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice; } else { if (transferFocusForward) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty; } } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.BTN_PRINT)) { if (transferFocusForward) { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage; } } else { if (reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.isVisible()) { if (reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty; } } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber; } } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.BTN_SPECIAL_ORDERS)) { if (transferFocusForward) { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnClose; } } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.BTN_INVOICING_ORDERS)) { if (transferFocusForward) { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge; } else { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnClose; } } } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders; } } else if (currentComponent.getName().equals( MessageAcknowledgementPanel.BTN_ACKNOWLEDGE)) { if (transferFocusForward) { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage; } else if(reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage .isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnClose; } } else { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint; } } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.BTN_PREV)) { if (transferFocusForward) { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnClose; } } else { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders; } } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.BTN_NEXT)) { if (transferFocusForward) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnClose; } else { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders; } } } else if (currentComponent.getName().equals(MessageAcknowledgementPanel.BTN_CLOSE)) { if (transferFocusForward) { if (reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber; } } else { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage; } else if (reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage; } else { if (reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled()) { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge; } else { returnComponent = reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders; } } } } } return returnComponent; } public IView getView() { return reviewMessagesDialog; } public void setViewVisible(boolean visible) { int applicationType = clientApplicationContext.getApplicationType(); if (visible) { //check if there is a MessageLock. Returns ID if no lock. if (applicationType == ClientApplicationContext.PARTS_PRO_II) { Integer lockID = clientApplicationContext.getMessageDAO().getMessageLockID(); if (lockID != null) { messageLockID = lockID; } else { //1393 Messages are being reviewed elsewhere. Please try again later. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageSelection, "1393"); dialogClosing(); return; } } reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber.requestFocusInWindow(); visible = setSelectData(); if (applicationType == ClientApplicationContext.PARTS_PRO_II) { if (visible ) { setPanelTimeout(true); } else { setPanelTimeout(false); clientApplicationContext.getMessageDAO().messageUnlock(messageLockID); } } } reviewMessagesDialog.pnlMessageSelection.btnCancel.dispatchEvent(new KeyEvent( reviewMessagesDialog.pnlMessageSelection.btnCancel, KeyEvent.KEY_PRESSED, new Date().getTime(), 0, KeyEvent.VK_TAB, '\t')); reviewMessagesDialog.validate(); reviewMessagesDialog.setVisible(visible); } private void specialOrder() { // have to run each modal in a new SwingUtitlies.invokeLater() to avoid double focus logger.debug("specialOrder()"); try { messageHeaderVO.setSplOrderByEmpID(clientApplicationContext.getCurrentUser().getEmployeeId()); clientApplicationContext.getMessageDAO().updateSplOrderedByEmpId(messageHeaderVO); } catch (ApplicationException e) { logger.debug( "Insert Special Ordered by Employee id failed"+e); } //1242 = Do you wish to special order all items? if (clientApplicationContext.getMessageMgr().showMessageYesNo(reviewMessagesDialog, "1242")) { InvoiceVO invoiceVO = createInvoiceVO(); launchSpecialOrderThread2(invoiceVO); }else{ try { messageHeaderVO.setSplOrderByEmpID(null); clientApplicationContext.getMessageDAO().updateSplOrderedByEmpId(messageHeaderVO); } catch (ApplicationException e) { logger.debug( "Special Ordered by Employee id is not removed"+e); } } } private void launchSpecialOrderThread2(final InvoiceVO invoiceVO) { // have to run each modal in a new SwingUtitlies.invokeLater() to avoid double focus logger.debug("launchSpecialOrderThread2()"); SwingUtilities.invokeLater(new Runnable() { public void run() { Profile profile = clientApplicationContext.getProfile(Profile.POINT_OF_SALE_CLIENT, clientApplicationContext.getLocation()); if (profile.getInvoicingProfile().getGenerateSavedInvFromJOEI().booleanValue() && profile.getInvoicingProfile().getUpdateWIPWithSavedInvoices().booleanValue()) { if (profile.getInvoicingProfile().getGenerateSavedInvFromJOEI().booleanValue() && profile.getInvoicingProfile().getdefaultWIPAnswer().booleanValue()) { invoiceVO.setWorkInProgressUpdated(new Boolean ( //862 = Work in progress? clientApplicationContext.getMessageMgr().showMessageYesNo(reviewMessagesDialog, "862"))); }else{ invoiceVO.setWorkInProgressUpdated(new Boolean ( //862 = Work in progress? clientApplicationContext.getMessageMgr().showMessageNoYes(reviewMessagesDialog, "862"))); } } logger.debug("launchSpecialOrderThread2 -- calling launchSpecialOrderThread3"); launchSpecialOrderThread3(invoiceVO, profile); } }); } private void launchSpecialOrderThread3(final InvoiceVO invoiceVO, final Profile profile) { // have to run each modal in a new SwingUtitlies.invokeLater() to avoid double focus logger.debug("launchSpecialOrderThread3()"); SwingUtilities.invokeLater(new Runnable() { public void run() { // createLineItems() shows a modal, so it must be in its own SwingUtitlites.invokeLater(). Vector lineItems = createLineItems(false, "J", invoiceVO); if(lineItems != null) { logger.debug("launchSpecialOrderThread3 -- calling launchSpecialOrderThread4"); launchSpecialOrderThread4(invoiceVO, lineItems, profile); }else{ try { messageHeaderVO.setSplOrderByEmpID(null); clientApplicationContext.getMessageDAO().updateSplOrderedByEmpId(messageHeaderVO); } catch (ApplicationException e) { logger.debug( "Special Ordered by Employee id is not removed"+e); } } } }); } private void launchSpecialOrderThread4(final InvoiceVO invoiceVO, final Vector lineItems, final Profile profile) { // have to run each modal in a new SwingUtitlies.invokeLater() to avoid double focus logger.debug("launchSpecialOrderThread4()"); SwingUtilities.invokeLater(new Runnable() { public void run() { invoiceVO.setLineItems(lineItems); reviewMessagesDialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); // create the ProcessingThread to pass to MessageWithoutOptionController. processingThread = new Thread(new Runnable() { public void run() { if (profile.getInvoicingProfile().getGenerateSavedInvFromJOEI().booleanValue()) { InvoiceInitializerFunctions.sequenceLines(invoiceVO.getLineItems()); InvoiceInitializerFunctions.prepareForTransaction(invoiceVO); try { clientApplicationContext.getInvoiceDAO().saveInvoice(invoiceVO, messageHeaderVO.getCustomerVO()); } catch(ApplicationException ae) { try { messageHeaderVO.setSplOrderByEmpID(null); clientApplicationContext.getMessageDAO().updateSplOrderedByEmpId(messageHeaderVO); } catch (ApplicationException e) { logger.debug( "Special Ordered by Employee id is not removed"+e); } clientApplicationContext.getMessageMgr().showMessage(ae.getUserMessageID(), ae.getUserMessageParameters()); } } SwingUtilities.invokeLater(new Runnable() { public void run() { ((JDialog) messageWithoutOptionController.getView()).setVisible(false); reviewMessagesDialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.dispatchEvent( new KeyEvent(reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders, KeyEvent.KEY_PRESSED, new Date().getTime(), 0, KeyEvent.VK_TAB, '\t')); } }); } }); //1252 = Please wait, processing special order. messageWithoutOptionController.setMessageText("1252"); messageWithoutOptionController.setProcessingThread(processingThread); ((JDialog) messageWithoutOptionController.getView()).setVisible(true); ((JDialog)messageWithoutOptionController.getView()).requestFocus(); } }); } public PointOfSaleVO getModel() { return messageHeaderVO; } public void installViewListeners() { reviewMessagesDialog.pnlMessageSelection.btnNXPOrderHistory.addActionListener(this); reviewMessagesDialog.pnlMessageSelection.btnCancel.addActionListener(this); reviewMessagesDialog.pnlMessageSelection.btnOK.addActionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.addListSelectionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnClose.addActionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnClose.addFocusListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint.addActionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.addActionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.addActionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.addActionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.addFocusListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.addFocusListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.addActionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.addFocusListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.addActionListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.addFocusListener(this); reviewMessagesDialog.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnSearch.addActionListener(this); reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.btnNXPOrderHistory.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.btnCancel.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.btnOK.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnClose.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.addKeyListener(this); reviewMessagesDialog.pnlMessageAcknowledgement.btnPreviousMessage.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.chkInterstore.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.chkJoei.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.chkProlink.addKeyListener(this); reviewMessagesDialog.pnlMessageSelection.chkReturns.addKeyListener(this); } public void installBusinessListeners() { } public void installVerifiers() { FwoBaseInputVerifier baseInputVerifier = new FwoBaseInputVerifier(this); baseInputVerifier.setAdditionalValidationOnClient(true); reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber.setInputVerifier( baseInputVerifier); reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.setDocument( new FwoValidatedWholeNumberDocument( reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber)); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.setDocument( new QuantityDocument()); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.setInputVerifier( new QuantityVerifier(this, true)); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.setDocument( new FwoValidatedDecimalNumberDocument( reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice, FwiConstant.DOUBLE_MIN_VALUE, FwiConstant.DOUBLE_MAX_VALUE, 4, 4)); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.setInputVerifier( baseInputVerifier); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.setInputVerifier( baseInputVerifier); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.setDocument( new FwoValidatedWholeNumberDocument( reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum)); reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.setInputVerifier(baseInputVerifier); } public void installFocusDeciders() { reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.putClientProperty( FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.putClientProperty( FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.putClientProperty( FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageAcknowledgement.btnPrint.putClientProperty(FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.putClientProperty( FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.putClientProperty( FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.putClientProperty( FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageAcknowledgement.btnNextMessage.putClientProperty( FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageAcknowledgement.btnClose.putClientProperty(FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber.putClientProperty( FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageSelection.btnCancel.putClientProperty(FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageSelection.btnOK.putClientProperty(FocusDecider.NAME, this); reviewMessagesDialog.pnlMessageSelection.btnNXPOrderHistory.putClientProperty(FocusDecider.NAME, this); } private boolean addPart(MessagePartVO messagePartVO) { InventoryVO inventoryVO = new InventoryVO(); String partNumber = FwoUtil.stripChars(messagePartVO.getPartNumber(), new char[] {PartNumberFormatCertifier.DASH, PartNumberFormatCertifier.FORWARD_SLASH, PartNumberFormatCertifier.PERIOD, PartNumberFormatCertifier.SPACE}); inventoryVO.setPartNumber(partNumber); inventoryVO.setLineAbbrev(messagePartVO.getLineAbbrev()); inventoryVO.setLOC(messagePartVO.getLOC()); if (MessageBL.doesMessageContainNOLOrder(messageHeaderVO)) { inventoryVO.setCoreCost(messagePartVO.getCorePrice()); inventoryVO.setCost(messagePartVO.getQuotedPrice()); } else { inventoryVO.setCoreCost(new BigDecimal("0.00")); inventoryVO.setCost(new BigDecimal("0.00")); } try { if (clientApplicationContext.getInventoryDAO().getProductLineVO(messagePartVO.getLineAbbrev()) != null && clientApplicationContext.getInventoryDAO().quickAddPart(inventoryVO, clientApplicationContext.getCurrentUser().getEmployeeId(), "PointOfSale")) { } else { final String strArray [] = {inventoryVO.getPartNumber(), inventoryVO.getLineAbbrev()}; SwingUtilities.invokeLater(new Runnable() { public void run() { if (MessageBL .doesMessageContainNOLOrder(messageHeaderVO)) { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "10125", strArray); }else{ clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "2233", strArray); } } }); return false; } } catch (ApplicationException ae) { clientApplicationContext.getMessageMgr().showMessage(ae.getUserMessageID(), ae.getUserMessageParameters()); return false; } messagePartVO.setPrice(InvoiceLineBL.getPrices(messageHeaderVO.getCustomerVO().getID(), messageHeaderVO.getCustomerVO().getCustomerTypeCD(), messagePartVO.getPartNumber(), messagePartVO.getLineAbbrev(), messagePartVO.getInvoiceQty().compareTo(new BigDecimal( "0.00")) == 0 ? new BigDecimal("1.00") : messagePartVO.getInvoiceQty())); return true; } /** * This method returns the count of messages items attached to a message part and removes the * vehicle note if exist for a message part from the invoice line item list. * * @param invoiceLineItems - Indicates message part records added to an invoice. * @param existingMessageItems - Indicates the displayed messages. * @param index - Index of part used for comparison in the message list * @return Count of records associated with a message part */ private int handlePoMessageFirst(Vector invoiceLineItems, Vector existingMessageItems, int index) { int partSeq = -1; int count = 1; MessageBaseVO nextBase = (MessageBaseVO) existingMessageItems.get(index + 1); // check for catalog note and remove it if (!invoiceLineItems.isEmpty() && invoiceLineItems.lastElement() instanceof MessageTextVO) { MessageTextVO prevMessageTextVO = (MessageTextVO) invoiceLineItems.lastElement(); if (!MessageBL.doesMessageTextContainPONumber(prevMessageTextVO.getText()) && prevMessageTextVO.getAttachedToMessagePartSeq() == null) { invoiceLineItems.remove(invoiceLineItems.lastElement()); } } if (nextBase instanceof MessagePartVO) { partSeq = ((MessagePartVO) nextBase).getSequence().intValue(); } for (int j = index + 2; j < existingMessageItems.size(); j++) { MessageBaseVO messageBase = (MessageBaseVO) existingMessageItems.get(j); if (partSeq != -1 && messageBase instanceof MessageTextVO && ((MessageTextVO) messageBase).getAttachedToMessagePartSeq() != null && ((MessageTextVO) messageBase).getAttachedToMessagePartSeq().intValue() == partSeq) { count++; } } return count; } /** * This method removes the part which is already added to the invoice line item list which has * different PO number and also to remove vehicle notes if it exist for that part. * * @param messageTextVO - Indicates MessageTextVO object of PO message record in an order. * @param invoiceLineItems - Indicates message part records added to an invoice. */ private void handlePoMessageLast(MessageTextVO messageTextVO, Vector invoiceLineItems) { int attachedToMessagePartSeq = messageTextVO.getAttachedToMessagePartSeq().intValue(); for (int j = (invoiceLineItems.size() - 1); j >= 0; j--) { MessageBaseVO messageBase = (MessageBaseVO) invoiceLineItems.get(j); if (messageBase instanceof MessageTextVO && ((MessageTextVO) messageBase).getAttachedToMessagePartSeq() != null && ((MessageTextVO) messageBase).getAttachedToMessagePartSeq().intValue() == attachedToMessagePartSeq) { invoiceLineItems.remove(messageBase); } else if (messageBase instanceof MessagePartVO && ((MessagePartVO) messageBase).getSequence().intValue() == attachedToMessagePartSeq) { invoiceLineItems.remove(messageBase); // check for catalog note and remove it if (!invoiceLineItems.isEmpty() && invoiceLineItems.lastElement() instanceof MessageTextVO) { MessageTextVO prevMessageTextVO = (MessageTextVO) invoiceLineItems .lastElement(); if (!MessageBL.doesMessageTextContainPONumber(prevMessageTextVO.getText()) && prevMessageTextVO.getAttachedToMessagePartSeq() == null) { invoiceLineItems.remove(invoiceLineItems.lastElement()); j--; } } } } } private Vector createLineItems(boolean checkStock, String processMethod, InvoiceVO invoiceVO) { logger.debug("entered createLineItems...."); Vector existingMessageItems = ((InvoiceListModel) reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.getModel()).getData(); logger.debug("existingMessagesItems.size() = " + existingMessageItems.size()); Vector messageItems = new Vector(); boolean zeroMessageDisplayed = false; boolean itemNotAvailableMessageDisplayed = false; boolean doMultiplePoNumbersExist = false; boolean isProlink = false; int sequence = 0; MessagePartVO previousGoodPart = null; // remember last added part for linking text to Vector skippedItems = new Vector(); String partNumber = null; String lineAbbrevation = null; String message = null; for (int i = 0; i < existingMessageItems.size(); i++) { MessageBaseVO messageBaseVO = (MessageBaseVO) existingMessageItems.get(i); //check for po if (messageBaseVO instanceof MessageTextVO) { MessageTextVO messageTextVO = (MessageTextVO) messageBaseVO; if (MessageBL.doesMessageTextContainPONumber(messageTextVO.getText()) && (sequence == 0 || (!isProlink && (sequence+1!=messageTextVO.getSequence().intValue())))) { //check if we already have a PO in this order if (invoiceVO.getPONumber() != null && invoiceVO.getPONumber().length() > 0) { if ((messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.INTERSTORE || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.NAPA_ONLINE || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.PROLINK || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.NAPA_ACCESS || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.DIRECT_SHIPMENT_MESSAGES || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.RETURNS) && (i - 1) >= 0) { // ck index // Check if parts in a message have same PO number. if (!invoiceVO.getPONumber().equals( cleanPONumber(messageTextVO.getText()))) { if (!doMultiplePoNumbersExist) { clientApplicationContext.getMessageMgr().showMessage( reviewMessagesDialog, "1391"); doMultiplePoNumbersExist = true; } // If PO message record is associated to a part // and sequenced at the last. if (messageTextVO.getAttachedToMessagePartSeq() != null && messageTextVO.getAttachedToMessagePartSeq().intValue() > 0) { handlePoMessageLast(messageTextVO, messageItems); } else { // If PO message record is not associated to // a part and sequenced at the first. int count = handlePoMessageFirst(messageItems, existingMessageItems, i); i = i + count; continue; } } else { sequence = messageTextVO.getSequence().intValue(); } } } else { final boolean isNXPInterStoreOrder = isNXPInterStoreOrder(invoiceVO); //PROLINK messages have PO first and they are not attached to a part // Modified if condition to check whether PO record sequenced at first based // on the AttachedToMessagePartSeq() is null instead of i = 0. if ((messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.NAPA_ONLINE || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.PROLINK || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.NAPA_ACCESS || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.DIRECT_SHIPMENT_MESSAGES || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.RETURNS || isNXPInterStoreOrder) && (messageTextVO.getAttachedToMessagePartSeq() == null || messageTextVO .getAttachedToMessagePartSeq().intValue() == 0)) { /* ACT #43910, removed test for next line being a Part: If 1st line is PO# and 2nd * line is Vehicle Info or Customer Info (address, attn, etc.), then the PO number * was being thrown away -- it should be set even if the next line is text-only. */ // Bug #32038, modified code to remove the hard coded value "PO# " from the purchase order number. invoiceVO.setPONumber(cleanPONumber(messageTextVO.getText())); if(messageTextVO.getSequence().intValue() == 1){ if(isNXPInterStoreOrder){ sequence = messageTextVO.getSequence().intValue(); } else { isProlink = true; sequence = messageTextVO.getSequence().intValue(); } } else { sequence = messageTextVO.getSequence().intValue(); } //NAPA Access/non PROLINK and //Interstore messages have PO somewhere after the part and they are attached to a part } else if ((messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.INTERSTORE || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.NAPA_ONLINE || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.PROLINK || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.NAPA_ACCESS || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.DIRECT_SHIPMENT_MESSAGES || messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.RETURNS) && (i - 1) >= 0) { // ck index MessageBaseVO prevBase = (MessageBaseVO) existingMessageItems.get(i - 1); if (prevBase instanceof MessagePartVO) { if (((MessagePartVO) prevBase).getProcessMethod() == null) { //Bug #32038, modified code to remove the hard coded value "PO# " from the purchase order number. invoiceVO.setPONumber(cleanPONumber(messageTextVO.getText())); if(messageTextVO.getSequence().intValue() == 1){ isProlink = true; sequence = messageTextVO.getSequence().intValue(); } else { sequence = messageTextVO.getSequence().intValue(); } } else { continue; } } else if ((i - 2) >= 0 && prevBase instanceof MessageTextVO) { MessageBaseVO prev2Base = (MessageBaseVO) existingMessageItems .get(i - 2); MessageBaseVO messageBase = prev2Base; // Added this if condition to check if multiple message text records // are attached to a part. if (prev2Base instanceof MessageTextVO && (i - 3) >= 0) { MessageBaseVO prev3Base = (MessageBaseVO) existingMessageItems .get(i - 3); messageBase = prev3Base; } if (messageBase instanceof MessagePartVO && ((MessagePartVO) messageBase).getProcessMethod() == null) { // Bug #32038, modified code to remove the hard coded value // "PO# " from the purchase order number. invoiceVO.setPONumber(cleanPONumber(messageTextVO.getText())); if(messageTextVO.getSequence().intValue() == 1){ isProlink = true; sequence = messageTextVO.getSequence().intValue(); } else { sequence = messageTextVO.getSequence().intValue(); } } else { continue; } } }//EJOEI messages we never special order or invoice parts. We just view messages to DC. } } else if (messageTextVO.getText().toUpperCase().startsWith(ATTN_MSG)) { invoiceVO.setAttention(cleanAttention(messageTextVO.getText())); }else if (messageTextVO.getText().toUpperCase().startsWith(NOL_ORDER_MSG)) { invoiceVO.setPONumber(cleanPONumber(messageTextVO.getText())); // messageItems.add(messageTextVO); logger.debug("PoNumber = " + invoiceVO.getPONumber()); } else { // text msg if not attached to part and text does not start with "PO" // see tech notes from Michelle in bug 21908 if(messageTextVO.getAttachedToMessagePartSeq() == null) { messageItems.add(messageTextVO); continue; } //check if we already added the part that is attached to this message if (messageItems.isEmpty()) { continue; } //if text is pointing back to a valid Part that was added last, keep text if (previousGoodPart != null && previousGoodPart.getSequence() .equals(messageTextVO.getAttachedToMessagePartSeq())) { messageItems.add(messageTextVO); } } } if (messageBaseVO instanceof MessagePartVO) { previousGoodPart = null; // if this part passes, prev will be set to this one MessagePartVO messagePartVO = (MessagePartVO) messageBaseVO; if (messagePartVO.getProcessMethod() != null && messagePartVO.getProcessMethod().length() > 0) { continue; } if (!isDeliveryLineItem(messagePartVO) && !InvoiceBL.doesPartExistInInvOrDVD(messagePartVO.getPartNumber(), messagePartVO.getLineAbbrev(), messageHeaderVO.getCustomerVO())) { String partInfo [] = {messagePartVO.getLineAbbrev(), messagePartVO.getPartNumber()}; //1250 = $1 $2 not found in inventory. Do you wish to add it to inventory ? if (MessageBL.doesMessageContainNOLBOPISOrder(messageHeaderVO) || clientApplicationContext.getMessageMgr().showMessageYesNo( reviewMessagesDialog, "1250", partInfo)) { InventoryProfileVO inventoryProfileVO = ApplicationContext .getInstance().getProfile(Profile.POINT_OF_SALE_CLIENT, ClientApplicationContext .getClientApplicationContext() .getLocation()).getInventoryProfile(); Integer partNumberLength = inventoryProfileVO.getPartNumberLength(); if (messagePartVO.getPartNumber().length() > partNumberLength.intValue()) { final String[] partNumLength = { partNumberLength.toString() }; SwingUtilities.invokeLater(new Runnable() { public void run() { ClientApplicationContext.getClientApplicationContext() .getMessageMgr().showMessage(reviewMessagesDialog, "9561",partNumLength); } }); if(messagePartVO.isProductKit()){ incompleteKitTracker.add(messagePartVO.getSequence()); } if(messagePartVO.isKitComponent()){ incompleteKitTracker.add(messagePartVO.getGeneratedBySequence()); } continue; } else { final boolean partAdded = addPart(messagePartVO); if (partAdded) { // even though we added the part, it has a 0 // price now so they will neeed to go back if (!MessageBL.doesMessageContainNOLBOPISOrder(messageHeaderVO) && !zeroMessageDisplayed && !messagePartVO.isKitComponent()) { // 1249 = Item(s) priced at zero. Cannot // invoice these items until prices are // added to inventory. clientApplicationContext.getMessageMgr() .showMessage(reviewMessagesDialog, "1249"); zeroMessageDisplayed = true; } messagePartVO.setMessagePartStatus(null); } if (MessageBL.doesMessageContainNOLBOPISOrder(messageHeaderVO)) { if (!partAdded) { return null; } } /* * If it is not a component, we do not allow it to get invoiced even if * part is added to inventory. But if it is a component adding a part * should be enough. */ if((!messagePartVO.isKitComponent() || (messagePartVO.isKitComponent() && !partAdded)) && !MessageBL.doesMessageContainNOLBOPISOrder(messageHeaderVO)){ continue; } } } else { if (!itemNotAvailableMessageDisplayed) { // 1249 = Item(s) priced at zero. Cannot // invoice these items until prices are // added to inventory. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1178"); itemNotAvailableMessageDisplayed = true; } if(messagePartVO.isProductKit()){ incompleteKitTracker.add(messagePartVO.getSequence()); } if(messagePartVO.isKitComponent()){ incompleteKitTracker.add(messagePartVO.getGeneratedBySequence()); } continue; } } if(messagePartVO.isProductKit()){ if(messagePartVO.getQuotedPrice().signum() == 0){ incompleteKitTracker.add(messagePartVO.getSequence()); if (!zeroMessageDisplayed) { //1249 = Item(s) priced at zero. Cannot invoice these items until prices are added to inventory. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1249"); zeroMessageDisplayed = true; continue; } } else { if (messagePartVO.getOrderQty().signum() > 0 || messagePartVO.getOrderQty().signum() < 0) { messageItems.add(messagePartVO); previousGoodPart = messagePartVO; } else { incompleteKitTracker.add(messagePartVO.getGeneratedBySequence()); } } } else if(messagePartVO.isKitComponent()){ if (messagePartVO.getOrderQty().signum() > 0 || messagePartVO.getOrderQty().signum() < 0) { messageItems.add(messagePartVO); previousGoodPart = messagePartVO; } else { incompleteKitTracker.add(messagePartVO.getGeneratedBySequence()); } } else { if (!MessageBL.doesMessageContainNOLBOPISOrder(messageHeaderVO) && null != messagePartVO.getPrice() && messagePartVO.getPrice().getUnitPrice().signum() == 0) { if (!zeroMessageDisplayed) { //1249 = Item(s) priced at zero. Cannot invoice these items until prices are added to inventory. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1249"); zeroMessageDisplayed = true; continue; } } else { if (messagePartVO.getOrderQty().signum() > 0 || messagePartVO.getOrderQty().signum() < 0) { messageItems.add(messagePartVO); previousGoodPart = messagePartVO; // remember for attaching text-only // lines to } } } } } /* if attached text messages exist, ask user if they want these included in special order / or invoice*/ boolean attMsgExist = MessageBL.attachedMessagesExist(existingMessageItems); boolean includeCustMsg = false; boolean doesMessageContainNOLBopisOrder = MessageBL .doesMessageContainNOLBOPISOrder(messageHeaderVO); invalidateClientApplicationContext(); Profile profile = clientApplicationContext.getProfile(Profile.POINT_OF_SALE_CLIENT, clientApplicationContext.getLocation()); LockableBoolean printCustomerMessageFlag= profile.getInvoicingProfile().getPrintCustomerMessageOnInvoice(); if (attMsgExist) { if (!doesMessageContainNOLBopisOrder && !printCustomerMessageFlag.booleanValue()) { // 1238 = Do you wish to print the customer messages on the invoice? includeCustMsg = clientApplicationContext.getMessageMgr() .showMessageYesNo(reviewMessagesDialog, "1238"); } else if (doesMessageContainNOLBopisOrder|| printCustomerMessageFlag.booleanValue()) { includeCustMsg = true; } } /* if items are being invoiced and not special ordered, check stock */ boolean insfStockExists = false; boolean invInsfStockParts = false; if (checkStock) { insfStockExists = MessageBL.insufficientStockExists(messageItems); final boolean nxpInUse= clientApplicationContext.getProfile( Profile.POINT_OF_SALE_CLIENT, clientApplicationContext.getLocation()) .getStoreProfile().getUseNapaXpress().booleanValue(); if(nxpInUse && insfStockExists || (messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.RETURNS)) { invInsfStockParts = true; } else if (insfStockExists) { //1237 = Do you wish to invoice parts with insufficient stock? invInsfStockParts = clientApplicationContext.getMessageMgr().showMessageYesNo( reviewMessagesDialog, "1237"); } } Short messagePartSequence = null; Vector lineItems = new Vector(); BaseLineItemVO msgBaseLineItemVO = null; for (int i = 0; i < existingMessageItems.size(); i++) { MessageBaseVO messageBaseVO = (MessageBaseVO) existingMessageItems.get(i); if (messageBaseVO instanceof MessagePartVO) { MessagePartVO messagePartVO = (MessagePartVO) messageBaseVO; if(messagePartVO.isProductKit() && incompleteKitTracker.contains(messagePartVO.getSequence())){ continue; } if(messagePartVO.isKitComponent() && incompleteKitTracker.contains(messagePartVO.getGeneratedBySequence())){ continue; } if(itemNotAvailableMessageDisplayed) { String messagePartStatus = ""; String languageCD = clientApplicationContext.getCurrentLocale().getLanguage(); if(languageCD != null) { messagePartStatus = String.valueOf(clientApplicationContext.getTranslationDAO(). findTranslation("REF_MESSAGE_PART_STATUS", "DESCRIPTION", languageCD, "N")); } if (messagePartVO.getMessagePartStatus() != null && messagePartVO.getMessagePartStatus().toString().equalsIgnoreCase(messagePartStatus)){ partNumber = messagePartVO.getPartNumber(); lineAbbrevation = messagePartVO.getLineAbbrev(); String text = ""; final ResourceBundleReader resourceBundleReader = clientApplicationContext .getResourceBundleReader(); final Locale currentLocale = clientApplicationContext.getCurrentLocale(); if (resourceBundleReader != null && currentLocale != null) { text = resourceBundleReader.getLocalizedText(ResourceBundleReader.UI, "PROLINK_PART_DELETED", currentLocale); } text = (text != null && !text.equals("")) ? text : "Part Not Invoiced: %s - %s"; message = String.format(text,lineAbbrevation,partNumber); skippedItems.add(message); continue; } } /* * Add the part if it is special ordered and we don't need to * check stock, it is / invoiced and insufficient stock does not * exist, insufficient stock does exist but / the user wants to * invoice these parts anyway, or insufficient stock does exist * in / the list but this particular part does not have * insufficient stock and the quoted / price is not 0. */ if ((!checkStock || !insfStockExists || (insfStockExists && invInsfStockParts) || (insfStockExists && !invInsfStockParts && !MessageBL .insufficientStockExists(messagePartVO)))) { messagePartVO.setProcessedDate(new Date()); messagePartVO .setProcessedByEmployeeID(clientApplicationContext .getCurrentUser().getEmployeeId()); messagePartVO.setProcessMethod(processMethod); int recNum = (messagePartVO.getSequence().intValue()) + messagePartVO.getMessageHeaderID().intValue(); messagePartVO.setMessageRecID(new Integer(recNum)); boolean updateFlag = false; try { updateFlag = clientApplicationContext.getMessageDAO() .updateMessagePart(messageLockID, messageHeaderVO, messagePartVO) .booleanValue(); } catch (ApplicationException ae) { logger .error("Error updating MessagePartVO, partNumber= " + messagePartVO.getPartNumber()); logger.error("Error in createLineItems: ae= " + ae.toString()); clientApplicationContext.getMessageMgr().showMessage( reviewMessagesDialog.pnlMessageSelection, "2229"); // dialogClosing(); } if (updateFlag) { BaseLineItemVO baseLineItemVO = MessageBL.createLineItemVO(messagePartVO, messageHeaderVO, invoiceVO, messagePartVO.isKitComponent()); /* * We need parent line for kit component. */ messageToBaseLineItems.put(messagePartVO.getSequence(), baseLineItemVO); messagePartSequence = null; if (processMethod.equals("J")) { MessageBL.createJoeiPreload(messagePartVO, invoiceVO.getCustomerID()); } else { final InventoryVO inventoryVO = clientApplicationContext.getInventoryDAO().getPartDetailInfo( messageHeaderVO.getCustomerVO(), messagePartVO.getPartNumber(), messagePartVO.getLineAbbrev(), false); if(messagePartVO.isProductKit()){ baseLineItemVO.setKitPart(true); baseLineItemVO.setUnitCost(new BigDecimal("0.00")); baseLineItemVO.setUnitPrice(messagePartVO.getQuotedPrice()); baseLineItemVO.setDisplayUnitPrice(messagePartVO.getDisplayQuotedPrice()); baseLineItemVO.setUnitListPrice(messagePartVO.getListPrice()); baseLineItemVO.setDisplayUnitListPrice(InvoiceLineBL.getDisplayPriceFromUnitPrice( messagePartVO.getQuotedPrice(), baseLineItemVO, null, messageHeaderVO.getCustomerVO(), inventoryVO, null)); } if(messagePartVO.isKitComponent()){ if(messagePartVO.getGeneratedBySequence() != null){ final BaseLineItemVO productKit = (BaseLineItemVO)messageToBaseLineItems.get(messagePartVO.getGeneratedBySequence()); if(productKit == null){ continue; } productKit.setVirtualKit(true); baseLineItemVO.setKitPart(true); baseLineItemVO.setUnitCost(new BigDecimal("0.00")); if(productKit.getComponents() == null){ productKit.setComponents(new ArrayList()); } ((KitLineItemVO)baseLineItemVO).setRequiredQuantity( baseLineItemVO.getQuantityBilled().divide( productKit.getQuantityBilled(), BigDecimal.ROUND_UNNECESSARY)); productKit.getComponents().add(baseLineItemVO); InvoiceLineBL.logKitMismatchIfAny(productKit,messageHeaderVO.getCustomerVO()); continue; } } } /* * If the previous item was a text message (but not PO: ...) * and not associated to a Part Seq, and is a Vehicle Info type, * then it needs to be associated to this part; make it so. */ if (i != 0 && existingMessageItems.get(i - 1) instanceof MessageTextVO) { MessageTextVO messageTextVO = (MessageTextVO) existingMessageItems.get(i - 1); if (!MessageBL.doesMessageTextContainPONumber(messageTextVO.getText()) && messageTextVO.getAttachedToMessagePartSeq() == null) { if (lineItems.size()>0 && lineItems.lastElement() instanceof InvoiceNoteVO) { InvoiceNoteVO invoiceNoteVO = (InvoiceNoteVO) lineItems.lastElement(); if (invoiceNoteVO.getRefInvoiceNoteTyepID().intValue() == RefInvoiceNoteType.CATALOGING_VEHICLE_INFORMATION_MESSAGE) { invoiceNoteVO.setGeneratedByLineItem(baseLineItemVO); } } } } /* * The following lines of code checks for processing Method as * special orders and kit part number and gets the components associated with that * kit part number then adds it to lineItems. */ if (baseLineItemVO.isKitPart() && processMethod.equals("J")) { PricesOutVO priceVO = InvoiceLineBL.getPrices( messageHeaderVO.getCustomerVO().getID(), messageHeaderVO.getCustomerVO() .getCustomerTypeCD(), baseLineItemVO.getPartNum(), baseLineItemVO .getLineAbbr(), baseLineItemVO .getQuantityBilled()); LineGenerationQueue.getInstance().addLineItem(invoiceVO, baseLineItemVO, messageHeaderVO.getCustomerVO(), priceVO, null, true); while (!LineGenerationQueue.getInstance().isEmpty()) { lineItems .add((InvoiceLineItemVO) LineGenerationQueue .getInstance() .getNextLineItem()); } } else { lineItems.add(baseLineItemVO); } } else { /* * this part was not added. Keep a record of the * sequence so that the / associated text message is not * added. */ messagePartSequence = messagePartVO.getSequence(); } } else { /* * this part was not added. Keep a record of the sequence so * that the / associated text message is not added. */ messagePartSequence = messagePartVO.getSequence(); } } else { MessageTextVO messageTextVO = (MessageTextVO) messageBaseVO; /* See if this text line starts with a year between 1900 and 2099; * it may be a Vehicle Info line. */ boolean vehicleInfo = false; int year=0; try { String str=messageTextVO.getText().substring(0, 4); year=Integer.valueOf(str).intValue(); } catch (IndexOutOfBoundsException e) { // don't need to catch substring error; if not long enough, ignore } catch (NumberFormatException e){ // don't need to do anything, just treat year as 0 and fail the if comparison } /* If the text-only line is followed by a Line/Part#, is not attached to anything * and begins with a year between 1900 and 2099, then consider it to be a * Vehicle Info line and include it even if Customer Notes are not being kept. */ if (i < messageItems.size()-1 && messageItems.get(i + 1) instanceof MessagePartVO && messageTextVO.getAttachedToMessagePartSeq() == null && (year > 1900 && year <2100)) { vehicleInfo=true; } /* Vehicle Info lines are always included; other lines are included if * if Customer Msgs modal option was answered YES and the associated part * (if there was one) is not being skipped. */ if (vehicleInfo || (includeCustMsg && messagePartSequence == null && messageTextVO.getText().trim().length() > 0) ) { InvoiceNoteVO invoiceNoteVO = new InvoiceNoteVO(); if (messageTextVO.getAttachedToMessagePartSeq() != null) { if (messageTextVO.getAttachedToMessagePartSeq() .intValue() > 0) { if (lineItems.lastElement() instanceof BaseLineItemVO) { msgBaseLineItemVO = (BaseLineItemVO) lineItems .lastElement(); } invoiceNoteVO .setGeneratedByLineItem(msgBaseLineItemVO); } } invoiceNoteVO.setLOC(messageTextVO.getLOC()); if (vehicleInfo) { invoiceNoteVO.setRefInvoiceNoteTyepID(new Integer( RefInvoiceNoteType.CATALOGING_VEHICLE_INFORMATION_MESSAGE)); } else { invoiceNoteVO.setRefInvoiceNoteTyepID(new Integer( RefInvoiceNoteType.NORMAL_MESSAGE)); } invoiceNoteVO.setCompletedLine(true); /* * text in message_text can be longer than in invoice_note, * therefore if there is a message that is longer than 50 * characters then it needs to be split into two note lines. * Vehicle Info, however, is not split but truncated. */ if (vehicleInfo || messageTextVO.getText().length() <= 50 || (doesMessageContainNOLBopisOrder && messageTextVO.getText().contains(";") && messageTextVO.getText().contains("@"))) { invoiceNoteVO.setText(messageTextVO.getText()); if(invoiceVO.isReturnInvoice() && null != invoiceNoteVO.getGeneratedByLineItem()) { invoiceNoteVO.setGeneratedBySequence(new Integer(invoiceNoteVO.getGeneratedByLineItem().getSequence())); } lineItems.add(invoiceNoteVO); } else { int lastSpace = messageTextVO.getText().lastIndexOf( " ", 49); if (lastSpace < 0) { lastSpace = 50; // ck for no spaces (substring based // on lastspace - 1 } invoiceNoteVO.setText(messageTextVO.getText() .substring(0, lastSpace).trim()); lineItems.add(invoiceNoteVO); InvoiceNoteVO secondNote = new InvoiceNoteVO(); secondNote.setGeneratedByLineItem(invoiceNoteVO.getGeneratedByLineItem()); if(invoiceVO.isReturnInvoice() && null != invoiceNoteVO.getGeneratedByLineItem()) { invoiceNoteVO.setGeneratedBySequence(new Integer(invoiceNoteVO.getGeneratedByLineItem().getSequence())); secondNote.setGeneratedBySequence(new Integer(invoiceNoteVO.getGeneratedByLineItem().getSequence())); } secondNote.setLOC(messageTextVO.getLOC()); secondNote.setRefInvoiceNoteTyepID(new Integer( RefInvoiceNoteType.NORMAL_MESSAGE)); // 1 secondNote.setText(messageTextVO.getText().substring( lastSpace, messageTextVO.getText().length()) .trim()); secondNote.setCompletedLine(true); lineItems.add(secondNote); } } } } if(skippedItems != null && skippedItems.size()>0){ for(int i = 0; i < skippedItems.size(); i++){ InvoiceNoteVO invoiceNoteVO = new InvoiceNoteVO(); invoiceNoteVO.setText(String.valueOf(skippedItems.get(i))); invoiceNoteVO.setRefInvoiceNoteTyepID(RefInvoiceNoteType.NORMAL_MESSAGE); invoiceNoteVO.setLOC(invoiceVO.getLOC()); invoiceNoteVO.setCompletedLine(true); lineItems.add(invoiceNoteVO); } } /* check if an actual part was added */ boolean partExist = lineItems.size() > 0; if (partExist) { return lineItems; } else { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1392"); return null; } } /** * invalidateClientApplicationContext is to refresh the ClientApplicationContext and update the latest value. */ private void invalidateClientApplicationContext(){ ClientApplicationContext clientApplicationContext = ClientApplicationContext .getClientApplicationContext(); clientApplicationContext.getProfile(Profile.POINT_OF_SALE_CLIENT, clientApplicationContext.getLocation()).invalidateAll(); FwoSessionMgr.getInstance().getProfile().setRefreshCache(true); } private boolean isNXPInterStoreOrder(final InvoiceVO invoiceVO) { return invoiceVO != null && invoiceVO.getSalesOrderVO() != null && invoiceVO.getSalesOrderVO().getRefOrderSubTypeId() != null && invoiceVO.getSalesOrderVO().getRefOrderSubTypeId().intValue() == RefNXPInterstoreOrderType.NXP_INTERSTORE; } //added for bug #32038, to remove the 'PO# ' from the PO. private String cleanPONumber(String poNumber) { String numberOut = null; if (poNumber.startsWith("PO#")) { numberOut = poNumber.substring(3).trim(); } else if (poNumber.startsWith("NOL BOPIS: ")) { numberOut = poNumber.substring(11); } else { numberOut = poNumber; } return numberOut; } // extract text following "ATTENTION: " private String cleanAttention(String attention) { String attnOut = null; if (attention.startsWith(ATTN_MSG)) { attnOut = attention.substring(11); if (attnOut.length() > 30) { attnOut = attnOut.substring(0, 30); } } else { attnOut = attention; } return attnOut; } private void customerSearch() { String customerNum = reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.getText(); if (customerNum != null && customerNum.length() > 0) { Vector searchResults = null; try { searchResults = clientApplicationContext.getMessageDAO().findIdsByCustomer(messageLockID, new Integer(customerNum)); } catch (ApplicationException ae) {} if (searchResults == null || searchResults.size() == 0) { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "402"); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.requestFocus(); } else { messageHeaderIDs = searchResults; vectorIndex = 0; displayMessage((Integer) messageHeaderIDs.get(0)); } } else { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "400"); reviewMessagesDialog.pnlMessageAcknowledgement.fldCustomerNum.requestFocus(); } } private InvoiceVO createInvoiceVO() { final String methodSpec = "ReviewMessagesController.createInvoiceVO - "; logger.debug(methodSpec); messageToBaseLineItems.clear(); incompleteKitTracker.clear(); InvoiceVO invoiceVO = new InvoiceVO(); invoiceVO.setLOC(loc); invoiceVO.setCustomerID(messageHeaderVO.getCustomerVO().getID()); invoiceVO.setCustomerTypeCD(messageHeaderVO.getCustomerVO().getCustomerTypeCD()); invoiceVO.setCustomerName(messageHeaderVO.getCustomerVO().getName()); invoiceVO.setCountermanEmployeeID( clientApplicationContext.getCurrentUser().getEmployeeId()); invoiceVO.setTaxExemptNumPrimary( messageHeaderVO.getCustomerVO().getTaxExemptNumberPrimary()); invoiceVO.setTaxExemptNumberSecondary( messageHeaderVO.getCustomerVO().getTaxExemptNumberSecondary()); invoiceVO.setPrimaryTaxTableVO(messageHeaderVO.getCustomerVO().getPrimaryTaxTable()); invoiceVO.setSecondaryTaxTableVO(messageHeaderVO.getCustomerVO().getSecondaryTaxTable()); invoiceVO.setPrimaryTaxTableID(messageHeaderVO.getCustomerVO().getDefaultTaxTableID()); invoiceVO.setSecondaryTaxTableID(messageHeaderVO.getCustomerVO().getSecondaryTaxTableID()); invoiceVO.setCustomerPhone(messageHeaderVO.getCustomerVO().getPhone()); invoiceVO.setSalesmanEmployeeID(messageHeaderVO.getCustomerVO().getSalesmanEmployeeID()); invoiceVO.setSalesOrderVO(messageHeaderVO.getSalesOrderVO()); if(messageHeaderVO != null && messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.INTERSTORE && messageHeaderVO.getPurchaseOrderNumber() != null) { invoiceVO.setPONumber(cleanPONumber(messageHeaderVO.getPurchaseOrderNumber())); } if(messageHeaderVO != null && messageHeaderVO.getRefCommunicationTypeID().intValue() == RefCommunicationType.RETURNS) { invoiceVO.setReturnInvoice(true); } return invoiceVO; } private void resetInvoicedByEmpID(MessageHeaderVO messageHeaderVO) { if (messageHeaderVO != null) { messageHeaderVO.setInvoicedByEmpID(null); try { clientApplicationContext.getMessageDAO().updateInvoicedByEmpId(messageHeaderVO); } catch (ApplicationException e) { logger.error("Error updating Message data. ae= " + e.toString()); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageAcknowledgement, "168"); } } } private void invoiceOrders() { final boolean doesMessageContainNOLOrder = MessageBL.doesMessageContainNOLOrder(messageHeaderVO); final boolean doesMessageContainNOLBOPISOrder = MessageBL.doesMessageContainNOLBOPISOrder(messageHeaderVO); if (messageHeaderVO.getCustomerVO() == null) { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1248"); resetInvoicedByEmpID(messageHeaderVO); return; } if (!CustomerBL.ableToInvoice(messageHeaderVO.getCustomerVO(), reviewMessagesDialog, doesMessageContainNOLBOPISOrder)) { resetInvoicedByEmpID(messageHeaderVO); return; } if (messageHeaderVO.getSavedInvoiceId() == null) { SwingUtilities.invokeLater(new Runnable() { public void run() { final InvoiceVO invoiceVO = createInvoiceVO(); boolean checkStock = true; if(invoiceVO.getSalesOrderVO() != null){ checkStock = invoiceVO.getSalesOrderVO().getExternalCartIdentifier() == null || invoiceVO.getSalesOrderVO().getExternalCartIdentifier().trim().length() == 0; } else { checkStock = false; } final Vector lineItems = createLineItems(checkStock, "I", invoiceVO); if(lineItems == null) { resetInvoicedByEmpID(messageHeaderVO); } if (lineItems != null) { SwingUtilities.invokeLater(new Runnable() { public void run() { invoiceVO.setLineItems(lineItems); if (doesMessageContainNOLOrder) { SalesOrderDeliveryAddressVO salesOrderDeliveryAddressVO = null; if (doesMessageContainNOLBOPISOrder) { salesOrderDeliveryAddressVO = InvoiceBL .retrieveSalesOrderDeliveryAddress(invoiceVO); if(salesOrderDeliveryAddressVO != null) { invoiceVO.setDeliveryFlag(Boolean.TRUE); } } addAttentionMessageToBopisInvoice(invoiceVO, salesOrderDeliveryAddressVO); for (int i = 0; i < lineItems.size(); i++) { InvoiceLineItemVO invoiceLineItemVO = (InvoiceLineItemVO) lineItems .get(i); if (invoiceLineItemVO instanceof BaseLineItemVO) { ((BaseLineItemVO) invoiceLineItemVO) .setNolOrderQuantity(invoiceLineItemVO .getQuantityBilled()); } } } clientApplicationContext.getPointOfSaleEventDispatcher() .fireInvoiceLoaded(new InvoiceEvent(new ReviewMessagesController(), invoiceVO, 0, true)); } }); SwingUtilities.invokeLater(new Runnable() { public void run() { //clear the MessageLock file, on a PPII system. if (clientApplicationContext.getApplicationType() == ClientApplicationContext.PARTS_PRO_II) { clientApplicationContext.getMessageDAO().messageUnlock(messageLockID); messageLockID = null; } resetEditMessagePanel(); resetSelectMessagePanel(); hideMessageAcknowledgementPanel(); setViewVisible(false); } }); } } }); } else { invoiceSavedInvoiceFromPhoneRoom(); } } private void invoiceSavedInvoiceFromPhoneRoom() { try { final InvoiceVO invoiceVO = InvoiceBL.recallSavedInvoice(messageHeaderVO.getSavedInvoiceId()); //Not resetting return approval info because we are not doing returns in phone room //Code added to set generated sequence for replacement core line item. InvoiceLineBL.setGenBySeqForReplacementCoreItem(invoiceVO); //refresh before loading lines in case it is a large invoice clientApplicationContext.getInvoiceDAO().refreshSavedInvoice(messageHeaderVO.getSavedInvoiceId(), loc, clientApplicationContext.getSystemDAO().getServerDate()); //set message header id to null so no one else can invoice it try { messageHeaderVO.setSavedInvoiceId(null); clientApplicationContext.getMessageDAO() .updateMessageHeader(messageLockID, messageHeaderVO).booleanValue(); } catch (ApplicationException ae) { logger.error("Error updating Message data. ae= " + ae.toString()); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageAcknowledgement, ae.getUserMessageID(), ae.getUserMessageParameters()); } CustomerVO customerVO = clientApplicationContext.getCustomerDAO( ).getCustomerDetailInfoByID(invoiceVO.getCustomerID(), invoiceVO.getCustomerTypeCD()); if (customerVO.isAuthorizedBuyersOnly() && (customerVO.getAuthorizedBuyers() == null || customerVO.getAuthorizedBuyers().isEmpty())) { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "446"); resetInvoicedByEmpID(messageHeaderVO); return; } if(CustomerBL.ableToInvoice(customerVO, reviewMessagesDialog)){ //added for parity reports. invoiceVO.setModifiedByEmployeeID(clientApplicationContext.getCurrentUser().getEmployeeId()); InvoiceBL.convertZeroQtyLineItemToMessage(invoiceVO); }else{ resetInvoicedByEmpID(messageHeaderVO); return; } invoiceVO.setSavedInvoiceIdForDeletion(invoiceVO.getID()); clientApplicationContext.getPointOfSaleEventDispatcher().fireInvoiceLoaded( new InvoiceEvent(new ReviewMessagesController(), invoiceVO, 0, false)); resetEditMessagePanel(); resetSelectMessagePanel(); hideMessageAcknowledgementPanel(); setViewVisible(false); } catch (ApplicationException ae) { logger.error(ae.toString(), ae); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, ae.getUserMessageID(), ae.getUserMessageParameters()); resetInvoicedByEmpID(messageHeaderVO); if (ae.getUserMessageID().equals("2913") || ae.getUserMessageID().equals("2914")) { return; } } } public boolean validateComponent(JComponent component) { if (reviewMessagesDialog.pnlMessageSelection.isVisible()) { if (component.getName().equals(MessageSelectionPanel.FLD_SEQ)) { setPanelTimeout(true); //reset timer return validateSeqSelection(); } } else { if (component.getName().equals(MessageAcknowledgementPanel.FLD_PRICE)) { if (reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.getText() != null && !reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.getText().equals("") && new BigDecimal( reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.getText()).compareTo( new BigDecimal("0")) != 0) { return setListItem(); } else { return false; } } else if (component.getName().equals(MessageAcknowledgementPanel.FLD_INV_QTY)) { if (reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText() != null && !reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText().equals("") && new BigDecimal( reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText()).compareTo( new BigDecimal("0")) != 0) { BigDecimal bdInvQty = new BigDecimal(reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText()); if (bdInvQty.compareTo(new BigDecimal("0")) < 0) { //1395 = 1,N,Invalid quantity. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1395"); reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); return false; } //if Requested Qty less than zero, they can Invoice if Invoice Qty > Zero. String strInvQty = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText().toString(); int invQty = 0; if (strInvQty != null && !(strInvQty.equals(""))) { invQty = (new BigDecimal(strInvQty)).intValue(); } String strOrdQty = reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMRequestedQty.getText().toString(); int ordQty = 0; if (strOrdQty != null && !(strOrdQty.equals(""))) { ordQty = (new BigDecimal(strOrdQty)).intValue(); } else { ordQty = -1; // if strOrdQty is blank, then requested qty is a negative value. } if ((ordQty > 0 || ordQty < 0) && reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled() == false && !isRefOrderStatusIdCancelled()) { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(true); if(isUseLegacyDcEjoei) { reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(true); } else { reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } } else { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } if (reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.isEnabled()) { return true; } else { return setListItem(); } } else { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); return false; } } else if (component.getName().equals(MessageAcknowledgementPanel.SEQ_NUMBER)) { String s = reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.getText().trim(); if (s.equals("")) { return true; } else { reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.selectListItems(); } } } return true; } private boolean setListItem() { int index = reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.getSelectedIndex(); MessagePartVO messagePartVO = (MessagePartVO) reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.getSelectedValue(); messagePartVO.setInvoiceQty(new BigDecimal( reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText())); messagePartVO.setQuotedPrice(new BigDecimal( reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.getText())); invoiceListModel.set(index, messagePartVO); if (clientApplicationContext.getApplicationType() == ClientApplicationContext.PARTS_PRO_II) { //int recNum = (messagePartVO.getSequence().intValue()+1) + messagePartVO.getMessageHeaderID().intValue(); int recNum = (messagePartVO.getSequence().intValue()) + messagePartVO.getMessageHeaderID().intValue(); messagePartVO.setMessageRecID(new Integer(recNum)); } Boolean updateFlag = Boolean.FALSE; try { updateFlag = clientApplicationContext.getMessageDAO().updateMessagePart(messageLockID, messageHeaderVO, messagePartVO); } catch (ApplicationException ae) { logger.error("Error updating MessagePartVO, partNumber= " + messagePartVO.getPartNumber()); logger.error("Error in setListItem: ae= " + ae.toString()); clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageSelection, "2229"); } return updateFlag.booleanValue(); } private boolean setSelectData() { Vector v = null; int applicationType = clientApplicationContext.getApplicationType(); if (applicationType == ClientApplicationContext.PARTS_PRO_II) { if (messageLockID != null) { try { v = clientApplicationContext.getMessageDAO().getSelectMessage(messageLockID); } catch (ApplicationException ae) { if (ae.getUserMessageID().equals("-9")) { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageSelection, "1393"); dialogClosing(); } } } } else { //we're tamsii and don't care about message locks try { v = clientApplicationContext.getMessageDAO().getSelectMessage(messageLockID); } catch (ApplicationException ae) { if (ae.getUserMessageID().equals("-9")) { clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageSelection, "1393"); dialogClosing(); } } } ArrayList messageSortOptions = clientApplicationContext.getMessageDAO() .getSortMessageOptions(); if (messageSortOptions != null && !messageSortOptions.isEmpty()) { reviewMessagesDialog.pnlMessageSelection.cbSortOption.removeAllItems(); for (int index = 0; index < messageSortOptions.size(); index++) { reviewMessagesDialog.pnlMessageSelection.cbSortOption .addItem(messageSortOptions.get(index)); } Integer sortOptionValue = clientApplicationContext .getMessageDAO().getSortMessageOptionValue(); if (sortOptionValue != null) { reviewMessagesDialog.pnlMessageSelection.cbSortOption .setSelectedIndex(sortOptionValue.intValue()); } else { reviewMessagesDialog.pnlMessageSelection.cbSortOption .setSelectedIndex(0); } } if (v != null && !v.isEmpty()) { for (int i = 0; i < v.size(); i++) { SelectMessageVO selMsgVO = (SelectMessageVO) v.get(i); if (selMsgVO.getCommunicationType().getID().toString().equals("1")) { reviewMessagesDialog.pnlMessageSelection.lblSequence1.setText( selMsgVO.getCommunicationType().getID().toString() + ")"); reviewMessagesDialog.pnlMessageSelection.lblJoei.setText( selMsgVO.getCommunicationType().getValue().toString()); reviewMessagesDialog.pnlMessageSelection.dlblAckJoei.setText( selMsgVO.getCountAcknowledged().toString()); reviewMessagesDialog.pnlMessageSelection.dlblUnackJoei.setText( selMsgVO.getCountUnacknowledged().toString()); if (applicationType == ClientApplicationContext.PARTS_PRO_II) { if (selMsgVO.getUnAcknowledgedLate1().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblUnAck_05.setText(selMsgVO .getUnAcknowledgedLate1().toString()); } if (selMsgVO.getUnAcknowledgedLate2().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblUnAck_10.setText(selMsgVO .getUnAcknowledgedLate2().toString()); } if (selMsgVO.getUnAckNotInvoicedLate1().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblAckNoInvoice_05 .setText(selMsgVO.getUnAckNotInvoicedLate1().toString()); } if (selMsgVO.getUnAckNotInvoicedLate2().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblAckNoInvoice_10 .setText(selMsgVO.getUnAckNotInvoicedLate2().toString()); } } } else if (selMsgVO.getCommunicationType().getID().toString().equals("2")) { reviewMessagesDialog.pnlMessageSelection.lblSequence2.setText( selMsgVO.getCommunicationType().getID().toString() + ")"); reviewMessagesDialog.pnlMessageSelection.lblInterstore.setText( selMsgVO.getCommunicationType().getValue().toString()); reviewMessagesDialog.pnlMessageSelection.dlblAckInterstore.setText( selMsgVO.getCountAcknowledged().toString()); reviewMessagesDialog.pnlMessageSelection.dlblUnackInterstore.setText( selMsgVO.getCountUnacknowledged().toString()); if (applicationType == ClientApplicationContext.PARTS_PRO_II) { if (selMsgVO.getUnAcknowledgedLate1().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblUnAck_15.setText(selMsgVO .getUnAcknowledgedLate1().toString()); } if (selMsgVO.getUnAcknowledgedLate2().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblUnAck_20.setText(selMsgVO .getUnAcknowledgedLate2().toString()); } if (selMsgVO.getUnAckNotInvoicedLate1().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblAckNoInvoice_15 .setText(selMsgVO.getUnAckNotInvoicedLate1().toString()); } if (selMsgVO.getUnAckNotInvoicedLate2().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblAckNoInvoice_20 .setText(selMsgVO.getUnAckNotInvoicedLate2().toString()); } } } else if (selMsgVO.getCommunicationType().getID().toString().equals("3")) { reviewMessagesDialog.pnlMessageSelection.lblSequence5.setText( selMsgVO.getCommunicationType().getID().toString() + ")"); reviewMessagesDialog.pnlMessageSelection.lblIntegrationMessages.setText( selMsgVO.getCommunicationType().getValue().toString()); reviewMessagesDialog.pnlMessageSelection.dlblAckIntegrationMessages.setText( selMsgVO.getCountAcknowledged().toString()); reviewMessagesDialog.pnlMessageSelection.dlblUnackIntegrationMessages.setText( selMsgVO.getCountUnacknowledged().toString()); if (applicationType == ClientApplicationContext.PARTS_PRO_II) { if (selMsgVO.getUnAcknowledgedLate1().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblUnAck_25.setText(selMsgVO .getUnAcknowledgedLate1().toString()); } if (selMsgVO.getUnAcknowledgedLate2().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblUnAck_3Plus .setText(selMsgVO.getUnAcknowledgedLate2().toString()); } if (selMsgVO.getUnAckNotInvoicedLate1().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblAckNoInvoice_25 .setText(selMsgVO.getUnAckNotInvoicedLate1().toString()); } if (selMsgVO.getUnAckNotInvoicedLate2().intValue() >= 0) { reviewMessagesDialog.pnlMessageSelection.dlblAckNoInvoice_3Plus .setText(selMsgVO.getUnAckNotInvoicedLate2().toString()); } } } else if (selMsgVO.getCommunicationType().getID().toString().equals("4")) { reviewMessagesDialog.pnlMessageSelection.lblSequence3.setText("4)"); reviewMessagesDialog.pnlMessageSelection.lblProlink.setText( selMsgVO.getCommunicationType().getValue().toString()); reviewMessagesDialog.pnlMessageSelection.dlblAckProlink.setText( selMsgVO.getCountAcknowledged().toString()); reviewMessagesDialog.pnlMessageSelection.dlblUnackProlink.setText( selMsgVO.getCountUnacknowledged().toString()); } else if (selMsgVO.getCommunicationType().getID().toString().equals("5")) { reviewMessagesDialog.pnlMessageSelection.lblSequence4.setText("5)"); reviewMessagesDialog.pnlMessageSelection.lblNapaOnline.setText(selMsgVO .getCommunicationType().getValue().toString()); reviewMessagesDialog.pnlMessageSelection.dlblAckNapaOnline.setText(selMsgVO .getCountAcknowledged().toString()); reviewMessagesDialog.pnlMessageSelection.dlblUnackNapaOnline.setText(selMsgVO .getCountUnacknowledged().toString()); } else if (selMsgVO.getCommunicationType().getID().toString().equals("6")) { reviewMessagesDialog.pnlMessageSelection.lblSequence6.setText("6)"); reviewMessagesDialog.pnlMessageSelection.lblDirectShipMessages.setText(selMsgVO .getCommunicationType().getValue().toString()); reviewMessagesDialog.pnlMessageSelection.dlblAcklblDirectShipmentMessages.setText(selMsgVO .getCountAcknowledged().toString()); reviewMessagesDialog.pnlMessageSelection.dlblUnacklblDirectShipmentMessages.setText(selMsgVO .getCountUnacknowledged().toString()); } else if (selMsgVO.getCommunicationType().getID().toString().equals("7")) { reviewMessagesDialog.pnlMessageSelection.lblSequence7.setText("7)"); reviewMessagesDialog.pnlMessageSelection.lblReturns.setText(selMsgVO .getCommunicationType().getValue().toString()); reviewMessagesDialog.pnlMessageSelection.dlblAckReturns.setText(selMsgVO .getCountAcknowledged().toString()); reviewMessagesDialog.pnlMessageSelection.dlblUnackReturns.setText(selMsgVO .getCountUnacknowledged().toString()); } } //end FOR loop String ackJoie = reviewMessagesDialog.pnlMessageSelection.dlblAckJoei.getText(); String unackJoie = reviewMessagesDialog.pnlMessageSelection.dlblUnackJoei.getText(); String ackInterstore = reviewMessagesDialog.pnlMessageSelection.dlblAckInterstore.getText(); String unackInterstore = reviewMessagesDialog.pnlMessageSelection.dlblUnackInterstore.getText(); String ackProlink = reviewMessagesDialog.pnlMessageSelection.dlblAckProlink.getText(); String unackProlink = reviewMessagesDialog.pnlMessageSelection.dlblUnackProlink.getText(); String ackNapaOnline = reviewMessagesDialog.pnlMessageSelection.dlblAckNapaOnline.getText(); String unackNapaOnline = reviewMessagesDialog.pnlMessageSelection.dlblUnackNapaOnline.getText(); String ackIntegrationMessages = reviewMessagesDialog.pnlMessageSelection.dlblAckIntegrationMessages.getText(); String unackIntegrationMessages = reviewMessagesDialog.pnlMessageSelection.dlblUnackIntegrationMessages.getText(); String ackDirectShipMessages = reviewMessagesDialog.pnlMessageSelection.dlblAcklblDirectShipmentMessages.getText(); String unackDirectShipMessages = reviewMessagesDialog.pnlMessageSelection.dlblUnacklblDirectShipmentMessages.getText(); String ackReturns = reviewMessagesDialog.pnlMessageSelection.dlblAckReturns.getText(); String unackReturns = reviewMessagesDialog.pnlMessageSelection.dlblUnackReturns.getText(); reviewMessagesDialog.pnlMessageSelection.chkJoei.setEnabled(!(ackJoie.equals("0") && unackJoie.equals("0"))); reviewMessagesDialog.pnlMessageSelection.chkInterstore.setEnabled(!( ackInterstore.equals("0") && unackInterstore.equals("0"))); reviewMessagesDialog.pnlMessageSelection.chkProlink.setEnabled(!(ackProlink.equals("0") && unackProlink.equals("0"))); reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.setEnabled(!(ackNapaOnline.equals("0") && unackNapaOnline.equals("0"))); reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.setEnabled(!(ackIntegrationMessages.equals("0") && unackIntegrationMessages.equals("0"))); reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.setEnabled(!(ackDirectShipMessages.equals("0") && unackDirectShipMessages.equals("0"))); reviewMessagesDialog.pnlMessageSelection.chkReturns.setEnabled(!(ackReturns.equals("0") && unackReturns.equals("0"))); //set the Prolink & Interstore Waiting panel - PartsPRO II if (!reviewMessagesDialog.pnlMessageSelection.chkProlink.isEnabled() && !reviewMessagesDialog.pnlMessageSelection.chkJoei.isEnabled() && !reviewMessagesDialog.pnlMessageSelection.chkInterstore.isEnabled() && !reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.isEnabled() && !reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.isEnabled() && !reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.isEnabled() && !reviewMessagesDialog.pnlMessageSelection.chkReturns.isEnabled()) { //clear the MessageLock file, on a PPII system. if (applicationType == ClientApplicationContext.PARTS_PRO_II) { clientApplicationContext.getMessageDAO().messageUnlock(messageLockID); messageLockID = null; } //1236 = No activity. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1236"); return false; } else { return true; } } else { return false; } } public void valueChanged(ListSelectionEvent lse) { if (!lse.getValueIsAdjusting()) { int selectedIndex = reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.getSelectedIndex(); if (selectedIndex != -1 && selectedIndex < reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.getModel().getSize()) { MessageBaseVO selectedValue = (MessageBaseVO) reviewMessagesDialog.pnlMessageAcknowledgement.listMessages.getSelectedValue(); if (selectedValue instanceof MessagePartVO && messageHeaderVO.getCustomerVO() != null) { if (((MessagePartVO) selectedValue).getProcessedByEmployeeID() == null && ((MessagePartVO) selectedValue).getProcessedDate() == null) { String partNum = ((MessagePartVO) selectedValue).getPartNumber(); String lineAbbrev = ((MessagePartVO) selectedValue).getLineAbbrev(); if (!InvoiceBL.doesPartExistInInvOrDVD(partNum, lineAbbrev, messageHeaderVO.getCustomerVO())) { String partInfo [] = {((MessagePartVO) selectedValue).getLineAbbrev(), ((MessagePartVO) selectedValue).getPartNumber()}; //1250 = $1 $2 not found in inventory. Do you wish to add it to inventory ? if (MessageBL.doesMessageContainNOLBOPISOrder(messageHeaderVO) || clientApplicationContext.getMessageMgr().showMessageYesNo( reviewMessagesDialog, "1250", partInfo)) { InventoryProfileVO inventoryProfileVO = ApplicationContext .getInstance().getProfile(Profile.POINT_OF_SALE_CLIENT, ClientApplicationContext .getClientApplicationContext() .getLocation()).getInventoryProfile(); Integer partNumberLength = inventoryProfileVO .getPartNumberLength(); if (((MessagePartVO) selectedValue) .getPartNumber().length() > partNumberLength.intValue()) { final String[] partNumLength = { partNumberLength.toString() }; SwingUtilities.invokeLater(new Runnable() { public void run() { clientApplicationContext.getMessageMgr() .showMessage(reviewMessagesDialog, "9561",partNumLength); } }); } else { if (!addPart((MessagePartVO) selectedValue)) { return; } } } } MessagePartVO messagePartVO = (MessagePartVO) selectedValue; if(messagePartVO.isKitComponent()){ reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.setVisible(false); return; } reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMSeqNum.setText( reviewMessagesDialog.pnlMessageAcknowledgement.seqNumber.getText().trim() + ")"); reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMLine.setText( messagePartVO.getLineAbbrev()); reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMPartNumber.setText( messagePartVO.getPartNumber()); // Bug #34446 added if - else condition to handle null pointer exception. if(messagePartVO.getDescription() != null){ reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMDescription.setText( messagePartVO.getDescription()); } else { reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMDescription.setText(""); } reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMRequestedQty .setText(messagePartVO.getOrderQty().toString()); if (messagePartVO.getMessagePartStatus() != null) { reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMStatus.setText( messagePartVO.getMessagePartStatus().getValue().toString()); } else { reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMStatus.setText(""); } // Bug #34446 added if - else condition to handle null pointer exception. if(messagePartVO.getAvailableQty() != null){ reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMAvailQty.setText( messagePartVO.getAvailableQty().toString()); }else{ reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMAvailQty.setText("0.00"); } final boolean doesMessageContainNOLOrder = MessageBL .doesMessageContainNOLOrder(messageHeaderVO); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.setEnabled( !doesMessageContainNOLOrder); if (messagePartVO.getInvoiceQty() != null) { reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.setText( messagePartVO.getInvoiceQty().toString()); } else { reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.setText(""); } reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.setText( messagePartVO.getQuotedPrice().toString()); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.setEnabled(false); //if Requested Qty less than zero, they can Invoice if Invoice Qty > Zero. String strInvQty = reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.getText(); int invQty = 0; if (strInvQty.length() > 0) { invQty = (new BigDecimal(strInvQty)).intValue(); } else { invQty = messagePartVO.getInvoiceQty().intValue(); } int orderQty = messagePartVO.getOrderQty().intValue(); if ((orderQty > 0 || orderQty < 0) && reviewMessagesDialog.pnlMessageAcknowledgement.btnAcknowledge.isEnabled() == false && !isRefOrderStatusIdCancelled() && !isMessageAlreadyInvoiced()) { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders .setEnabled(true); if(isUseLegacyDcEjoei) { reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(true); } else { reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } } else { reviewMessagesDialog.pnlMessageAcknowledgement.btnInvoicingOrders.setEnabled(false); reviewMessagesDialog.pnlMessageAcknowledgement.btnSpecialOrders.setEnabled(false); } reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.setVisible(true); } else { //1246 = This item has already been processed. clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog, "1246"); reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.setVisible(false); } } else { reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.setVisible(false); } } } } private void resetEditMessagePanel() { reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMSeqNum.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMLine.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMPartNumber.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMDescription.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMRequestedQty.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMStatus.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.dlblEMAvailQty.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMInvoiceQty.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.fldEMPrice.setText(""); reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.setVisible(false); } private void resetSelectMessagePanel() { reviewMessagesDialog.pnlMessageSelection.dlblAckProlink.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblAckInterstore.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblAckJoei.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblAckNapaOnline.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblUnackProlink.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblUnackInterstore.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblUnackJoei.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblUnackNapaOnline.setText(""); reviewMessagesDialog.pnlMessageSelection.chkProlink.setSelected(false); reviewMessagesDialog.pnlMessageSelection.chkInterstore.setSelected(false); reviewMessagesDialog.pnlMessageSelection.chkJoei.setSelected(false); reviewMessagesDialog.pnlMessageSelection.fldSequenceNumber.setText(""); reviewMessagesDialog.pnlMessageSelection.chkNapaOnline.setSelected(false); reviewMessagesDialog.pnlMessageSelection.chkIntegrationMessages.setSelected(false); reviewMessagesDialog.pnlMessageSelection.dlblAckIntegrationMessages.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblUnackIntegrationMessages.setText(""); reviewMessagesDialog.pnlMessageSelection.chkDirectShipMessages.setSelected(false); reviewMessagesDialog.pnlMessageSelection.dlblAcklblDirectShipmentMessages.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblUnacklblDirectShipmentMessages.setText(""); reviewMessagesDialog.pnlMessageSelection.chkReturns.setSelected(false); reviewMessagesDialog.pnlMessageSelection.dlblAckReturns.setText(""); reviewMessagesDialog.pnlMessageSelection.dlblUnackReturns.setText(""); } public void localizeView() { // Sets the property key to the panel title border before FwoLocalizationMgr class methods // are called to localize the panel title border. setTitleBorderPropertyKey(); localizationMgr.localize(reviewMessagesDialog, ReviewMessagesDialog.REVIEW_MSG_DIALOG_NAME); localizationMgr.localize(reviewMessagesDialog.pnlMessageAcknowledgement, MessageAcknowledgementPanel.MESSAGE_ACKNOWLEDGEMENT_PANEL); localizationMgr.localize(reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage, MessageAcknowledgementPanel.MESSAGE_ACKNOWLEDGEMENT_PANEL); localizationMgr.localize(reviewMessagesDialog.pnlMessageAcknowledgement.pnlLstHdr, MessageAcknowledgementPanel.MESSAGE_ACKNOWLEDGEMENT_PANEL); localizationMgr.localize(reviewMessagesDialog.pnlMessageAcknowledgement.pnlCustInfo, MessageAcknowledgementPanel.MESSAGE_ACKNOWLEDGEMENT_PANEL); localizationMgr.localize(reviewMessagesDialog.pnlMessageSelection, MessageSelectionPanel.MESSAGE_SELECTION_PANEL); localizationMgr.localize(reviewMessagesDialog.pnlMessageSelection.pnlSequence, MessageSelectionPanel.MESSAGE_SELECTION_PANEL); localizationMgr.localize(reviewMessagesDialog.pnlMessageSelection.pnlWaiting, MessageSelectionPanel.MESSAGE_SELECTION_PANEL); } public void displayPrintOption() { messagePrintOptionController.setData(messageHeaderVO.getID(), messageLockID); ((JDialog) messagePrintOptionController.getView()).setVisible(true); } /** * This method sets the property key to the panel title border. * */ private void setTitleBorderPropertyKey() { Border border = null; border = reviewMessagesDialog.pnlMessageAcknowledgement.pnlEditMessage.getBorder(); if (border instanceof TitledBorder) { ((TitledBorder) border).setTitle(MessageAcknowledgementPanel.EDIT_MESSAGE_PANEL_TITLE); } border = reviewMessagesDialog.pnlMessageSelection.pnlSequence.getBorder(); if (border instanceof TitledBorder) { ((TitledBorder) border).setTitle(MessageSelectionPanel.SEQUENCE_PANEL_TITLE); } } /** * Method is used to get the display quoted price value with tax included for the given input price. * * @param {@link MessageHeaderVO} value object contains the message Header information. * * @return display quoted price value with tax included. */ private void setDisplayQuotedPriceWithTax(MessageHeaderVO messageHeaderVO) { BigDecimal displayQuotedPrice = new BigDecimal("0.00"); if (messageHeaderVO.getMessageItems() != null) { Vector messageItems = messageHeaderVO.getMessageItems(); int listSize = messageItems.size(); for (int index = 0; index < listSize; index++) { if (messageItems.get(index) instanceof MessagePartVO) { MessagePartVO messagePartVO = (MessagePartVO) messageItems.get(index); InventoryVO inventoryVO = clientApplicationContext.getInventoryDAO().getPartDetailInfo( messageHeaderVO.getCustomerVO(), messagePartVO.getPartNumber(), messagePartVO.getLineAbbrev(), false); if(inventoryVO != null){ BaseLineItemVO baseLineItem = new BaseLineItemVO(); baseLineItem.setPartNum(inventoryVO.getPartNumber()); baseLineItem.setLineAbbr(inventoryVO.getLineAbbrev()); displayQuotedPrice = InvoiceLineBL.getDisplayPriceFromUnitPrice( messagePartVO.getQuotedPrice(), baseLineItem, null, messageHeaderVO.getCustomerVO(), inventoryVO, null); messagePartVO.setDisplayQuotedPrice(displayQuotedPrice); } else { messagePartVO.setDisplayQuotedPrice(messagePartVO.getQuotedPrice()); } } } } } private void printPullListReport(Integer invoiceId) { FwoPrinterSelectionSettings printerSelectionSettings = new FwoPrinterSelectionSettings(); printerSelectionSettings.setPrinterType("B"); printerSelectionSettings.setPrinterUse("Reports"); printerSelectionSettings.setNoSpooling(Boolean.TRUE); printerSelectionSettings.setPrintSettings(new FwoPrintSettings()); PrinterSelectionController psc = new PrinterSelectionController(reviewMessagesDialog.pnlMessageAcknowledgement, printerSelectionSettings); psc.setViewVisible(true); if (psc.getPrinterSelectionSettings() != null) { // FwoPrintSettings fwoPrintSettings = psc.getPrinterSelectionSettings().getPrintSettings(); boolean printSuccess = clientApplicationContext.getReportDAO() .runPullListReport(invoiceId, psc.getPrinterSelectionSettings().getPrintSettings()); if(printSuccess){ clientApplicationContext.getMessageMgr().showMessage(reviewMessagesDialog.pnlMessageAcknowledgement, "10141");} } } private void addAttentionMessageToBopisInvoice(final InvoiceVO invoiceVO, final SalesOrderDeliveryAddressVO salesOrderDeliveryAddressVO) { final String methodSpec = "ReviewMessagesController.addAttentionMessageToBopisInvoice - "; logger.debug(methodSpec); if (invoiceVO != null && invoiceVO.getSalesOrderVO() != null) { List salesOrderRecipientAddressList = null; String phone = ""; String firstName = ""; String lastName = ""; try { salesOrderRecipientAddressList = clientApplicationContext.getOrderingDAO() .getSalesOrderRecipientAddressBySalesOrderId(invoiceVO.getSalesOrderVO().getId()); } catch (ApplicationException applicationException) { logger.error(methodSpec + "Error occured while fetching SalesOrderRecipientAddress " + applicationException); } if (salesOrderRecipientAddressList != null && salesOrderRecipientAddressList.size() > 0) { SalesOrderRecipientAddressVO salesOrderRecipientAddressVO = (SalesOrderRecipientAddressVO) salesOrderRecipientAddressList .get(0); String attention = ""; if (salesOrderDeliveryAddressVO != null) { if (salesOrderDeliveryAddressVO.getEmailAddress() != null && salesOrderDeliveryAddressVO.getEmailAddress().trim().length() > 0) { attention = salesOrderDeliveryAddressVO.getEmailAddress(); } else { attention = salesOrderRecipientAddressVO.getEmailAddress(); } } else { phone = salesOrderRecipientAddressVO.getPhone() != null ? salesOrderRecipientAddressVO.getPhone() : ""; firstName = salesOrderRecipientAddressVO.getFirstName() != null ? salesOrderRecipientAddressVO.getFirstName() : ""; lastName = salesOrderRecipientAddressVO.getLastName() != null ? salesOrderRecipientAddressVO.getLastName() : ""; attention = phone + "," + firstName + " " + lastName; } if (attention != null && attention.length() > 0) { if (attention.length() > 30) { attention = attention.substring(0, 30); } invoiceVO.setAttention(attention); } } } } private boolean isRefOrderStatusIdCancelled() { SalesOrderVO salesOrderVO = null; int refOrderStatusId = 0; if(messageHeaderVO != null){ salesOrderVO = messageHeaderVO.getSalesOrderVO(); if (salesOrderVO != null) { try { salesOrderVO = clientApplicationContext.getOrderingDAO() .getSalesOrderDetailsBySalesOrderId(salesOrderVO.getId(), salesOrderVO.getLoc().intValue()); } catch (ApplicationException e) { e.printStackTrace(); } if (salesOrderVO.getRefOrderStatusId() != null) { logger.debug("salesOrderVO.getId() = " + salesOrderVO.getId() + " salesOrderVO.getRefOrderStatusId() = " + salesOrderVO.getRefOrderStatusId()); refOrderStatusId = salesOrderVO.getRefOrderStatusId().intValue(); } } } return (refOrderStatusId == RefNOLOrderStatus.CANCELLED); } private boolean isDeliveryLineItem(final MessagePartVO messagePartVO) { return messagePartVO != null && messagePartVO.getLineAbbrev() != null && messagePartVO.getLineAbbrev().equalsIgnoreCase("DEL"); } private boolean isUseLegacyDCEjoei() { String value = clientApplicationContext.getProfile(Profile.POINT_OF_SALE_CLIENT, clientApplicationContext.getLocation()).getInvoicingProfile().getUseLegacyDCEjoei(); if(value.equalsIgnoreCase("Y")) { return true; } return false; } }