Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
1961 ankur.sing 1
package in.shop2020.catalog.dashboard.client;
2
 
3
import in.shop2020.catalog.dashboard.shared.Item;
4431 phani.kuma 4
import in.shop2020.catalog.dashboard.shared.ItemInventory;
6530 vikram.rag 5
import in.shop2020.catalog.dashboard.shared.ItemWarehouse;
3558 rajveer 6
import in.shop2020.catalog.dashboard.shared.SourcePricings;
2066 ankur.sing 7
import in.shop2020.catalog.dashboard.shared.Utils;
2119 ankur.sing 8
import in.shop2020.catalog.dashboard.shared.VendorItemMapping;
9
import in.shop2020.catalog.dashboard.shared.VendorPricings;
5504 phani.kuma 10
import in.shop2020.catalog.dashboard.shared.VoucherItemMapping;
18150 kshitij.so 11
import in.shop2020.catalog.dashboard.shared.BulkItemPricing;
1961 ankur.sing 12
 
5427 amit.gupta 13
import java.util.ArrayList;
1961 ankur.sing 14
import java.util.Date;
2066 ankur.sing 15
import java.util.HashMap;
5427 amit.gupta 16
import java.util.Iterator;
17
import java.util.List;
1992 ankur.sing 18
import java.util.Map;
19
import java.util.Map.Entry;
1961 ankur.sing 20
 
21
import com.google.gwt.core.client.GWT;
5427 amit.gupta 22
import com.google.gwt.dom.client.Style.Unit;
11671 vikram.rag 23
import com.google.gwt.event.dom.client.ChangeEvent;
24
import com.google.gwt.event.dom.client.ChangeHandler;
1961 ankur.sing 25
import com.google.gwt.event.dom.client.ClickEvent;
1992 ankur.sing 26
import com.google.gwt.event.dom.client.ClickHandler;
27
import com.google.gwt.resources.client.CssResource;
1961 ankur.sing 28
import com.google.gwt.uibinder.client.UiBinder;
29
import com.google.gwt.uibinder.client.UiField;
5427 amit.gupta 30
import com.google.gwt.uibinder.client.UiHandler;
1961 ankur.sing 31
import com.google.gwt.user.client.Window;
2126 ankur.sing 32
import com.google.gwt.user.client.rpc.AsyncCallback;
1961 ankur.sing 33
import com.google.gwt.user.client.ui.Button;
2066 ankur.sing 34
import com.google.gwt.user.client.ui.CheckBox;
5427 amit.gupta 35
import com.google.gwt.user.client.ui.DialogBox;
1992 ankur.sing 36
import com.google.gwt.user.client.ui.FlexTable;
37
import com.google.gwt.user.client.ui.HTMLTable.Cell;
1961 ankur.sing 38
import com.google.gwt.user.client.ui.Label;
4506 phani.kuma 39
import com.google.gwt.user.client.ui.ListBox;
1961 ankur.sing 40
import com.google.gwt.user.client.ui.ResizeComposite;
41
import com.google.gwt.user.client.ui.TextBox;
5427 amit.gupta 42
import com.google.gwt.user.client.ui.VerticalPanel;
1961 ankur.sing 43
import com.google.gwt.user.client.ui.Widget;
2068 ankur.sing 44
import com.google.gwt.user.datepicker.client.DateBox;
1961 ankur.sing 45
 
2427 ankur.sing 46
/**
47
 * Panel contains fields for item details. Some of these fields are editable.
48
 * It also contains vendor item pricings, vendor item keys, and item availability in tabular format.
49
 * Item availability is made invisible for time being 
50
 */
5217 amit.gupta 51
public class ItemDetails extends ResizeComposite implements ComingSoon {
1961 ankur.sing 52
 
10484 vikram.rag 53
	private final int TABLE_INDEX_MAPPING_VENDOR_DESC = 0, 
54
	TABLE_INDEX_MAPPING_ITEM_KEY = 1,
55
	TABLE_INDEX_MAPPING_BUTTON = 2,
56
	TABLE_INDEX_MAPPING_VENDORID = 3, 
57
	TABLE_INDEX_MAPPING_ITEM_KEY_OLD = 4;
3558 rajveer 58
 
10484 vikram.rag 59
	private final int TABLE_INDEX_PRICING_VENDOR_DESC = 0, 
60
	TABLE_INDEX_PRICING_MOP = 1,
61
	TABLE_INDEX_PRICING_DP = 2,
62
	TABLE_INDEX_PRICING_TP = 3,
63
	TABLE_INDEX_PRICING_NLC = 4,
64
	TABLE_INDEX_PRICING_BUTTON = 5,
65
	TABLE_INDEX_PRICING_VENDORID = 6;
3558 rajveer 66
 
10484 vikram.rag 67
	private final int TABLE_INDEX_SOURCE_PRICING_SOURCE_DESC = 0, 
68
	TABLE_INDEX_SOURCE_PRICING_MRP = 1,
69
	TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE = 2,
70
	TABLE_INDEX_SOURCE_PRICING_BUTTON = 3,
71
	TABLE_INDEX_SOURCE_PRICING_SOURCE_ID = 4;
2066 ankur.sing 72
 
10484 vikram.rag 73
	private final int TABLE_INDEX_WAREHOUSE_ID = 0,
74
	TABLE_INDEX_WAREHOUSE_DESC = 1,
75
	TABLE_INDEX_WAREHOUSE_INVA = 2,
76
	TABLE_INDEX_WAREHOUSE_INVR = 3,
77
	TABLE_INDEX_WAREHOUSE_HELD = 4,
78
	TABLE_INDEX_WAREHOUSE_EBAY_HELD = 5,
79
	TABLE_INDEX_WAREHOUSE_SNAPDEAL_HELD = 6,
80
	TABLE_INDEX_WAREHOUSE_FLIPKART_HELD = 7,
13748 manish.sha 81
	TABLE_INDEX_WAREHOUSE_HOMESHOP18_HELD = 8,
82
	TABLE_INDEX_WAREHOUSE_GET_BUTTON = 9,
83
	TABLE_INDEX_WAREHOUSE_UPDATE_BUTTON = 10;
2066 ankur.sing 84
 
10484 vikram.rag 85
	private final int TABLE_INDEX_WAREHOUSE_NAME = 0,
86
	TABLE_INDEX_WAREHOUSE_ADD_DEL_BUTTON = 1;
1961 ankur.sing 87
 
10484 vikram.rag 88
	private final int TABLE_INDEX_STATE_NAME = 0,
89
	TABLE_INDEX_STATE_TAX_PERCENTAGE = 1;
1961 ankur.sing 90
 
2066 ankur.sing 91
 
10484 vikram.rag 92
	private final int TABLE_INDEX_SIMILAR_ITEMS_CATALOG_ITEM_ID = 0,
93
	TABLE_INDEX_SIMILAR_ITEMS_PRODUCT_GROUP = 1,
94
	TABLE_INDEX_SIMILAR_ITEMS_BRAND = 2,
95
	TABLE_INDEX_SIMILAR_ITEMS_MODEL_NUMBER = 3,
96
	TABLE_INDEX_SIMILAR_ITEMS_MODEL_NAME = 4,
97
	TABLE_INDEX_SIMILAR_ITEMS_CATEGORY = 5,
98
	TABLE_INDEX_SIMILAR_ITEMS_BUTTON = 6;
2066 ankur.sing 99
 
10484 vikram.rag 100
	private final int TABLE_INDEX_VOUCHERS_TYPE = 0,
101
	TABLE_INDEX_VOUCHERS_AMOUNT = 1,
102
	TABLE_INDEX_VOUCHERS_ADD_EDIT_BUTTON = 2,
103
	TABLE_INDEX_VOUCHERS_DEL_BUTTON = 3;
2066 ankur.sing 104
 
18150 kshitij.so 105
	private final int TABLE_INDEX_BULK_PRICING_ID=0, 
106
	TABLE_INDEX_QUANTITY = 1,
107
	TABLE_INDEX_PRICE = 2,
108
	TABLE_INDEX_BULK_PRICING_BUTTON =3,
109
	TABLE_INDEX_BULK_PRICING_REMOVE_BUTTON = 4;
110
 
10484 vikram.rag 111
	private final String MANDATORY_MRP = "MRP",
112
	MANDATORY_WEIGHT = "Weight",
113
	MANDATORY_BEST_DEAL_TEXT = "Best Deal Text",
114
	MANDATORY_BEST_DEAL_DETAIL_TEXT = "Best Deal Detail Text",
115
	MANDATORY_BEST_DEAL_DETAIL_LINK = "Best Deal Detail Link",
116
	MANDATORY_BRAND = "Brand",
117
	MANDATORY_MODEL_NO = "Model Number",
118
	MANDATORY_MODEL_NAME = "Model Name";
4649 phani.kuma 119
 
2066 ankur.sing 120
 
10484 vikram.rag 121
	private final String OPTIONAL_SELLING_PRICE = "Selling Price",	
122
	OPTIONAL_VENDOR_PRICING = "Vendor Pricing",
123
	OPTIONAL_PREFERRED_VENDOR = "Preferred Vendor",
124
	OPTIONAL_PREFERRED_INSURER = "Preferred Insurer",
125
	OPTIONAL_SOURCE_PRICING = "Source Pricing",
18150 kshitij.so 126
	OPTIONAL_FREEBIE_ITEM_ID = "Freebie Item Id",
127
	OPTIONAL_PACK_QUANTITY = "Pack Quantity",
128
	OPTIONAL_QUANTITY_STEP="Quantity Step",
129
	OPTIONAL_MINIMUM_BUY_QTY="Minimum Buy Qty";
5217 amit.gupta 130
 
10484 vikram.rag 131
	private final String PRICE_WIDTH = "100px", VENDOR_DESC_WIDTH = "130px",
132
	VENDOR_ID_WIDTH = "100px", ITEM_KEY_WIDTH = "200px",
133
	BUTTON_WIDTH = "50px";
1992 ankur.sing 134
 
10484 vikram.rag 135
	private Map<String, String> ConfigMap;
136
	interface ItemDetailsUiBinder extends UiBinder<Widget, ItemDetails> {}
137
	private static ItemDetailsUiBinder uiBinder = GWT.create(ItemDetailsUiBinder.class);
138
	private final CatalogServiceAsync catalogService = GWT.create(CatalogService.class);
139
	Map<String, Object> mandatoryChangedValMap;
140
	Map<String, Object> optionalChangedValMap;
2066 ankur.sing 141
 
10484 vikram.rag 142
 
143
	interface ItemDetailStyle extends CssResource{
144
		String greenLabel();
145
		String fieldChanged();
146
	}
147
 
148
	private Item item, newItem;
149
	private CatalogDashboard catalogDashboardPanel;
150
 
151
	@UiField ItemDetailStyle style;
152
	@UiField Label itemId;
153
	@UiField TextBox brand, modelNumber, modelName, color;
154
	@UiField Label contentCategory, catalogItemId, productGroup;
11671 vikram.rag 155
	@UiField TextBox statusDesc, comments, dealText;
10484 vikram.rag 156
	@UiField TextBox sellingPrice, mrp, weight;
157
	@UiField Label addedOn, retireDate, updatedOn;
158
	@UiField Label itemStatus;
159
	@UiField TextBox bestDealsText, bestDealsValue ,bestDealsDetailsText,bestDealsDetailsLink; 
160
	@UiField FlexTable headerAvailability, availabilityTable;
161
	@UiField FlexTable headerVendorItemKey, tableVendorItemKey;
162
	@UiField FlexTable headerVendorPrices, tableVendorPrices;
163
	@UiField FlexTable headerSourcePrices, tableSourcePrices;
18150 kshitij.so 164
	@UiField FlexTable headerBulkPricing, tableBulkPricing;
11671 vikram.rag 165
	@UiField TextBox bestSellingRank,dealRank;
10484 vikram.rag 166
	@UiField TextBox expectedDelay;
11671 vikram.rag 167
	@UiField CheckBox defaultForEntity, risky, warehouseStickiness, itemType, hasItemNo, showSellingPrice, holdOverride,isCodOnDeal,isDealActive;
168
	@UiField DateBox startDate, expectedArrivalDate, comingSoonStartDate,dealStartDate,dealEndDate;
10484 vikram.rag 169
	@UiField FlexTable headerSimilarItems, tableSimilarItems;
11671 vikram.rag 170
	@UiField ListBox preferredVendor,preferredInsurer,dealTextOption,dealFreebieOption;
10484 vikram.rag 171
	@UiField Button comingSoonButton;
172
	@UiField FlexTable headerVouchers, tableVouchers;
173
	@UiField FlexTable headerIgnoredWarehouse,tableIgnoredWarehouse;
174
	@UiField FlexTable headerVatDetails,tableVatDetails;
175
	@UiField TextBox minStockLevel, numOfDaysStock;
13727 manish.sha 176
	@UiField TextBox lastNdaySale, websiteLastNdaySale, amazonLastNdaySale, ebayLastNdaySale, snapdealLastNdaySale, flipkartLastNdaySale, homeshop18LastNdaySale;
10484 vikram.rag 177
	@UiField TextBox freebieItemId;
178
	@UiField TextBox asin;
179
	@UiField TextBox holdInventory;
180
	@UiField TextBox defaultInventory;
11671 vikram.rag 181
	@UiField TextBox dealFreebieItemId;
182
	@UiField TextBox dealPrice;
18150 kshitij.so 183
	@UiField TextBox packQuantity, quantityStep, minimumBuyQuantity;
10484 vikram.rag 184
 
185
	public ItemDetails(Item item){
186
		this();
187
		setItemDetails(item);
188
	}
189
 
190
	public ItemDetails() {
191
		initWidget(uiBinder.createAndBindUi(this));
192
		initAvailabilityHeader();
18150 kshitij.so 193
		initBulkPricingHeader();
10484 vikram.rag 194
		initVendorKeysHeader();
195
		initVendorPricingHeader();
196
		initSourcePricingHeader();
197
		initSimilarItemList();
198
		initVoucherHeader();
199
		initIgnoredWarehouseHeader();
200
		preferredVendor.addItem("null");
201
		preferredInsurer.addItem("null");
202
		getConfigdataforPriceCompare();
203
	}
204
 
205
	public void getConfigdataforPriceCompare(){
206
		catalogService.getConfigdataforPriceCompare(new AsyncCallback<Map<String,String>>() {
207
			@Override
208
			public void onSuccess(Map<String, String> result) {
209
				ConfigMap = result;
210
			}
211
			@Override
212
			public void onFailure(Throwable caught) {
213
				caught.printStackTrace();
214
			}
215
		});
216
	}
217
 
218
	/**
219
	 * Sets the UI fields with item object attributes
220
	 * Also populates tables for vendor prices, keys and item availability
221
	 * @param item
222
	 */
223
	public void setItemDetails(Item item){
224
		this.item = item;
225
		itemId.setText(item.getId()+"");
226
		productGroup.setText(item.getProductGroup());
227
		brand.setText(item.getBrand());
228
		modelNumber.setText(item.getModelNumber());
229
		modelName.setText(item.getModelName());
230
		color.setText(item.getColor());
231
 
232
		statusDesc.setText(item.getItemStatusDesc());
233
		contentCategory.setText(item.getContentCategory()+"");
234
		comments.setText(item.getComments());
235
		catalogItemId.setText(item.getCatalogItemId() + "");
11671 vikram.rag 236
		dealTextOption.clear();
237
		dealTextOption.addItem("None","0");
238
		dealTextOption.addItem("Existing Best Deals Text","1");
239
		dealTextOption.addItem("Other","2");
240
		dealTextOption.setSelectedIndex(item.getPrivateDeal().getDealTextOption().intValue());
241
		if(!item.getPrivateDeal().getDealText().equals("")){
242
			dealText.setText(item.getPrivateDeal().getDealText()+"");
243
		}
244
		else{
245
			dealText.setText("");	
246
		}
11976 vikram.rag 247
		if(dealTextOption.getSelectedIndex()!=2){
248
			dealText.setEnabled(false);
249
		}
11671 vikram.rag 250
		dealFreebieOption.clear();
251
		dealFreebieOption.addItem("None","0");
252
		dealFreebieOption.addItem("Existing Freebie","1");
253
		dealFreebieOption.addItem("Other","2");
254
		dealFreebieOption.setSelectedIndex(item.getPrivateDeal().getDealFreebieOption().intValue());
11976 vikram.rag 255
		if(dealFreebieOption.getSelectedIndex()!=2){
256
			dealFreebieItemId.setEnabled(false);
257
		}
11671 vikram.rag 258
		dealFreebieItemId.setText(item.getPrivateDeal().getDealFreebieItemId()+"");
10484 vikram.rag 259
		preferredInsurer.clear();
260
		preferredVendor.clear();
261
		int index = -1;
262
		if (item.getPreferredVendor() == null) {
263
			index++;
264
			preferredVendor.addItem("select");
265
		}
266
 
267
		if((item.getVendorPricesMap() == null || item.getVendorPricesMap().isEmpty())) {
268
			if(item.getPreferredVendor() != null) {
269
				index++;
270
				preferredVendor.addItem(Utils.getVendorDesc(item.getPreferredVendor()));
271
			}
272
		}
273
		else {
274
			for(VendorPricings vendorDetail : item.getVendorPricesMap().values()){
275
				index++;
276
				preferredVendor.addItem(Utils.getVendorDesc(vendorDetail.getVendorId()));
277
				if(item.getPreferredVendor() != null && item.getPreferredVendor() == vendorDetail.getVendorId()) {
278
					preferredVendor.setSelectedIndex(index);
279
				}
280
			}
281
 
282
			if(item.getPreferredVendor() != null && !item.getVendorPricesMap().containsKey(item.getPreferredVendor())){
283
				index++;
284
				preferredVendor.addItem(Utils.getVendorDesc(item.getPreferredVendor()));
285
				preferredVendor.setSelectedIndex(index);
286
			}
287
		}
288
		index=0;
289
		preferredInsurer.addItem("select","0");
290
		preferredInsurer.setSelectedIndex(0);
291
		for (Map.Entry<Long, String> entry : Utils.getAllInsurers().entrySet()){
292
			index++;
293
			preferredInsurer.addItem(entry.getValue(),entry.getKey().toString());
294
			if(item.getPreferredInsurer()==entry.getKey()){
295
				preferredInsurer.setSelectedIndex(index);  
296
			}
297
		}
298
		mrp.setText(item.getMrp() != null ? item.getMrp()+"" : "");
299
		sellingPrice.setText(item.getSellingPrice() != null ? item.getSellingPrice()+"" : "");
300
		weight.setText(item.getWeight() != null ? item.getWeight()+"" : "");
301
		expectedDelay.setValue(item.getExpectedDelay()+"");
302
		warehouseStickiness.setValue(item.isWarehouseStickiness());
303
 
304
		hasItemNo.setValue(item.isHasItemNo());
305
		itemType.setValue(item.isItemType());
306
		showSellingPrice.setValue(item.isShowSellingPrice());
307
		holdOverride.setValue(item.isHoldOverride());
308
 
309
		startDate.setValue(new Date(item.getStartDate()));
310
		if(item.getComingSoonStartDate() != null){
311
			comingSoonStartDate.setValue(new Date(item.getComingSoonStartDate()));
312
		}else {
313
			comingSoonStartDate.setValue(null);
314
		}
315
 
316
		if(item.getExpectedArrivalDate() != null){
317
			expectedArrivalDate.setValue(new Date(item.getExpectedArrivalDate()));
318
		}else {
319
			expectedArrivalDate.setValue(null);
320
		}
321
		addedOn.setText(Utils.getDisplayableDate(item.getAddedOn()));
322
		retireDate.setText(Utils.getDisplayableDate(item.getRetireDate()));
323
		updatedOn.setText(Utils.getDisplayableDate(item.getUpdatedOn()));
324
 
325
		bestDealsText.setText(item.getBestDealsText());
326
		bestDealsDetailsText.setText(item.getBestDealsDetailsText());
327
		bestDealsDetailsLink.setText(item.getBestDealsDetailsLink());
328
		bestDealsValue.setText(item.getBestDealsValue() != null ? item.getBestDealsValue()+"" : "");
329
		bestSellingRank.setText(item.getBestSellingRank() != null ? item.getBestSellingRank()+"" : "");
330
		minStockLevel.setText(item.getMinStockLevel() != null ? item.getMinStockLevel()+"" : "");
331
		lastNdaySale.setText(item.getSaleHistory().get(0L));
332
		websiteLastNdaySale.setText(item.getSaleHistory().get(1L));
333
		amazonLastNdaySale.setText(item.getSaleHistory().get(3L));
334
		ebayLastNdaySale.setText(item.getSaleHistory().get(6L));
335
		snapdealLastNdaySale.setText(item.getSaleHistory().get(7L));
336
		flipkartLastNdaySale.setText(item.getSaleHistory().get(8L));
13727 manish.sha 337
		homeshop18LastNdaySale.setText(item.getSaleHistory().get(4L));
10484 vikram.rag 338
		numOfDaysStock.setText(item.getNumOfDaysStock() != null ? item.getNumOfDaysStock()+"" : "");
339
		defaultForEntity.setValue(item.isDefaultForEntity());
340
		risky.setValue(item.isRisky());
341
 
342
		itemStatus.setText(item.getItemStatus());
343
		freebieItemId.setText(item.getFreebieItemId().toString());
344
		asin.setText(item.getAsin());
345
		holdInventory.setText(Long.toString(item.getHoldInventory()));
346
		defaultInventory.setText(Long.toString(item.getDefaultInventory()));
11671 vikram.rag 347
		dealPrice.setText(item.getPrivateDeal().getDealPrice() != 0 ? item.getPrivateDeal().getDealPrice()+"" : "");
348
		if(item.getPrivateDeal().isActive()){
349
			isDealActive.setValue(true);
350
		}
351
		else{
352
			isDealActive.setValue(false);
353
		}
354
		if(item.getPrivateDeal().getStartDate()!=null){
355
			dealStartDate.setValue(new Date(item.getPrivateDeal().getStartDate()));
356
		}
357
		else{
358
			dealStartDate.setValue(null);
359
		}
360
		if(item.getPrivateDeal().getEndDate()!=null){
361
			dealEndDate.setValue(new Date(item.getPrivateDeal().getEndDate()));
362
		}
363
		else{
364
			dealEndDate.setValue(null);
365
		}
366
		bestSellingRank.setText(item.getBestSellingRank() != null ? item.getBestSellingRank()+"" : "");
11976 vikram.rag 367
		dealRank.setText(item.getPrivateDeal().getRank()!= 10000L? item.getPrivateDeal().getRank()+"" : "");
11671 vikram.rag 368
		if(item.getPrivateDeal().isCod()){
369
			isCodOnDeal.setValue(true);
370
		}
371
		else{
372
			isCodOnDeal.setValue(false);
373
		}
374
		dealText.setText(item.getPrivateDeal().getDealText());
18048 kshitij.so 375
		packQuantity.setText(item.getPackQuantity().toString());
18150 kshitij.so 376
		quantityStep.setText(item.getQuantityStep().toString());
377
		minimumBuyQuantity.setText(item.getMinimumBuyQuantity().toString());
10484 vikram.rag 378
		initVatDetailsHeader();
379
		updateVatDetailsTable(item.getStateNameVatPercentageMap());
380
		updateAvailabilityTable(item.getItemInventory());
381
		updateVendorKeysTable(item.getVendorKeysMap());
382
		updateVendorPricingTable(item.getVendorPricesMap());
383
		updateSourcePricingTable(item.getSourcePricesMap());
384
		updateSimilarItemsTable(item.getSimilarItems());
385
		updateVoucherTable(item.getVouchersMap());
386
		updateTableIgnoredWarehouse();
18150 kshitij.so 387
		getBulkPricingForItem(item.getId());
11671 vikram.rag 388
		dealTextOption.addChangeHandler(new ChangeHandler(){
389
			@Override
390
			public void onChange(ChangeEvent event) {
391
				if(dealTextOption.getSelectedIndex()!=2){
392
					dealText.setEnabled(false);
393
				}
394
				else{
395
					dealText.setEnabled(true);
396
				}
397
				if(dealTextOption.getSelectedIndex()==1){
398
					dealText.setText(bestDealsText.getText());
399
				}
400
				if(dealTextOption.getSelectedIndex()==0){
401
					dealText.setText("");
402
				}
403
 
404
			}}
405
		);
406
		dealFreebieOption.addChangeHandler(new ChangeHandler(){
407
			@Override
408
			public void onChange(ChangeEvent event) {
409
				if(dealFreebieOption.getSelectedIndex()!=2){
410
					dealFreebieItemId.setEnabled(false);
411
				}
412
				else{
413
					dealFreebieItemId.setEnabled(true);
414
				}
415
				if(dealFreebieOption.getSelectedIndex()==1){
416
					dealFreebieItemId.setText(freebieItemId.getText());
417
				}
418
				if(dealFreebieOption.getSelectedIndex()==0){
419
					dealFreebieItemId.setText("");
420
				}
421
 
422
			}}
423
		);
10484 vikram.rag 424
	}
425
 
426
	/**
427
	 * initialise item availability table header.
428
	 */
429
	private void initAvailabilityHeader(){
430
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_ID, "100px");
431
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_DESC, "250px");
432
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_INVA, "100px");
433
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_INVR, "100px");
434
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_HELD, "100px");
435
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_EBAY_HELD, "80px");
436
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_SNAPDEAL_HELD, "80px");
437
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_FLIPKART_HELD, "80px");
13748 manish.sha 438
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_HOMESHOP18_HELD, "80px");
10484 vikram.rag 439
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_GET_BUTTON, "100px");
440
		headerAvailability.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_UPDATE_BUTTON, "100px");
