Subversion Repositories SmartDukaan

Rev

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