Rev 2526 | Rev 2588 | 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.FlagOrderEvent;import in.shop2020.hotspot.dashbaord.client.event.RequestPickupEvent;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;//Buttons for the Warehouse Executiveprivate Button acceptOrder = new Button();private Button rejectOrder = new Button();private Button notAvailable= new Button();private Button addBillingInfo= new Button();private Button printInvoice = new Button();private Button acceptDOA = new Button();private Button validateDOA = new Button();//Buttons for the Adminprivate Button flagOrder = new Button();private Button requestPickup = new Button();private Button authorizePickup = new Button();private Button refundOrder = new Button();private Button reshipOrder = new Button();private String user;private DetailsMask mask;private long warehouseID;private boolean isAdmin;public OrderDetails(EventBus eventbus, Order order, Order order2, DetailsMask mask, String user, long warehouseID, boolean isAdmin){this.eventbus = eventbus;this.order = order;this.transaction = order2;this.mask = mask;this.user = user;this.warehouseID = warehouseID;this.isAdmin = isAdmin;initWidget(binder.createAndBindUi(this));initTableForWE();if(this.isAdmin){initTableForAdmin();}loadOrderDetails();}private void initTableForWE() {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");notAvailable.setText("Out Of Stock");addBillingInfo.setText("Bill");printInvoice.setText("Print Invoice");acceptDOA.setText("Accept DOA");validateDOA.setText("Validate DOA");header.setWidget(0, 0, acceptOrder);header.setWidget(0, 1, notAvailable);header.setWidget(0, 2, addBillingInfo);header.setWidget(0, 3, printInvoice);header.setWidget(0, 4, acceptDOA);header.setWidget(0, 5, validateDOA);registerButtonHandlersForWE();implementMaskForWE();}private void registerButtonHandlersForWE(){acceptOrder.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if(acceptOrder.isEnabled())eventbus.fireEvent(new AcceptOrderEvent(order));}});notAvailable.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if(notAvailable.isEnabled())eventbus.fireEvent(new NostockOrderEvent(order));}});addBillingInfo.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if(!addBillingInfo.isEnabled())return;BillingInfoBox box = new BillingInfoBox(eventbus, order, user);box.center();}});printInvoice.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if(!printInvoice.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.");}}});}private void implementMaskForWE(){switch(mask){case NEW:maskButtonsForWE(true, true, true, false, false, false, false);break;case ACCEPT:maskButtonsForWE(false, false, false, false, true, false, false);break;case REJECT:maskButtonsForWE(false, false, false, false, false, false, false);break;case BILL:maskButtonsForWE(false, false, false, true, false, false, false);break;case SHIP:maskButtonsForWE(false, false, false, false, false, false, false);break;case NO_STOCK:maskButtonsForWE(true, true, false, false, false, false, false);break;case DOA_AWAITED:maskButtonsForWE(false, false, false, false, false, true, false);break;case DOA_RETURNED:maskButtonsForWE(false, false, false, false, false, false, true);break;default:maskButtonsForWE(false, false, false, false, false, false, false); //Unknown state, let's disallow any untoward actions.break;}}private void maskButtonsForWE(boolean accept, boolean reject, boolean notavailable, boolean printInv, boolean billing, boolean acceptdoa, boolean validatedoa){acceptOrder.setEnabled(accept);notAvailable.setEnabled(notavailable);printInvoice.setEnabled(printInv);addBillingInfo.setEnabled(billing);acceptDOA.setEnabled(acceptdoa);validateDOA.setEnabled(validatedoa);rejectOrder.setEnabled(reject);}private void initTableForAdmin() {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");if(transaction.isDoaFlag()){flagOrder.setText("Unflag");} else {flagOrder.setText("Flag");}requestPickup.setText("Request Pick-up No");authorizePickup.setText("Authorize Pick-up");reshipOrder.setText("Reship");refundOrder.setText("Refund");header.setWidget(1, 0, flagOrder);header.setWidget(1, 1, requestPickup);header.setWidget(1, 2, authorizePickup);header.setWidget(1, 3, reshipOrder);header.setWidget(1, 6, refundOrder);registerButtonHandlersForAdmin();implementMaskForAdmin();}private void registerButtonHandlersForAdmin(){flagOrder.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if(flagOrder.isEnabled()){eventbus.fireEvent(new FlagOrderEvent(order));}}});requestPickup.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if(requestPickup.isEnabled()){GWT.log("Raising a pickup request for: " + order.getOrderId());eventbus.fireEvent(new RequestPickupEvent(order));}}});authorizePickup.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if(!authorizePickup.isEnabled())return;PickupAuthorizationInfoBox box = new PickupAuthorizationInfoBox(eventbus, order);box.center();}});refundOrder.addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if(rejectOrder.isEnabled()){RejectReasonBox box = new RejectReasonBox(eventbus, order);//box.clear();box.center();}}});}private void implementMaskForAdmin(){switch(mask){case NO_STOCK:maskButtonsForAdmin(false, false, false, false, true);break;case DELIVERED:maskButtonsForAdmin(true, true, false, false, false); //Allow the OM to flag and request pickup.break;case DOA_PICKUP_REQUESTED:maskButtonsForAdmin(true, true, true, false, false); //Allow the OM to either re-request a pickup no. or authorize pickup by entering onebreak;case SALES_RETURNED:maskButtonsForAdmin(false, false, false, true, true); //Allow the OM to either reship the order or refund itbreak;default:maskButtonsForAdmin(false, false, false, false, false); //Unknown state. Let's not allow any untoward actions.break;}}private void maskButtonsForAdmin(boolean flag, boolean reqPickup, boolean authPickup, boolean reship, boolean refund){flagOrder.setEnabled(flag);requestPickup.setEnabled(reqPickup);authorizePickup.setEnabled(authPickup);reshipOrder.setEnabled(reship);refundOrder.setEnabled(refund);}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();}}