Subversion Repositories SmartDukaan

Rev

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