Subversion Repositories SmartDukaan

Rev

Rev 11801 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
11349 manish.sha 1
package in.shop2020.inventory.controllers;
2
 
3
import in.shop2020.model.v1.catalog.Item;
4
import in.shop2020.model.v1.catalog.ItemType;
5
import in.shop2020.model.v1.inventory.InventoryService;
6
import in.shop2020.model.v1.inventory.InventoryType;
7
import in.shop2020.model.v1.inventory.Warehouse;
8
import in.shop2020.model.v1.inventory.WarehouseType;
9
import in.shop2020.model.v1.order.LineItem;
10
import in.shop2020.purchase.Invoice;
11
import in.shop2020.purchase.PurchaseOrder;
12
import in.shop2020.purchase.PurchaseServiceException;
13
import in.shop2020.thrift.clients.CatalogClient;
14
import in.shop2020.thrift.clients.InventoryClient;
15
import in.shop2020.thrift.clients.PurchaseClient;
16
import in.shop2020.thrift.clients.WarehouseClient;
17
import in.shop2020.utils.ModelUtils;
18
import in.shop2020.warehouse.InventoryItem;
19
import in.shop2020.warehouse.ScanType;
20
import in.shop2020.warehouse.WarehouseService;
21
import in.shop2020.warehouse.WarehouseService.Client;
22
 
23
import java.io.BufferedInputStream;
24
import java.io.BufferedReader;
25
import java.io.BufferedWriter;
26
import java.io.File;
27
import java.io.FileInputStream;
28
import java.io.FileReader;
29
import java.io.FileWriter;
30
import java.io.IOException;
31
import java.io.InputStream;
32
import java.util.ArrayList;
33
import java.util.HashMap;
34
import java.util.List;
35
import java.util.Map;
36
 
37
import javax.servlet.ServletContext;
38
import javax.servlet.ServletOutputStream;
39
 
40
import org.apache.commons.io.FileUtils;
41
import org.apache.commons.lang.StringUtils;
42
import org.apache.struts2.convention.annotation.Result;
43
import org.apache.struts2.convention.annotation.Results;
44
import org.apache.thrift.TException;
45
import org.apache.thrift.transport.TTransportException;
46
import org.slf4j.Logger;
47
import org.slf4j.LoggerFactory;
48
 
49
@SuppressWarnings("serial")
50
@Results({ @Result(name = "redirect", type = "redirectAction", params = {
51
		"actionName", "warehouse" }) })