441
 
442
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_ID, "Warehouse Id");
443
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_DESC, "Warehouse Desc");
444
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_INVA, "Availability");
445
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_INVR, "Reserved");
446
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_HELD, "Held");
447
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_EBAY_HELD, "Ebay Held");
448
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_SNAPDEAL_HELD, "Snapdeal Held");
449
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_FLIPKART_HELD, "Flipkart Held");
13748 manish.sha 450
		headerAvailability.setText(0, TABLE_INDEX_WAREHOUSE_HOMESHOP18_HELD, "Homeshop18 Held");
10484 vikram.rag 451
 
452
		Button getLiveDataButton = new Button("Get Live Data");
453
		headerAvailability.setWidget(0, TABLE_INDEX_WAREHOUSE_GET_BUTTON, getLiveDataButton);
454
		getLiveDataButton.addClickHandler(new ClickHandler() {
455
			@Override
456
			public void onClick(ClickEvent event) {
457
				catalogService.getProdItemInventory(item.getId(), new AsyncCallback<Map<Long, ItemInventory>>() {
458
					@Override
459
					public void onSuccess(Map<Long, ItemInventory> itemInventoryMap) {
460
						if(itemInventoryMap != null) {
461
							GWT.log("Inventory Data fetched");
462
							item.setItemInventory(itemInventoryMap);
463
							updateAvailabilityTable(item.getItemInventory());
464
						}
465
						else {
466
							GWT.log("Error fetching Inventory Data");
467
							Window.alert("Error fetching Inventory Data");
468
						}
469
					}
470
					@Override
471
					public void onFailure(Throwable caught) {
472
						caught.printStackTrace();
473
						Window.alert("Error fetching Inventory Data");
474
					}
475
				});
476
			}
477
		});
478
 
479
		Button updateLiveDataButton = new Button("Update Live Data");
480
		headerAvailability.setWidget(0, TABLE_INDEX_WAREHOUSE_UPDATE_BUTTON, updateLiveDataButton);
481
		/* code to be rewritten later
4431 phani.kuma 482
        updateLiveDataButton.addClickHandler(new ClickHandler() {
483
            @Override
484
            public void onClick(ClickEvent event) {
485
            	catalogService.getProdItemInventory(item.getId(), new AsyncCallback<Map<Long, ItemInventory>>() {
486
                    @Override
487
                    public void onSuccess(Map<Long, ItemInventory> itemInventoryMap) {
488
                        if(itemInventoryMap != null) {
489
                            GWT.log("Inventory Data fetched");
490
                            item.setItemInventory(itemInventoryMap);
491
                            updateAvailabilityTable(item.getItemInventory());
492
                        }
493
                        else {
494
                            GWT.log("Error fetching Inventory Data");
495
                            Window.alert("Error fetching Inventory Data");
496
                        }
497
                    }
498
                    @Override
499
                    public void onFailure(Throwable caught) {
500
                        caught.printStackTrace();
501
                        Window.alert("Error fetching Inventory Data");
502
                    }
503
                });
504
            }
505
        });
10484 vikram.rag 506
		 */
507
		headerAvailability.getCellFormatter().setVisible(0, TABLE_INDEX_WAREHOUSE_UPDATE_BUTTON, false);
1992 ankur.sing 508
 
10484 vikram.rag 509
	}
2066 ankur.sing 510
 
10484 vikram.rag 511
	/**
512
	 * initialises vendor item key table header. Creates an Add button and
513
	 * adds click event listener to it to create and pop up a dialog for adding 
514
	 * a new vendor item key. 
515
	 */
516
	private void initVendorKeysHeader(){
517
		headerVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_VENDORID, VENDOR_ID_WIDTH);
518
		headerVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_VENDOR_DESC, VENDOR_DESC_WIDTH);
519
		headerVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_ITEM_KEY, ITEM_KEY_WIDTH);
520
		headerVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_ITEM_KEY_OLD, ITEM_KEY_WIDTH);
521
		headerVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_BUTTON, BUTTON_WIDTH);
2119 ankur.sing 522
 
10484 vikram.rag 523
		headerVendorItemKey.setText(0, TABLE_INDEX_MAPPING_VENDORID, "Vendor Id");
524
		headerVendorItemKey.setText(0, TABLE_INDEX_MAPPING_VENDOR_DESC, "Vendor");
525
		headerVendorItemKey.setText(0, TABLE_INDEX_MAPPING_ITEM_KEY, "Item Key");
526
		headerVendorItemKey.setText(0, TABLE_INDEX_MAPPING_ITEM_KEY_OLD, "Prev Item Key");
2119 ankur.sing 527
 
10484 vikram.rag 528
		headerVendorItemKey.getCellFormatter().setVisible(0, TABLE_INDEX_MAPPING_VENDORID, false);
529
		headerVendorItemKey.getCellFormatter().setVisible(0, TABLE_INDEX_MAPPING_ITEM_KEY_OLD, false);
2066 ankur.sing 530
 
10484 vikram.rag 531
		Button addButton = new Button("Add");
532
		headerVendorItemKey.setWidget(0, TABLE_INDEX_MAPPING_BUTTON, addButton);
533
		addButton.addClickHandler(new ClickHandler() {
534
			@Override
535
			public void onClick(ClickEvent event) {
536
				VendorMappingDialog vendorMappingDialog = new VendorMappingDialog(productGroup.getText().trim(), brand.getText().trim(), 
537
						modelNumber.getText().trim(), color.getText().trim());
538
				vendorMappingDialog.updateButton.setText("Add");
539
				vendorMappingDialog.setVendorMappingUpdateListener(new VendorMappingDialog.VendorMappingUpdateListener() {
540
					@Override
541
					public boolean onUpdate(String key, long vendorId) {
542
						int row = tableVendorItemKey.getRowCount();
543
						tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_VENDORID, VENDOR_ID_WIDTH);
544
						tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_VENDOR_DESC, VENDOR_DESC_WIDTH);
545
						tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_ITEM_KEY, ITEM_KEY_WIDTH);
546
						tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_ITEM_KEY_OLD, ITEM_KEY_WIDTH);
547
 
548
						tableVendorItemKey.setText(row, TABLE_INDEX_MAPPING_VENDORID, vendorId + "");
549
						tableVendorItemKey.setText(row, TABLE_INDEX_MAPPING_VENDOR_DESC, Utils.getVendorDesc(vendorId));
550
						tableVendorItemKey.setText(row, TABLE_INDEX_MAPPING_ITEM_KEY, key);
551
						tableVendorItemKey.setText(row, TABLE_INDEX_MAPPING_ITEM_KEY_OLD, key);
552
 
553
						tableVendorItemKey.getCellFormatter().setVisible(row, TABLE_INDEX_MAPPING_VENDORID, false);
554
						tableVendorItemKey.getCellFormatter().setVisible(row, TABLE_INDEX_MAPPING_ITEM_KEY_OLD, false);
555
						return true;
556
					}
557
				});
558
				vendorMappingDialog.show();
559
			}
560
		});
561
	}
562
 
18150 kshitij.so 563
	private void initBulkPricingHeader(){
564
		headerBulkPricing.getColumnFormatter().setWidth(TABLE_INDEX_BULK_PRICING_ID, "5px");
565
		headerBulkPricing.getColumnFormatter().setWidth(TABLE_INDEX_QUANTITY, "5px");
566
		headerBulkPricing.getColumnFormatter().setWidth(TABLE_INDEX_PRICE, "5px");
567
		headerBulkPricing.setText(0, TABLE_INDEX_BULK_PRICING_ID, "Bulk Pricing Id");
568
		headerBulkPricing.setText(0, TABLE_INDEX_QUANTITY, "Quantity");
569
		headerBulkPricing.setText(0, TABLE_INDEX_PRICE, "Price");
570
		headerBulkPricing.getColumnFormatter().setWidth(TABLE_INDEX_BULK_PRICING_BUTTON, BUTTON_WIDTH);
571
		headerBulkPricing.getCellFormatter().setVisible(0, TABLE_INDEX_BULK_PRICING_ID, false);
572
		Button addButton = new Button("Add");
573
		headerBulkPricing.setWidget(0, TABLE_INDEX_BULK_PRICING_BUTTON, addButton);
574
		addButton.addClickHandler(new ClickHandler() {
575
			@Override
576
			public void onClick(ClickEvent event) {
577
				if (item==null){
578
					Window.alert("Please select item first");
579
					return;
580
				}
581
				BulkPricingDialog bulkPricesDialog = new BulkPricingDialog();
582
				bulkPricesDialog.updateButton.setText("Add");
583
				bulkPricesDialog.setBulkPricingUpdateListener(new BulkPricingDialog.BulkPricingUpdateListener() {
584
 
585
					@Override
586
					public boolean onUpdate(long quantity, double price) {
587
						if(!checkBulkPricing(quantity)){
588
							Window.alert("Quantity already present.");
589
							return false;
590
						}
591
						final int row = tableBulkPricing.getRowCount();
592
						BulkItemPricing bulkItemPricing = new BulkItemPricing();
593
						bulkItemPricing.setItem_id(item.getId());
594
						bulkItemPricing.setPrice(price);
595
						bulkItemPricing.setQuantity(quantity);
596
						catalogService.addBulkPricingForItem(bulkItemPricing, new AsyncCallback<BulkItemPricing>() {
597
							@Override
598
							public void onSuccess(BulkItemPricing result) {
599
								if (result==null){
600
									Window.alert("Unable to add bulk pricing");
601
									return;
602
								}
603
								tableBulkPricing.setText(row, TABLE_INDEX_BULK_PRICING_ID, result.getId()+"");
604
								tableBulkPricing.setText(row, TABLE_INDEX_QUANTITY, result.getQuantity()+"");
605
								tableBulkPricing.setText(row, TABLE_INDEX_PRICE, result.getPrice()+"");
606
								tableBulkPricing.getCellFormatter().setVisible(row, TABLE_INDEX_BULK_PRICING_ID, false);
607
								Button deleteButton = new Button("Delete");
608
								tableBulkPricing.setWidget(row, TABLE_INDEX_BULK_PRICING_BUTTON, deleteButton);
609
								deleteButton.addClickHandler(new ClickHandler() {
610
									@Override
611
									public void onClick(ClickEvent event) {
612
										Cell cell = tableBulkPricing.getCellForEvent(event);
613
										int row = cell.getRowIndex();
614
										deleteBulkPricingForId(Long.valueOf(tableBulkPricing.getText(row, TABLE_INDEX_BULK_PRICING_ID)), item.getId());
615
									}
616
 
617
								});
618
							}
619
							@Override
620
							public void onFailure(Throwable caught) {
621
								caught.printStackTrace();
622
								Window.alert("Unable to add bulk pricing.");
623
							}
624
						});
625
						return true;
626
					}
627
				});
628
				bulkPricesDialog.show();
629
			}
630
		});
631
 
632
		Button removeButton = new Button("Delete All");
633
		headerBulkPricing.setWidget(0, TABLE_INDEX_BULK_PRICING_REMOVE_BUTTON, removeButton);
634
		removeButton.addClickHandler(new ClickHandler() {
635
			@Override
636
			public void onClick(ClickEvent event) {
637
				if (item==null){
638
					Window.alert("Please select item first");
639
					return;
640
				}
641
				if(tableBulkPricing.getRowCount()==0){
642
					Window.alert("Nothing to delete");
643
					return;
644
				}
645
				String removeAllMessage = "Delete all bulk pricing for item id "+item.getId();
646
				if (!Window.confirm(removeAllMessage)){
647
					return;
648
				}
649
				deleteBulkPricingForItemId(item.getId());
650
			}
651
		});
652
	}
