Subversion Repositories SmartDukaan

Rev

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