Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
7410 amar.kumar 1
package in.shop2020.inventory.controllers;
2
 
7452 amar.kumar 3
import in.shop2020.inventory.controllers.PurchaseController.ScanRecordType;
7410 amar.kumar 4
import in.shop2020.model.v1.catalog.CatalogService;
5
import in.shop2020.model.v1.catalog.CatalogServiceException;
6
import in.shop2020.model.v1.catalog.Item;
7
import in.shop2020.model.v1.catalog.ItemType;
7452 amar.kumar 8
import in.shop2020.model.v1.inventory.InventoryServiceException;
9
import in.shop2020.model.v1.inventory.Vendor;
7451 amar.kumar 10
import in.shop2020.model.v1.inventory.InventoryService.Client;
7410 amar.kumar 11
import in.shop2020.model.v1.inventory.Warehouse;
12
import in.shop2020.model.v1.inventory.WarehouseType;
13
import in.shop2020.model.v1.order.LineItem;
7452 amar.kumar 14
import in.shop2020.purchase.PurchaseReturn;
15
import in.shop2020.purchase.PurchaseServiceException;
7410 amar.kumar 16
import in.shop2020.thrift.clients.CatalogClient;
17
import in.shop2020.thrift.clients.InventoryClient;
7452 amar.kumar 18
import in.shop2020.thrift.clients.PurchaseClient;
7410 amar.kumar 19
import in.shop2020.thrift.clients.WarehouseClient;
20
import in.shop2020.warehouse.InventoryItem;
7452 amar.kumar 21
import in.shop2020.warehouse.Scan;
7410 amar.kumar 22
import in.shop2020.warehouse.ScanType;
23
import in.shop2020.warehouse.TransferLot;
10121 manish.sha 24
import in.shop2020.warehouse.TransferLotStatus;
7410 amar.kumar 25
import in.shop2020.warehouse.WarehouseService;
26
import in.shop2020.warehouse.WarehouseServiceException;
27
 
7451 amar.kumar 28
import java.io.BufferedInputStream;
29
import java.io.ByteArrayOutputStream;
30
import java.io.File;
31
import java.io.FileInputStream;
32
import java.io.FileNotFoundException;
33
import java.io.FileOutputStream;
34
import java.io.IOException;
35
import java.io.InputStream;
7452 amar.kumar 36
import java.text.DateFormat;
7410 amar.kumar 37
import java.text.ParseException;
38
import java.text.SimpleDateFormat;
39
import java.util.Calendar;
7451 amar.kumar 40
import java.util.Date;
7410 amar.kumar 41
import java.util.HashMap;
10121 manish.sha 42
import java.util.HashSet;
7452 amar.kumar 43
import java.util.Hashtable;
7410 amar.kumar 44
import java.util.List;
45
import java.util.Map;
46
import java.util.Map.Entry;
7452 amar.kumar 47
import java.util.Set;
48
import java.util.ArrayList;
7410 amar.kumar 49
 
7451 amar.kumar 50
import javax.servlet.ServletOutputStream;
51
 
52
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
53
import org.apache.poi.ss.usermodel.Row;
54
import org.apache.poi.ss.usermodel.Sheet;
55
import org.apache.poi.ss.usermodel.Workbook;
7410 amar.kumar 56
import org.apache.thrift.TException;
57
import org.apache.thrift.transport.TTransportException;
10121 manish.sha 58
import org.json.JSONObject;
7410 amar.kumar 59
import org.slf4j.Logger;
60
import org.slf4j.LoggerFactory;
61
 