52
		public class BulkPurchaseController extends BaseController {
53
	private static Logger logger = LoggerFactory.getLogger(BulkPurchaseController.class);
54
	private List<String> exceptionList = new ArrayList<String>();
55
	private static final int NUM_BULK__SCAN_ITEMS = 10;
56
 
57
	private ServletContext context;
58
	private String id="";
59
	private Long transferLotId;
60
	private String itemId;
61
	private String itemNo;
62
	private String errorMsg = "";
63
	private String successMsg = "";
64
	private List<Item> items;
65
	private List<LineItem> lineItems;
66
	private String bulkScanUploadItem;
67
	private File scanDataFile;
68
 
69
	private String invoiceNumber;
70
	private Double freightCharges ;
71
	private Long poId;
72
	private String fileNameVal;
73
 
74
	private String purchaseId;
75
	private String purchaseOrderId;
76
	private Long warehouseId;
77
	private Long transferWarehouseId;
78
	private Warehouse warehouse;
79
 
80
	private Map<Long, Double> unfulfilledMap = new HashMap<Long, Double>(); 
81
 
82
 
83
	public String show() {
84
		resetLineItems();
85
		setItemsFromPO();
86
		return SHOW;
87
	}
88
 
89
	private void resetLineItems() {
90
		lineItems = new ArrayList<LineItem>();
91
 
92
		for (int i = 0; i < NUM_BULK__SCAN_ITEMS; i++) {
93
			LineItem lineItem = new LineItem();
94
			lineItem.setId(i);
95
			lineItem.setExtra_info("");
96
			lineItem.setSerial_number("");
97
			lineItem.setItem_number("");
98
			lineItem.setQuantity(1);
99
			lineItem.setItem_id(-1);
100
			lineItems.add(lineItem);
101
		}
102
	}
103
 
104
	public String create() {
105
		this.purchaseOrderId = request.getParameter("poId");
106
		poId = Long.parseLong(purchaseOrderId);
107
		invoiceNumber = request.getParameter("invoiceNumber");
108
		String fc = request.getParameter("freightCharges").trim();
109
		freightCharges = 0D;
110
		if(id == null ||StringUtils.isEmpty(id))
111
			id = "0";
112
		if (fc != null && !fc.isEmpty())
113
			freightCharges = Double.parseDouble(fc);
114
		return show();
115
		//return "create";
116
 
117
	}
118
 
119
	public boolean createPurchase(){
120
		try {
121
			logger.info("poId="+poId+" invoiceNumber="+invoiceNumber+" freightCharges="+freightCharges);
122
			PurchaseClient purchaseClient = new PurchaseClient();
123
			in.shop2020.purchase.PurchaseService.Client client = purchaseClient
124
			.getClient();
125
			id = "" + client.startPurchase(poId, invoiceNumber, freightCharges);
126
			logger.info("id = "+id);
127
		} catch (TTransportException e) {
128
			errorMsg = errorMsg + "<br> Error while establishing connection to the warehouse server";
129
			exceptionList.add("Error while establishing connection to the warehouse server");
130
			logger.error(errorMsg, e);
131
		} catch (TException e) {
132
			errorMsg = errorMsg+ "<br> Error while scanning in the item";
133
			exceptionList.add("Error while strating purchase");
134
			logger.error(errorMsg, e);
135
		} catch (PurchaseServiceException e) {
136
			errorMsg = errorMsg+ e.getMessage();
137
			exceptionList.add(e.getMessage());
138
			logger.error(errorMsg, e);
139
		}
140
 
141
		if (errorMsg.isEmpty())
142
			return true;
143
		else {
144
			addActionError(errorMsg);
145
			return false;
146
		}
147
	}
148
 
149
	public File getScanFileToRead(){
150
		File fileToCreate = null;
151
 
152
		if(scanDataFile!=null & fileNameVal !=null && !fileNameVal.isEmpty()){
153
 
154
			logger.info("File Name "+scanDataFile.getName());
155
			System.out.println("File Name "+scanDataFile.getName());
156
 
157
			logger.info("File Name Value "+fileNameVal);
158
			System.out.println("File Name Value "+fileNameVal);
159
			String fileName = fileNameVal;
160
			try {
161
				if(!fileName.substring(fileName.lastIndexOf(".")+1).equalsIgnoreCase("txt")){
162
					throw new Exception("File is not in expected TXT Format");
163
				}
164
				fileToCreate = new File("/tmp/", fileName);
165
 
166
				FileUtils.copyFile(this.scanDataFile, fileToCreate);
167
			} catch (Exception e) {
168
				logger.error("Error while writing file used to the local file system", e);
169
				errorMsg = e.getMessage();
170
				//addActionError(errorMsg);
171
				return null;
172
			}
173
		} else {
174
			errorMsg = errorMsg + "<br>Either No File Uploaded or file name is blank";
175
		}
176
		return fileToCreate;
177
	}
178
 
179
	public boolean transferLotCreate(PurchaseOrder po){
180
		String errMsg  = "";
181
		try{
182
			if(transferLotId==null || transferLotId==0) {
183
				if(transferWarehouseId!=null && transferWarehouseId!=0) {
184
					WarehouseClient warehouseClient = new WarehouseClient();
185
					Client client = warehouseClient.getClient();
186
					InventoryService.Client inventoryClient = new InventoryClient().getClient();
187
					Warehouse fulfilmentWarehouse = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, po.getSupplierId(), po.getWarehouseId(), 0L).get(0);
188
					transferLotId = client.createTransferLot(po.getWarehouseId(), transferWarehouseId);
189
				}
190
			}
191
		} catch(Exception e){
192
			errMsg = "<br> Error while creating Transfer Lot due to : "+ e.getMessage();
193
		}
194
		if (errMsg.isEmpty()){
195
			return true;
196
		}
197
		else {
198
			errorMsg = errMsg;
199
			addActionError(errorMsg);
200
			return false;
201
		}
202
	}
203
 
204
	public File createErrorFile(List<String> errorList){
205
		try{
206
			String tmpDir = System.getProperty("java.io.tmpdir");
207
			File file = new File(tmpDir + "/ScanRecordResult.xls");
208
			BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(
209
					file));
210
			bufferedWriter.write(StringUtils.join(new String[] { "----Scan Response----"}, '\t'));
211
			//bufferedWriter.newLine();
212
			for(String record : errorList){
213
				bufferedWriter.newLine();
214
				bufferedWriter.write(StringUtils.join(new String[] { record }, '\t'));
215
			}
216
			bufferedWriter.close();
217
			return file;
218
		} catch (Exception e) {
219
			logger.error("Could not create file for Scan Record Result", e);
220
			return null;
221
		}
