Subversion Repositories SmartDukaan

Rev

Rev 7190 | Rev 13146 | 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 billNumberLabel = new Label("Bill Number");
        private TextBox billNumber = new TextBox();
        
        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 freebieWarehouseLabel = new Label("Freebie Warehouse");
        private TextBox freebieWarehouseBox = new TextBox();
        
        
        private Label billedBy = new Label("Billed by");
        
    private Button submitbutton = new Button("Submit");
        private VerticalPanel vpanel = new VerticalPanel();

        private long quantity;
        private long freebieWarehouseId = 0;
        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 || billingType == BillingType.OURS_EXTERNAL) {
                    // Check if we need to suggest Hotspot warehouses ?
                vpanel.add(warehousePickSuggestion);
                if (order.isHasItemNumber()) {
                    vpanel.add(getHorizontalPanel(itemNumberLabel, itemNumberBox));          //Ask for the item number
                    if(order.getItemNumber() != null && !order.getItemNumber().trim().equals("")){
                        itemNumberBox.setText(order.getItemNumber().trim());
                                }
                }

            if(order.isSerialized()) {
                vpanel.add(getHorizontalPanel(serialNumberLabel, serialNumberBox));      //Ask for Serial number only in case of Handsets
                if(order.getImeiNumber() != null && !order.getImeiNumber().trim().equals("")){
                        serialNumberBox.setText(order.getImeiNumber()+"");
                                }
            }
                }
                
                if((billingType == BillingType.OURS || billingType == BillingType.OURS_EXTERNAL) && order.getFreebieItemId()!=0) {
                        vpanel.add(getHorizontalPanel(freebieWarehouseLabel, freebieWarehouseBox));
                }

                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(getHorizontalPanel(billedBy, new Label(user)));
                vpanel.add(submitbutton);
                
                setWidget(vpanel);
                setAutoHideEnabled(true);
                setGlassEnabled(true);
                if(billingType == BillingType.OURS || billingType == BillingType.OURS_EXTERNAL)
                    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 || billingType == BillingType.OURS_EXTERNAL){
                                    if (order.isHasItemNumber()) {
                            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(quantity > 1 && (billingType == BillingType.OURS || billingType == BillingType.OURS_EXTERNAL) && order.isSerialized()) {
                                        quantity = quantity - 1; 
                                        itemNumberBox.setText("");
                                        serialNumberBox.setText("");
                                        errorLabel.setText( quantity + " more items need to be scanned. Scan next item.");
                                        return;
                                }
                                
                                if(billingType == BillingType.OURS || billingType == BillingType.OURS_EXTERNAL) {
                                        if(freebieWarehouseBox.getText()!=null && freebieWarehouseBox.getText()!="") {
                                                freebieWarehouseId = Long.parseLong(freebieWarehouseBox.getText());
                                        }
                                }
                                
                                if((billingType == BillingType.OURS || billingType == BillingType.OURS_EXTERNAL) && !order.isSerialized()){
                                        for(int i=1; i<(int)quantity; i++){
                                                serialNumbers.add(serialNumber);
                                                itemNumbers.add(itemNumber);            
                                        }
                                }
                                
                                eventBus.fireEvent(new AddJacketNumberEvent(order, billNumber.getText(), jacketNumber, serialNumbers, itemNumbers, freebieWarehouseId, user, billingType));
                                hide();
                                clean();
                        }
                });
        }
        
        public void clean() {
                jacketNumberBox.setText("");
                serialNumberBox.setText("");
                billNumber.setText("");
                freebieWarehouseBox.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;
        }
}