Subversion Repositories SmartDukaan

Rev

Rev 1146 | Rev 2449 | 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.AcceptOrderEvent;
import in.shop2020.hotspot.dashbaord.client.event.NostockOrderEvent;
import in.shop2020.hotspot.dashbaord.client.event.ShippedOrderEvent;
import in.shop2020.hotspot.dashbaord.shared.actions.DetailsMask;
import in.shop2020.hotspot.dashbaord.shared.actions.Order;

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

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ResizeComposite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class OrderDetails extends ResizeComposite{
        
        public interface Listener{
                void onClick();
        }
        
        interface OrderDetailsUiBinder extends UiBinder<Widget, OrderDetails>{ }
        
        interface SelectionStyle extends CssResource{
                String blueLabel();
                String greenLabel();
        }

        private static final OrderDetailsUiBinder binder = GWT.create(OrderDetailsUiBinder.class);
        
        @UiField FlexTable header;
        @UiField FlexTable table;
        @UiField HorizontalPanel orderDetails;
        @UiField VerticalPanel orderDetails1;
        @UiField VerticalPanel orderDetails2;
        @UiField VerticalPanel orderDetails3;
        @UiField VerticalPanel orderDetails4;
        @UiField VerticalPanel orderDetails5;
        @UiField SelectionStyle selectionStyle;
        
        
        private final EventBus eventbus;
        private Order order;
        private Order transaction;
        private Button acceptOrder = new Button();
        private Button rejectOrder = new Button();
        private Button notAvailable= new Button();
        private Button addBillingInfo= new Button();
        private Button addShippingInfo= new Button();
        private Button markShipped= new Button();
        private Button printLabel = new Button();
        private Button printManifest = new Button();
        
        private String user;
        private DetailsMask mask;
        private long warehouseID;
        
        public OrderDetails(EventBus eventbus, Order order, Order order2, DetailsMask mask, String user, long warehouseID){
                this.eventbus = eventbus;
                this.order = order;
                this.transaction = order2;
                this.mask = mask;
                this.user = user;
                this.warehouseID = warehouseID;
                initWidget(binder.createAndBindUi(this));
                initTable();
                registerButtonHandlers();
                implementMask();
                loadOrderDetails();
        }
        
        private void initTable() {
                header.getColumnFormatter().setWidth(0, "128px");
            header.getColumnFormatter().setWidth(1, "128px");
            header.getColumnFormatter().setWidth(2, "128px");
            header.getColumnFormatter().setWidth(3, "128px");
            header.getColumnFormatter().setWidth(4, "128px");
            header.getColumnFormatter().setWidth(5, "128px");
            header.getColumnFormatter().setWidth(6, "256px");
            
            acceptOrder.setText("Accept");
            rejectOrder.setText("Reject");
            notAvailable.setText("Out Of Stock");
            addBillingInfo.setText("Bill");
            printLabel.setText("Print Invoice");
            printManifest.setText("Print Manifest");
            printManifest.setVisible(false);
            addShippingInfo.setText("Ship");
            addShippingInfo.setVisible(false);
            markShipped.setText("Shipped");
            markShipped.setVisible(false);
            
            header.setWidget(0, 0, acceptOrder);
            header.setWidget(0, 1, notAvailable);
            header.setWidget(0, 2, printLabel);
            header.setWidget(0, 3, addBillingInfo);
            header.setWidget(0, 4, addShippingInfo);
            header.setWidget(0, 5, printManifest);
            header.setWidget(0, 5, markShipped);
            header.setWidget(0, 6, rejectOrder);

            //addShippingInfo.setVisible(false);
            //markShipped.setVisible(false);
            /*
            header.setText(0, 1, "Add Billing Details");
            header.setText(0, 2, "Print shipping label");
            header.setText(0, 3, "Prepare for Shipping ");
            header.setText(0, 4, "Mark Shipped");
            header.setText(0, 5, "View Order Details");

            header.setText(0, 0, "Accept Order");
            header.setText(0, 1, "Add Billing Details");
            header.setText(0, 2, "Print shipping label");
            header.setText(0, 3, "Prepare for Shipping ");
            header.setText(0, 4, "Mark Shipped");
            header.setText(0, 5, "View Order Details");
            */ 
        }
        
        private void registerButtonHandlers(){
                acceptOrder.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                if(acceptOrder.isEnabled()){
                                        eventbus.fireEvent(new AcceptOrderEvent(order));
                                }
                        }
                });
                
                rejectOrder.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                if(!notAvailable.isEnabled()) return;
                                RejectReasonBox box = new RejectReasonBox(eventbus, order);
                                //box.clear();
                                box.center();                   
                        }
                });

                notAvailable.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                eventbus.fireEvent(new NostockOrderEvent(order));
                        }
                });

                addBillingInfo.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                if(!addBillingInfo.isEnabled())
                                        return;
                                BillingInfoBox box = new BillingInfoBox(eventbus, order, user);
                                box.center();                           
                        }
                });

                printLabel.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                if(!printLabel.isEnabled())
                                        return;
                                if(order.getJacketNumber()==0){
                                        JacketInfoBox box = new JacketInfoBox(eventbus, order);
                                        //box.clean();
                                        box.center();
                                }else{
                                        String invoiceGenerationUrl = "http://" + Window.Location.getHost() + "/Support/invoice/";
                                        invoiceGenerationUrl = invoiceGenerationUrl + order.getOrderId();
                                        Window.open(invoiceGenerationUrl, "newWindowName", "window features.");
                                }
                        }
                });

                printManifest.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                ProviderInfoBox box = new ProviderInfoBox(eventbus, user, warehouseID);
                                //box.clear();
                                box.center();
                        }
                });
                
                addShippingInfo.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                if(!addShippingInfo.isEnabled()) return;
                                ShipmentInfoBox box = new ShipmentInfoBox(eventbus, order);
                                //box.clear();
                                box.center();                   
                        }
                });
                markShipped.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {                 
                                if(!markShipped.isEnabled()) return;
                                eventbus.fireEvent(new ShippedOrderEvent(order, "", "", "", false));
                        }
                });
                
        }
        /*
        private void registerhandlers(){
                header.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                
                                Cell cell = header.getCellForEvent(event);
                                
                                int columnIndex = cell.getCellIndex();
                                
                                if(columnIndex == 0){
                                        //accept orders
                                        eventbus.fireEvent(new AcceptOrderEvent(order));
                                }
                                
                                if(columnIndex == 1){
                                        //generate billing information
                                        BillingInfoBox box = new BillingInfoBox(eventbus, order);
                                        box.clear();
                                        box.center();
                                }
                                
                                if(columnIndex == 2){
                                        eventbus.fireEvent(new AddressLabelEvent(order));
                                }
                                
                                if(columnIndex == 3){
                                        ShipmentInfoBox box = new ShipmentInfoBox(eventbus, order);
                                        box.clear();
                                        box.center();
                                }
                                
                                if(columnIndex == 4){
                                        
                                        eventbus.fireEvent(new ShippedOrderEvent(order, "", "", "", false));
                                        
                                }
                        }
                });
        }
*/
        private void implementMask(){
                switch(mask){
                case NEW:
                        maskButtons(true, true, true, false, false, false, false, true);
                        break;
                case ACCEPT:
                        maskButtons(false, false, false, false, true, false, false, true);
                        break;
                case REJECT:
                        maskButtons(false, false, false, false, false, false, false, true);
                        break;
                case BILL:
                        maskButtons(false, false, false, true, false, true, true, true);
                        break;
                case SHIP:
                        maskButtons(false, false, false, false, false, false, false, true);
                        break;
                case NO_STOCK:
                        maskButtons(true, true, false, false, false, false, false, true);
                        break;
                        
                }
        }
        
        private void maskButtons(boolean accept, boolean reject, boolean notavailable, boolean print, boolean billing, boolean shipping, boolean mark, boolean manifest){
                acceptOrder.setEnabled(accept);
                rejectOrder.setEnabled(reject);
                notAvailable.setEnabled(notavailable);
                printLabel.setEnabled(print);
                printManifest.setEnabled(manifest);
                addBillingInfo.setEnabled(billing);
                addShippingInfo.setEnabled(shipping);
                markShipped.setEnabled(mark);           
        }
        
        private void loadOrderDetails(){
                orderDetails1.add(getHorizontalPanel("PRODUCT GROUP: ", transaction.getProductGroup()));
                orderDetails1.add(getHorizontalPanel("BRAND:         ", transaction.getBrand()));
                orderDetails1.add(getHorizontalPanel("MODEL:         ", getModelDisplayName(transaction)));
                orderDetails1.add(getHorizontalPanel("Item ID:       ", transaction.getItemId()+""));
                orderDetails1.add(getHorizontalPanel("EXTRA INFO:    ", transaction.getExtraInfo()));
                
                orderDetails2.add(getHorizontalPanel("NAME:          ", transaction.getCustomerName()));
                orderDetails2.add(getHorizontalPanel("ADDRESS:       ", getDisplayAddress(transaction)));
                orderDetails2.add(getHorizontalPanel("MOBILE NUMBER: ", transaction.getCustomerMobileNumber()));
                
                orderDetails3.add(getHorizontalPanel("TOTAL WEIGHT:      ", transaction.getTotalWeight()+""));
                orderDetails3.add(getHorizontalPanel("TOTAL AMOUNT(Rs):  ", transaction.getTotalAmount()+""));
                
                orderDetails4.add(getHorizontalPanel("AIRWAY BILL NO:  ", transaction.getAirwayBillNo()));
                orderDetails4.add(getHorizontalPanel("INVOICE NUMBER:  ", transaction.getInvoiceNumber()));
                orderDetails4.add(getHorizontalPanel("JACKET NUMBER:   ", transaction.getJacketNumber() + ""));
                orderDetails4.add(getHorizontalPanel("BILLED BY:       ", transaction.getBilledBy()));          
        }

        private HorizontalPanel getHorizontalPanel(String labelText, String valueText) {
                HorizontalPanel hpanel = new HorizontalPanel();
                hpanel.setSpacing(5);
                hpanel.add(new Label(labelText));
                hpanel.add(new Label(valueText));
                hpanel.setCellWidth(hpanel.getWidget(0), "128px");
                hpanel.setCellWidth(hpanel.getWidget(1), "128px");
                hpanel.getWidget(0).setStyleName(selectionStyle.blueLabel());
                hpanel.getWidget(1).setStyleName(selectionStyle.greenLabel());
                return hpanel;
        }
        
        private String getModelDisplayName(Order order){
                String modelName = "";
                if(order.getModelName()!=null)
                        modelName = order.getModelName() + " ";
                if(order.getModelNumber()!=null)
                        modelName = modelName + order.getModelNumber();
                if(order.getColor()!=null)
                        modelName = modelName + " (" + order.getColor() + ")";
                return modelName;
        }
        
        private String getDisplayAddress(Order order){
                StringBuilder displayAddress = new StringBuilder();
                displayAddress.append(order.getCustomerAddress1() + "\n");
                displayAddress.append(order.getCustomerAddress2() + "\n");
                displayAddress.append(order.getCustomerCity() + "\n");
                displayAddress.append(order.getCustomerState() + "   PIN - " +  order.getCustomerPincode());
                return displayAddress.toString();
        }
}