62
public class TransferLotController extends BaseController{
63
 
64
	/**
65
	 * 
66
	 */
67
	private static final long serialVersionUID = 3052114881399915348L;
68
 
69
	private Long id;
70
	private TransferLot transferLot;
71
	private List<TransferLot>transferLots;
72
	private String remoteTransferRefNumber;
73
	private String fromDate;
74
	private String toDate;
75
	private String errorMessage = "";
76
	private Calendar transferLotFromDate;
77
	private Calendar transferLotToDate;
78
	private Long originWarehouseId;
79
	private List<LineItem> lineItems;
80
	private Long destinationWarehouseId;
10121 manish.sha 81
	private String inventoryItemsString;
82
	private JSONObject jsonTransferLotItemData = null;
83
	private String inventoryItemsLength;
84
	private String transferLotReceiveType;
7410 amar.kumar 85
 
86
	private String output;
87
	private static Map<Long, Warehouse> warehouseMap;
88
 
89
	private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
90
 
10121 manish.sha 91
	private static long totalItemsSizeInTransferLot;
92
	private static boolean isCompleteTransferAvailable = false;
7410 amar.kumar 93
    private static Logger logger = LoggerFactory.getLogger(TransferLotController.class);
94
 
95
    static {
96
		warehouseMap = new HashMap<Long, Warehouse>();
97
		InventoryClient inventoryServiceClient;
98
		try {
99
			inventoryServiceClient = new InventoryClient();
100
	        Client inventoryClient = inventoryServiceClient.getClient();
101
	        List<Warehouse> warehouses;
102
			warehouses = inventoryClient.getAllWarehouses(true);
103
	        for(Warehouse warehouse : warehouses){
104
	        	warehouseMap.put(warehouse.getId(), warehouse);
105
	        }
106
		} catch (TTransportException e) {
107
			logger.error("Error in populating warehouse map", e);
108
		} catch (TException e) {
109
			logger.error("Error in populating warehouse map", e);
110
		} catch (InventoryServiceException isex) {
111
			logger.error("Error in populating warehouse map", isex);
112
		}
113
	}
114
 
115
	public String index(){
116
		if(warehouseMap==null||warehouseMap.size()<1){
7448 amar.kumar 117
			fetchWarehouseMap();
7410 amar.kumar 118
		}
119
		try{
120
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
121
			transferLotFromDate = Calendar.getInstance();
122
			transferLotToDate = Calendar.getInstance();
123
			if(fromDate==null) {
11769 manish.sha 124
				transferLotFromDate.add(Calendar.MONTH, -12);
7410 amar.kumar 125
			} else {
126
				transferLotFromDate.setTime(formatter.parse(fromDate));
127
				if(toDate!=null) {
128
					transferLotToDate.setTime(formatter.parse(toDate));
129
				}
130
			}
131
			transferLots = warehouseClient.getTransferLotsByDate(transferLotFromDate.getTimeInMillis(), transferLotToDate.getTimeInMillis());
132
		} catch(TException e){
133
			logger.error("Error in getting transfer lots", e);
134
		} catch(ParseException pex) {
135
			logger.error("Error in parsing time", pex);
136
		} catch(WarehouseServiceException wsex) {
137
			logger.error("Error in getting transfer lots", wsex);
138
		}
139
		return INDEX;
140
	}
141
 
7448 amar.kumar 142
    private void fetchWarehouseMap() {
143
    	warehouseMap = new HashMap<Long, Warehouse>();
144
		InventoryClient inventoryServiceClient;
145
		try {
146
			inventoryServiceClient = new InventoryClient();
147
	        Client inventoryClient = inventoryServiceClient.getClient();
148
	        List<Warehouse> warehouses;
149
			warehouses = inventoryClient.getAllWarehouses(true);
150
	        for(Warehouse warehouse : warehouses){
151
	        	warehouseMap.put(warehouse.getId(), warehouse);
152
	        }
153
		} catch (TTransportException e) {
154
			logger.error("Error in populating warehouse map", e);
155
		} catch (TException e) {
156
			logger.error("Error in populating warehouse map", e);
157
		} catch (InventoryServiceException isex) {
158
			logger.error("Error in populating warehouse map", isex);
159
		}
160
	}
161
 
162
	public String create() {
7410 amar.kumar 163
    	originWarehouseId = Long.parseLong(request.getParameter("originWarehouseId"));
164
    	destinationWarehouseId = Long.parseLong(request.getParameter("destinationWarehouseId"));
165
    	try {
166
	    	WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
167
	        id = warehouseClient.createTransferLot(originWarehouseId, destinationWarehouseId);
168
    	} catch (TException tex) {
169
    		logger.error("Error in creating transferlot between warehouseId " + originWarehouseId + " and " + destinationWarehouseId, tex);
170
    		errorMessage = "Error in creating transferlot between warehouseId " + originWarehouseId + " and " + destinationWarehouseId;
171
    	} catch (WarehouseServiceException wex) {
172
    		logger.error("Error in creating transferlot between warehouseId " + originWarehouseId + " and " + destinationWarehouseId, wex);
173
    		errorMessage = "Error in creating transferlot between warehouseId " + originWarehouseId + " and " + destinationWarehouseId;
174
    	}
175
        return show();
176
    }
177
 
178
	public String show(){
179
		resetLineItems();
180
		return SHOW;
181
	}
182
	public String update() {
183
		try {
184
			if(!areValidScans()){
185
				errorMessage = "Invalid Scans";
186
				return show();
187
			}
188
			if(id == null || id==0) {
189
	            	errorMessage = "No transferLot-Id selected for Transfer";
190
	        		return "new";
191
	        }
192
			List<InventoryItem> inventoryItems = new ArrayList<InventoryItem>();
193
			CatalogService.Client catalogClient = new CatalogClient().getClient();
194
			for (LineItem lineItem : lineItems) {
195
                if (lineItem.getItem_id() == 0) {
196
                    continue;
197
                }
198
                InventoryItem inventoryItem = new InventoryItem();
199
                inventoryItem.setItemId(lineItem.getItem_id());
200
                inventoryItem.setCurrentQuantity(new Double(lineItem.getQuantity()).longValue());
201
                inventoryItem.setItemNumber(lineItem.getItem_number());
202
                if(catalogClient.getItem(lineItem.getItem_id()).getType()==ItemType.SERIALIZED) {
203
                	inventoryItem.setSerialNumber(lineItem.getSerial_number());
204
                }
205
                inventoryItems.add(inventoryItem);
206
            }
207
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
7448 amar.kumar 208
			warehouseClient.scanForTransferOut(inventoryItems, ScanType.WAREHOUSE_TRANSFER_OUT, id);
7410 amar.kumar 209
		} catch (TTransportException e) {
210
            errorMessage = "Error while establishing connection to the warehouse server";
211
            logger.error(errorMessage, e);
212
        } catch (WarehouseServiceException e) {
213
        	errorMessage = e.getMessage();
214
            logger.error(errorMessage, e);
215
        } catch (TException e) {
216
        	errorMessage = "Error while scanning in the item";
217
            logger.error(errorMessage, e);
218
        } catch (CatalogServiceException csex) {
219
        	errorMessage = "Error while getting the serialized details of item";
220
            logger.error(errorMessage, csex);
221
        }
222
        return show();
223
	}
224
 
225
	public String editNew(){
226
		return "new";
227
	}
228
 
229
	private boolean areValidScans() throws NumberFormatException, TException {
230
        boolean areValidScans = true;
231
        return areValidScans;
232
	}
233
 
234
	private void resetLineItems() {
235
        lineItems = new ArrayList<LineItem>();
236
 
237
        for (int i = 0; i < 11; i++) {
238
            LineItem lineItem = new LineItem();
239
            lineItem.setId(i);
240
            lineItem.setExtra_info("");
241
            lineItem.setSerial_number("");
242
            lineItem.setItem_number("");
243
            lineItem.setQuantity(1);
244
            lineItem.setItem_id(-1);
245
            lineItems.add(lineItem);
246
        }
247
    }
248
 
249
	public String getTransferLotItems() {
250
		try {
251
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
252
			Map<Long, Long> transferLotItems = warehouseClient.getItemsInTransferLot(id);
253
			CatalogService.Client catalogClient = new CatalogClient().getClient();
254
			String transferLotItemDiv = "<div id = 'transfer-lot-item-list-div' align='center'><table id = 'transfer-lot-item-list-table'><tr><th>Item</th><th>Quantity</th></tr>";
255
			for(Long itemId : transferLotItems.keySet()){
256
				Item item = catalogClient.getItem(itemId);
257
				transferLotItemDiv = transferLotItemDiv + "<tr><td>" + item.getBrand() + " " + item.getModelName() + " " + item.getModelNumber() + " " + item.getColor();
258
				transferLotItemDiv = transferLotItemDiv  + "</td><td>" + transferLotItems.get(itemId) +"</td></tr>";
259
			}
260
			transferLotItemDiv = transferLotItemDiv + "</table></div>";
261
			setOutput(transferLotItemDiv);
262
		} catch (TException tex) {
7451 amar.kumar 263
			logger.error("Error in getting transfer lot items",tex);
7410 amar.kumar 264
		} catch (CatalogServiceException csex) {
7451 amar.kumar 265
			logger.error("Error in getting transfer lot items",csex);
7410 amar.kumar 266
		}
267
		return OUTPUT;
268
	}
10121 manish.sha 269
 
270
	public String getTransferLotItemsForMarkReceive(){
271
		try{
272
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
273
			List<InventoryItem> inventoryItems = warehouseClient.getTransferLotItemsForMarkReceive(id, ScanType.WAREHOUSE_TRANSFER_OUT);
274
			CatalogService.Client catalogClient = new CatalogClient().getClient();
275
			Set<Long> itemIdSet = new HashSet<Long>();
276
			Map<Long,Map<String,String>> itemDataMap = new HashMap<Long,Map<String,String>>();
277
			Map<String,List<Map<String,String>>> jsonDataMap = new HashMap<String,List<Map<String,String>>>();
278
			List<Map<String,String>> jsonDataList = new ArrayList<Map<String,String>>();
279
			//long quantity = 0;
280
			for(InventoryItem item : inventoryItems){
281
				itemIdSet.add(item.getItemId());
282
			}
283
			for(Long id : itemIdSet){
284
				Item catalogItem = catalogClient.getItem(id);
285
				Map<String,String> itemdetailsMap = new HashMap<String,String>();
286
				itemdetailsMap.put("Name", catalogItem.getBrand() + " " + catalogItem.getModelName() + " " + catalogItem.getModelNumber() + " " + catalogItem.getColor());
287
				itemdetailsMap.put("Type", catalogItem.getType().name());
288
				itemDataMap.put(id,itemdetailsMap);
289
			}
290
			for(InventoryItem item : inventoryItems){
291
				Map<String,String> dataMap = new HashMap<String,String>();
292
				ItemType type = ItemType.valueOf(itemDataMap.get(item.getItemId()).get("Type"));
293
				dataMap.put("ItemId",item.getId()+"");
294
				if(ItemType.SERIALIZED == type){
295
					dataMap.put("ItemDetail",itemDataMap.get(item.getItemId()).get("Name") +"-"+ item.getSerialNumber()+"-Units("+item.getInitialQuantity()+")");
296
				}
297
				else{
298
					dataMap.put("ItemDetail",itemDataMap.get(item.getItemId()).get("Name") +"-"+ item.getItemNumber()+"-Units("+item.getInitialQuantity()+")");
299
				}
300
				TransferLotStatus transferLotStatus = item.getTransferStatus();
301
				if(TransferLotStatus.IN_TRANSIT == transferLotStatus){
302
					dataMap.put("ItemStatus","Enabled");
303
				}
304
				else{
305
					dataMap.put("ItemStatus","Disabled");
306
				}
307
				//quantity = quantity + item.getInitialQuantity();
308
				jsonDataList.add(dataMap);
309
 
310
			}
311
			totalItemsSizeInTransferLot= inventoryItems.size();
312
			jsonDataMap.put("TransferLotItemData", jsonDataList);
313
 
314
			setJsonTransferLotItemData(new JSONObject(jsonDataMap));
315
 
316
		} catch(Exception e){
317
			logger.error("Error While getting Transfer Lot Items for Mark Receive",e);
318
		}
319
		return OUTPUT;
320
	}
7410 amar.kumar 321
 
322
	public String markTransferLotAsReceived() throws Exception {
323
		try{
324
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
325
			warehouseClient.markItemsAsReceivedForTransferLot(id);
326
			warehouseClient.markTransferLotAsReceived(id, remoteTransferRefNumber);
327
		} catch(TException e){
328
			logger.error("Error in marking transfer lot as received",e);
329
			throw new Exception("Error in marking transfer lot as received");
330
		} catch(WarehouseServiceException wsex) {
331
			logger.error("Error in marking transfer lot as received",wsex);
332
			throw new Exception("Error in marking transfer lot as received");
333
		}
334
		return INDEX;
335
	}
336
 
10121 manish.sha 337
	public String markTransferLotAsReceivedPartial() throws Exception {
338
		try{
339
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
340
			TransferLot transferLot = warehouseClient.getTransferLot(id);
341
			if(transferLot.getTransitCompletionReferenceNumber()!=null && !("").equalsIgnoreCase(transferLot.getTransitCompletionReferenceNumber())){
342
				remoteTransferRefNumber = transferLot.getTransitCompletionReferenceNumber()+":"+remoteTransferRefNumber;
343
			}
344
			if("complete".equalsIgnoreCase(transferLotReceiveType)){
345
 
346
				System.out.println("In Transfer Complete Block");				
347
 
348
				if (TransferLotStatus.IN_TRANSIT.equals(transferLot.getStatus())){
349
					if(!warehouseClient.isAlive()){
350
						warehouseClient = new WarehouseClient().getClient();
351
					}
352
					warehouseClient.markItemsAsReceivedForTransferLot(id);
353
					warehouseClient.markTransferLotAsReceived(id, remoteTransferRefNumber);
354
				}
355
				if (TransferLotStatus.PARTIAL_TRANSFER.equals(transferLot.getStatus())){
356
					String[] inventoryItemsArr = inventoryItemsString.split(",");
357
					//System.out.println("inventoryItemsArr Length... "+inventoryItemsArr.length);
358
 
359
					List<InventoryItem> inventoryItemList = new ArrayList<InventoryItem>();
360
					for(String inventItemStr : inventoryItemsArr){
361
						if(!warehouseClient.isAlive()){
362
							warehouseClient = new WarehouseClient().getClient();
363
						}
364
						InventoryItem item = warehouseClient.getInventoryItemFromId(Long.parseLong(inventItemStr));
365
						inventoryItemList.add(item);
366
					}
367
					if(!warehouseClient.isAlive()){
368
						warehouseClient = new WarehouseClient().getClient();
369
					}
370
					warehouseClient.markItemsAsReceivedForTransferLotPartial(inventoryItemList,id);
371
					warehouseClient.markTransferLotAsReceived(id, remoteTransferRefNumber);
372
				}
373
			}
374
			else{
375
				List<InventoryItem> inventoryItemsScannedIn = warehouseClient.getTransferLotItemsForMarkReceive(id,ScanType.WAREHOUSE_TRANSFER_IN);
376
				System.out.println("totalItemsSizeInTransferLot....."+totalItemsSizeInTransferLot);
377
				int totalItemsSizeScannedIn = inventoryItemsScannedIn.size();
378
				int totalItemsSizeToBeScanIn = Integer.parseInt(inventoryItemsLength);
379
				System.out.println("totalItemsSizeScannedIn....."+totalItemsSizeScannedIn);
380
				System.out.println("totalItemsSizeToBeScanIn....."+totalItemsSizeToBeScanIn);
381
 
382
				String[] inventoryItemsArr = inventoryItemsString.split(",");
383
				System.out.println("inventoryItemsArr Length... "+inventoryItemsArr.length);
384
 
385
				List<InventoryItem> inventoryItemList = new ArrayList<InventoryItem>();
386
				for(String inventItemStr : inventoryItemsArr){
387
					if(!warehouseClient.isAlive()){
388
						warehouseClient = new WarehouseClient().getClient();
389
					}
390
					InventoryItem item = warehouseClient.getInventoryItemFromId(Long.parseLong(inventItemStr));
391
					inventoryItemList.add(item);
392
				}
393
				if(totalItemsSizeToBeScanIn==totalItemsSizeInTransferLot){
394
					System.out.println("Transfer Complete");
395
					if(!warehouseClient.isAlive()){
396
						warehouseClient = new WarehouseClient().getClient();
397
					}
398
					warehouseClient.markItemsAsReceivedForTransferLot(id);
399
					warehouseClient.markTransferLotAsReceived(id, remoteTransferRefNumber);
400
				}
401
				if(totalItemsSizeInTransferLot== (totalItemsSizeScannedIn + totalItemsSizeToBeScanIn)){
402
					System.out.println("Transfer Complete.... from Partial");
403
					if(!warehouseClient.isAlive()){
404
						warehouseClient = new WarehouseClient().getClient();
405
					}
406
					warehouseClient.markItemsAsReceivedForTransferLotPartial(inventoryItemList,id);
407
					warehouseClient.markTransferLotAsReceived(id, remoteTransferRefNumber);
408
				}
409
				if(totalItemsSizeToBeScanIn<totalItemsSizeInTransferLot){
410
					System.out.println("Items and Transfer Lot Partial");
411
					if(!warehouseClient.isAlive()){
412
						warehouseClient = new WarehouseClient().getClient();
413
					}
414
					warehouseClient.markItemsAsReceivedForTransferLotPartial(inventoryItemList,id);
415
					warehouseClient.markTransferLotAsReceivedPartial(id, remoteTransferRefNumber);
416
				}
417
			}			
418
 
419
		} catch(Exception e){
420
			logger.error("Error in marking transfer lot as received",e);
421
			throw new Exception("Error in marking transfer lot as received");
422
		}
423
		return INDEX;
424
	}
425
 
7451 amar.kumar 426
	public void downloadFBASheet() {
427
		try {
428
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
429
			Map<Long, Long> transferLotItems = warehouseClient.getItemsInTransferLot(id);
430
 
7588 amar.kumar 431
			File fbaSheetFile = new File("transfer-lot-"+id+"-sheet_"+new Date() + ".xls");
7451 amar.kumar 432
			FileOutputStream fStream = null;
433
			try {
434
				fStream = new FileOutputStream(fbaSheetFile);
435
			} catch (FileNotFoundException e1) {
436
				logger.error(e1.getMessage());
437
			}
438
	    	ByteArrayOutputStream baosXLS = new ByteArrayOutputStream();
439
		    Workbook wb = new HSSFWorkbook();
440
		    Sheet fbaSheet = wb.createSheet("FBA Sheet");
441
 
442
		    Row merchantShipmentName = fbaSheet.createRow((short)0);
443
		    merchantShipmentName.createCell(0).setCellValue("MerchantShipmentName");
444
		    Row labelPrepPreference = fbaSheet.createRow((short)1);
445
		    labelPrepPreference.createCell(0).setCellValue("LabelPrepPreference");
446
		    Row addressName = fbaSheet.createRow((short)2);
447
		    addressName.createCell(0).setCellValue("AddressName");
448
		    Row addressFieldOne = fbaSheet.createRow((short)3);
449
		    addressFieldOne.createCell(0).setCellValue("AddressFieldOne");
450
		    Row addressFieldTwo = fbaSheet.createRow((short)4);
451
		    addressFieldTwo.createCell(0).setCellValue("AddressFieldTwo");
452
		    Row addressCity = fbaSheet.createRow((short)5);
453
		    addressCity.createCell(0).setCellValue("AddressCity");
454
		    Row addressCountryCode = fbaSheet.createRow((short)6);
455
		    addressCountryCode.createCell(0).setCellValue("AddressCountryCode");
456
		    Row addressStateOrRegion = fbaSheet.createRow((short)7);
457
		    addressStateOrRegion.createCell(0).setCellValue("AddressStateOrRegion");
458
		    Row addressPostalCode = fbaSheet.createRow((short)8);
459
		    addressPostalCode.createCell(0).setCellValue("AddressPostalCode");
460
		    Row addressDistrict = fbaSheet.createRow((short)9);
461
		    addressDistrict.createCell(0).setCellValue("AddressDistrict");
462
 
463
		    Row blankRow = fbaSheet.createRow((short)10);
464
		    //blankRow.createCell(0).setCellValue("AddressPostalCode");
465
 
466
		    Row skuHeaders = fbaSheet.createRow((short)11);
467
		    skuHeaders.createCell(0).setCellValue("MerchantSKU");
468
		    skuHeaders.createCell(1).setCellValue("Quantity");
469
 
470
		    int rowCount = 12;
471
		    for(Entry<Long, Long> itemQuantity : transferLotItems.entrySet()) {
472
		    	Row newRow = fbaSheet.createRow((short)rowCount);
473
		    	newRow.createCell(0).setCellValue("FBA"+itemQuantity.getKey());
474
			    newRow.createCell(1).setCellValue(itemQuantity.getValue());
475
			    rowCount++;
476
		    }
477
 
478
		    try {
479
			    wb.write(baosXLS);
480
			    baosXLS.close();
481
			    baosXLS.writeTo(fStream);
482
			    fStream.flush();
483
				fStream.close();
484
		    } catch(IOException e) {
485
		    	//TODO
486
		    }
487
		    byte[] buffer = null;
488
            buffer = new byte[(int) fbaSheetFile.length()];
489
            InputStream input = null;
490
            try {
491
                int totalBytesRead = 0;
492
                input = new BufferedInputStream(new FileInputStream(fbaSheetFile));
493
                while (totalBytesRead < buffer.length) {
494
                    int bytesRemaining = buffer.length - totalBytesRead;
495
                    // input.read() returns -1, 0, or more :
496
                    int bytesRead = input.read(buffer, totalBytesRead,
497
                            bytesRemaining);
498
                    if (bytesRead > 0) {
499
                        totalBytesRead = totalBytesRead + bytesRead;
500
                    }
501
                }
502
 
503
                 /* the above style is a bit tricky: it places bytes into the
504
                 * 'buffer' array; 'buffer' is an output parameter; the while
505
                 * loop usually has a single iteration only.*/
506
 
507
            } finally {
508
                input.close();
509
            }
510
 
511
            response.setContentType("application/vnd.ms-excel");
7588 amar.kumar 512
            response.setHeader("Content-disposition", "attachment; filename="
7451 amar.kumar 513
                    + fbaSheetFile.getName());
514
 
515
            ServletOutputStream sos = response.getOutputStream();
516
            sos.write(buffer);
517
            sos.flush();
518
 
519
		} catch (TException tex) {
520
			logger.error("Error in generating fba sheet for transfer Lot Id " + id,tex);
521
		}  catch (FileNotFoundException fnfex) {
522
			logger.error("Error in generating fba sheet for transfer Lot Id " + id,fnfex);
523
		} catch (IOException ioex) {
524
			logger.error("Error in generating fba sheet for transfer Lot Id " + id,ioex);
525
		}
526
 
527
	}
528
 
7410 amar.kumar 529
	public String getWarehouseName(Long warehouseId){
530
		return warehouseMap.get(warehouseId).getDisplayName();
531
	}
532
 
533
	public boolean isTransferReceivable(TransferLot transferLot) {
534
		if(warehouseMap.get(transferLot.getDestinationWarehouseId()).getWarehouseType()==WarehouseType.OURS_THIRDPARTY||
535
				warehouseMap.get(transferLot.getDestinationWarehouseId()).getWarehouseType()==WarehouseType.THIRD_PARTY) {
536
			return false;
537
		} else {
538
			return true;
539
		}
540
	}
541
 
542
 
543
 
544
 
545
	public String getDateTime(long milliseconds) {
546
        Calendar cal = Calendar.getInstance();
547
        cal.setTimeInMillis(milliseconds);
548
        return formatter.format(cal.getTime());
549
    }
550
 
551
	public static void setWarehouseMap(Map<Long, Warehouse> warehouseMap) {
552
		TransferLotController.warehouseMap = warehouseMap;
553
	}
554
 
555
	public TransferLot getTransferLot() {
556
		return transferLot;
557
	}
558
 
559
	public void setTransferLot(TransferLot transferLot) {
560
		this.transferLot = transferLot;
561
	}
562
 
563
	public List<TransferLot> getTransferLots() {
564
		return transferLots;
565
	}
566
 
567
	public void setTransferLots(List<TransferLot> transferLots) {
568
		this.transferLots = transferLots;
569
	}
570
 
571
	public String getRemoteTransferRefNumber() {
572
		return remoteTransferRefNumber;
573
	}
574
 
575
	public void setRemoteTransferRefNumber(String remoteTransferRefNumber) {
576
		this.remoteTransferRefNumber = remoteTransferRefNumber;
577
	}
578
 
579
	public Long getId() {
580
		return id;
581
	}
582
 
583
	public void setId(Long id) {
584
		this.id = id;
585
	}
586
 
587
	public String getOutput() {
588
		return output;
589
	}
590
 
591
	public void setOutput(String output) {
592
		this.output = output;
593
	}
594
 
595
	public Long getOriginWarehouseId() {
596
		return originWarehouseId;
597
	}
598
 
599
	public void setOriginWarehouseId(Long originWarehouseId) {
600
		this.originWarehouseId = originWarehouseId;
601
	}
602
 
603
	public Long getDestinationWarehouseId() {
604
		return destinationWarehouseId;
605
	}
606
 
607
	public void setDestinationWarehouseId(Long destinationWarehouseId) {
608
		this.destinationWarehouseId = destinationWarehouseId;
609
	}
610
 
611
	public String getErrorMessage() {
612
		return errorMessage;
613
	}
614
 
615
	public void setErrorMsg(String errorMessage) {
616
		this.errorMessage = errorMessage;
617
	}
618
 
619
	public List<LineItem> getLineItems() {
620
		return lineItems;
621
	}
622
 
623
	public void setLineItems(List<LineItem> lineItems) {
624
		this.lineItems = lineItems;
625
	}
10121 manish.sha 626
 
627
	public JSONObject getJsonTransferLotItemData() {
628
		return jsonTransferLotItemData;
629
	}
630
 
631
	public void setJsonTransferLotItemData(JSONObject jsonTransferLotItemData) {
632
		this.jsonTransferLotItemData = jsonTransferLotItemData;
633
	}
634
 
635
	public String getInventoryItemsString() {
636
		return inventoryItemsString;
637
	}
638
 
639
	public void setInventoryItemsString(String inventoryItemsString) {
640
		this.inventoryItemsString = inventoryItemsString;
641
	}
642
 
643
	public String getInventoryItemsLength() {
644
		return inventoryItemsLength;
645
	}
646
 
647
	public void setInventoryItemsLength(String inventoryItemsLength) {
648
		this.inventoryItemsLength = inventoryItemsLength;
649
	}
650
 
651
	public String getTransferLotReceiveType() {
652
		return transferLotReceiveType;
653
	}
654
 
655
	public void setTransferLotReceiveType(String transferLotReceiveType) {
656
		this.transferLotReceiveType = transferLotReceiveType;
657
	}
658
 
7410 amar.kumar 659
}