653
 
654
	public void deleteBulkPricingForItemId(final long item_id){
655
		catalogService.deleteBulkPricingForItem(item_id, new AsyncCallback<Boolean>() {
656
			@Override
657
			public void onSuccess(Boolean result) {
658
				if (result){
659
					Window.alert("All Bulk Pricing deleted");
660
					getBulkPricingForItem(item_id);
661
				}
662
				else{
663
					Window.alert("Unable to delete bulk pricing.");
664
				}
665
			}
666
			@Override
667
			public void onFailure(Throwable caught) {
668
				caught.printStackTrace();
669
				Window.alert("Unable to delete bulk pricing.");
670
			}
671
		});
672
	}
673
 
674
	public void deleteBulkPricingForId(long id, final long item_id){
675
		String deleteMessage = "Delete bulk pricing for item id " +item_id;
676
		if (!Window.confirm(deleteMessage)){
677
			return;
678
		}
679
		catalogService.deleteBulkPricingForItemById(id, new AsyncCallback<Boolean>() {
680
			@Override
681
			public void onSuccess(Boolean result) {
682
				if (result){
683
					Window.alert("Bulk Pricing deleted");
684
					getBulkPricingForItem(item_id);
685
				}
686
				else{
687
					Window.alert("Unable to delete bulk pricing.");
688
				}
689
			}
690
			@Override
691
			public void onFailure(Throwable caught) {
692
				caught.printStackTrace();
693
				Window.alert("Unable to delete bulk pricing.");
694
			}
695
		});
696
	}
697
 
698
 
10484 vikram.rag 699
	/**
700
	 * initialises vendor prices table header. Creates an Add button and
701
	 * adds click event listener to it to create and pop up a dialog for adding 
702
	 * a prices for a new vendor 
703
	 */
704
	private void initVendorPricingHeader(){
705
		headerVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_VENDORID, VENDOR_ID_WIDTH);
706
		headerVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_VENDOR_DESC, VENDOR_DESC_WIDTH);
707
		headerVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_MOP, PRICE_WIDTH);
708
		headerVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_DP, PRICE_WIDTH);
709
		headerVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_TP, PRICE_WIDTH);
710
		headerVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_NLC, PRICE_WIDTH);
711
		headerVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_BUTTON, BUTTON_WIDTH);
712
 
713
		headerVendorPrices.setText(0, TABLE_INDEX_PRICING_VENDORID, "Vendor Id");
714
		headerVendorPrices.setText(0, TABLE_INDEX_PRICING_VENDOR_DESC, "Vendor");
715
		headerVendorPrices.setText(0, TABLE_INDEX_PRICING_MOP, "MOP");
716
		headerVendorPrices.setText(0, TABLE_INDEX_PRICING_DP, "Dealer Price");
717
		headerVendorPrices.setText(0, TABLE_INDEX_PRICING_TP, "Transfer Price");
718
		headerVendorPrices.setText(0, TABLE_INDEX_PRICING_NLC, "NLC");
719
 
720
		headerVendorPrices.getCellFormatter().setVisible(0, TABLE_INDEX_PRICING_VENDORID, false);
721
 
722
		Button addButton = new Button("Add");
723
		headerVendorPrices.setWidget(0, TABLE_INDEX_PRICING_BUTTON, addButton);
724
		addButton.addClickHandler(new ClickHandler() {
725
			@Override
726
			public void onClick(ClickEvent event) {
727
				VendorPricesDialog vendorPricesDialog = new VendorPricesDialog();
728
				vendorPricesDialog.updateButton.setText("Add");
729
				vendorPricesDialog.setVendorPriceUpdateListener(new VendorPricesDialog.VendorPriceUpdateListener() {
730
					@Override
731
					public boolean onUpdate(double mop, double dp, double tp, double nlc, long vendorId) {
732
						if(!vendorExists(vendorId)) {
733
							Window.alert("Vendor already exists");
734
							return false;
735
						}
736
						/*if(!validateVendorPrices(mop, dp, tp)) {
2105 ankur.sing 737
                            return false;
2119 ankur.sing 738
                        }*/
10484 vikram.rag 739
						int row = tableVendorPrices.getRowCount();
740
						tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_VENDORID, VENDOR_ID_WIDTH);
741
						tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_VENDOR_DESC, VENDOR_DESC_WIDTH);
742
						tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_MOP, PRICE_WIDTH);
743
						tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_DP, PRICE_WIDTH);
744
						tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_TP, PRICE_WIDTH);
745
						tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_NLC, PRICE_WIDTH);
3558 rajveer 746
 
10484 vikram.rag 747
						tableVendorPrices.setText(row, TABLE_INDEX_PRICING_VENDORID, vendorId + "");
748
						tableVendorPrices.setText(row, TABLE_INDEX_PRICING_VENDOR_DESC, Utils.getVendorDesc(vendorId));
749
						tableVendorPrices.setText(row, TABLE_INDEX_PRICING_MOP, mop + "");
750
						tableVendorPrices.setText(row, TABLE_INDEX_PRICING_DP, dp + "");
751
						tableVendorPrices.setText(row, TABLE_INDEX_PRICING_TP, tp + "");
752
						tableVendorPrices.setText(row, TABLE_INDEX_PRICING_NLC, nlc + "");
3558 rajveer 753
 
10484 vikram.rag 754
						tableVendorPrices.getCellFormatter().setVisible(row, TABLE_INDEX_PRICING_VENDORID, false);
755
						return true;
756
					}
757
				});
758
				vendorPricesDialog.show();
759
			}
760
		});
761
	}
3558 rajveer 762
 
10484 vikram.rag 763
	/**
764
	 * initialises source prices table header. Creates an Add button and
765
	 * adds click event listener to it to create and pop up a dialog for adding 
766
	 * a prices for a new source 
767
	 */
768
	private void initSourcePricingHeader(){
769
		headerSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, VENDOR_ID_WIDTH);
770
		headerSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SOURCE_DESC, VENDOR_DESC_WIDTH);
771
		headerSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_MRP, PRICE_WIDTH);
772
		headerSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE, PRICE_WIDTH);
773
		headerSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_BUTTON, BUTTON_WIDTH);
774
 
775
		headerSourcePrices.setText(0, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, "Source Id");
776
		headerSourcePrices.setText(0, TABLE_INDEX_SOURCE_PRICING_SOURCE_DESC, "Source");
777
		headerSourcePrices.setText(0, TABLE_INDEX_SOURCE_PRICING_MRP, "MRP");
778
		headerSourcePrices.setText(0, TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE, "Selling Price");
779
 
780
		headerSourcePrices.getCellFormatter().setVisible(0, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, false);
781
 
782
		Button addButton = new Button("Add");
783
		headerSourcePrices.setWidget(0, TABLE_INDEX_SOURCE_PRICING_BUTTON, addButton);
784
		addButton.addClickHandler(new ClickHandler() {
785
			@Override
786
			public void onClick(ClickEvent event) {
787
				SourcePricesDialog sourcePricesDialog = new SourcePricesDialog(mrp.getText().trim(), sellingPrice.getText().trim());
788
				//SourcePricesDialog sourcePricesDialog = new SourcePricesDialog();
789
				sourcePricesDialog.updateButton.setText("Add");
790
				sourcePricesDialog.setSourcePriceUpdateListener(new SourcePricesDialog.SourcePriceUpdateListener() {
4423 phani.kuma 791
					@Override
10484 vikram.rag 792
					public boolean onUpdate(double mrp, double sellingPrice, long sourceId) {
793
						if(!sourceExists(sourceId)) {
794
							Window.alert("Source already exists");
795
							return false;
796
						}
797
 
798
						int row = tableSourcePrices.getRowCount();
799
						tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, VENDOR_ID_WIDTH);
800
						tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SOURCE_DESC, VENDOR_DESC_WIDTH);
801
						tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_MRP, PRICE_WIDTH);
802
						tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE, PRICE_WIDTH);
803
 
804
						tableSourcePrices.setText(row, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, sourceId + "");
805
						tableSourcePrices.setText(row, TABLE_INDEX_SOURCE_PRICING_SOURCE_DESC, Utils.getSourceDesc(sourceId));
806
						tableSourcePrices.setText(row, TABLE_INDEX_SOURCE_PRICING_MRP, mrp + "");
807
						tableSourcePrices.setText(row, TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE, sellingPrice + "");
808
 
809
						tableSourcePrices.getCellFormatter().setVisible(row, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, false);
810
						return true;
811
					}
812
				});
813
				sourcePricesDialog.show();
814
			}
815
		});
816
	}
817
 
818
	/**
819
	 * initialises similar items table header. Creates an Add button and
820
	 * adds click event listener to it to create and pop up a dialog for adding 
821
	 * a new similar item. 
822
	 */
823
	private void initSimilarItemList() {
824
		headerSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_CATALOG_ITEM_ID, PRICE_WIDTH);
825
		headerSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_PRODUCT_GROUP, PRICE_WIDTH);
826
		headerSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_BRAND, PRICE_WIDTH);
827
		headerSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_MODEL_NUMBER, PRICE_WIDTH);
828
		headerSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_MODEL_NAME, PRICE_WIDTH);
829
		headerSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_CATEGORY, "150px");
830
		headerSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_BUTTON, BUTTON_WIDTH);
831
 
832
		headerSimilarItems.setText(0, TABLE_INDEX_SIMILAR_ITEMS_CATALOG_ITEM_ID, "Catalog ItemId");
833
		headerSimilarItems.setText(0, TABLE_INDEX_SIMILAR_ITEMS_PRODUCT_GROUP, "Product Group");
834
		headerSimilarItems.setText(0, TABLE_INDEX_SIMILAR_ITEMS_BRAND, "Brand");
835
		headerSimilarItems.setText(0, TABLE_INDEX_SIMILAR_ITEMS_MODEL_NUMBER, "Model Number");
836
		headerSimilarItems.setText(0, TABLE_INDEX_SIMILAR_ITEMS_MODEL_NAME, "Model Name");
837
		headerSimilarItems.setText(0, TABLE_INDEX_SIMILAR_ITEMS_CATEGORY, "Category");
838
 
839
		Button addButton = new Button("Add");
840
		headerSimilarItems.setWidget(0, TABLE_INDEX_SIMILAR_ITEMS_BUTTON, addButton);
841
		addButton.addClickHandler(new ClickHandler() {
842
			@Override
843
			public void onClick(ClickEvent event) {
844
				AddSimilarItemDialog addSimilarItemDialog = new AddSimilarItemDialog();
845
				addSimilarItemDialog.setAddSimilarItemUpdateListener(new AddSimilarItemDialog.AddSimilarItemUpdateListener() {
846
					@Override
4423 phani.kuma 847
					public boolean onUpdate(long catalogItemId) {
848
						if (item.getSimilarItems().containsKey(catalogItemId)) {
849
							Window.alert("Similar Item exists.");
850
							return false;
851
						}
852
						else {
10484 vikram.rag 853
							catalogService.addSimilarItem(item.getId(), catalogItemId, new AsyncCallback<Item>() {
854
								@Override
855
								public void onSuccess(Item similarItem) {
856
									if(similarItem != null) {
857
										GWT.log("Similar Item Added");
858
										Map<Long, Item> newsimilarItems = item.getSimilarItems();
859
										newsimilarItems.put(similarItem.getCatalogItemId(), similarItem);
860
										item.setSimilarItems(newsimilarItems);
861
										updateSimilarItemsTable(item.getSimilarItems());
862
										Window.alert("Similar Item Added successfully.");
863
									}
864
									else {
865
										GWT.log("Error Adding Similar Item");
866
										Window.alert("Error Adding Similar Item");
867
									}
868
								}
869
								@Override
870
								public void onFailure(Throwable caught) {
871
									caught.printStackTrace();
872
									Window.alert("Error deleting Similar Item");
873
								}
874
							});
875
							return true;
4423 phani.kuma 876
						}
877
					}
878
				});
10484 vikram.rag 879
				addSimilarItemDialog.show();
880
			}
881
		});
882
	}
883
	private void initVatDetailsHeader(){
884
		headerVatDetails.getColumnFormatter().setWidth(TABLE_INDEX_STATE_NAME, "80px");
885
		headerVatDetails.getColumnFormatter().setWidth(TABLE_INDEX_STATE_TAX_PERCENTAGE, "50px");
886
		headerVatDetails.setText(0, TABLE_INDEX_STATE_NAME, "State Name");
887
		headerVatDetails.setText(0, TABLE_INDEX_STATE_TAX_PERCENTAGE, "Tax Percentage");
888
 
889
	}
890
	private void updateVatDetailsTable(Map<String,String> stateVatPercentage){
891
		tableVatDetails.removeAllRows();
892
		if(stateVatPercentage == null || stateVatPercentage.isEmpty()) {
893
			return;
894
		}
895
		tableVatDetails.getColumnFormatter().setWidth(TABLE_INDEX_STATE_NAME, "80px");
896
		tableVatDetails.getColumnFormatter().setWidth(TABLE_INDEX_STATE_TAX_PERCENTAGE, "50px");
897
		int i=0;
898
		for(Entry<String,String> e : stateVatPercentage.entrySet()){
899
			tableVatDetails.setText(i, TABLE_INDEX_STATE_NAME, e.getKey() +"");
900
			if(e.getValue().equals("-1.0")){
901
				tableVatDetails.setText(i, TABLE_INDEX_STATE_TAX_PERCENTAGE, "N.A" + "");
902
			}
903
			else{
904
				tableVatDetails.setText(i, TABLE_INDEX_STATE_TAX_PERCENTAGE, e.getValue()+" %" + "");
905
			}
906
			i++;
907
		}
908
	}
909
	private void initIgnoredWarehouseHeader(){
910
		headerIgnoredWarehouse.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_NAME, "100px");
911
		headerIgnoredWarehouse.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_ADD_DEL_BUTTON, BUTTON_WIDTH);
912
		headerIgnoredWarehouse.setText(0, TABLE_INDEX_WAREHOUSE_NAME, "Warehouse Desc");
913
		Button addButton = new Button("Add");
914
		headerIgnoredWarehouse.setWidget(0,TABLE_INDEX_WAREHOUSE_ADD_DEL_BUTTON,addButton);
915
		addButton.addClickHandler(new ClickHandler() {
916
			@Override
917
			public void onClick(ClickEvent event) {
918
				DeactivateWarehouseDialog deactivateWarehouseDialog = new DeactivateWarehouseDialog(new ArrayList<Long>(item.getVendorPricesMap().keySet()));
919
				deactivateWarehouseDialog.updateButton.setText("Add");
920
				deactivateWarehouseDialog.setDeactivateWarehouseListener(new DeactivateWarehouseDialog.DeactivateWarehouseListener(){
6530 vikram.rag 921
					@Override
922
					public boolean onUpdate(final long warehouseId) {
10484 vikram.rag 923
						if(Utils.getignoredInventoryUpdateItemsIdsWarehouseIds().contains(new ItemWarehouse(item.getId(),warehouseId))) {
924
							Window.alert("Warehouse already deactivated");
925
							return false;
926
						}
927
						catalogService.addtoIgnoredInventoryUpdateItemsIdsWarehouseIds(item.getId(),warehouseId,new AsyncCallback<Boolean>() {
928
							@Override
929
							public void onSuccess(Boolean result) {
930
								if(result) {
931
									Utils.getignoredInventoryUpdateItemsIdsWarehouseIds().add(new ItemWarehouse(item.getId(),warehouseId));
932
									int index1 = tableIgnoredWarehouse.insertRow(0);
933
									addRowToIgnoredWarehouseTable(index1, warehouseId, Utils.getAllWarehouses().get(warehouseId));
4423 phani.kuma 934
 
10484 vikram.rag 935
									Window.alert("Warehouse deactivated successfully");
936
								}
937
								else {
938
									GWT.log("Error Deactivating warehouse");
939
									Window.alert("Error Deactivating warehouse");
940
								}
941
							}
942
							@Override
943
							public void onFailure(Throwable caught) {
944
								caught.printStackTrace();
945
								Window.alert("Error Deactivating warehouse");
946
							}
947
						});
948
						return true;
949
					}
950
				});
951
				deactivateWarehouseDialog.show();
952
			}
953
		});
954
	}
5504 phani.kuma 955
 
2066 ankur.sing 956
 
10484 vikram.rag 957
	private void initVoucherHeader(){
958
		headerVouchers.getColumnFormatter().setWidth(TABLE_INDEX_VOUCHERS_TYPE, ITEM_KEY_WIDTH);
959
		headerVouchers.getColumnFormatter().setWidth(TABLE_INDEX_VOUCHERS_AMOUNT, VENDOR_DESC_WIDTH);
960
		headerVouchers.getColumnFormatter().setWidth(TABLE_INDEX_VOUCHERS_ADD_EDIT_BUTTON, BUTTON_WIDTH);
961
		headerVouchers.getColumnFormatter().setWidth(TABLE_INDEX_VOUCHERS_DEL_BUTTON, BUTTON_WIDTH);
4423 phani.kuma 962
 
10484 vikram.rag 963
		headerVouchers.setText(0, TABLE_INDEX_VOUCHERS_TYPE, "Voucher Type");
964
		headerVouchers.setText(0, TABLE_INDEX_VOUCHERS_AMOUNT, "Voucher Amount");
965
		headerVouchers.getCellFormatter().setVisible(0, TABLE_INDEX_VOUCHERS_DEL_BUTTON, false);
966
		Button addButton = new Button("Add");
967
		headerVouchers.setWidget(0, TABLE_INDEX_VOUCHERS_ADD_EDIT_BUTTON, addButton);
968
		addButton.addClickHandler(new ClickHandler() {
969
			@Override
970
			public void onClick(ClickEvent event) {
971
				VoucherItemDialog voucherItemDialog = new VoucherItemDialog();
972
				voucherItemDialog.updateButton.setText("Add");
973
				voucherItemDialog.setVoucherUpdateListener(new VoucherItemDialog.VoucherUpdateListener() {
974
					@Override
975
					public boolean onUpdate(final String voucherType, final long voucherAmount) {
976
						if(!voucherExists(voucherType)) {
977
							Window.alert("Voucher already exists");
978
							return false;
979
						}
980
						Long voucherTypeValue = Utils.getVoucherTypeId(voucherType);;
981
						catalogService.addVoucher(item.getCatalogItemId(), voucherTypeValue, voucherAmount, new AsyncCallback<Boolean>() {
982
							@Override
983
							public void onSuccess(Boolean result) {
984
								if(result) {
985
									GWT.log("Voucher Added");
986
									VoucherItemMapping newvoucher = new VoucherItemMapping(voucherAmount, voucherType);
987
									Map<String, VoucherItemMapping> newvouchersMap = item.getVouchersMap();
988
									newvouchersMap.put(voucherType, newvoucher);
989
									item.setVouchersMap(newvouchersMap);
990
									updateVoucherTable(item.getVouchersMap());
991
									Window.alert("Voucher Added successfully.");
992
								}
993
								else {
994
									GWT.log("Error Adding Voucher");
995
									Window.alert("Error Adding Voucher");
996
								}
997
							}
998
							@Override
999
							public void onFailure(Throwable caught) {
1000
								caught.printStackTrace();
1001
								Window.alert("Error deleting voucher");
1002
							}
1003
						});
1004
						return true;
1005
					}
1006
				});
1007
				voucherItemDialog.show();
1008
			}
1009
		});
1010
	}
