Subversion Repositories SmartDukaan

Rev

Rev 2449 | Rev 2513 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
167 ashish 1
package in.shop2020.hotspot.dashbaord.client.inbox;
2
 
3
import in.shop2020.hotspot.dashbaord.client.event.AcceptOrderEvent;
487 rajveer 4
import in.shop2020.hotspot.dashbaord.client.event.NostockOrderEvent;
2509 chandransh 5
import in.shop2020.hotspot.dashbaord.client.event.FlagOrderEvent;
306 ashish 6
import in.shop2020.hotspot.dashbaord.shared.actions.DetailsMask;
167 ashish 7
import in.shop2020.hotspot.dashbaord.shared.actions.Order;
8
 
9
import org.enunes.gwt.mvp.client.EventBus;
10
 
11
import com.google.gwt.core.client.GWT;
12
import com.google.gwt.event.dom.client.ClickEvent;
13
import com.google.gwt.event.dom.client.ClickHandler;
14
import com.google.gwt.resources.client.CssResource;
15
import com.google.gwt.uibinder.client.UiBinder;
16
import com.google.gwt.uibinder.client.UiField;
487 rajveer 17
import com.google.gwt.user.client.Window;
306 ashish 18
import com.google.gwt.user.client.ui.Button;
167 ashish 19
import com.google.gwt.user.client.ui.FlexTable;
306 ashish 20
import com.google.gwt.user.client.ui.HorizontalPanel;
21
import com.google.gwt.user.client.ui.Label;
167 ashish 22
import com.google.gwt.user.client.ui.ResizeComposite;
306 ashish 23
import com.google.gwt.user.client.ui.VerticalPanel;
167 ashish 24
import com.google.gwt.user.client.ui.Widget;
25
 