222
	}
223
 
224
	public void setResponseErrorFile(File errorFile) throws IOException{
225
		byte[] buffer = null;
226
		buffer = new byte[(int) errorFile.length()];
227
		InputStream input = null;
228
		try {
229
			int totalBytesRead = 0;
230
			input = new BufferedInputStream(new FileInputStream(errorFile));
231
			while (totalBytesRead < buffer.length) {
232
				int bytesRemaining = buffer.length - totalBytesRead;
233
				// input.read() returns -1, 0, or more :
234
					int bytesRead = input.read(buffer, totalBytesRead,
235
							bytesRemaining);
236
					if (bytesRead > 0) {
237
						totalBytesRead = totalBytesRead + bytesRead;
238
					}
239
			}
240
			/*
241
			 * the above style is a bit tricky: it places bytes into the
242
			 * 'buffer' array; 'buffer' is an output parameter; the while
243
			 * loop usually has a single iteration only.
244
			 */
245
		} finally {
246
			input.close();
247
		}
248
 
249
		response.setContentType("application/vnd.ms-excel");
250
		response.setHeader("Content-disposition", "inline; filename="
251
				+ errorFile.getName());
252
 
253
		ServletOutputStream sos = response.getOutputStream();
254
		sos.write(buffer);
255
		sos.flush();
256
	}
257
 
258
	public boolean checkForException() throws IOException{
259
		if(exceptionList!=null && exceptionList.size()>0){
260
			File errorFile = createErrorFile(exceptionList);
261
			if(errorFile.isFile()){
262
				setResponseErrorFile(errorFile);
263
				return false;
264
			}
265
		}
266
		return true;
267
	}
268
 
269
	private void areValidSerializedItems() throws Exception {
270
		Client warehouseClient = new WarehouseClient().getClient();
271
		for (LineItem lineItem : lineItems) {
272
			if (StringUtils.isNotBlank(lineItem.getSerial_number())) {
273
				InventoryItem inventoryItem = new InventoryItem();
274
				try{
275
					inventoryItem = warehouseClient.getInventoryItem(lineItem.getSerial_number());
276
				} catch(Exception e){
277
					continue;
278
				}
279
				if(inventoryItem.getLastScanType()!=ScanType.PURCHASE_RETURN && inventoryItem.getLastScanType()!=ScanType.DOA_REPLACED) {
280
					lineItem.setExtra_info("Item scanned already.");
281
					exceptionList.add("Items Scanned already : "+ lineItem.getSerial_number());
282
					continue;
283
				}    			
284
			}
285
		}
286
	}
287
 
288
	private void setItemsFromPO() {
289
		try {
290
			items = new ArrayList<Item>();
291
			in.shop2020.purchase.PurchaseService.Client purchaseClient = new PurchaseClient().getClient();
292
			//PurchaseOrder purchaseOrder = purchaseClient.getPurchaseOrderForPurchase(id);
293
			PurchaseOrder purchaseOrder = purchaseClient.getPurchaseOrder(poId);
294
			warehouseId = purchaseOrder.getWarehouseId();
295
			in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = new CatalogClient().getClient();
296
 
297
			for (in.shop2020.purchase.LineItem lineItem : purchaseOrder.getLineitems()) {
298
				items.add(catalogClient.getItem(lineItem.getItemId()));
299
				unfulfilledMap.put(lineItem.getItemId(), lineItem.getUnfulfilledQuantity());
300
			}
301
 
302
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = new InventoryClient().getClient();
303
			warehouse = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, purchaseOrder.getSupplierId(), warehouseId, warehouseId).get(0);
304
		} catch (Exception e) {
305
			logger.error("Could not find items in PO with purchase: " + id, e);
306
		}
307
	}
308
 