18150 kshitij.so 1011
 
1012
	private void getBulkPricingForItem(long item_id){
1013
		catalogService.getBulkPricingByItemId(item_id, new AsyncCallback<List<BulkItemPricing>>() {
1014
			@Override
1015
			public void onSuccess(List<BulkItemPricing> result) {
1016
				updateBulkPricingTable(result);
1017
			}
1018
			@Override
1019
			public void onFailure(Throwable caught) {
1020
				caught.printStackTrace();
1021
				Window.alert("Unable to get bulk pricing for item");
1022
			}
1023
 
1024
		});
1025
	}
2066 ankur.sing 1026
 
18150 kshitij.so 1027
 
1028
	private void updateBulkPricingTable(List<BulkItemPricing> items){
1029
		tableBulkPricing.removeAllRows();
1030
		tableBulkPricing.getColumnFormatter().setWidth(TABLE_INDEX_BULK_PRICING_ID, "5px");
1031
		tableBulkPricing.getColumnFormatter().setWidth(TABLE_INDEX_QUANTITY, "5px");
1032
		tableBulkPricing.getColumnFormatter().setWidth(TABLE_INDEX_PRICE, "5px");
1033
		tableBulkPricing.getColumnFormatter().setWidth(TABLE_INDEX_BULK_PRICING_BUTTON, BUTTON_WIDTH);
1034
		int i =0;
1035
		for (BulkItemPricing result : items){
1036
			tableBulkPricing.setText(i, TABLE_INDEX_BULK_PRICING_ID, result.getId()+"");
1037
			tableBulkPricing.setText(i, TABLE_INDEX_QUANTITY, result.getQuantity()+"");
1038
			tableBulkPricing.setText(i, TABLE_INDEX_PRICE, result.getPrice()+"");
1039
			tableBulkPricing.getCellFormatter().setVisible(i, TABLE_INDEX_BULK_PRICING_ID, false);
1040
			Button deleteButton = new Button("Delete");
1041
			tableBulkPricing.setWidget(i, TABLE_INDEX_BULK_PRICING_BUTTON, deleteButton);
1042
			deleteButton.addClickHandler(new ClickHandler() {
1043
				@Override
1044
				public void onClick(ClickEvent event) {
1045
					Cell cell = tableBulkPricing.getCellForEvent(event);
1046
					int row = cell.getRowIndex();
1047
					deleteBulkPricingForId(Long.valueOf(tableBulkPricing.getText(row, TABLE_INDEX_BULK_PRICING_ID)), item.getId());
1048
				}
1049
 
1050
			});
1051
			i++;
1052
		}
1053
	}
1054
 
10484 vikram.rag 1055
	/**
1056
	 * Clear and populate item availability table.
1057
	 * @param availabilityMap
1058
	 */
2119 ankur.sing 1059
 
10484 vikram.rag 1060
	private void updateAvailabilityTable(Map<Long, ItemInventory> itemInventoryMap){
1061
		availabilityTable.removeAllRows();
1062
		if(itemInventoryMap == null || itemInventoryMap.isEmpty()) {
1063
			return;
1064
		}
1065
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_ID, "100px");
1066
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_DESC, "300px");
1067
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_INVA, "100px");
1068
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_INVR, "100px");
1069
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_HELD, "100px");
1070
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_EBAY_HELD, "80px");
1071
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_SNAPDEAL_HELD, "80px");
1072
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_FLIPKART_HELD, "80px");
13748 manish.sha 1073
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_HOMESHOP18_HELD, "80px");
10484 vikram.rag 1074
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_GET_BUTTON, "100px");
1075
		availabilityTable.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_UPDATE_BUTTON, "100px");
2066 ankur.sing 1076
 
10484 vikram.rag 1077
		int i=0;
1078
		for(ItemInventory warehousedata : itemInventoryMap.values()){
1079
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_ID, warehousedata.getWarehouseId() + "");
1080
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_DESC, Utils.getWarehouseDesc(warehousedata.getWarehouseId()) + "");
1081
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_INVA, warehousedata.getAvailability() + "");
1082
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_INVR, warehousedata.getReserved() + "");
1083
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_HELD, warehousedata.getHeld() + "");
1084
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_EBAY_HELD, warehousedata.getEbayHeld() + "");
1085
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_SNAPDEAL_HELD, warehousedata.getSnapdealHeld() + "");
1086
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_FLIPKART_HELD, warehousedata.getFlipkartHeld() + "");
13748 manish.sha 1087
			availabilityTable.setText(i, TABLE_INDEX_WAREHOUSE_HOMESHOP18_HELD, warehousedata.getHomeshop18Held() + "");
2066 ankur.sing 1088
 
10484 vikram.rag 1089
			i++;
1090
		}
1091
	}
2066 ankur.sing 1092
 
10484 vikram.rag 1093
	/**
1094
	 * Clear and populate vendor item key table with keys in the passed argument.
1095
	 * With each row in the table, an edit button is created and click event listener 
1096
	 * is added to it to edit that vendor item key row.
1097
	 * @param vendorKeysMap
1098
	 */
1099
	private void updateVendorKeysTable(Map<String, VendorItemMapping> vendorKeysMap){
1100
		tableVendorItemKey.removeAllRows();
3558 rajveer 1101
 
10484 vikram.rag 1102
		if(vendorKeysMap == null || vendorKeysMap.isEmpty()) {
1103
			return;
1104
		}
1105
		tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_VENDORID, VENDOR_ID_WIDTH);
1106
		tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_VENDOR_DESC, VENDOR_DESC_WIDTH);
1107
		tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_ITEM_KEY, ITEM_KEY_WIDTH);
1108
		tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_ITEM_KEY_OLD, ITEM_KEY_WIDTH);
1109
		tableVendorItemKey.getColumnFormatter().setWidth(TABLE_INDEX_MAPPING_BUTTON, BUTTON_WIDTH);
4423 phani.kuma 1110
 
10484 vikram.rag 1111
		int i=0;
1112
		for(Entry<String, VendorItemMapping> e : vendorKeysMap.entrySet()){
1113
			VendorItemMapping vendorMapping = e.getValue();
1114
			tableVendorItemKey.setText(i, TABLE_INDEX_MAPPING_VENDORID, vendorMapping.getVendorId() + "");
1115
			tableVendorItemKey.setText(i, TABLE_INDEX_MAPPING_VENDOR_DESC, Utils.getVendorDesc(vendorMapping.getVendorId()));
1116
			tableVendorItemKey.setText(i, TABLE_INDEX_MAPPING_ITEM_KEY, vendorMapping.getItemKey());
1117
			tableVendorItemKey.setText(i, TABLE_INDEX_MAPPING_ITEM_KEY_OLD, e.getKey().substring(e.getKey().indexOf(Item.KEY_SEPARATOR)+1));
1118
			Button editButton = new Button("Edit");
1119
			tableVendorItemKey.setWidget(i, TABLE_INDEX_MAPPING_BUTTON, editButton);
1120
			editButton.addClickHandler(new ClickHandler() {
1121
				@Override
1122
				public void onClick(ClickEvent event) {
1123
					Cell cell = tableVendorItemKey.getCellForEvent(event);
1124
					int row = cell.getRowIndex();
1125
					long vendorId = Long.parseLong(tableVendorItemKey.getText(row, TABLE_INDEX_MAPPING_VENDORID));
1126
					editVendorKey(vendorId, row);
1127
				}
1128
			});
1129
			tableVendorItemKey.getCellFormatter().setVisible(i, TABLE_INDEX_MAPPING_VENDORID, false);
1130
			tableVendorItemKey.getCellFormatter().setVisible(i, TABLE_INDEX_MAPPING_ITEM_KEY_OLD, false);
1131
			i++;
1132
		}
1133
	}
4423 phani.kuma 1134
 
10484 vikram.rag 1135
	/**
1136
	 * Clear and populate vendor prices table with prices in the passed argument.
1137
	 * With each row in the table, an edit button is created and click event listener 
1138
	 * is added to it to edit that vendor prices row.
1139
	 * @param vendorPricingMap
1140
	 */
1141
	private void updateVendorPricingTable(Map<Long, VendorPricings> vendorPricingMap){
1142
		tableVendorPrices.removeAllRows();
4423 phani.kuma 1143
 
10484 vikram.rag 1144
		if(vendorPricingMap == null || vendorPricingMap.isEmpty()) {
1145
			return;
1146
		}
1147
		tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_VENDORID, VENDOR_ID_WIDTH);
1148
		tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_VENDOR_DESC, VENDOR_DESC_WIDTH);
1149
		tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_MOP, PRICE_WIDTH);
1150
		tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_DP, PRICE_WIDTH);
1151
		tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_TP, PRICE_WIDTH);
1152
		tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_NLC, PRICE_WIDTH);
1153
		tableVendorPrices.getColumnFormatter().setWidth(TABLE_INDEX_PRICING_BUTTON, BUTTON_WIDTH);
5504 phani.kuma 1154
 
1155
 
10484 vikram.rag 1156
		int i=0;
1157
		for(VendorPricings vendorDetail : vendorPricingMap.values()){
1158
			tableVendorPrices.setText(i, TABLE_INDEX_PRICING_VENDORID, vendorDetail.getVendorId() + "");
1159
			tableVendorPrices.setText(i, TABLE_INDEX_PRICING_VENDOR_DESC, Utils.getVendorDesc(vendorDetail.getVendorId()));
1160
			tableVendorPrices.setText(i, TABLE_INDEX_PRICING_MOP, vendorDetail.getMop() + "");
1161
			tableVendorPrices.setText(i, TABLE_INDEX_PRICING_DP, vendorDetail.getDealerPrice() + "");
1162
			tableVendorPrices.setText(i, TABLE_INDEX_PRICING_TP, vendorDetail.getTransferPrice() + "");
1163
			tableVendorPrices.setText(i, TABLE_INDEX_PRICING_NLC, vendorDetail.getNlc() + "");
1164
			Button editButton = new Button("Edit");
1165
			tableVendorPrices.setWidget(i, TABLE_INDEX_PRICING_BUTTON, editButton);
1166
			editButton.addClickHandler(new ClickHandler() {
1167
				@Override
1168
				public void onClick(ClickEvent event) {
1169
					Cell cell = tableVendorPrices.getCellForEvent(event);
1170
					int row = cell.getRowIndex();
1171
					long vendorId = Long.parseLong(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_VENDORID));
1172
					editVendorPrices(vendorId, row);
1173
				}
1174
			});
1175
			tableVendorPrices.getCellFormatter().setVisible(i, TABLE_INDEX_PRICING_VENDORID, false);
1176
			i++;
1177
		}
6532 amit.gupta 1178
	}
1179
 
1180
	/**
10484 vikram.rag 1181
	 * Clear and populate vendor prices table with prices in the passed argument.
1182
	 * With each row in the table, an edit button is created and click event listener 
1183
	 * is added to it to edit that vendor prices row.
1184
	 * @param sourcePricingMap
1185
	 */
1186
	private void updateSourcePricingTable(Map<Long, SourcePricings> sourcePricingMap){
1187
		tableSourcePrices.removeAllRows();
1188
 
1189
		if(sourcePricingMap == null || sourcePricingMap.isEmpty()) {
1190
			return;
1191
		}
1192
		tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, VENDOR_ID_WIDTH);
1193
		tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SOURCE_DESC, VENDOR_DESC_WIDTH);
1194
		tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_MRP, PRICE_WIDTH);
1195
		tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE, PRICE_WIDTH);
1196
		tableSourcePrices.getColumnFormatter().setWidth(TABLE_INDEX_SOURCE_PRICING_BUTTON, BUTTON_WIDTH);
1197
 
1198
		int i=0;
1199
		for(SourcePricings sourceDetail : sourcePricingMap.values()){
1200
			tableSourcePrices.setText(i, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, sourceDetail.getSourceId() + "");
1201
			tableSourcePrices.setText(i, TABLE_INDEX_SOURCE_PRICING_SOURCE_DESC, Utils.getSourceDesc(sourceDetail.getSourceId()));
1202
			tableSourcePrices.setText(i, TABLE_INDEX_SOURCE_PRICING_MRP, sourceDetail.getMrp() + "");
1203
			tableSourcePrices.setText(i, TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE, sourceDetail.getSellingPrice() + "");
1204
 
1205
			Button editButton = new Button("Edit");
1206
			tableSourcePrices.setWidget(i, TABLE_INDEX_SOURCE_PRICING_BUTTON, editButton);
1207
			editButton.addClickHandler(new ClickHandler() {
1208
				@Override
1209
				public void onClick(ClickEvent event) {
1210
					Cell cell = tableSourcePrices.getCellForEvent(event);
1211
					int row = cell.getRowIndex();
1212
					long sourceId = Long.parseLong(tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID));
1213
					editSourcePrices(sourceId, row);
1214
				}
1215
			});
1216
			tableSourcePrices.getCellFormatter().setVisible(i, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID, false);
1217
			i++;
1218
		}
1219
	}
1220
 
1221
	/**
1222
	 * Clear and populate similar items table with items in the passed argument.
1223
	 * With each row in the table, an delete button is created and click event listener 
1224
	 * is added to it to delete that similar item row.
1225
	 * @param similarItems
1226
	 */
1227
	private void updateSimilarItemsTable(Map<Long, Item> similarItems){
1228
		tableSimilarItems.removeAllRows();
1229
 
1230
		if(similarItems == null || similarItems.isEmpty()) {
1231
			return;
1232
		}
1233
		tableSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_CATALOG_ITEM_ID, PRICE_WIDTH);
1234
		tableSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_PRODUCT_GROUP, PRICE_WIDTH);
1235
		tableSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_BRAND, PRICE_WIDTH);
1236
		tableSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_MODEL_NUMBER, PRICE_WIDTH);
1237
		tableSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_MODEL_NAME, PRICE_WIDTH);
1238
		tableSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_CATEGORY, "150px");
1239
		tableSimilarItems.getColumnFormatter().setWidth(TABLE_INDEX_SIMILAR_ITEMS_BUTTON, BUTTON_WIDTH);
1240
 
1241
 
1242
		int i=0;
1243
		for(Item similarItemDetail : similarItems.values()){
1244
			tableSimilarItems.setText(i, TABLE_INDEX_SIMILAR_ITEMS_CATALOG_ITEM_ID, similarItemDetail.getCatalogItemId() + "");
1245
			tableSimilarItems.setText(i, TABLE_INDEX_SIMILAR_ITEMS_PRODUCT_GROUP, similarItemDetail.getProductGroup() + "");
1246
			tableSimilarItems.setText(i, TABLE_INDEX_SIMILAR_ITEMS_BRAND, similarItemDetail.getBrand() + "");
1247
			tableSimilarItems.setText(i, TABLE_INDEX_SIMILAR_ITEMS_MODEL_NUMBER, similarItemDetail.getModelNumber() + "");
1248
			tableSimilarItems.setText(i, TABLE_INDEX_SIMILAR_ITEMS_MODEL_NAME, similarItemDetail.getModelName() + "");
1249
			tableSimilarItems.setText(i, TABLE_INDEX_SIMILAR_ITEMS_CATEGORY, similarItemDetail.getContentCategory() + "");
1250
 
1251
			Button deleteButton = new Button("Delete");
1252
			tableSimilarItems.setWidget(i, TABLE_INDEX_SIMILAR_ITEMS_BUTTON, deleteButton);
1253
			deleteButton.addClickHandler(new ClickHandler() {
1254
				@Override
1255
				public void onClick(ClickEvent event) {
1256
					Cell cell = tableSimilarItems.getCellForEvent(event);
1257
					final int row = cell.getRowIndex();
1258
					long catalogItemId = Long.parseLong(tableSimilarItems.getText(row, TABLE_INDEX_SIMILAR_ITEMS_CATALOG_ITEM_ID));
1259
 
1260
					catalogService.deleteSimilarItem(item.getId(), catalogItemId, new AsyncCallback<Boolean>() {
1261
						@Override
1262
						public void onSuccess(Boolean result) {
1263
							if(result) {
1264
								GWT.log("Similar Item deleted");
1265
								long catalogItemId = Long.parseLong(tableSimilarItems.getText(row, TABLE_INDEX_SIMILAR_ITEMS_CATALOG_ITEM_ID)); 
1266
								tableSimilarItems.removeRow(row);
1267
								Map<Long, Item> newsimilarItems = item.getSimilarItems();
1268
								newsimilarItems.remove(catalogItemId);
1269
								item.setSimilarItems(newsimilarItems);
1270
							}
1271
							else {
1272
								GWT.log("Error deleting Similar Item");
1273
								Window.alert("Error deleting Similar Item");
1274
							}
1275
						}
1276
						@Override
1277
						public void onFailure(Throwable caught) {
1278
							caught.printStackTrace();
1279
							Window.alert("Error deleting Similar Item");
1280
						}
1281
					});
1282
				}
1283
			});
1284
			i++;
1285
		}
1286
	}
1287
 
