Subversion Repositories SmartDukaan

Rev

Rev 5411 | Rev 5530 | Go to most recent revision | 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.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.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
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 warehousePickSuggestion = new Label("");
        private Label jacketNumberLabel = new Label("Jacket Number");
        private TextBox jacketNumberBox = new TextBox();
        
        private Label itemNumberLabel = new Label("Item Number");
        private TextBox itemNumberBox = new TextBox();
        
        private Label serialNumberLabel = new Label("Serial No.");
        private TextBox serialNumberBox = new TextBox();
        
        private Label billedBy = new Label("Billed by");
        
    private Button submitbutton = new Button("Submit");
        private VerticalPanel vpanel = new VerticalPanel();

        private long quantity;
        private List<String> serialNumbers;
        private List<String> itemNumbers;
        public JacketInfoBox(final EventBus eventBus, final Order order, final String user,
                final BillingType billingType, Map<Long, String> warehouses){
                this.quantity = (long)order.getQuantity();
                serialNumbers = new ArrayList<String>((int)this.quantity);
                itemNumbers = new ArrayList<String>((int)this.quantity);
                vpanel.add(errorLabel);
                if (order.getPickFromWarehouse() != null) {
                    warehousePickSuggestion.setText("Pick from WH: " + order.getPickFromWarehouse());
                }

                vpanel.add(getHorizontalPanel(jacketNumberLabel, jacketNumberBox));      //Ask for the jacket number
                if(billingType == BillingType.OURS) {
                    // Check if we need to suggest Hotspot warehouses ?
                vpanel.add(warehousePickSuggestion);                
            vpanel.add(getHorizontalPanel(itemNumberLabel, itemNumberBox));          //Ask for the item number
            if(order.isSerialized()) {
                vpanel.add(getHorizontalPanel(serialNumberLabel, serialNumberBox));      //Ask for Serial number only in case of Handsets
            }
                }

                vpanel.add(getHorizontalPanel(billedBy, new Label(user)));
                vpanel.add(submitbutton);
                
                setWidget(vpanel);
                setAutoHideEnabled(true);
                setGlassEnabled(true);
                if(billingType == BillingType.OURS)
                    setText("Enter all the details below:");
                else
                    setText("Enter Jacket Number below:");
                setModal(true);

                submitbutton.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                long jacketNumber = -1;
                                String serialNumber = "";
                                String itemNumber = "";
                                try {
                                        jacketNumber = Long.parseLong(jacketNumberBox.getText());
                                } catch(NumberFormatException nfe){
                                        nfe.printStackTrace();
                                }
                                
                                if(jacketNumber <= 0){
                                        errorLabel.setText("Invalid Jacket number.");
                                        return;
                                }

                                if(billingType == BillingType.OURS){
                        itemNumber = itemNumberBox.getText();
                        if(itemNumber==null || itemNumber.trim().isEmpty()){
                            errorLabel.setText("Item Number can't be left empty");
                            return;
                        }
                        itemNumber = itemNumber.trim();
                        
                        if(order.isSerialized()) {
                            try {
                                serialNumber = serialNumberBox.getText();
                            } catch(NumberFormatException nfe){
                                nfe.printStackTrace();
                            }

                            if(serialNumber == null || serialNumber.isEmpty()){
                                errorLabel.setText("Invalid Serial number");
                                return;
                            }
                            serialNumber = serialNumber.trim();
                        }
                                }
                                
                                serialNumbers.add(serialNumber);
                                itemNumbers.add(itemNumber);
                                if(billingType == BillingType.OURS && order.isSerialized() && quantity > 1) {
                                        quantity = quantity - 1; 
                                        itemNumberBox.setText("");
                                        serialNumberBox.setText("");
                                        errorLabel.setText( quantity + " more items need to be scanned. Scan next item.");
                                        return;
                                }
                                
                                if(billingType == BillingType.OURS && !order.isSerialized()){
                                        for(int i=1; i<(int)quantity; i++){
                                                serialNumbers.add(serialNumber);
                                                itemNumbers.add(itemNumber);            
                                        }
                                }
                                
                                eventBus.fireEvent(new AddJacketNumberEvent(order, jacketNumber, serialNumbers, itemNumbers, user, billingType));
                                hide();
                                clean();
                        }
                });
        }
        
        public void clean() {
                jacketNumberBox.setText("");
                serialNumberBox.setText("");
                errorLabel.setText("");
                warehousePickSuggestion.setText("");
        }
        
        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;
        }
}