Subversion Repositories SmartDukaan

Rev

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