309
	public String update() {
310
		if(("-1").equalsIgnoreCase(bulkScanUploadItem)){
311
			errorMsg = errorMsg +" <br> No Item Selected to Scan In";
312
			return show();
313
		}
314
 
315
		File fileToCreate = getScanFileToRead();
316
		Map<Long, String> correctRowsMap = new HashMap<Long, String>();
317
		Map<Long, String> errorRowsMap = new HashMap<Long, String>();		
318
 
319
		if(fileToCreate==null){
320
			errorMsg = errorMsg +" <br> No File to read";
321
			return create();
322
		}
323
 
324
		ItemType itemType = ItemType.SERIALIZED;
325
		setItemsFromPO();
326
		lineItems = new ArrayList<LineItem>();
327
 
328
		if(fileToCreate.isFile()){
329
			try{
330
				in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = new CatalogClient().getClient();
331
				Item item = catalogClient.getItem(Long.parseLong(bulkScanUploadItem));
332
 
333
				itemType = item.getType();
334
 
335
				in.shop2020.purchase.PurchaseService.Client purchaseClient = new PurchaseClient().getClient();
336
				PurchaseOrder po = purchaseClient.getPurchaseOrder(poId);
337
				List<in.shop2020.purchase.LineItem> poLineItems = po.getLineitems();
338
				in.shop2020.purchase.LineItem poLineItem = new in.shop2020.purchase.LineItem();
339
 
340
				for(in.shop2020.purchase.LineItem pItem : poLineItems){
341
					if(pItem.getItemId() == item.getId()){
342
						poLineItem = pItem;
343
						break;
344
					}
345
				}
346
 
347
				if(!transferLotCreate(po)){
348
					return create();
349
				}
350
 
351
				BufferedReader br = new BufferedReader(new FileReader(fileToCreate));
352
				long line = 1;
353
				String strLine;
354
				String[] values;
355
				while((strLine = br.readLine())!=null){
356
					if(line==1){
357
						values = strLine.split("\t");						
358
						if(values.length !=3){
359
							errorMsg = errorMsg + "<br> File contains Inappropriate Content ";
360
							addActionError(errorMsg);
361
							return create();
362
						}
363
						line++;
364
						continue;
365
					}
366
					values = strLine.split("\t");
367
					for(String s : values){
368
						logger.info("Row No "+line+" :"+s);
369
						System.out.println("Row No "+line+" :"+s);
370
					}
371
					LineItem lineItem = new LineItem();
372
					lineItem.setId(line);
373
					lineItem.setItem_id(item.getId());
374
					lineItem.setBrand(item.getBrand());
375
					lineItem.setColor(item.getColor());
376
					lineItem.setModel_name(item.getModelName());
377
					lineItem.setModel_number(item.getModelNumber());
378
					lineItem.setProductGroup(item.getProductGroup());
379
					lineItem.setNlc(poLineItem.getNlc());
380
					lineItem.setTransfer_price(poLineItem.getUnitPrice());
381
					lineItem.setUnit_price(poLineItem.getUnitPrice());
382
					if(itemType==ItemType.SERIALIZED){
383
						if(StringUtils.isNotBlank(values[0]) && StringUtils.isNotEmpty(values[0])){
384
							if(StringUtils.isNotBlank(values[1]) && StringUtils.isNotEmpty(values[1])){
385
								lineItem.setItem_number(values[0].trim());
386
								lineItem.setSerial_number(values[1].trim());
387
								lineItem.setQuantity(1);
388
								correctRowsMap.put(line, "Entries are correct in the row");
389
							}
390
							else{
391
								errorRowsMap.put(line, "Error: Serial Number Missing ");
392
								line++;
393
								continue;
394
							}
395
						}
396
						else{
397
							errorRowsMap.put(line, "Error: Item Number Missing ");
398
							line++;
399
							continue;
400
						}
401
					}
402
 
403
					if(itemType==ItemType.NON_SERIALIZED){
404
						if(StringUtils.isNotBlank(values[0]) && StringUtils.isNotEmpty(values[0])){
405
							lineItem.setItem_number(values[0].trim());
406
							lineItem.setSerial_number("");
407
							if(StringUtils.isNotBlank(values[2]) && StringUtils.isNumeric(values[2]) && Double.parseDouble(values[2]) > 0){
408
								lineItem.setQuantity(Double.parseDouble(values[2].trim()));
409
								correctRowsMap.put(line, "Entries are correct in the row ");
410
							}
411
							else{
412
								errorRowsMap.put(line, "Error: Invalid Item Quantity ");
413
								line++;
414
								continue;
415
							}
416
						} else{
417
							errorRowsMap.put(line, "Error: Item Number Missing ");
418
							line++;
419
							continue;
420
						}
421
 
422
					}
423
 
424
					if(correctRowsMap.containsKey(line) && !errorRowsMap.containsKey(line)){
425
						lineItems.add(lineItem);
426
					}
427
 
428
					line++;
429
				}
430
				if(correctRowsMap!=null && correctRowsMap.size()>0){
431
					if(errorRowsMap!=null && errorRowsMap.size()>0){
432
						for(Long row : errorRowsMap.keySet()){
433
							exceptionList.add("At Row "+ row +" "+ errorRowsMap.get(row));
434
						}
435
					}
436
				}
437
				else{
438
					exceptionList.add("-- File Contains Zero Correct Records --");
439
					if(errorRowsMap!=null && errorRowsMap.size()>0){
440
						exceptionList.add("-- Data in uploaded sheet is Inappropriate --");
441
					}
442
				}
443
 
444
				if(itemType==ItemType.SERIALIZED){
445
					areValidSerializedItems();
446
				}
447
 
448
				if(id == null || Long.parseLong(id)==0) {
449
					if(!createPurchase()) {
450
						if(!checkForException()){
451
							return create();
452
						}
453
					}
454
				}		
455
 
456
				WarehouseClient warehouseClient = new WarehouseClient();
457
				Client client = warehouseClient.getClient();
458
 
459
				for (LineItem lineItem : lineItems) {
460
 
461
					InventoryItem inventoryItem = new InventoryItem();
462
					inventoryItem.setItemId(lineItem.getItem_id());
463
					inventoryItem.setPurchaseId(Long.parseLong(id));
464
					inventoryItem.setCurrentQuantity(0);
465
					inventoryItem.setItemNumber(lineItem.getItem_number());
466
					inventoryItem.setSerialNumber(lineItem.getSerial_number());
467
					inventoryItem.setInitialQuantity(new Double(lineItem.getQuantity()).longValue());
468
					inventoryItem.setPhysicalWarehouseId(po.getWarehouseId());
469
					if(!client.isAlive()){
470
						client = warehouseClient.getClient();
471
					}
472
					try{
473
						client.scan(inventoryItem, ScanType.PURCHASE, new Double(lineItem.getQuantity()).longValue(), warehouseId, (transferLotId!=null)?transferLotId:0L);
474
						if(lineItem.getSerial_number()!=null && !lineItem.getSerial_number().isEmpty()){
475
							exceptionList.add("Item with Serial Number "+ lineItem.getSerial_number() + " Scanned Successfully");
476
						}
477
						else{
478
							exceptionList.add("Item with Item Number "+ lineItem.getItem_number() + " with "+ lineItem.getQuantity() + " units Scanned Successfully");
479
						}
480
					}
481
					catch(Exception e){
482
						exceptionList.add("Error "+lineItem.getId()+" "+e.getMessage());
483
						continue;
484
					}
485
				}
486
 
487
				if(lineItems!= null && lineItems.size()!=exceptionList.size()){
488
					if(!checkForException()){
489
						return null;
490
					} 
491
				}else{
492
					successMsg = "Items scanned Successfully.<br>Check the unfulfilled Quantity for further details";
493
				}
494
 
495
			} catch(Exception e){
496
				errorMsg = errorMsg + " <br> Error while scanning items";
497
				logger.error(errorMsg, e);
498
			}
499
		}
500
		return create();
501
	}
