Subversion Repositories SmartDukaan

Rev

Rev 20773 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.hotspot.dashbaord.client.inbox;

import in.shop2020.hotspot.dashbaord.client.event.AddJacketNumberEvent;
import in.shop2020.hotspot.dashbaord.shared.actions.BillingType;
import in.shop2020.hotspot.dashbaord.shared.actions.Order;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.enunes.gwt.mvp.client.EventBus;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class JacketInfoBox extends DialogBox {
        private Label errorLabel = new Label("");
        
        //private Label jacketNumberLabel = new Label("Jacket Number");
        
        private Label warehousePickSuggestion = new Label("");
        
        //private TextBox jacketNumberBox = new TextBox();
        
        private Label packageDimensionsLabel = new Label("Package Dimensions");
        
        private ListBox packageDimensions = new ListBox();
        
        private Label billedByLabel = new Label("Billed By");
        
        private Label billNumberLabel = new Label("Bill Number");
        private TextBox billNumber = new TextBox();
        
//      private CheckBox changeInvoiceType = new CheckBox("Bulk Invoice");
        
        private VerticalPanel vpanel = new VerticalPanel();
        
        private ScrollPanel spanel = new ScrollPanel();
        
        private Button submitbutton = new Button("Submit");
        
        private Button cancelButton = new Button("Cancel");
        
        private Map<Long, List<String>> itemNumbersMap = new HashMap<Long, List<String>>();
        
        private Map<Long, List<String>> serialNumbersMap = new HashMap<Long, List<String>>();
        
        private Map<Long, List<Long>> freebieWarehouseIdMap = new HashMap<Long, List<Long>>();
        
        
        private Map<Long, List<TextBox>> itemNumbersBoxMap= new HashMap<Long, List<TextBox>>();
        
        private Map<Long, List<TextBox>> serialNumbersBoxMap = new HashMap<Long, List<TextBox>>();
        
        private Map<Long, List<TextBox>> freebieWarehouseIdBoxMap = new HashMap<Long, List<TextBox>>();
        
        
        private HorizontalPanel hpanel;
        
        private Widget tmpLabel; 
        
        public JacketInfoBox(final EventBus eventBus, final Order order, final String user,
                final BillingType billingType, Map<Long, String> warehouses, final Map<Long, Map<String, String>> billTogetherOrdersMap){
                vpanel.add(errorLabel);

//              jacketNumberBox.addKeyPressHandler(new KeyPressHandler() {
//                      @Override
//                      public void onKeyPress(KeyPressEvent event) {
//                              // TODO Auto-generated method stub
//                              if (!Character.isDigit(event.getCharCode())) {
//                                ((TextBox) event.getSource()).cancelKey();
//                          }
//                      }
//              });
                
//              vpanel.add(getHorizontalPanel(jacketNumberLabel, jacketNumberBox));
                packageDimensions.addItem("","");
                packageDimensions.addItem("Box-1 (25 X 16 X 7)","25 X 16 X 7");
                packageDimensions.addItem("Box-3 (30 X 25 X 11)","30 X 25 X 11");
                packageDimensions.addItem("Box-A1 (18 X 12.5 X 10)","18 X 12.5 X 10");
                packageDimensions.addItem("Box-A2 (20 X 17.5 X 12)","20 X 17.5 X 12");
                packageDimensions.addItem("Box-A3 (22 X 18 X 12)","22 X 18 X 12");
                vpanel.add(getHorizontalPanel(packageDimensionsLabel, packageDimensions));

                vpanel.add(getHorizontalPanel(billedByLabel, new Label(user)));
                
                if (order.getPickFromWarehouse() != null && billTogetherOrdersMap.size()==1) {
                    warehousePickSuggestion.setText("Pick from WH: " + order.getPickFromWarehouse());
                    vpanel.add(warehousePickSuggestion);
                }
                                
//              changeInvoiceType = new CheckBox("BulkInvoice");
//              changeInvoiceType.setValue(false);
//              if(!order.getSource().equals("WEBSITE")) {
//                      changeInvoiceType.setEnabled(false);
//              }
//              
//              
//              vpanel.add(changeInvoiceType);          
                
                if(billingType == BillingType.OURS_EXTERNAL || billingType == BillingType.EXTERNAL){
                        vpanel.add(getHorizontalPanel(billNumberLabel, billNumber));
                        if(order.getInvoiceNumber() != null && !order.getInvoiceNumber().trim().equals("")){
                                billNumber.setText(order.getInvoiceNumber().trim());
                        }
                }
                
                vpanel.add(new HTML("<br>"));
                
                hpanel = new HorizontalPanel();
                hpanel.setSpacing(5);
                tmpLabel = new Label("Order Id");
                hpanel.add(tmpLabel);
                hpanel.setCellWidth(tmpLabel, "50");
                tmpLabel = new Label("Product Name");
                hpanel.add(tmpLabel);
                hpanel.setCellWidth(tmpLabel, "250");
                tmpLabel = new Label("Quantity");
                hpanel.add(tmpLabel);
//              hpanel.setCellWidth(tmpLabel, "50");
//              tmpLabel = new Label("Item Number");
//              hpanel.add(tmpLabel);
                hpanel.setCellWidth(tmpLabel, "50");
                tmpLabel = new Label("Serial Number");
                hpanel.add(tmpLabel);
                hpanel.setCellWidth(tmpLabel, "200");
                tmpLabel = new Label("Freebie Warehouse Id");
                hpanel.add(tmpLabel);
                hpanel.setCellWidth(tmpLabel, "200");
                
                vpanel.add(hpanel);
                
                for(Long orderId : billTogetherOrdersMap.keySet()){
                        List<TextBox> itemNumbersBoxList = new ArrayList<TextBox>();
                        List<TextBox> serialNumbersBoxList = new ArrayList<TextBox>();
                        List<TextBox> freebieWarehouseIdBoxList = new ArrayList<TextBox>();
                        
                        long quantity = (long)Double.parseDouble(billTogetherOrdersMap.get(orderId).get("Quantity"));
                        boolean hasSerialized = Boolean.parseBoolean(billTogetherOrdersMap.get(orderId).get("IsSerialized"));
                        boolean hasFreebie = Boolean.parseBoolean(billTogetherOrdersMap.get(orderId).get("IsFreebie"));
                        TextBox itemNumber;
                        TextBox serialNumber;
                        TextBox freebieWarehouseId;
                        
                        if(quantity>1){
                                if(hasSerialized){
                                        for(long i=0; i<quantity; i++){
                                                hpanel = new HorizontalPanel();
                                                hpanel.setSpacing(5);
                                                tmpLabel = new Label(orderId+"");
                                                hpanel.add(tmpLabel);
                                                hpanel.setCellWidth(tmpLabel, "50");
                                                tmpLabel = new Label(billTogetherOrdersMap.get(orderId).get("ProductName"));
                                                hpanel.add(tmpLabel);
                                                hpanel.setCellWidth(tmpLabel, "250");
                                                tmpLabel = new Label("1");
                                                hpanel.add(tmpLabel);
                                                hpanel.setCellWidth(tmpLabel, "50");
                                                
                                                //hpanel.add(new Label(orderId+""));
                                                //hpanel.add(new Label(billTogetherOrdersMap.get(orderId).get("ProductName")));
                                                //hpanel.add(new Label("1"));
                                                itemNumber = new TextBox();
                                                itemNumber.setText("1");
                                                serialNumber = new TextBox();
                                                freebieWarehouseId = new TextBox();
                                                if(!hasFreebie){
                                                        freebieWarehouseId.setEnabled(false);
                                                }
                                                freebieWarehouseId.addKeyPressHandler(new KeyPressHandler() {
                                                        @Override
                                                        public void onKeyPress(KeyPressEvent event) {
                                                                // TODO Auto-generated method stub
                                                                if (!Character.isDigit(event.getCharCode())) {
                                                                  ((TextBox) event.getSource()).cancelKey();
                                                            }
                                                        }
                                                });
                                                
//                                              hpanel.add(itemNumber);
//                                              hpanel.setCellWidth(itemNumber, "200");
                                                hpanel.add(serialNumber);
                                                hpanel.setCellWidth(serialNumber, "200");
                                                hpanel.add(freebieWarehouseId);
                                                hpanel.setCellWidth(freebieWarehouseId, "200");
                                                vpanel.add(hpanel);
                                                itemNumbersBoxList.add(itemNumber);
                                                serialNumbersBoxList.add(serialNumber);
                                                freebieWarehouseIdBoxList.add(freebieWarehouseId);
                                        }
                                }
                                else{
                                        hpanel = new HorizontalPanel();
                                        hpanel.setSpacing(5);
                                        tmpLabel = new Label(orderId+"");
                                        hpanel.add(tmpLabel);
                                        hpanel.setCellWidth(tmpLabel, "50");
                                        tmpLabel = new Label(billTogetherOrdersMap.get(orderId).get("ProductName"));
                                        hpanel.add(tmpLabel);
                                        hpanel.setCellWidth(tmpLabel, "250");
                                        tmpLabel = new Label(quantity+"");
                                        hpanel.add(tmpLabel);
                                        hpanel.setCellWidth(tmpLabel, "50");
                                        itemNumber = new TextBox();
                                        serialNumber = new TextBox();
                                        freebieWarehouseId = new TextBox();
                                        serialNumber.setEnabled(false);
                                        if(!hasFreebie){
                                                freebieWarehouseId.setEnabled(false);
                                        }
                                        freebieWarehouseId.addKeyPressHandler(new KeyPressHandler() {
                                                @Override
                                                public void onKeyPress(KeyPressEvent event) {
                                                        // TODO Auto-generated method stub
                                                        if (!Character.isDigit(event.getCharCode())) {
                                                          ((TextBox) event.getSource()).cancelKey();
                                                    }
                                                }
                                        });
//                                      hpanel.add(itemNumber);
//                                      hpanel.setCellWidth(itemNumber, "200");
                                        itemNumber.setText("1");
                                        hpanel.add(serialNumber);
                                        hpanel.setCellWidth(serialNumber, "200");
                                        hpanel.add(freebieWarehouseId);
                                        hpanel.setCellWidth(freebieWarehouseId, "200");
                                        vpanel.add(hpanel);
                                        itemNumbersBoxList.add(itemNumber);
                                        serialNumbersBoxList.add(serialNumber);
                                        freebieWarehouseIdBoxList.add(freebieWarehouseId);
                                }
                        }
                        else {
                        
                                hpanel = new HorizontalPanel();
                                hpanel.setSpacing(5);
                                tmpLabel = new Label(orderId+"");
                                hpanel.add(tmpLabel);
                                hpanel.setCellWidth(tmpLabel, "50");
                                tmpLabel = new Label(billTogetherOrdersMap.get(orderId).get("ProductName"));
                                hpanel.add(tmpLabel);
                                hpanel.setCellWidth(tmpLabel, "250");
                                tmpLabel = new Label(quantity+"");
                                hpanel.add(tmpLabel);
                                hpanel.setCellWidth(tmpLabel, "50");
                                itemNumber = new TextBox();
                                serialNumber = new TextBox();
                                freebieWarehouseId = new TextBox();
                                if(!hasSerialized){
                                        serialNumber.setEnabled(false);
                                }
                                if(!hasFreebie){
                                        freebieWarehouseId.setEnabled(false);
                                }
                                freebieWarehouseId.addKeyPressHandler(new KeyPressHandler() {
                                        @Override
                                        public void onKeyPress(KeyPressEvent event) {
                                                // TODO Auto-generated method stub
                                                if (!Character.isDigit(event.getCharCode())) {
                                                  ((TextBox) event.getSource()).cancelKey();
                                            }
                                        }
                                });
//                              hpanel.add(itemNumber);
//                              hpanel.setCellWidth(itemNumber, "200");
                                itemNumber.setText("1");
                                hpanel.add(serialNumber);
                                hpanel.setCellWidth(serialNumber, "200");
                                hpanel.add(freebieWarehouseId);
                                hpanel.setCellWidth(freebieWarehouseId, "200");
                                vpanel.add(hpanel);
                                itemNumbersBoxList.add(itemNumber);
                                serialNumbersBoxList.add(serialNumber);
                                freebieWarehouseIdBoxList.add(freebieWarehouseId);
                        }
                        
                        //itemNumbersBoxMap, serialNumbersBoxMap, freebieWarehouseIdBoxMap
                        itemNumbersBoxMap.put(orderId, itemNumbersBoxList);
                        serialNumbersBoxMap.put(orderId, serialNumbersBoxList);
                        freebieWarehouseIdBoxMap.put(orderId, freebieWarehouseIdBoxList);
                }
                hpanel = new HorizontalPanel();
                hpanel.setSpacing(5);
                hpanel.add(submitbutton);
                hpanel.add(cancelButton);
                vpanel.add(hpanel);
                vpanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
                
                setWidget(vpanel);
                setAutoHideEnabled(false);
                setGlassEnabled(true);
                setText("Enter all the details below:");
                setModal(true);
                setWidth("1000px");
                
                
                submitbutton.addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                long jacketNumber = 1;
                                String itemNumber = "";
                                String serialNumber = "";
                                long freebieWhId = -1;
                                String packageDimension = "";
//                              try {
//                                      jacketNumber = Long.parseLong(jacketNumberBox.getText());
//                              } catch(NumberFormatException nfe){
//                                      nfe.printStackTrace();
//                              }
                                
                                if(jacketNumber <= 0){
                                        errorLabel.setText("Invalid Jacket number.");
                                        return;
                                }
                                
                                try{
                                        packageDimension = (packageDimensions.getValue(packageDimensions.getSelectedIndex()));
                                        System.out.println("Package Dimensions "+packageDimension);
                                }
                                catch(Exception e){
                                        e.printStackTrace();
                                }
                                
                                if (packageDimension.isEmpty()){
                                        errorLabel.setText("Invalid Package Dimensions");
                                        return;
                                }
                                
                                for(Long orderId : billTogetherOrdersMap.keySet()){
                                        boolean isSerialized = Boolean.parseBoolean(billTogetherOrdersMap.get(orderId).get("IsSerialized"));
                                        boolean isFreebie = Boolean.parseBoolean(billTogetherOrdersMap.get(orderId).get("IsFreebie"));
                                        for(TextBox tb : itemNumbersBoxMap.get(orderId)){
                                                itemNumber = tb.getText();
                                                if(itemNumber==null || itemNumber.trim().isEmpty()){
                                errorLabel.setText("Item Number can't be left empty for Order Id:- "+ orderId);
                                return;
                            }
                                        }
                                        
                                        if(isSerialized){
                                                for(TextBox tb : serialNumbersBoxMap.get(orderId)){
                                                        serialNumber = tb.getText();
                                                        if(serialNumber==null || serialNumber.trim().isEmpty()){
                                        errorLabel.setText("Serial Number can't be left empty for Order Id:- "+ orderId);
                                        return;
                                    }
                                                }
                                        }
                                        
                                        if(isFreebie){
                                                for(TextBox tb : freebieWarehouseIdBoxMap.get(orderId)){
                                                        try {
                                                                freebieWhId = Long.parseLong(tb.getText());
                                                        } catch(NumberFormatException nfe){
                                                                nfe.printStackTrace();
                                                        }
                                                        
                                                        if(freebieWhId <= 0){
                                                                errorLabel.setText("Freebie Warehouse Id can't be left empty for Order Id:- "+ orderId);
                                                                return;
                                                        }
                                                }
                                        }
                                }
                                
//                              String invoiceType = !changeInvoiceType.isEnabled() ? "Individual" : changeInvoiceType.getValue() ? "BulkInvoice" : "Individual";
                                String invoiceType = "Individual";
                                setValuesInDesiredMaps(billTogetherOrdersMap);
                                eventBus.fireEvent(new AddJacketNumberEvent(order, billNumber.getText(), jacketNumber, itemNumbersMap, serialNumbersMap, freebieWarehouseIdMap, user, billingType, invoiceType, packageDimension));
                                hide();
                                clean();
                        }
                });
                
                cancelButton.addClickHandler(new ClickHandler() {
                         
                        @Override
                        public void onClick(ClickEvent event) {
                                hide();
                                clean();
                        }
                });
        }
        
        public void clean() {
//              jacketNumberBox.setText("");
                errorLabel.setText("");
                warehousePickSuggestion.setText("");
        }
        
        public void setValuesInDesiredMaps(Map<Long, Map<String, String>> billOrdersMap){
                for(Long orderId : billOrdersMap.keySet()){
                        List<TextBox> itemNumbersBoxList = itemNumbersBoxMap.get(orderId);
                        
                        Map<String, String> orderValuesMap = billOrdersMap.get(orderId);
                        boolean hasSerialized = Boolean.parseBoolean(orderValuesMap.get("IsSerialized"));
                        boolean hasFreebie = Boolean.parseBoolean(orderValuesMap.get("IsFreebie"));
                        
                        List<String> itemNumbers = new ArrayList<String>();
                        
                        for(TextBox tb : itemNumbersBoxList){
                                itemNumbers.add(tb.getText().trim());
                        }
                        
                        itemNumbersMap.put(orderId, itemNumbers);
                        
                        if(hasSerialized){
                                List<TextBox> serialNumbersBoxList = serialNumbersBoxMap.get(orderId);
                                List<String> serialNumbers = new ArrayList<String>();
                                for(TextBox tb : serialNumbersBoxList){
                                        serialNumbers.add(tb.getText().trim());
                                }
                                serialNumbersMap.put(orderId, serialNumbers);
                        } else{
                                //itemNumbersMap, serialNumbersMap, freebieWarehouseIdMap
                                serialNumbersMap.put(orderId, new ArrayList<String>());
                        }
                        
                        if(hasFreebie){
                                List<TextBox> freebieWarehouseIdBoxList = freebieWarehouseIdBoxMap.get(orderId);
                                List<Long> freebieWhIds = new ArrayList<Long>();
                                for(TextBox tb : freebieWarehouseIdBoxList){
                                        freebieWhIds.add(Long.parseLong(tb.getText().trim()));
                                }
                                freebieWarehouseIdMap.put(orderId, freebieWhIds);
                        } else {
                                freebieWarehouseIdMap.put(orderId, new ArrayList<Long>());
                        }
                }
        }
        
        private HorizontalPanel getHorizontalPanel(Label label, Widget textBox) {
                HorizontalPanel hpanel = new HorizontalPanel();
                hpanel.setSpacing(5);
                hpanel.add(label);
                hpanel.add(textBox);
                hpanel.setCellWidth(label, "120px");
                return hpanel;
        }
}