1288
	private void updateVoucherTable(Map<String, VoucherItemMapping> vouchersMap){
1289
		tableVouchers.removeAllRows();
1290
 
1291
		if(vouchersMap == null || vouchersMap.isEmpty()) {
1292
			return;
1293
		}
1294
		tableVouchers.getColumnFormatter().setWidth(TABLE_INDEX_VOUCHERS_TYPE, ITEM_KEY_WIDTH);
1295
		tableVouchers.getColumnFormatter().setWidth(TABLE_INDEX_VOUCHERS_AMOUNT, VENDOR_DESC_WIDTH);
1296
		tableVouchers.getColumnFormatter().setWidth(TABLE_INDEX_VOUCHERS_ADD_EDIT_BUTTON, BUTTON_WIDTH);
1297
		tableVouchers.getColumnFormatter().setWidth(TABLE_INDEX_VOUCHERS_DEL_BUTTON, BUTTON_WIDTH);
1298
 
1299
		int i=0;
1300
		for(VoucherItemMapping voucher : vouchersMap.values()){
1301
			tableVouchers.setText(i, TABLE_INDEX_VOUCHERS_TYPE, voucher.getVoucherType());
1302
			tableVouchers.setText(i, TABLE_INDEX_VOUCHERS_AMOUNT, voucher.getAmount() + "");
1303
 
1304
			Button editButton = new Button("Edit");
1305
			tableVouchers.setWidget(i, TABLE_INDEX_VOUCHERS_ADD_EDIT_BUTTON, editButton);
1306
			editButton.addClickHandler(new ClickHandler() {
1307
				@Override
1308
				public void onClick(ClickEvent event) {
1309
					Cell cell = tableVouchers.getCellForEvent(event);
1310
					final int row = cell.getRowIndex();
1311
					String voucherAmount = tableVouchers.getText(row, TABLE_INDEX_VOUCHERS_AMOUNT);
1312
					VoucherItemDialog voucherDialog = new VoucherItemDialog(voucherAmount);
1313
					voucherDialog.updateButton.setText("Update");
1314
					voucherDialog.setVoucherUpdateListener(new VoucherItemDialog.VoucherUpdateListener() {
1315
						@Override
1316
						public boolean onUpdate(final String voucherType, final long voucherAmount) {
1317
							Long voucherTypeValue = Utils.getVoucherTypeId(voucherType);
1318
							catalogService.addVoucher(item.getCatalogItemId(), voucherTypeValue, voucherAmount, new AsyncCallback<Boolean>() {
1319
								@Override
1320
								public void onSuccess(Boolean result) {
1321
									if(result) {
1322
										GWT.log("Voucher Updated");
1323
										VoucherItemMapping newvoucher = new VoucherItemMapping(voucherAmount, voucherType);
1324
										Map<String, VoucherItemMapping> newvouchersMap = item.getVouchersMap();
1325
										newvouchersMap.remove(voucherType);
1326
										newvouchersMap.put(voucherType, newvoucher);
1327
										item.setVouchersMap(newvouchersMap);
1328
										updateVoucherTable(item.getVouchersMap());
1329
										Window.alert("Voucher Updated successfully.");
1330
									}
1331
									else {
1332
										GWT.log("Error Updating Voucher");
1333
										Window.alert("Error Updating Voucher");
1334
									}
1335
								}
1336
								@Override
1337
								public void onFailure(Throwable caught) {
1338
									caught.printStackTrace();
1339
									Window.alert("Error Updating voucher");
1340
								}
1341
							});
1342
							return true;
1343
						}
1344
					});
1345
					voucherDialog.show();
1346
				}
1347
			});
1348
 
1349
			Button deleteButton = new Button("Delete");
1350
			tableVouchers.setWidget(i, TABLE_INDEX_VOUCHERS_DEL_BUTTON, deleteButton);
1351
			deleteButton.addClickHandler(new ClickHandler() {
1352
				@Override
1353
				public void onClick(ClickEvent event) {
1354
					Cell cell = tableVouchers.getCellForEvent(event);
1355
					final int row = cell.getRowIndex();
1356
					String voucherType = tableVouchers.getText(row, TABLE_INDEX_VOUCHERS_TYPE);
1357
					Long voucherTypeValue = Utils.getVoucherTypeId(voucherType);
1358
					catalogService.deleteVoucher(item.getCatalogItemId(), voucherTypeValue, new AsyncCallback<Boolean>() {
1359
						@Override
1360
						public void onSuccess(Boolean result) {
1361
							if(result) {
1362
								GWT.log("Voucher deleted");
1363
								String voucherType = tableVouchers.getText(row, TABLE_INDEX_VOUCHERS_TYPE);
1364
								tableVouchers.removeRow(row);
1365
								Map<String, VoucherItemMapping> newvouchersMap = item.getVouchersMap();
1366
								newvouchersMap.remove(voucherType);
1367
								item.setVouchersMap(newvouchersMap);
1368
							}
1369
							else {
1370
								GWT.log("Error deleting Voucher");
1371
								Window.alert("Error deleting Voucher");
1372
							}
1373
						}
1374
						@Override
1375
						public void onFailure(Throwable caught) {
1376
							caught.printStackTrace();
1377
							Window.alert("Error deleting Voucher");
1378
						}
1379
					});
1380
				}
1381
			});
1382
			i++;
1383
		}
1384
	}
1385
	private void updateTableIgnoredWarehouse(){
1386
		tableIgnoredWarehouse.removeAllRows();
1387
		List<ItemWarehouse> itemWarehouses = Utils.getignoredInventoryUpdateItemsIdsWarehouseIds();
1388
		Map<Long,String> ignoredWarehouses = new HashMap<Long, String>();
1389
		for(ItemWarehouse itemWarehouse:itemWarehouses){
1390
			if(itemWarehouse.getItemId()==item.getId()){
1391
				ignoredWarehouses.put(itemWarehouse.getWarehouseId(),Utils.getAllWarehouses().get(itemWarehouse.getWarehouseId()));	
1392
			}
1393
 
1394
		}		
1395
		tableIgnoredWarehouse.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_NAME, "100px");
1396
		tableIgnoredWarehouse.getColumnFormatter().setWidth(TABLE_INDEX_WAREHOUSE_ADD_DEL_BUTTON, BUTTON_WIDTH);
1397
 
1398
		int i=0;
1399
		for(final Map.Entry<Long,String> entry : ignoredWarehouses.entrySet()){
1400
			addRowToIgnoredWarehouseTable(i, entry.getKey(), entry.getValue());
1401
			i++;
1402
		}
1403
	}
1404
 
1405
	private void addRowToIgnoredWarehouseTable(int i, final Long whId, final String whName) {
1406
		tableIgnoredWarehouse.setText(i,TABLE_INDEX_WAREHOUSE_NAME,whName);
1407
		Button deleteButton = new Button("Delete");
1408
		tableIgnoredWarehouse.setWidget(i, TABLE_INDEX_WAREHOUSE_ADD_DEL_BUTTON, deleteButton);
1409
		deleteButton.addClickHandler(new ClickHandler() {
1410
			@Override
1411
			public void onClick(ClickEvent event) {
1412
				Cell cell = tableIgnoredWarehouse.getCellForEvent(event);
1413
				final int row = cell.getRowIndex();
1414
				catalogService.deleteFromIgnoredInventoryUpdateItemsIdsWarehouseIds(item.getId(),whId, new AsyncCallback<Boolean>() {
1415
					@Override
1416
					public void onSuccess(Boolean result) {
1417
						if(result) {
1418
							GWT.log("Warehouse will now be in sync");
1419
							tableIgnoredWarehouse.removeRow(row);
1420
							Window.alert("Warehouse deleted from list ");
1421
							Utils.getignoredInventoryUpdateItemsIdsWarehouseIds().remove(new ItemWarehouse(item.getId(),whId));
1422
						}
1423
						else {
1424
							GWT.log("Error deleting Warehouse");
1425
							Window.alert("Error deleting Warehouse");
1426
						}
1427
					}
1428
					@Override
1429
					public void onFailure(Throwable caught) {
1430
						caught.printStackTrace();
1431
						Window.alert("Error deleting Warehouse");
1432
					}
1433
				});
1434
			}
1435
		});
1436
 
1437
	}
1438
 
1439
	/**
1440
	 * called on the click event of update item button in ItemActions
1441
	 */
1442
	void updateItem() {
1443
		if(item == null) {
1444
			Window.alert("Please select an item to update.");
1445
			return;
1446
		}
1447
		try {
1448
			if(!createNewItem()) {
1449
				return;
1450
			}
1451
		} catch(NumberFormatException ex) {
1452
			ex.printStackTrace();
1453
			GWT.log("Number format exception");
1454
		}
1455
		String paramsChanged = isItemChanged();
1456
		if(paramsChanged.equals("")) {
1457
			Window.alert("Nothing to update. Please change intended item parameters and try again.");
1458
			return;
1459
		} else {
1460
			if(item.getSameItemsWithDifferentColors().size()>0 && optionalChangedValMap.size()>0 ){
1461
				createDialog(paramsChanged);
1462
			} else {
1463
				String paramsChanged1  = "";
1464
				paramsChanged1 = "You have changed following items.\n" + paramsChanged;
1465
				Window.alert(paramsChanged1);
1466
				validateNUpdate();
1467
			}
1468
			if("\n-Expected Delay".equals(paramsChanged) || "\n-Has Serial Number Flag".equals(paramsChanged)){
1469
				catalogService.updateExpectedDelayOnProd(newItem, new AsyncCallback<String>() {
1470
					@Override
1471
					public void onSuccess(String result) {
1472
						Window.alert(result);
1473
					}
1474
					@Override
1475
					public void onFailure(Throwable caught) {
1476
						Window.alert("Error while updating item on production");
1477
					}
1478
				});
1479
			}
1480
		}
1481
	}
1482
 
1483
 
1484
	private void validateNUpdate() {
1485
		if(!Utils.validateItem(newItem)) {
1486
			return;
1487
		}
1488
 
1489
		final String[] messageList = new String[2];
1490
 
1491
		String sellingpricemessage = compareSellingPricewithBreakEven();
1492
		if(sellingpricemessage.equals("false")) {
1493
			return;
1494
		}
1495
		else if(!sellingpricemessage.equals("true")) {
1496
			messageList[0] = sellingpricemessage;
1497
		}
1498
 
1499
		String preferredvendormessage = checkTransferPriceforPreferredVendor();
1500
		if(preferredvendormessage.equals("false")) {
1501
			return;
1502
		}
1503
		else if(!preferredvendormessage.equals("true")) {
1504
			messageList[1] = preferredvendormessage;
1505
		}
1506
 
1507
		/*if(!validatePrices()) {
2126 ankur.sing 1508
            return;
1509
        }*/
10484 vikram.rag 1510
		catalogService.updateItem(newItem, new AsyncCallback<Boolean>() {
1511
			@Override
1512
			public void onSuccess(Boolean result) {
1513
				if(result) {
1514
					for(int i = 0; i < messageList.length; i++) {
1515
						if(messageList[i] != null) {
1516
							logAuthorization(messageList[i]);
1517
						}
1518
					}
1519
					if(optionalChangedValMap.size()>0 || mandatoryChangedValMap.size()>0){
1520
						for(Long itemId : item.getSameItemsWithDifferentColors()){
1521
							updateItem(itemId);
1522
						}
1523
					}
1524
					item = newItem;
1525
					GWT.log("Item updated. Id = " + item.getId());
1526
					catalogDashboardPanel.getItemListWidget().updateItem(item);
1527
					getFreshItemFromDB(item.getId());
1528
					Window.alert("Item updated successfully.");
1529
				}
1530
				else {
1531
					GWT.log("Error updating item");
1532
					Window.alert("Error updating item");
1533
				}
1534
			}
1535
			@Override
1536
			public void onFailure(Throwable caught) {
1537
				caught.printStackTrace();
1538
				Window.alert("Error while updating item");
1539
			}
1540
		});
1541
	}
1542
 
1543
	private void getFreshItemFromDB(long id) {
1544
		catalogService.getItem(id, new AsyncCallback<Item>() {
1545
			@Override
1546
			public void onSuccess(Item result) {
1547
				setItemDetails(result);
1548
			}
1549
			@Override
1550
			public void onFailure(Throwable caught) {
1551
				caught.printStackTrace();
1552
				Window.alert("Unable to fetch item details.");
1553
			}
1554
		});
1555
	}
1556
 
1557
	/**
1558
	 * This method is called while updating item.<br> It will create a new Item object and set 
1559
	 * its editable attributes with UI fields values and non-editable attributes with old Item
1560
	 * object attributes. This new Item object is then passed to the service to update item in the database.
1561
	 * <br>If update is successful, the old Item object is replaced with the new Item object. 
1562
	 * @return true if new Item object is created successfully
1563
	 *     <br>false if some error occurs due to NumberFormatException
1564
	 */