26
public class OrderDetails extends ResizeComposite{
27
 
28
	public interface Listener{
29
		void onClick();
30
	}
31
 
585 chandransh 32
	interface OrderDetailsUiBinder extends UiBinder<Widget, OrderDetails>{ }
167 ashish 33
 
34
	interface SelectionStyle extends CssResource{
306 ashish 35
		String blueLabel();
36
		String greenLabel();
167 ashish 37
	}
38
 
585 chandransh 39
	private static final OrderDetailsUiBinder binder = GWT.create(OrderDetailsUiBinder.class);
167 ashish 40
 
41
	@UiField FlexTable header;
42
	@UiField FlexTable table;
306 ashish 43
	@UiField HorizontalPanel orderDetails;
44
	@UiField VerticalPanel orderDetails1;
45
	@UiField VerticalPanel orderDetails2;
46
	@UiField VerticalPanel orderDetails3;
47
	@UiField VerticalPanel orderDetails4;
48
	@UiField VerticalPanel orderDetails5;
49
	@UiField SelectionStyle selectionStyle;
167 ashish 50
 
51
 
52
	private final EventBus eventbus;
53
	private Order order;
54
	private Order transaction;
2509 chandransh 55
 
56
	//Buttons for the Warehouse Executive 
306 ashish 57
	private Button acceptOrder = new Button();
58
	private Button rejectOrder = new Button();
59
	private Button notAvailable= new Button();
60
	private Button addBillingInfo= new Button();
2449 chandransh 61
	private Button printInvoice = new Button();
2509 chandransh 62
	private Button acceptDOA = new Button();
63
	private Button validateDOA = new Button();
677 chandransh 64
 
2509 chandransh 65
	//Buttons for the Admin
66
	private Button flagOrder = new Button();
67
	private Button requestPickup = new Button();
68
	private Button authorizePickup = new Button();
69
	private Button refundOrder = new Button();
70
	private Button reshipOrder = new Button();	
71
 
306 ashish 72
	private String user;
73
	private DetailsMask mask;
677 chandransh 74
	private long warehouseID;
2449 chandransh 75
	private boolean isAdmin;
167 ashish 76
 
2449 chandransh 77
	public OrderDetails(EventBus eventbus, Order order, Order order2, DetailsMask mask, String user, long warehouseID, boolean isAdmin){
167 ashish 78
		this.eventbus = eventbus;
79
		this.order = order;
80
		this.transaction = order2;
306 ashish 81
		this.mask = mask;
82
		this.user = user;
677 chandransh 83
		this.warehouseID = warehouseID;
2449 chandransh 84
		this.isAdmin = isAdmin;
85
 
167 ashish 86
		initWidget(binder.createAndBindUi(this));
2509 chandransh 87
		if(this.isAdmin){
88
			initTableForAdmin();
89
		}else{
90
			initTableForWE();			
91
		}
306 ashish 92
		loadOrderDetails();
167 ashish 93
	}
94
 
2509 chandransh 95
	private void initTableForWE() {
167 ashish 96
		header.getColumnFormatter().setWidth(0, "128px");
306 ashish 97
	    header.getColumnFormatter().setWidth(1, "128px");
98
	    header.getColumnFormatter().setWidth(2, "128px");
99
	    header.getColumnFormatter().setWidth(3, "128px");
100
	    header.getColumnFormatter().setWidth(4, "128px");
677 chandransh 101
	    header.getColumnFormatter().setWidth(5, "128px");
102
	    header.getColumnFormatter().setWidth(6, "256px");
306 ashish 103
 
104
	    acceptOrder.setText("Accept");
105
	    notAvailable.setText("Out Of Stock");
106
	    addBillingInfo.setText("Bill");
2449 chandransh 107
	    printInvoice.setText("Print Invoice");
2509 chandransh 108
	    acceptDOA.setText("Accept DOA");
109
	    validateDOA.setText("Validate DOA");
110
	    rejectOrder.setText("Reject");
486 rajveer 111
 
306 ashish 112
	    header.setWidget(0, 0, acceptOrder);
487 rajveer 113
	    header.setWidget(0, 1, notAvailable);
2509 chandransh 114
	    header.setWidget(0, 2, addBillingInfo);
115
	    header.setWidget(0, 3, printInvoice);
116
	    header.setWidget(0, 4, acceptDOA);
117
	    header.setWidget(0, 5, validateDOA);
849 chandransh 118
	    header.setWidget(0, 6, rejectOrder);
2509 chandransh 119
 
120
	    registerButtonHandlersForWE();
121
		implementMaskForWE();
167 ashish 122
	}
123
 
2509 chandransh 124
	private void registerButtonHandlersForWE(){
306 ashish 125
		acceptOrder.addClickHandler(new ClickHandler() {
126
 
127
			@Override
128
			public void onClick(ClickEvent event) {
129
				if(acceptOrder.isEnabled()){
130
					eventbus.fireEvent(new AcceptOrderEvent(order));
131
				}
132
			}
133
		});
134
 
486 rajveer 135
		rejectOrder.addClickHandler(new ClickHandler() {
136
 
137
			@Override
138
			public void onClick(ClickEvent event) {
139
				if(!notAvailable.isEnabled()) return;
140
				RejectReasonBox box = new RejectReasonBox(eventbus, order);
141
				//box.clear();
142
				box.center();			
143
			}
144
		});
145
 
487 rajveer 146
		notAvailable.addClickHandler(new ClickHandler() {
147
 
148
			@Override
149
			public void onClick(ClickEvent event) {
150
				eventbus.fireEvent(new NostockOrderEvent(order));
151
			}
152
		});
153
 
306 ashish 154
		addBillingInfo.addClickHandler(new ClickHandler() {
155
 
156
			@Override
157
			public void onClick(ClickEvent event) {
1146 chandransh 158
				if(!addBillingInfo.isEnabled())
159
					return;
306 ashish 160
				BillingInfoBox box = new BillingInfoBox(eventbus, order, user);
161
				box.center();				
162
			}
163
		});
487 rajveer 164
 
2449 chandransh 165
		printInvoice.addClickHandler(new ClickHandler() {
306 ashish 166
 
167
			@Override
168
			public void onClick(ClickEvent event) {
2449 chandransh 169
				if(!printInvoice.isEnabled())
1146 chandransh 170
					return;
171
				if(order.getJacketNumber()==0){
172
					JacketInfoBox box = new JacketInfoBox(eventbus, order);
173
					//box.clean();
174
					box.center();
175
				}else{
176
					String invoiceGenerationUrl = "http://" + Window.Location.getHost() + "/Support/invoice/";
177
					invoiceGenerationUrl = invoiceGenerationUrl + order.getOrderId();
178
					Window.open(invoiceGenerationUrl, "newWindowName", "window features.");
179
				}
306 ashish 180
			}
181
		});
2449 chandransh 182
	}
487 rajveer 183
 
2509 chandransh 184
	private void implementMaskForWE(){
306 ashish 185
		switch(mask){
186
		case NEW:
2509 chandransh 187
			maskButtonsForWE(true, true, true, false, false, false, false);
306 ashish 188
			break;
189
		case ACCEPT:
2509 chandransh 190
			maskButtonsForWE(false, false, false, false, true, false, false);
306 ashish 191
			break;
486 rajveer 192
		case REJECT:
2509 chandransh 193
			maskButtonsForWE(false, false, false, false, false, false, false);
486 rajveer 194
			break;
306 ashish 195
		case BILL:
2509 chandransh 196
			maskButtonsForWE(false, false, false, true, false, false, false);
306 ashish 197
			break;
198
		case SHIP:
2509 chandransh 199
			maskButtonsForWE(false, false, false, false, false, false, false);
306 ashish 200
			break;
487 rajveer 201
		case NO_STOCK:
2509 chandransh 202
			maskButtonsForWE(true, true, false, false, false, false, false);
487 rajveer 203
			break;
2509 chandransh 204
		case DOA_AWAITED:
205
			maskButtonsForWE(false, false, false, false, false, true, false);
206
			break;
207
		case DOA_RETURNED:
208
			maskButtonsForWE(false, false, false, false, false, false, true);
209
			break;
306 ashish 210
		}
211
	}
212
 
2509 chandransh 213
	private void maskButtonsForWE(boolean accept, boolean reject, boolean notavailable, boolean printInv, boolean billing, boolean acceptdoa, boolean validatedoa){
306 ashish 214
		acceptOrder.setEnabled(accept);
215
		notAvailable.setEnabled(notavailable);
2449 chandransh 216
		printInvoice.setEnabled(printInv);
306 ashish 217
		addBillingInfo.setEnabled(billing);
2509 chandransh 218
		acceptDOA.setEnabled(acceptdoa);
219
		validateDOA.setEnabled(validatedoa);
220
		rejectOrder.setEnabled(reject);
306 ashish 221
	}
2509 chandransh 222
 
223
	private void initTableForAdmin() {
224
		header.getColumnFormatter().setWidth(0, "128px");
225
	    header.getColumnFormatter().setWidth(1, "128px");
226
	    header.getColumnFormatter().setWidth(2, "128px");
227
	    header.getColumnFormatter().setWidth(3, "128px");
228
	    header.getColumnFormatter().setWidth(4, "128px");
229
	    header.getColumnFormatter().setWidth(5, "128px");
230
	    header.getColumnFormatter().setWidth(6, "256px");
231
 
232
	    if(transaction.isDoaFlag()){
233
	    	flagOrder.setText("Unflag");
234
	    } else {
235
	    	flagOrder.setText("Flag");
236
	    }
237
 
238
	    requestPickup.setText("Request Pick-up No");
239
	    authorizePickup.setText("Authorize Pick-up");
240
	    reshipOrder.setText("Reship");
241
	    refundOrder.setText("Refund");
242
 
243
	    header.setWidget(0, 0, flagOrder);
244
	    header.setWidget(0, 1, requestPickup);
245
	    header.setWidget(0, 2, authorizePickup);
246
	    header.setWidget(0, 3, reshipOrder);
247
	    header.setWidget(0, 6, refundOrder);
248
 
249
	    registerButtonHandlersForAdmin();
250
		implementMaskForAdmin();
251
	}
306 ashish 252
 
2509 chandransh 253
	private void registerButtonHandlersForAdmin(){
254
		flagOrder.addClickHandler(new ClickHandler() {
255
 
256
			@Override
257
			public void onClick(ClickEvent event) {
258
				if(flagOrder.isEnabled()){
259
					eventbus.fireEvent(new FlagOrderEvent(order));
260
				}
261
			}
262
		});
263
 
264
		requestPickup.addClickHandler(new ClickHandler() {
265
 
266
			@Override
267
			public void onClick(ClickEvent event) {
268
				// TODO Auto-generated method stub
269
 
270
			}
271
		});
272
 
273
		authorizePickup.addClickHandler(new ClickHandler() {
274
 
275
			@Override
276
			public void onClick(ClickEvent event) {
277
				// TODO Auto-generated method stub
278
 
279
			}
280
		});
281
 
282
		refundOrder.addClickHandler(new ClickHandler() {
283
 
284
			@Override
285
			public void onClick(ClickEvent event) {
286
				// TODO Auto-generated method stub
287
 
288
			}
289
		});
290
	}
291
 
292
	private void implementMaskForAdmin(){
293
		switch(mask){
294
		case DELIVERED:
295
			maskButtonsForAdmin(true, true, false, false, false);	//Allow the OM to flag and request pickup.
296
			break;
297
		case DOA_PICKUP_REQUESTED:
298
			maskButtonsForAdmin(true, true, true, false, false);	//Allow the OM to either re-request a pickup no. or authorize pickup by entering one
299
			break;
300
		case SALES_RETURNED:
301
			maskButtonsForAdmin(false, false, false, true, true);	//Allow the OM to either reship the order or refund it
302
			break;
303
		}
304
	}
305
 
306
	private void maskButtonsForAdmin(boolean flag, boolean reqPickup, boolean authPickup, boolean reship, boolean refund){
307
		flagOrder.setEnabled(flag);
308
		requestPickup.setEnabled(reqPickup);
309
		authorizePickup.setEnabled(authPickup);
310
		reshipOrder.setEnabled(reship);
311
		refundOrder.setEnabled(refund);
312
	}
313
 
306 ashish 314
	private void loadOrderDetails(){
966 chandransh 315
		orderDetails1.add(getHorizontalPanel("PRODUCT GROUP: ", transaction.getProductGroup()));
316
		orderDetails1.add(getHorizontalPanel("BRAND:   	     ", transaction.getBrand()));
317
		orderDetails1.add(getHorizontalPanel("MODEL:         ", getModelDisplayName(transaction)));
318
		orderDetails1.add(getHorizontalPanel("Item ID:       ", transaction.getItemId()+""));
319
		orderDetails1.add(getHorizontalPanel("EXTRA INFO:    ", transaction.getExtraInfo()));
306 ashish 320
 
966 chandransh 321
		orderDetails2.add(getHorizontalPanel("NAME:          ", transaction.getCustomerName()));
322
		orderDetails2.add(getHorizontalPanel("ADDRESS:       ", getDisplayAddress(transaction)));
323
		orderDetails2.add(getHorizontalPanel("MOBILE NUMBER: ", transaction.getCustomerMobileNumber()));
306 ashish 324
 
966 chandransh 325
		orderDetails3.add(getHorizontalPanel("TOTAL WEIGHT:      ", transaction.getTotalWeight()+""));
326
		orderDetails3.add(getHorizontalPanel("TOTAL AMOUNT(Rs):  ", transaction.getTotalAmount()+""));
306 ashish 327
 
966 chandransh 328
		orderDetails4.add(getHorizontalPanel("AIRWAY BILL NO:  ", transaction.getAirwayBillNo()));
329
		orderDetails4.add(getHorizontalPanel("INVOICE NUMBER:  ", transaction.getInvoiceNumber()));
330
		orderDetails4.add(getHorizontalPanel("JACKET NUMBER:   ", transaction.getJacketNumber() + ""));
331
		orderDetails4.add(getHorizontalPanel("BILLED BY:       ", transaction.getBilledBy()));		
332
	}
639 chandransh 333
 
966 chandransh 334
	private HorizontalPanel getHorizontalPanel(String labelText, String valueText) {
335
		HorizontalPanel hpanel = new HorizontalPanel();
639 chandransh 336
		hpanel.setSpacing(5);
966 chandransh 337
		hpanel.add(new Label(labelText));
338
		hpanel.add(new Label(valueText));
639 chandransh 339
		hpanel.setCellWidth(hpanel.getWidget(0), "128px");
340
		hpanel.setCellWidth(hpanel.getWidget(1), "128px");
341
		hpanel.getWidget(0).setStyleName(selectionStyle.blueLabel());
342
		hpanel.getWidget(1).setStyleName(selectionStyle.greenLabel());
966 chandransh 343
		return hpanel;
344
	}
306 ashish 345
 
966 chandransh 346
	private String getModelDisplayName(Order order){
347
		String modelName = "";
348
		if(order.getModelName()!=null)
349
			modelName = order.getModelName() + " ";
350
		if(order.getModelNumber()!=null)
351
			modelName = modelName + order.getModelNumber();
352
		if(order.getColor()!=null)
353
			modelName = modelName + " (" + order.getColor() + ")";
354
		return modelName;
306 ashish 355
	}
966 chandransh 356
 
357
	private String getDisplayAddress(Order order){
358
		StringBuilder displayAddress = new StringBuilder();
359
		displayAddress.append(order.getCustomerAddress1() + "\n");
360
		displayAddress.append(order.getCustomerAddress2() + "\n");
361
		displayAddress.append(order.getCustomerCity() + "\n");
362
		displayAddress.append(order.getCustomerState() + "   PIN - " +  order.getCustomerPincode());
363
		return displayAddress.toString();
364
	}
167 ashish 365
}