502
 
503
	public String destroy() {
504
		long id = Long.parseLong(this.id);
505
 
506
		try {
507
			PurchaseClient warehouseClient = new PurchaseClient();
508
			in.shop2020.purchase.PurchaseService.Client client = warehouseClient
509
			.getClient();
510
			client.closePurchase(id);
511
		} catch (TTransportException e) {
512
			errorMsg = errorMsg + "<br> Error while establishing connection to the warehouse server";
513
			logger.error(errorMsg, e);
514
		} catch (TException e) {
515
			errorMsg = errorMsg + "<br> Error while scanning in the item";
516
			logger.error(errorMsg, e);
517
		} catch (PurchaseServiceException e) {
518
			errorMsg = errorMsg + e.getMessage();
519
			logger.error(errorMsg, e);
520
		}
521
		return "redirect";
522
	}
523
 
524
	public List<Warehouse> getAllowedDestinationWarehousesForTransfer(long originWarehouseId){
525
		try {
526
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
527
			List<Long> allowedWarehouseIds = warehouseClient.getAllowedDestinationWarehousesForTransfer(originWarehouseId);
528
			List<Warehouse> allowedWarehouses = new ArrayList<Warehouse>();
529
			InventoryService.Client inventoryClient = new InventoryClient().getClient();
530
			for(Long allowedWarehouseId : allowedWarehouseIds) {
531
				allowedWarehouses.add(inventoryClient.getWarehouse(allowedWarehouseId));
532
			}
533
			return allowedWarehouses;
534
		} catch(Exception e) {
535
			logger.error("Error while getting all destination warehouses for warehouseId " + warehouseId, e);
536
			return new ArrayList<Warehouse>();
537
		}
538
	}