1565
	private boolean createNewItem() {
11976 vikram.rag 1566
 
10484 vikram.rag 1567
		newItem = new Item();
1568
		newItem.setId(item.getId());
1569
		newItem.setProductGroup(productGroup.getText().trim());
1570
		newItem.setBrand(brand.getText().trim());
1571
		newItem.setModelNumber(modelNumber.getText().trim());
1572
		newItem.setModelName(modelName.getText().trim());
1573
		newItem.setColor(color.getText().trim());
1574
		newItem.setContentCategory(contentCategory.getText());
1575
		newItem.setComments(comments.getText().trim());
1576
		newItem.setCatalogItemId(Long.parseLong(catalogItemId.getText()));
11671 vikram.rag 1577
		in.shop2020.catalog.dashboard.shared.PrivateDeal privateDeal = new in.shop2020.catalog.dashboard.shared.PrivateDeal();
1578
		Date dealStartDt  = dealStartDate.getValue();
1579
		Date dealEndDt  = dealEndDate.getValue();
10484 vikram.rag 1580
		try {
11671 vikram.rag 1581
			if(!dealPrice.getText().trim().isEmpty()) {
1582
				double dpValue = Double.parseDouble(dealPrice.getText().trim());
1583
				if(dpValue <= 0) {
1584
					throw new NumberFormatException("Negative value of Deal price");
1585
				}
1586
				privateDeal.setDealPrice(dpValue);
1587
			}
1588
			else{
1589
				privateDeal.setDealPrice(0);
1590
			}
1591
		} catch(NumberFormatException ex) {
1592
			Window.alert("Invalid Deal Price format/value. Value should be greater than zero");
1593
			return false;
1594
		}
1595
		if(dealStartDt!=null && privateDeal.getDealPrice() >0){
1596
			privateDeal.setStartDate(dealStartDt.getTime());
1597
		}
1598
		else if(dealStartDt!=null && privateDeal.getDealPrice()==0){
1599
			Window.alert("Invalid Deal Price format/value. Value should be greater than zero");
1600
			return false;
1601
		}
1602
		else if(dealStartDt==null && privateDeal.getDealPrice()>0){
1603
			Window.alert("Enter valid Start Date");
1604
			return false;
1605
		}
18150 kshitij.so 1606
		/*		if(isDealActive.getValue() && dealStartDt.getTime() < System.currentTimeMillis()){
11976 vikram.rag 1607
			Window.alert("Deal Start Date < Current Date (Either mark InActive or Change Deal Start Date)");
1608
			return false;
12340 amit.gupta 1609
		}*/
11671 vikram.rag 1610
		if(dealEndDt!=null && privateDeal.getDealPrice() >0){
1611
			privateDeal.setEndDate(dealEndDt.getTime());
1612
		}
1613
		else if(dealEndDt!=null && privateDeal.getDealPrice()==0){
1614
			Window.alert("Invalid Deal Price format/value. Value should be greater than zero");
1615
			return false;
1616
		}
1617
		else if(dealEndDt==null && privateDeal.getDealPrice()>0){
1618
			Window.alert("Enter valid End Date");
1619
			return false;
1620
		}
1621
		if(dealEndDt!=null && dealStartDt!=null && dealEndDt.getTime() < dealStartDt.getTime()){
1622
			Window.alert("End date can't be less than start date");
1623
			return false;
1624
		}
1625
		try {
1626
			if(dealFreebieOption.getSelectedIndex()==1 && freebieItemId.getText().trim().isEmpty()){
1627
				Window.alert("Invalid Freebie ItemId");
1628
				return false;
1629
			}
1630
			if(dealFreebieOption.getSelectedIndex()==2 && dealFreebieItemId.getText().trim().isEmpty()){
1631
				Window.alert("Invalid Deal Freebie ItemId");
1632
				return false;
1633
			}
1634
			if(!dealFreebieItemId.getText().trim().equals("")) {
1635
				long dealFreeItemId = Long.parseLong(dealFreebieItemId.getText().trim());
1636
				if(dealFreeItemId < 0) {
1637
					throw new NumberFormatException("Negative value of dealFreebieItemId ");
1638
				}
1639
				privateDeal.setDealFreebieItemId(dealFreeItemId);
1640
				if(dealFreebieOption.getSelectedIndex()==1){
1641
					if(Long.parseLong(freebieItemId.getText().trim()) < 0) {
1642
						throw new NumberFormatException("Negative value of dealFreebieItemId ");
1643
					}
1644
					privateDeal.setDealFreebieItemId(Long.parseLong(freebieItemId.getText().trim()));
1645
				}
1646
				privateDeal.setDealFreebieOption(Long.valueOf(dealFreebieOption.getSelectedIndex()));
1647
			}
1648
			else{
1649
				privateDeal.setDealFreebieItemId(0L);
1650
				privateDeal.setDealFreebieOption(Long.valueOf(dealFreebieOption.getSelectedIndex()));
1651
			}
1652
		} catch(NumberFormatException ex) {
1653
			Window.alert("Invalid deal freebie ItemId");
1654
			return false;
1655
		}
11976 vikram.rag 1656
		/*if(dealTextOption.getSelectedIndex()==1 && bestDealsText.getText().trim().isEmpty()){
11671 vikram.rag 1657
			Window.alert("Invalid Best Deals Text");
1658
			return false;
11976 vikram.rag 1659
		}*/
1660
		if(dealTextOption.getSelectedIndex()==1){
11671 vikram.rag 1661
			privateDeal.setDealText(bestDealsText.getText().trim());
1662
			privateDeal.setDealTextOption((long) dealTextOption.getSelectedIndex());
1663
		}
1664
		else if(dealTextOption.getSelectedIndex()==2 && dealText.getText().trim().isEmpty()){
1665
			Window.alert("Please enter some deal Text");
1666
			return false;
1667
		}
1668
		else{
1669
			privateDeal.setDealText(dealText.getText().trim());
1670
			privateDeal.setDealTextOption((long) dealTextOption.getSelectedIndex());
1671
		}
1672
		privateDeal.setCod(isCodOnDeal.getValue());
1673
		privateDeal.setActive(isDealActive.getValue());
1674
		try{
1675
			if(dealRank.getText().trim().isEmpty()){
11976 vikram.rag 1676
				privateDeal.setRank(10000L);
11671 vikram.rag 1677
			}
1678
			else{
11976 vikram.rag 1679
				if(Long.parseLong(dealRank.getText().trim()) < 0){
1680
					throw new NumberFormatException(); 
1681
				}
11671 vikram.rag 1682
				privateDeal.setRank(Long.parseLong(dealRank.getText().trim()));
1683
			}
1684
		}
1685
		catch(NumberFormatException nex){
1686
			Window.alert("Invalid Deals Rank");
1687
			return false;
1688
		}
1689
		newItem.setPrivateDeal(privateDeal);
1690
		if(newItem.getPrivateDeal().getDealPrice()==0 && (newItem.getPrivateDeal().getDealPrice()!=item.getPrivateDeal().getDealPrice())){
1691
			Window.alert("Deal Price can't be zero");
1692
			return false;
1693
		}
1694
		try {
10484 vikram.rag 1695
			if(!mrp.getText().trim().isEmpty()) {
1696
				double mrpValue = Double.parseDouble(mrp.getText().trim());
1697
				if(mrpValue <= 0) {
1698
					throw new NumberFormatException("Negative value of MRP");
1699
				}
1700
				newItem.setMrp(mrpValue);
1701
			}
1702
		} catch(NumberFormatException ex) {
11976 vikram.rag 1703
			Window.alert("Invalid MRP format/value. Value should be greater than zero");
10484 vikram.rag 1704
			return false;
1705
		}
1706
		try {
1707
			if(!sellingPrice.getText().trim().isEmpty()) {
1708
				double spValue = Double.parseDouble(sellingPrice.getText().trim());
1709
				if(spValue <= 0) {
1710
					throw new NumberFormatException("Negative value of Selling price");
1711
				}
1712
				newItem.setSellingPrice(spValue);
1713
			}
1714
		} catch(NumberFormatException ex) {
1715
			Window.alert("Invalid Selling Price format/value. Value shoule be greater than zero");
1716
			return false;
1717
		}
18048 kshitij.so 1718
		try {
1719
			if(!packQuantity.getText().trim().isEmpty()) {
1720
				long packQuantityValue = Long.parseLong(packQuantity.getText().trim());
1721
				if(packQuantityValue < 1) {
1722
					throw new NumberFormatException("Illegal value of PackQuantity");
1723
				}
1724
				newItem.setPackQuantity(packQuantityValue);
1725
			}
1726
			else{
1727
				Window.alert("Invalid PackQuantity format/value. Value should can't be empty");
1728
				return false;
1729
			}
1730
		} catch(NumberFormatException ex) {
1731
			Window.alert("Invalid PackQuantity format/value. Value should be greater than zero");
1732
			return false;
1733
		}
18150 kshitij.so 1734
		try {
1735
			if(!quantityStep.getText().trim().isEmpty()) {
1736
				long quantityStepValue = Long.parseLong(quantityStep.getText().trim());
1737
				if(quantityStepValue < 1) {
1738
					throw new NumberFormatException("Illegal value of Quantity Step");
1739
				}
1740
				newItem.setQuantityStep(quantityStepValue);
1741
			}
1742
			else{
1743
				Window.alert("Invalid Quantity Step format/value. Value should can't be empty");
1744
				return false;
1745
			}
1746
		} catch(NumberFormatException ex) {
1747
			Window.alert("Invalid Quantity Step format/value. Value should be greater than zero");
1748
			return false;
1749
		}
1750
		try {
1751
			if(!minimumBuyQuantity.getText().trim().isEmpty()) {
1752
				long minimumBuyQuantityValue= Long.parseLong(minimumBuyQuantity.getText().trim());
1753
				if(minimumBuyQuantityValue < 1) {
1754
					throw new NumberFormatException("Illegal value of Min Buy Qty");
1755
				}
1756
				newItem.setMinimumBuyQuantity(minimumBuyQuantityValue);
1757
			}
1758
			else{
1759
				Window.alert("Invalid Min Buy Qty format/value. Value should can't be empty");
1760
				return false;
1761
			}
1762
		} catch(NumberFormatException ex) {
1763
			Window.alert("Invalid Min Buy Qty format/value. Value should be greater than zero");
1764
			return false;
1765
		}
1766
 
11976 vikram.rag 1767
		if(newItem.getPrivateDeal().getDealPrice()!=0 && newItem.getPrivateDeal().getDealPrice() >= newItem.getSellingPrice()){
1768
			Window.alert("Deal Price can't be more than Selling Price");
1769
			return false;
1770
		}
10484 vikram.rag 1771
		try {
1772
			if(!weight.getText().trim().isEmpty()) {
1773
				double wtValue = Double.parseDouble(weight.getText().trim());
1774
				if(wtValue <= 0) {
1775
					throw new NumberFormatException("Negative value of Weight");
1776
				}
1777
				newItem.setWeight(wtValue);
1778
			}
1779
		} catch(NumberFormatException ex) {
11671 vikram.rag 1780
			Window.alert("Invalid weight format/value. Value should be greater than zero");
10484 vikram.rag 1781
			return false;
1782
		}
1783
		try {
1784
			if(!startDate.getTextBox().getText().trim().equals("")) {
1785
				newItem.setStartDate(startDate.getValue().getTime());
1786
			}
1787
		} catch(Exception ex) {
1788
			Window.alert("Invalid start date format");
1789
			return false;
1790
		}
1791
		newItem.setBestDealsText(bestDealsText.getText().trim());
1792
		newItem.setBestDealsDetailsText(bestDealsDetailsText.getText().trim());
1793
		newItem.setBestDealsDetailsLink(bestDealsDetailsLink.getText().trim());
1794
		Date comingSoonStartDt  = comingSoonStartDate.getValue();
1795
		Date expectedArrivalDt  = expectedArrivalDate.getValue();
1796
		if(comingSoonStartDt == null){
1797
			newItem.setComingSoonStartDate(null);
1798
		}else {
1799
			newItem.setComingSoonStartDate(comingSoonStartDt.getTime());
1800
		}
1801
		if(expectedArrivalDt == null){
1802
			newItem.setExpectedArrivalDate(null);
1803
		}else {
1804
			newItem.setExpectedArrivalDate(expectedArrivalDt.getTime());
1805
		}
1806
		try {
1807
			if(!bestDealsValue.getText().trim().equals("")) {
1808
				double bdValue = Double.parseDouble(bestDealsValue.getText().trim());
1809
				if(bdValue < 0) {
1810
					throw new NumberFormatException("Negative value of BestDealValue");
1811
				}
1812
				newItem.setBestDealsValue(bdValue);
1813
			}
1814
		} catch(NumberFormatException ex) {
1815
			Window.alert("Invalid best deal value format");
1816
			return false;
1817
		}
1818
 
1819
		try {
1820
			if(!bestSellingRank.getText().trim().equals("")) {
1821
				long bsrValue = Long.parseLong(bestSellingRank.getText().trim());
1822
				if(bsrValue < 0) {
1823
					throw new NumberFormatException("Negative value of Best Selling Rank");
1824
				}
1825
				newItem.setBestSellingRank(bsrValue);
1826
			}
1827
		} catch(NumberFormatException ex) {
1828
			Window.alert("Invalid best selling rank format");
1829
			return false;
1830
		}
1831
		newItem.setDefaultForEntity(defaultForEntity.getValue());
1832
		newItem.setRisky(risky.getValue());
1833
 
1834
		try {
1835
			if(!minStockLevel.getText().trim().equals("")) {
1836
				long minStock = Long.parseLong(minStockLevel.getText().trim());
1837
				if(minStock < 0) {
1838
					throw new NumberFormatException("Negative value of Minimum Stock Level");
1839
				}
1840
				newItem.setMinStockLevel(minStock);
1841
			}
1842
		} catch(NumberFormatException ex) {
1843
			Window.alert("Invalid minimum Stock Level format");
1844
			return false;
1845
		}
1846
 
1847
		try {
1848
			if(!numOfDaysStock.getText().trim().equals("")) {
1849
				long numDays = Long.parseLong(numOfDaysStock.getText().trim());
1850
				if(numDays < 0) {
1851
					throw new NumberFormatException("Negative value of num Of Days ");
1852
				}
1853
				newItem.setNumOfDaysStock(new Long(numDays).intValue());
1854
			}
1855
		} catch(NumberFormatException ex) {
1856
			Window.alert("Invalid number Of Days format");
1857
			return false;
1858
		}
1859
		newItem.setShowSellingPrice(showSellingPrice.getValue());
1860
		newItem.setHoldOverride(holdOverride.getValue());
1861
		try {
1862
			String expectedDelayText = expectedDelay.getText().trim();
1863
			if(!expectedDelayText.equals("")){
1864
				newItem.setExpectedDelay(Integer.parseInt(expectedDelayText));
1865
			}
1866
		} catch(NumberFormatException nfe) {
1867
			Window.alert("Invalid expected delay");
1868
			return false;
1869
		}
1870
		try {
1871
			if(!freebieItemId.getText().trim().equals("")) {
1872
				long freeItemId = Long.parseLong(freebieItemId.getText().trim());
1873
				if(freeItemId < 0) {
1874
					throw new NumberFormatException("Negative value of freebieItemId ");
1875
				}
1876
				newItem.setFreebieItemId(new Long(freeItemId));
1877
			}
1878
		} catch(NumberFormatException ex) {
1879
			Window.alert("Invalid freebie ItemId");
1880
			return false;
1881
		}
1882
		if((item.getPreferredVendor() == null || item.getVendorPricesMap() == null || item.getVendorPricesMap().isEmpty()) && preferredVendor.getSelectedIndex() == 0) {
1883
			newItem.setPreferredVendor(item.getPreferredVendor());
1884
		}
1885
		else {
1886
			long vendorId = Utils.getVendorId(preferredVendor.getItemText(preferredVendor.getSelectedIndex()));
1887
			newItem.setPreferredVendor(vendorId);
1888
		}
1889
		newItem.setPreferredInsurer(Long.parseLong(preferredInsurer.getValue(preferredInsurer.getSelectedIndex())));
1890
		newItem.setWarehouseStickiness(warehouseStickiness.getValue());
1891
		newItem.setHasItemNo(hasItemNo.getValue());
1892
		newItem.setItemType(itemType.getValue());
1893
		newItem.setAsin(asin.getText().trim());
1894
		try {
1895
			if(!holdInventory.getText().trim().equals("")) {
1896
				long hold_inventory = Long.parseLong(holdInventory.getText().trim());
1897
				if(hold_inventory < 0) {
1898
					throw new NumberFormatException("Negative value of Hold Inventory");
1899
				}
1900
				newItem.setHoldInventory(hold_inventory);
1901
			}
1902
		} catch(NumberFormatException ex) {
1903
			Window.alert("Invalid Hold Inventory Value");
1904
			return false;
1905
		}
1906
 
1907
		try {
1908
			if(!defaultInventory.getText().trim().equals("")) {
1909
				long default_inventory = Long.parseLong(defaultInventory.getText().trim());
1910
				if(default_inventory < 0) {
1911
					throw new NumberFormatException("Negative value of Default Inventory");
1912
				}
1913
				newItem.setDefaultInventory(default_inventory);
1914
			}
1915
		} catch(NumberFormatException ex) {
1916
			Window.alert("Invalid Default Inventory Value");
1917
			return false;
1918
		}
1919
		/*Create an instance of VendorPricings for each row in vendor pricing table. Set the vendor prices to the instance.
2126 ankur.sing 1920
          Add the instance to map and set the map to the item instance created above.*/
10484 vikram.rag 1921
		Map<Long, VendorPricings> vendorPrices = new HashMap<Long, VendorPricings>();
1922
		VendorPricings v;
1923
		for(int row = 0; row < tableVendorPrices.getRowCount(); row++) {
1924
			v = new VendorPricings();
1925
			v.setMop(Double.parseDouble(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_MOP)));
1926
			v.setDealerPrice(Double.parseDouble(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_DP)));
1927
			v.setTransferPrice(Double.parseDouble(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_TP)));
1928
			v.setNlc(Double.parseDouble(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_NLC)));
1929
			v.setVendorId(Long.parseLong(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_VENDORID)));
1930
			vendorPrices.put(v.getVendorId(), v);
1931
		}
1932
		newItem.setVendorPricesMap(vendorPrices);
1933
		newItem.setItemStatusDesc(statusDesc.getText().trim());
1934
 
1935
		/*Create an instance of VendorPricings for each row in vendor pricing table. Set the vendor prices to the instance.
2126 ankur.sing 1936
        Add the instance to map and set the map to the item instance created above.*/
10484 vikram.rag 1937
		Map<String, VendorItemMapping> vendorMappings = new HashMap<String, VendorItemMapping>();
1938
		VendorItemMapping vMapping;
1939
		for(int row = 0; row < tableVendorItemKey.getRowCount(); row++) {
1940
			vMapping = new VendorItemMapping();
1941
			vMapping.setItemKey(tableVendorItemKey.getText(row, TABLE_INDEX_MAPPING_ITEM_KEY));
1942
			vMapping.setVendorId(Long.parseLong(tableVendorItemKey.getText(row, TABLE_INDEX_MAPPING_VENDORID)));
1943
			vendorMappings.put(vMapping.getVendorId() + Item.KEY_SEPARATOR + tableVendorItemKey.getText(row, TABLE_INDEX_MAPPING_ITEM_KEY_OLD), vMapping);
1944
		}
1945
		newItem.setVendorKeysMap(vendorMappings);
1946
 
1947
		/*Create an instance of SourcePricings for each row in source pricing table. Set the source prices to the instance.
3558 rajveer 1948
        Add the instance to map and set the map to the item instance created above.*/
10484 vikram.rag 1949
		Map<Long, SourcePricings> sourcePrices = new HashMap<Long, SourcePricings>();
1950
		SourcePricings s;
1951
		for(int row = 0; row < tableSourcePrices.getRowCount(); row++) {
1952
			s = new SourcePricings();
1953
			s.setMrp(Double.parseDouble(tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_MRP)));
1954
			s.setSellingPrice(Double.parseDouble(tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE)));
1955
			s.setSourceId(Long.parseLong(tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID)));
1956
			sourcePrices.put(s.getSourceId(), s);
1957
		}
3558 rajveer 1958
		newItem.setSourcePricesMap(sourcePrices);
2066 ankur.sing 1959
 
10484 vikram.rag 1960
		newItem.setContentCategoryId(item.getContentCategoryId());
1961
		newItem.setFeatureId(item.getFeatureId());
1962
		newItem.setFeatureDescription(item.getFeatureDescription());
1963
		newItem.setAddedOn(item.getAddedOn());
1964
		newItem.setRetireDate(item.getRetireDate());
1965
		newItem.setUpdatedOn(item.getUpdatedOn());
1966
		newItem.setItemStatus(item.getItemStatus());
1967
		newItem.setItemInventory(item.getItemInventory());
1968
		newItem.setSimilarItems(item.getSimilarItems());
1969
		newItem.setVouchersMap(item.getVouchersMap());
11976 vikram.rag 1970
 
10484 vikram.rag 1971
		return true;
1972
	}
2066 ankur.sing 1973
 
10484 vikram.rag 1974
	/**
1975
	 * This method is called when Edit button is clicked corresponding to a row in 
1976
	 * vendor prices table. It will pop up a form to edit the vendor prices.
1977
	 * @param vendorId
1978
	 * @param row
1979
	 */
1980
	private void editVendorPrices(final long vendorId, final int row) {
1981
		String mop = tableVendorPrices.getText(row, TABLE_INDEX_PRICING_MOP);
1982
		String dp = tableVendorPrices.getText(row, TABLE_INDEX_PRICING_DP);
1983
		String tp = tableVendorPrices.getText(row, TABLE_INDEX_PRICING_TP);
1984
		String nlc = tableVendorPrices.getText(row, TABLE_INDEX_PRICING_NLC);
1985
		VendorPricesDialog pricesDialog = new VendorPricesDialog(mop, dp, tp, nlc);
1986
		pricesDialog.updateButton.setText("Update");
1987
		pricesDialog.setVendorPriceUpdateListener(new VendorPricesDialog.VendorPriceUpdateListener() {
1988
			@Override
1989
			public boolean onUpdate(double mop, double dp, double tp, double nlc, long vendorId) {
1990
				if(!validateVendorPrices(mop, dp, tp, nlc)) {
1991
					return false;
1992
				}
1993
				tableVendorPrices.setText(row, TABLE_INDEX_PRICING_MOP, mop + "");
1994
				tableVendorPrices.setText(row, TABLE_INDEX_PRICING_DP, dp + "");
1995
				tableVendorPrices.setText(row, TABLE_INDEX_PRICING_TP, tp + "");
1996
				tableVendorPrices.setText(row, TABLE_INDEX_PRICING_NLC, nlc + "");
1997
				return true;
1998
			}
1999
		});
2000
		pricesDialog.show();
2001
	}
2002
 
2003
	/**
2004
	 * This method is called when Edit button is clicked corresponding to a row in 
2005
	 * vendor prices table. It will pop up a form to edit the vendor prices.
2006
	 * @param vendorId
2007
	 * @param row
2008
	 */
2009
	private void editSourcePrices(final long sourceId, final int row) {
2010
		String mrp = tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_MRP);
2011
		String sellingPrice = tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE);
2012
		SourcePricesDialog pricesDialog = new SourcePricesDialog(mrp, sellingPrice);
2013
		pricesDialog.updateButton.setText("Update");
2014
		pricesDialog.setSourcePriceUpdateListener(new SourcePricesDialog.SourcePriceUpdateListener() {
2015
			@Override
2016
			public boolean onUpdate(double mrp, double sellingPrice, long sourceId) {
2017
				if(!validateSourcePrices(mrp, sellingPrice)) {
2018
					return false;
2019
				}
2020
				tableSourcePrices.setText(row, TABLE_INDEX_SOURCE_PRICING_MRP, mrp + "");
2021
				tableSourcePrices.setText(row, TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE, sellingPrice + "");
2022
				return true;
2023
			}
2024
		});
2025
		pricesDialog.show();
2026
	}
2027
 
2028
 
2029
	/**
2030
	 * This method is called when Edit button is clicked corresponding to a row in 
2031
	 * vendor item key table. It will pop up a form to edit the item key.
2032
	 * @param vendorId
2033
	 * @param row
2034
	 */
2035
	private void editVendorKey(final long vendorId, final int row) {
2036
		String key = tableVendorItemKey.getText(row, TABLE_INDEX_MAPPING_ITEM_KEY);
2037
		VendorMappingDialog mappingDialog = new VendorMappingDialog(productGroup.getText().trim(), brand.getText().trim(), 
2038
				modelNumber.getText().trim(), color.getText().trim(), key);
2039
		mappingDialog.updateButton.setText("Update");
2040
		mappingDialog.setVendorMappingUpdateListener(new VendorMappingDialog.VendorMappingUpdateListener() {
2041
			@Override
2042
			public boolean onUpdate(String itemKey, long vendorId) {
2043
				if(itemKey == null || itemKey.equals("")) {
2044
					Window.alert("Item key cannot be empty.");
2045
					return false;
2046
				}
2047
				tableVendorItemKey.setText(row, TABLE_INDEX_MAPPING_ITEM_KEY, itemKey);
2048
				return true;
2049
			}
2050
		});
2051
		mappingDialog.show();
2052
	}
