Subversion Repositories SmartDukaan

Rev

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