539
 
540
	public boolean isItemScannedIn(long id){
541
		if(unfulfilledMap.get(id)> 0){
542
			return true;
543
		}
544
		return false;
545
	}
546
 
547
	public String getName(Item item){
548
		return ModelUtils.extractProductNameFromItem(item);
549
	}
550
 
551
	public void setId(String id) {
552
		this.id = id;
553
	}
554
 
555
	public String getId() {
556
		return id;
557
	}
558
 
559
	public String getErrorMessage() {
560
		return errorMsg;
561
	}
562
 
563
	public String getPurchaseOrderId() {
564
		return purchaseOrderId;
565
	}
566
 
567
	public String getServletContextPath() {
568
		return context.getContextPath();
569
	}
570
 
571
	public String getItemId() {
572
		return itemId;
573
	}
574
 
575
	public void setItemId(String itemId) {
576
		this.itemId = itemId;
577
	}
578
 
579
	public String getItemNo() {
580
		return itemNo;
581
	}
582
 
583
	public void setItemNo(String itemNo) {
584
		this.itemNo = itemNo;
585
	}
586
 
587
	public List<Item> getItems() {
588
		return items;
589
	}
590
 
591
	public void setItems(List<Item> items) {
592
		this.items = items;
593
	}
594
 
595
	public List<LineItem> getLineItems() {
596
		return lineItems;
597
	}
598
 
599
	public void setLineItems(List<LineItem> lineItems) {
600
		this.lineItems = lineItems;
601
	}
602
 
603
	public Warehouse getWarehouse() {
604
		return warehouse;
605
	}
606
 
607
	public String getInvoiceNumber() {
608
		return invoiceNumber;
609
	}
610
 
611
	public void setInvoiceNumber(String invoiceNumber) {
612
		this.invoiceNumber = invoiceNumber;
613
	}
614
 
615
	public Double getFreightCharges() {
616
		return freightCharges;
617
	}
618
 
619
	public void setFreightCharges(Double freightCharges) {
620
		this.freightCharges = freightCharges;
621
	}
622
 
623
	public Long getPoId() {
624
		return poId;
625
	}
626
 
627
	public void setPoId(Long poId) {
628
		this.poId = poId;
629
	}
630
 
631
	public Long getWarehouseId() {
632
		return warehouseId;
633
	}
634
 
635
	public void setWarehouseId(Long warehouseId) {
636
		this.warehouseId = warehouseId;
637
	}
638
 
639
	public Long getTransferWarehouseId() {
640
		return transferWarehouseId;
641
	}
642
 
643
	public void setTransferWarehouseId(Long transferWarehouseId) {
644
		this.transferWarehouseId = transferWarehouseId;
645
	}
646
 
647
	public Long getTransferLotId() {
648
		return transferLotId;
649
	}
650
 
651
	public void setTransferLotId(Long transferLotId) {
652
		this.transferLotId = transferLotId;
653
	}
654
 
655
	public String getBulkScanUploadItem() {
656
		return bulkScanUploadItem;
657
	}
658
 
659
	public void setBulkScanUploadItem(String bulkScanUploadItem) {
660
		this.bulkScanUploadItem = bulkScanUploadItem;
661
	}
662
 
663
	public File getScanDataFile() {
664
		return scanDataFile;
665
	}
666
 
667
	public void setScanDataFile(File scanDataFile) {
668
		this.scanDataFile = scanDataFile;
669
	}
670
 
671
	public String getPurchaseId() {
672
		return purchaseId;
673
	}
674
 
675
	public void setPurchaseId(String purchaseId) {
676
		this.purchaseId = purchaseId;
677
	}
678
 
679
	public String getFileNameVal() {
680
		return fileNameVal;
681
	}
682
 
683
	public void setFileNameVal(String fileNameVal) {
684
		this.fileNameVal = fileNameVal;
685
	}
686
 
687
	public String getSuccessMsg() {
688
		return successMsg;
689
	}
690
 
691
	public void setSuccessMsg(String successMsg) {
692
		this.successMsg = successMsg;
693
	}
694
 
695
}