2053
 
2054
	/**
2055
	 * This method compares all the editable UI fields values with attributes in the item object.
2056
	 * If they differ, the attribute name is appended to a string.
2057
	 * @return String showing attributes which are changed by the user for confirmation.
2058
	 *      <br>Empty string if nothing is changed.
2059
	 */
2060
	private String isItemChanged() {
2061
		StringBuilder sb = new StringBuilder("");
2062
		mandatoryChangedValMap = new HashMap<String, Object>();
2063
		optionalChangedValMap = new HashMap<String, Object>();
2064
		if(!checkParameterIfEqual(brand.getText().trim(), item.getBrand())) {
2065
			mandatoryChangedValMap.put(MANDATORY_BRAND, brand.getText().trim());
2066
			sb.append("\n-Brand");
2067
		}
2068
		if(!checkParameterIfEqual(modelNumber.getText().trim(), item.getModelNumber())) {
2069
			mandatoryChangedValMap.put(MANDATORY_MODEL_NO, modelNumber.getText().trim());
2070
			sb.append("\n-Model Number");
2071
		}
2072
		if(!checkParameterIfEqual(modelName.getText().trim(), item.getModelName())) {
2073
			mandatoryChangedValMap.put(MANDATORY_MODEL_NAME, modelName.getText().trim());
2074
			sb.append("\n-Model Name");
2075
		}
2076
		if(!checkParameterIfEqual(color.getText().trim(), item.getColor())) {
2077
			sb.append("\n-Color");
2078
		}
2079
		if(!checkParameterIfEqual(statusDesc.getText().trim(), item.getItemStatusDesc())) {
2080
			sb.append("\n-Status Description");
2081
		}
2082
		if(!checkParameterIfEqual(comments.getText().trim(), item.getComments())) {
2083
			sb.append("\n-Comments");
2084
		}
2085
		if(!checkParameterIfEqual(newItem.getMrp(), item.getMrp())) {
2086
			mandatoryChangedValMap.put(MANDATORY_MRP, newItem.getMrp());
2087
			sb.append("\n-MRP");
2088
		}
2089
		if(!checkParameterIfEqual(newItem.getSellingPrice(), item.getSellingPrice())) {
2090
			optionalChangedValMap.put(OPTIONAL_SELLING_PRICE, newItem.getSellingPrice());
2091
			sb.append("\n-Selling Price");
2092
		}
2093
		if(!checkParameterIfEqual(newItem.getWeight(), item.getWeight())) {
2094
			mandatoryChangedValMap.put(MANDATORY_WEIGHT, newItem.getWeight());
2095
			sb.append("\n-Weight");
2096
		}
2097
		if(!checkParameterIfEqual(bestDealsText.getText().trim(), item.getBestDealsText())) {
2098
			mandatoryChangedValMap.put(MANDATORY_BEST_DEAL_TEXT, bestDealsText.getText().trim());
2099
			sb.append("\n-Best Deal Text");
2100
		}
2101
		if(!checkParameterIfEqual(bestDealsDetailsText.getText().trim(), item.getBestDealsDetailsText())) {
2102
			mandatoryChangedValMap.put(MANDATORY_BEST_DEAL_DETAIL_TEXT, bestDealsDetailsText.getText().trim());
2103
			sb.append("\n-Best Deal Detail Text");
2104
		}
2105
		if(!checkParameterIfEqual(bestDealsDetailsLink.getText().trim(), item.getBestDealsDetailsLink())) {
2106
			mandatoryChangedValMap.put(MANDATORY_BEST_DEAL_DETAIL_LINK, bestDealsDetailsLink.getText().trim());
2107
			sb.append("\n-Best Deal Detail Link");
2108
		}
2109
		if(!checkParameterIfEqual(newItem.getBestDealsValue(), item.getBestDealsValue())) {
2110
			sb.append("\n-Best Deal Value");
2111
		}
2112
		if(!checkParameterIfEqual(newItem.getBestSellingRank(), item.getBestSellingRank())) {
2113
			sb.append("\n-Best Selling Rank");
2114
		}
2115
		if(!checkParameterIfEqual(newItem.getMinStockLevel(), item.getMinStockLevel())) {
2116
			sb.append("\n-Min Stock Level");
2117
		}
2118
		if(!checkParameterIfEqual(newItem.getNumOfDaysStock(), item.getNumOfDaysStock())) {
2119
			sb.append("\n-Number Of Days Of Stock");
2120
		}
2121
		if(item.isDefaultForEntity() != defaultForEntity.getValue()) {
2122
			sb.append("\n-Default For Entity Flag");
2123
		}
2124
		if(item.isRisky() != risky.getValue()) {
2125
			sb.append("\n-Risky Flag");
2126
		}
2127
		if(!checkParameterIfEqual(newItem.getStartDate(), item.getStartDate())) {
2128
			sb.append("\n-Start Date");
2129
		}
2130
		if(!checkParameterIfEqual(newItem.getExpectedArrivalDate(), item.getExpectedArrivalDate())) {
2131
			sb.append("\n-Expected Arrival Date");
2132
		}
2133
		if(!checkParameterIfEqual(newItem.getComingSoonStartDate(), item.getComingSoonStartDate())) {
2134
			sb.append("\n-Coming Soon Start Date");
2135
		}
2136
		if(!checkParameterIfEqual(newItem.getExpectedDelay(), item.getExpectedDelay())) {
2137
			sb.append("\n-Expected Delay");
2138
		}
2139
		if(item.isWarehouseStickiness() != warehouseStickiness.getValue()) {
2140
			sb.append("\n-Warehouse Stickiness Flag");
2141
		}
2142
		if(!checkParameterIfEqual(newItem.getPreferredVendor(), item.getPreferredVendor())) {
2143
			optionalChangedValMap.put(OPTIONAL_PREFERRED_VENDOR, newItem.getPreferredVendor());
2144
			sb.append("\n-Preferred Vendor");
2145
		}
2146
		if(!checkParameterIfEqual(newItem.getPreferredInsurer(), item.getPreferredInsurer())) {
2147
			optionalChangedValMap.put(OPTIONAL_PREFERRED_INSURER, newItem.getPreferredInsurer());
2148
			sb.append("\n-Preferred Insurer");
2149
		}
2150
		if(item.isHasItemNo() != hasItemNo.getValue()) {
2151
			sb.append("\n-Has Item Number Flag");
2152
		}
2153
		if(item.isItemType() != itemType.getValue()) {
2154
			sb.append("\n-Has Serial Number Flag");
2155
		}
2156
		if(item.isShowSellingPrice() != showSellingPrice.getValue()) {
2157
			sb.append("\n-Coming Soon item pricing marked");
2158
		}
2159
		if(item.isHoldOverride() != holdOverride.getValue()) {
2160
			sb.append("\n-Hold Override is marked");
2161
		}
2162
		if(!checkParameterIfEqual(newItem.getFreebieItemId(), item.getFreebieItemId())) {
2163
			optionalChangedValMap.put(OPTIONAL_FREEBIE_ITEM_ID, freebieItemId.getText().trim());
2164
			sb.append("\n-Freebie Item Id");
2165
		}
11671 vikram.rag 2166
		if(newItem.getPrivateDeal().getDealFreebieItemId()!=0){
2167
			if(newItem.getPrivateDeal().getDealFreebieItemId()!=item.getPrivateDeal().getDealFreebieItemId()) {
2168
				sb.append("\n-Deal Freebie Item Id");
2169
			}
2170
		}
2171
		if(newItem.getPrivateDeal().getDealPrice()!=item.getPrivateDeal().getDealPrice()) {
2172
			sb.append("\n-Deal Price");
2173
		}
2174
		if(newItem.getPrivateDeal().getDealFreebieOption().longValue()!=item.getPrivateDeal().getDealFreebieOption().longValue()) {
2175
			sb.append("\n-Deal Freebie Option");
2176
		}
2177
		if(!newItem.getPrivateDeal().getDealText().equalsIgnoreCase(item.getPrivateDeal().getDealText())) {
11976 vikram.rag 2178
			sb.append("\n-Deal Text " + newItem.getPrivateDeal().getDealText() +" "+item.getPrivateDeal().getDealText());
11671 vikram.rag 2179
		}
2180
		if(newItem.getPrivateDeal().getDealTextOption()!=item.getPrivateDeal().getDealTextOption()) {
2181
			sb.append("\n-Deal Text Option");
2182
		}
2183
		if(newItem.getPrivateDeal().getRank().longValue()!=item.getPrivateDeal().getRank().longValue()) {
11976 vikram.rag 2184
			sb.append("\n-Deal Rank"+" "+newItem.getPrivateDeal().getRank().longValue()+" "+item.getPrivateDeal().getRank().longValue());
11671 vikram.rag 2185
		}
2186
		if(newItem.getPrivateDeal().isCod()!=item.getPrivateDeal().isCod()) {
2187
			sb.append("\n-Is Deal Cod");
2188
		}
2189
		if(newItem.getPrivateDeal().isActive()!=item.getPrivateDeal().isActive()) {
2190
			sb.append("\n-Is Deal Active");
2191
		}
2192
		if(!checkParameterIfEqual(newItem.getPrivateDeal().getStartDate(),item.getPrivateDeal().getStartDate())) {
2193
			sb.append("\n-Deal Start Date");
2194
		}
2195
		if(!checkParameterIfEqual(newItem.getPrivateDeal().getEndDate(),item.getPrivateDeal().getEndDate())) {
2196
			sb.append("\n-Deal End Date");
2197
		}
10484 vikram.rag 2198
		if(!checkParameterIfEqual(asin.getText().trim(), item.getAsin())) {
2199
			sb.append("\n-Asin");
2200
		}
2201
		if(!checkParameterIfEqual(newItem.getHoldInventory(), item.getHoldInventory())) {
2202
			sb.append("\n-Hold Inventory");
2203
		}
2204
		if(!checkParameterIfEqual(newItem.getDefaultInventory(), item.getDefaultInventory())) {
2205
			sb.append("\n-Default Inventory");
2206
		}
18150 kshitij.so 2207
		if(!checkParameterIfEqual(newItem.getPackQuantity(),item.getPackQuantity())) {
2208
			mandatoryChangedValMap.put(OPTIONAL_PACK_QUANTITY, newItem.getPackQuantity());
18048 kshitij.so 2209
			sb.append("\n-PackQuantity");
2210
		}
18150 kshitij.so 2211
		if(!checkParameterIfEqual(newItem.getQuantityStep(),item.getQuantityStep())) {
2212
			mandatoryChangedValMap.put(OPTIONAL_QUANTITY_STEP, newItem.getQuantityStep());
2213
			sb.append("\n-Quantity Step");
2214
		}
2215
 
2216
		if(!checkParameterIfEqual(newItem.getMinimumBuyQuantity(),item.getMinimumBuyQuantity())) {
2217
			mandatoryChangedValMap.put(OPTIONAL_MINIMUM_BUY_QTY, newItem.getMinimumBuyQuantity());
2218
			sb.append("\n-Min Buy Qty");
2219
		}
2220
 
10484 vikram.rag 2221
		VendorPricings vendorPricings;
2222
		long vendorId;
2223
		boolean vendorPricingsChanged = false;
2224
		for(int row = 0; row < tableVendorPrices.getRowCount(); row++) {
2225
			vendorId = Long.parseLong(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_VENDORID));
2226
			vendorPricings = item.getVendorPricesMap().get(vendorId);
2227
			if(vendorPricings == null) {
2228
				sb.append("\n-Vendor Prices (Vendor:" + vendorId + ")");
2229
				vendorPricingsChanged = true;
2230
				continue;
2231
			}
2232
			if(vendorPricings.getMop() != Double.parseDouble(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_MOP))) {
2233
				vendorPricingsChanged = true;
2234
				sb.append("\n-MOP (Vendor:" + vendorId + ")");
2235
			}
2236
			if(vendorPricings.getDealerPrice() != Double.parseDouble(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_DP))) {
2237
				vendorPricingsChanged = true;
2238
				sb.append("\n-Dealer Price (Vendor:" + vendorId + ")");
2239
			}
2240
			if(vendorPricings.getTransferPrice() != Double.parseDouble(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_TP))) {
2241
				vendorPricingsChanged = true;
2242
			}
2243
			if(vendorPricings.getNlc() != Double.parseDouble(tableVendorPrices.getText(row, TABLE_INDEX_PRICING_NLC))) {
2244
				vendorPricingsChanged = true;
2245
			}
2246
		}
2247
		if(vendorPricingsChanged){
2248
			sb.append("\n-Vendor Pricing");
2249
			optionalChangedValMap.put(OPTIONAL_VENDOR_PRICING, newItem.getVendorPricesMap());
2250
		}
2251
 
2252
		SourcePricings sourcePricings;
2253
		boolean sourcePricingsChanged = false;
2254
		long sourceId;
2255
		for(int row = 0; row < tableSourcePrices.getRowCount(); row++) {
2256
			sourceId = Long.parseLong(tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID));
2257
			sourcePricings = item.getSourcePricesMap().get(sourceId);
2258
			if(sourcePricings == null) {
2259
				sourcePricingsChanged = true;
2260
				sb.append("\n-Source Prices (Source:" + sourceId + ")");
2261
				continue;
2262
			}
2263
			if(sourcePricings.getMrp() != Double.parseDouble(tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_MRP))) {
2264
				sourcePricingsChanged = true;
2265
				sb.append("\n-MRP (Source:" + sourceId + ")");
2266
			}
2267
			if(sourcePricings.getSellingPrice() != Double.parseDouble(tableSourcePrices.getText(row, TABLE_INDEX_SOURCE_PRICING_SELLING_PRICE))) {
2268
				sourcePricingsChanged = true;
2269
				sb.append("\n-Selling Price (Source:" + sourceId + ")");
2270
			}
18150 kshitij.so 2271
 
10484 vikram.rag 2272
		}
2273
		if(sourcePricingsChanged){
2274
			sb.append("\n-Source Pricing");
2275
			optionalChangedValMap.put(OPTIONAL_SOURCE_PRICING, newItem.getSourcePricesMap());
2276
		}
2277
		VendorItemMapping mapping;
2278
		String old_key, new_key;
2279
		for(int row = 0; row < tableVendorItemKey.getRowCount(); row++) {
2280
			vendorId = Long.parseLong(tableVendorItemKey.getText(row, TABLE_INDEX_MAPPING_VENDORID));
2281
			old_key = tableVendorItemKey.getText(row, TABLE_INDEX_MAPPING_ITEM_KEY_OLD);
2282
			new_key = tableVendorItemKey.getText(row, TABLE_INDEX_MAPPING_ITEM_KEY);
2283
			mapping = item.getVendorKeysMap().get(vendorId + Item.KEY_SEPARATOR + old_key);
2284
			if(mapping == null || !old_key.equals(new_key)) {
2285
				sb.append("\n-Vendor Key (Vendor:" + vendorId + ",Key: = " + old_key + ")");
2286
				continue;
2287
			}
2288
		}
2289
		return sb.toString();
2290
	}
2291
 
2292
	@SuppressWarnings("unused")
2566 chandransh 2293
	private boolean validatePrices() {
10484 vikram.rag 2294
		if(newItem.getSellingPrice() > newItem.getMrp()) {
2295
			Window.alert("Selling price cannot be more than MRP");
2296
			return false;
2297
		}
2298
		for(VendorPricings v : newItem.getVendorPricesMap().values()) {
2299
			if(newItem.getMrp() < v.getMop()) {
2300
				Window.alert("MRP cannot be less than MOP. Vendor: " + v.getVendorId());
2301
				return false;
2302
			}
2303
			if(v.getTransferPrice() > v.getMop()) {
2304
				Window.alert("Transfer Price cannot be more than MOP. Vendor: " + v.getVendorId());
2305
				return false;
2306
			}
2307
		}
2308
		return true;
2309
	}
3558 rajveer 2310
 
10484 vikram.rag 2311
	private boolean validateVendorPrices(double mop, double dp, double tp, double nlc) {
2312
		if(item.getMrp() != null && item.getMrp() < mop) {
2313
			Window.alert("MOP cannot be more than MRP.");
2314
			return false;
2315
		}
2316
		if(tp > mop) {
2317
			Window.alert("Transfer Price cannot be more than MOP.");
2318
			return false;
2319
		}
2320
		if(tp < nlc) {
2321
			Window.alert("Transfer Price cannot be less than NLC.");
2322
			return false;
2323
		}
2324
		return true;
2325
	}
3558 rajveer 2326
 
10484 vikram.rag 2327
	private boolean validateSourcePrices(double mrp, double sellingPrice) {
2328
		if(sellingPrice > mrp) {
2329
			Window.alert("Selling Price cannot be more than MRP.");
2330
			return false;
2331
		}
2332
		return true;
2333
	}
2334
 
2335
 
2336
	public long getItemId() {
2337
		return item == null ? 0 : item.getId();
2338
	}
2339
 
2340
	public Item getItem() {
2341
		return item;
2342
	}
2343
 
2344
	private boolean voucherExists(String voucherType) {
2345
		for(int i = 0; i < tableVouchers.getRowCount(); i++) {
2346
			if(voucherType.equals(tableVouchers.getText(i, TABLE_INDEX_VOUCHERS_TYPE))) {
2347
				return false;
2348
			}
2349
		}
2350
		return true;
2351
	}
2352
 
2353
	/**
2354
	 * This method is used while adding vendor prices to ensure that there is only one row in the table for a vendor.
2355
	 * @param vendorId
2356
	 * @return true if parameter vendor Id is already added to vendor prices table.
2357
	 *      <br>else false
2358
	 */
2359
	private boolean vendorExists(long vendorId) {
2360
		long id;
2361
		for(int i = 0; i < tableVendorPrices.getRowCount(); i++) {
2362
			id = Long.parseLong(tableVendorPrices.getText(i, TABLE_INDEX_PRICING_VENDORID));
2363
			if(vendorId == id) {
2364
				return false;
2365
			}
2366
		}
2367
		return true;
2368
	}
2369
 
2370
	/**
2371
	 * This method is used while adding source prices to ensure that there is only one row in the table for a source.
2372
	 * @param sourceId
2373
	 * @return true if parameter vendor Id is already added to source prices table.
2374
	 *      <br>else false
2375
	 */
2376
	private boolean sourceExists(long sourceId) {
2377
		long id;
2378
		for(int i = 0; i < tableSourcePrices.getRowCount(); i++) {
2379
			id = Long.parseLong(tableSourcePrices.getText(i, TABLE_INDEX_SOURCE_PRICING_SOURCE_ID));
2380
			if(sourceId == id) {
2381
				return false;
2382
			}
2383
		}
2384
		return true;
2385
	}
2386
 
2387
	/**
2388
	 * This method is used to check if any of the string item attributes is changed by the user.
2389
	 * @param o1
2390
	 * @param o2
2391
	 * @return true if two strings are equal
2392
	 *      <br>true if one of them is null and another is empty.
2393
	 *      <br>false otherwise
2394
	 */
18150 kshitij.so 2395
 
10484 vikram.rag 2396
	private boolean checkParameterIfEqual(Object o1, Object o2) {
2397
		if(o1 == o2) {
2398
			return true;
2399
		}
2400
		if(o1 != null && o2 != null && o1.equals(o2)) {
2401
			return true;
2402
		}
2403
		if((o1 == null && o2.equals("")) || (o2 == null && o1.equals(""))) {
2404
			return true;
2405
		}
2406
		return false;
2407
	}
2408
 
2409
	public void setCatalogDashboardPanel(CatalogDashboard catalogDashboardPanel) {
2410
		this.catalogDashboardPanel = catalogDashboardPanel;
2411
	}
2412
 
2413
	private String compareSellingPricewithBreakEven() {
2414
		String message = "false";
2415
		if(newItem.getWeight() == null) {
2416
			Window.alert("Weight is empty.");
2417
			return message;
2418
		}
2419
		if(newItem.getSellingPrice() == null) {
2420
			Window.alert("Selling Price is empty.");
2421
			return message;
2422
		}
2423
 
2424
		double transferPrice;
2425
		if(newItem.getPreferredVendor() == null && !newItem.getVendorPricesMap().isEmpty()) {
2426
			transferPrice = -1;
4649 phani.kuma 2427
			for(VendorPricings vendorDetail : newItem.getVendorPricesMap().values()){
6779 rajveer 2428
				if(transferPrice > vendorDetail.getNlc() || transferPrice == -1){
2429
					transferPrice = vendorDetail.getNlc();
4649 phani.kuma 2430
				}
2431
			}
10484 vikram.rag 2432
		}
2433
		else if(!newItem.getVendorPricesMap().isEmpty() && newItem.getVendorPricesMap().containsKey(newItem.getPreferredVendor())){
2434
			transferPrice = newItem.getVendorPricesMap().get(newItem.getPreferredVendor()).getNlc();    		
2435
		}
2436
		else{
2437
			Window.alert("Add vendor to Vendor Prices and then change the Selling Price.");
2438
			return message;
2439
		}
4649 phani.kuma 2440
 
10484 vikram.rag 2441
		double weightfactor = Math.ceil((newItem.getWeight() * 1000)/Double.parseDouble(ConfigMap.get("courier_weight_factor")));
4649 phani.kuma 2442
		double couriercost = Double.parseDouble(ConfigMap.get("courier_cost_factor")) * weightfactor;
2443
		double costfactor = (Double.parseDouble(ConfigMap.get("transfer_price_percentage")) * transferPrice)/100;
2444
		double breakeven;
2445
		if(costfactor < Double.parseDouble(ConfigMap.get("transfer_price_factor"))){
2446
			breakeven = transferPrice + couriercost + Double.parseDouble(ConfigMap.get("breakeven_additon_factor"));
2447
		}
2448
		else{
2449
			breakeven = (transferPrice + couriercost)/Double.parseDouble(ConfigMap.get("breakeven_divisor"));
2450
		}
10484 vikram.rag 2451
 
4649 phani.kuma 2452
		if(breakeven > newItem.getSellingPrice()) {
2453
			message = "Selling Price("+newItem.getSellingPrice()+") is less than Breakeven Price("+breakeven+").";
2454
			if(Window.confirm(message)){
2455
				return message;
2456
			}
2457
			else{
2458
				message = "false";
2459
				Window.alert("Updation of Item is canceled.");
2460
				return message;
2461
			}
2462
		}
2463
		else {
2464
			message = "true";
10484 vikram.rag 2465
			return message;
4649 phani.kuma 2466
		}
10484 vikram.rag 2467
	}
2468
 
2469
	private String checkTransferPriceforPreferredVendor() {
2470
		String message = "false";
2471
		if(newItem.getPreferredVendor() == null) {
2472
			message = "true";
2473
			return message;
2474
		}
2475
		else if(!newItem.getVendorPricesMap().isEmpty() && newItem.getVendorPricesMap().containsKey(newItem.getPreferredVendor())){
2476
			double transferPrice = newItem.getVendorPricesMap().get(newItem.getPreferredVendor()).getTransferPrice();
2477
			double mintransferPrice = -1;
2478
			String minvendor = "";
2479
			boolean compareTransferPrices = false;
4649 phani.kuma 2480
			for(VendorPricings vendorDetail : newItem.getVendorPricesMap().values()){
2481
				if(mintransferPrice > vendorDetail.getTransferPrice() || mintransferPrice == -1){
2482
					mintransferPrice = vendorDetail.getTransferPrice();
2483
					minvendor = Utils.getVendorDesc(vendorDetail.getVendorId());
2484
				}
2485
			}
2486
			if(!checkParameterIfEqual(newItem.getPreferredVendor(), item.getPreferredVendor()) || item.getVendorPricesMap().isEmpty()) {
2487
				compareTransferPrices = true;
2488
			}
2489
			else {
2490
				double oldmintransferPrice = -1;
2491
				for(VendorPricings vendorDetail : item.getVendorPricesMap().values()){
2492
					if(oldmintransferPrice > vendorDetail.getTransferPrice() || oldmintransferPrice == -1){
2493
						oldmintransferPrice = vendorDetail.getTransferPrice();
2494
					}
2495
				}
2496
				if(mintransferPrice < oldmintransferPrice){
2497
					compareTransferPrices = true;
2498
				}
2499
			}
2500
			if(compareTransferPrices && transferPrice > mintransferPrice){
2501
				message = "Transfer Price("+transferPrice+") of Preferred Vendor("+Utils.getVendorDesc(newItem.getPreferredVendor())+") is more than Transfer Price("+mintransferPrice+") of "+minvendor+".";
2502
				if(Window.confirm(message)){
2503
					return message;
2504
				}
2505
				else{
2506
					message = "false";
2507
					Window.alert("Updation of Item is canceled.");
2508
					return message;
2509
				}
2510
			}
2511
			else {
2512
				message = "true";
10484 vikram.rag 2513
				return message;
4649 phani.kuma 2514
			}
10484 vikram.rag 2515
		}
2516
		else{
2517
			Window.alert("Add vendor to Vendor Prices and then change the Preferred Vendor.");
2518
			return message;
2519
		}
2520
	}
5217 amit.gupta 2521
 
18150 kshitij.so 2522
	private boolean checkBulkPricing(long quantity) {
2523
		long row_quantity;
2524
		for(int i = 0; i < tableBulkPricing.getRowCount(); i++) {
2525
			row_quantity = Long.parseLong(tableBulkPricing.getText(i, TABLE_INDEX_QUANTITY));
2526
			if(quantity == row_quantity) {
2527
				return false;
2528
			}
2529
		}
2530
		return true;
2531
	}
2532
 
10484 vikram.rag 2533
	public void logAuthorization(String message) {
2534
		String username = catalogDashboardPanel.uname;
2535
		catalogService.addAuthorizationLog(newItem.getId(), username, message, new AsyncCallback<Boolean>() {
2536
			@Override
2537
			public void onSuccess(Boolean result) {
2538
				if(result) {
2539
					GWT.log("Event is added");
2540
				}
2541
				else {
2542
					GWT.log("Error adding the event");
2543
					Window.alert("Error adding the event");
2544
				}
2545
			}
2546
			@Override
2547
			public void onFailure(Throwable caught) {
2548
				caught.printStackTrace();
2549
				Window.alert("Error while adding the event");
2550
			}
2551
		});
2552
	}
2553
 
5217 amit.gupta 2554
	@Override
2555
	public void setComingSoonStartDate(Date date) {
2556
		this.comingSoonStartDate.setValue(date);
10484 vikram.rag 2557
 
5217 amit.gupta 2558
	}
2559
 
2560
	@Override
2561
	public void setBestDealsText(String bestDealsText) {
2562
		this.bestDealsText.setValue(bestDealsText);
10484 vikram.rag 2563
 
5217 amit.gupta 2564
	}
2565
 
2566
	@Override
2567
	public void setExpectedArrivalDate(Date date) {
2568
		this.expectedArrivalDate.setValue(date);
10484 vikram.rag 2569
 
5217 amit.gupta 2570
	}
2571
 
2572
	@Override
2573
	public String getBestDealsText() {
2574
		return this.bestDealsText.getValue();
2575
	}
7291 vikram.rag 2576
 
6777 vikram.rag 2577
	public void setBestDealsDetailsText(String bestDealsDetailsText) {
2578
		this.bestDealsDetailsText.setValue(bestDealsDetailsText);
10484 vikram.rag 2579
 
6777 vikram.rag 2580
	}
10484 vikram.rag 2581
 
6777 vikram.rag 2582
	public String getBestDealsDetailsText() {
2583
		return this.bestDealsDetailsText.getValue();
2584
	}
5217 amit.gupta 2585
 
2586
	@Override
2587
	public Date getComingSoonStartDate() {
2588
		return this.comingSoonStartDate.getValue();
2589
	}
2590
 
2591
	@Override
2592
	public Date getExpectedArrivalDate() {
2593
		return this.expectedArrivalDate.getValue();
2594
	}
2595
	@UiHandler("comingSoonButton")
2596
	void onComingSoonButtonClick(ClickEvent event) {
2597
		ComingSoonDialog cd = new ComingSoonDialog(this);
2598
		cd.show();
2599
	}
10484 vikram.rag 2600
 
5427 amit.gupta 2601
	private void createDialog(String changedString) {
10484 vikram.rag 2602
		VerticalPanel vp = new VerticalPanel();
2603
		final DialogBox db = new DialogBox();
2604
		db.setText("Changed fields");
2605
 
2606
		vp.add(new Label("Check the fields to update all SKUs with similar entity."));
2607
		vp.add(new Label("--------------------------------------------------------"));
2608
		CheckBox allChecked = new CheckBox("Select all");
2609
		if(optionalChangedValMap.size()>1){
2610
			allChecked.setName("all");
2611
			allChecked.addClickHandler(new ClickHandler() {
5427 amit.gupta 2612
				@Override
2613
				public void onClick(ClickEvent event) {
2614
					CheckBox cb = (CheckBox)event.getSource();
2615
					VerticalPanel vp = (VerticalPanel)cb.getParent();
2616
					Iterator<Widget> iterator = vp.iterator();
2617
					while(iterator.hasNext()){
2618
						Widget w = iterator.next();
2619
						if(w instanceof CheckBox){
2620
							CheckBox cbox = (CheckBox)w;
2621
							if(cbox.getName()!="all"){
2622
								cbox.setValue(cb.getValue());
2623
							}
2624
						}
2625
					}
2626
					if(cb.getValue()){
2627
						cb.setText("Deselect all");
2628
					}else {
2629
						cb.setText("Select all");
2630
					}
2631
				}
2632
			});
10484 vikram.rag 2633
			vp.add(allChecked);
2634
		}
2635
		String[] changedFields = changedString.split("\n-");
2636
		for(String changeField : changedFields){
2637
			if(optionalChangedValMap.containsKey(changeField)){
2638
				CheckBox ch = new CheckBox(changeField); 
2639
				ch.getElement().getStyle().setPadding(10d, Unit.PX);
2640
				vp.add(ch);
2641
			} else {
2642
				Label l = new Label(changeField);
2643
				l.getElement().getStyle().setMarginLeft(10d, Unit.PX);
2644
				l.getElement().getStyle().setPadding(10d, Unit.PX);
2645
				vp.add(l);
2646
			}
2647
		}
5427 amit.gupta 2648
 
10484 vikram.rag 2649
		Button submitButton = new Button();
2650
		submitButton.setText("Update");
2651
		submitButton.addClickHandler(new ClickHandler() {
2652
 
5427 amit.gupta 2653
			@Override
2654
			public void onClick(ClickEvent event) {
2655
				Button b  = (Button)event.getSource();
2656
				VerticalPanel vp = (VerticalPanel)b.getParent();
2657
				Iterator<Widget> iterator = vp.iterator();
2658
				while(iterator.hasNext()){
2659
					Widget w = iterator.next();
2660
					if(w instanceof CheckBox){
2661
						CheckBox cbox = (CheckBox)w;
2662
						if(cbox.getName()!="all"){
2663
							if(!cbox.getValue()){
2664
								optionalChangedValMap.remove(cbox.getText());
2665
							}
2666
						}
2667
					}
2668
				}
2669
				db.hide();
2670
				List<Item> items = new ArrayList<Item>();
2671
				items.add(newItem);
2672
				validateNUpdate();
2673
				/*for(Long id : item.getSameItemsWithDifferentColors()){
2674
					catalogService.getItem(id, new AsyncCallback<Item>() {
2675
			            @Override
2676
			            public void onSuccess(Item result) {
2677
			                items.add(e)
2678
			            }
2679
			            @Override
2680
			            public void onFailure(Throwable caught) {
2681
			                caught.printStackTrace();
2682
			                Window.alert("Unable to fetch item details.");
2683
			            }
2684
			        });
2685
				}*/
2686
			}
10484 vikram.rag 2687
 
5427 amit.gupta 2688
		});
10484 vikram.rag 2689
		vp.add(submitButton);
2690
		db.add(vp); 
2691
		db.center();
2692
		db.show();   
2693
	}
2694
 
5427 amit.gupta 2695
	private void updateItem(Long itemId) {
2696
		catalogService.getItem(itemId, new AsyncCallback<Item>() {
10484 vikram.rag 2697
			@Override
2698
			public void onSuccess(Item result) {
2699
				final Item res = result;
2700
				if(mandatoryChangedValMap.containsKey(MANDATORY_BRAND)){
2701
					result.setBrand((String)mandatoryChangedValMap.get(MANDATORY_BRAND));
2702
				}
2703
				if(mandatoryChangedValMap.containsKey(MANDATORY_BEST_DEAL_TEXT)){
2704
					result.setBestDealsText((String)mandatoryChangedValMap.get(MANDATORY_BEST_DEAL_TEXT));
2705
				}
2706
				if(mandatoryChangedValMap.containsKey(MANDATORY_BEST_DEAL_DETAIL_TEXT)){
2707
					result.setBestDealsDetailsText((String)mandatoryChangedValMap.get(MANDATORY_BEST_DEAL_DETAIL_TEXT));
2708
				}
2709
				if(mandatoryChangedValMap.containsKey(MANDATORY_BEST_DEAL_DETAIL_LINK)){
2710
					result.setBestDealsDetailsLink((String)mandatoryChangedValMap.get(MANDATORY_BEST_DEAL_DETAIL_LINK));
2711
				}
2712
				if(mandatoryChangedValMap.containsKey(MANDATORY_MODEL_NAME)){
2713
					result.setModelName((String)mandatoryChangedValMap.get(MANDATORY_MODEL_NAME));
2714
				}
2715
				if(mandatoryChangedValMap.containsKey(MANDATORY_MODEL_NO)){
2716
					result.setModelNumber((String)mandatoryChangedValMap.get(MANDATORY_MODEL_NO));
2717
				}
2718
				if(mandatoryChangedValMap.containsKey(MANDATORY_WEIGHT)){
2719
					result.setWeight((Double)mandatoryChangedValMap.get(MANDATORY_WEIGHT));
2720
				}
2721
				if(mandatoryChangedValMap.containsKey(MANDATORY_MRP)){
2722
					result.setMrp((Double)mandatoryChangedValMap.get(MANDATORY_MRP));
2723
				}
2724
				if(optionalChangedValMap.containsKey(OPTIONAL_FREEBIE_ITEM_ID)) {
2725
					result.setFreebieItemId((Long)optionalChangedValMap.get(OPTIONAL_FREEBIE_ITEM_ID));
2726
				}
2727
				if(optionalChangedValMap.containsKey(OPTIONAL_PREFERRED_VENDOR)){
2728
					result.setPreferredVendor((Long)optionalChangedValMap.get(OPTIONAL_PREFERRED_VENDOR));
2729
				}
2730
				if(optionalChangedValMap.containsKey(OPTIONAL_PREFERRED_INSURER)){
2731
					result.setPreferredInsurer((Long)optionalChangedValMap.get(OPTIONAL_PREFERRED_INSURER));
2732
				}
2733
				if(optionalChangedValMap.containsKey(OPTIONAL_SELLING_PRICE)){
2734
					result.setSellingPrice((Double)optionalChangedValMap.get(OPTIONAL_SELLING_PRICE));
2735
				}
2736
				if(optionalChangedValMap.containsKey(OPTIONAL_SOURCE_PRICING)){
2737
					result.setSourcePricesMap((Map<Long, SourcePricings>) optionalChangedValMap.get(OPTIONAL_SOURCE_PRICING));
2738
				}
2739
				if(optionalChangedValMap.containsKey(OPTIONAL_VENDOR_PRICING)){
2740
					result.setVendorPricesMap((Map<Long, VendorPricings>) optionalChangedValMap.get(OPTIONAL_VENDOR_PRICING));
2741
				}
18150 kshitij.so 2742
 
10484 vikram.rag 2743
				catalogService.updateItem(result, new AsyncCallback<Boolean>() {
2744
 
5427 amit.gupta 2745
					@Override
2746
					public void onSuccess(Boolean result1) {
2747
						if(result1) {
2748
							Window.alert(res.getId() + " updated Successfully");
2749
						}
10484 vikram.rag 2750
 
5427 amit.gupta 2751
					}
10484 vikram.rag 2752
 
5427 amit.gupta 2753
					@Override
2754
					public void onFailure(Throwable caught) {
2755
						caught.printStackTrace();
2756
						Window.alert("Error updating item " + res.getId());
10484 vikram.rag 2757
 
5427 amit.gupta 2758
					}
2759
				});
10484 vikram.rag 2760
			}
2761
			@Override
2762
			public void onFailure(Throwable caught) {
2763
				caught.printStackTrace();
2764
				Window.alert("Unable to fetch item details.");
2765
			}
2766
		});
5427 amit.gupta 2767
	}
6241 amit.gupta 2768
 
2769
	@Override
2770
	public void setShowPrice(boolean b) {
2771
		this.showSellingPrice.setValue(b);
2772
	}
2773
 
2774
	@Override
2775
	public boolean isShowPrice() {
2776
		return this.showSellingPrice.getValue();
2777
	}
1961 ankur.sing 2778
}