Subversion Repositories SmartDukaan

Rev

Rev 18681 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 18681 Rev 21617
Line 5... Line 5...
5
import in.shop2020.model.v1.inventory.InventoryService;
5
import in.shop2020.model.v1.inventory.InventoryService;
6
import in.shop2020.model.v1.inventory.InventoryType;
6
import in.shop2020.model.v1.inventory.InventoryType;
7
import in.shop2020.model.v1.inventory.Warehouse;
7
import in.shop2020.model.v1.inventory.Warehouse;
8
import in.shop2020.model.v1.inventory.WarehouseType;
8
import in.shop2020.model.v1.inventory.WarehouseType;
9
import in.shop2020.model.v1.order.LineItem;
9
import in.shop2020.model.v1.order.LineItem;
10
import in.shop2020.purchase.Invoice;
-
 
11
import in.shop2020.purchase.PurchaseOrder;
10
import in.shop2020.purchase.PurchaseOrder;
12
import in.shop2020.purchase.PurchaseServiceException;
11
import in.shop2020.purchase.PurchaseServiceException;
13
import in.shop2020.thrift.clients.CatalogClient;
12
import in.shop2020.thrift.clients.CatalogClient;
14
import in.shop2020.thrift.clients.InventoryClient;
13
import in.shop2020.thrift.clients.InventoryClient;
15
import in.shop2020.thrift.clients.PurchaseClient;
14
import in.shop2020.thrift.clients.PurchaseClient;
Line 271... Line 270...
271
			}
270
			}
272
		}
271
		}
273
		return true;
272
		return true;
274
	}
273
	}
275
	
274
	
276
	private void areValidSerializedItems() throws Exception {
275
	private void areValidSerializedItems(Map<String, LineItem> serialNumbersMap) throws Exception {
277
		Client warehouseClient = new WarehouseClient().getClient();
276
		Client warehouseClient = new WarehouseClient().getClient();
278
		for (LineItem lineItem : lineItems) {
277
		List<String> serialNumbers = new ArrayList<String>(serialNumbersMap.keySet());
279
			if (StringUtils.isNotBlank(lineItem.getSerial_number())) {
278
		List<InventoryItem> inventoryItems = warehouseClient.getInventoryItemsBySerailNumbers(serialNumbers);
280
				InventoryItem inventoryItem = new InventoryItem();
279
		for(InventoryItem inventoryItem : inventoryItems) {
281
				try{
-
 
282
					inventoryItem = warehouseClient.getInventoryItem(lineItem.getSerial_number());
280
			log.info("serialNumber -           --" + inventoryItem.getSerialNumber());
283
				} catch(Exception e){
-
 
284
					continue;
-
 
285
				}
-
 
286
				if(inventoryItem.getLastScanType()!=ScanType.PURCHASE_RETURN && inventoryItem.getLastScanType()!=ScanType.DOA_REPLACED) {
281
			if(inventoryItem.getLastScanType()!=ScanType.PURCHASE_RETURN && inventoryItem.getLastScanType()!=ScanType.DOA_REPLACED) {
287
					lineItem.setExtra_info("Item scanned already.");
282
				LineItem lineItem = serialNumbersMap.remove(inventoryItem.getSerialNumber());
288
					exceptionList.add("Items Scanned already : "+ lineItem.getSerial_number());
283
				exceptionList.add("Item exist already : "+ lineItem.getSerial_number());
289
					continue;
284
				continue;
290
				}    			
285
			}    		
291
			}
-
 
292
		}
286
		}
293
	}
287
	}
294
	
288
	
295
	private void setItemsFromPO() {
289
	private void setItemsFromPO() {
296
		try {
290
		try {
Line 351... Line 345...
351
				in.shop2020.purchase.PurchaseService.Client purchaseClient = new PurchaseClient().getClient();
345
				in.shop2020.purchase.PurchaseService.Client purchaseClient = new PurchaseClient().getClient();
352
				PurchaseOrder po = purchaseClient.getPurchaseOrder(poId);
346
				PurchaseOrder po = purchaseClient.getPurchaseOrder(poId);
353
				List<in.shop2020.purchase.LineItem> poLineItems = po.getLineitems();
347
				List<in.shop2020.purchase.LineItem> poLineItems = po.getLineitems();
354
				in.shop2020.purchase.LineItem poLineItem = new in.shop2020.purchase.LineItem();
348
				in.shop2020.purchase.LineItem poLineItem = new in.shop2020.purchase.LineItem();
355
 
349
 
-
 
350
				//Logic to create transfer lot pending yet
356
				if(!transferLotCreate(po)){
351
				if(!transferLotCreate(po)){
357
					return create();
352
					return create();
358
				}
353
				}
359
				
354
				
-
 
355
				Map<String, LineItem> serialNumbersMap = new HashMap<String, LineItem>();
360
				if(selectItemType.equalsIgnoreCase("SERIALIZED")){
356
				if(selectItemType.equalsIgnoreCase("SERIALIZED")){
361
					Item item = serializedMap.get(Long.parseLong(bulkScanUploadItem));
357
					Item item = serializedMap.get(Long.parseLong(bulkScanUploadItem));
362
					itemType = item.getType();
358
					itemType = item.getType();
363
					
359
					
364
					for(in.shop2020.purchase.LineItem pItem : poLineItems){
360
					for(in.shop2020.purchase.LineItem pItem : poLineItems){
365
						if(pItem.getItemId() == item.getId()){
361
						if(pItem.getItemId() == item.getId()){
366
							poLineItem = pItem;
362
							poLineItem = pItem;
-
 
363
							if (poLineItem.getUnfulfilledQuantity() == 0) {
-
 
364
								errorMsg = "Error occurred"
-
 
365
									+ "<br> Item uploaded is already fulfilled";
-
 
366
								addActionError(errorMsg);
-
 
367
								return create();
-
 
368
							}
367
							break;
369
							break;
368
						}
370
						}
369
					}
371
					}
370
					
372
					
371
					BufferedReader br = new BufferedReader(new FileReader(fileToCreate));
373
					BufferedReader br = new BufferedReader(new FileReader(fileToCreate));
Line 383... Line 385...
383
								addActionError(errorMsg);
385
								addActionError(errorMsg);
384
								return create();
386
								return create();
385
							}
387
							}
386
							line++;
388
							line++;
387
							continue;
389
							continue;
-
 
390
							// Maximum upload for an item is 500
-
 
391
						} else if (line > 501) {
-
 
392
							errorMsg = "Error Occurred"
-
 
393
									+ "<br> Can process upto 500 records only";
-
 
394
							addActionError(errorMsg);
-
 
395
							return create();
-
 
396
						} else if (poLineItem.getUnfulfilledQuantity() < line - 1){
-
 
397
							errorMsg = "Error occurred"
-
 
398
								+ "<br> SerialNumbers uploaded should not be greater than unfulfilled Quantity";
-
 
399
							addActionError(errorMsg);
-
 
400
							return create();
388
						}
401
						}
389
						values = strLine.split("\t");
402
						values = strLine.split("\t");
390
						for(String s : values){
-
 
391
							logger.info("Row No "+line+" :"+s);
-
 
392
							System.out.println("Row No "+line+" :"+s);
-
 
393
						}
-
 
394
						LineItem lineItem = new LineItem();
403
						LineItem lineItem = new LineItem();
395
						lineItem.setId(line);
404
						lineItem.setId(line);
396
						lineItem.setItem_id(item.getId());
405
						lineItem.setItem_id(item.getId());
397
						lineItem.setBrand(item.getBrand());
406
						lineItem.setBrand(item.getBrand());
398
						lineItem.setColor(item.getColor());
407
						lineItem.setColor(item.getColor());
Line 406... Line 415...
406
							if(StringUtils.isNotBlank(values[0]) && StringUtils.isNotEmpty(values[0])){
415
							if(StringUtils.isNotBlank(values[0]) && StringUtils.isNotEmpty(values[0])){
407
								if(StringUtils.isNotBlank(values[1]) && StringUtils.isNotEmpty(values[1])){
416
								if(StringUtils.isNotBlank(values[1]) && StringUtils.isNotEmpty(values[1])){
408
									lineItem.setItem_number(values[0].trim());
417
									lineItem.setItem_number(values[0].trim());
409
									lineItem.setSerial_number(values[1].trim());
418
									lineItem.setSerial_number(values[1].trim());
410
									lineItem.setQuantity(1);
419
									lineItem.setQuantity(1);
-
 
420
									logger.info(serialNumbersMap.size() + " ------ " +  lineItem.getSerial_number());
-
 
421
									if (serialNumbersMap.containsKey(lineItem.getSerial_number())){
-
 
422
										errorRowsMap.put(line, "Error: Serial Number is duplicate in sheet");
-
 
423
										line++;
-
 
424
										continue;
-
 
425
									} else {
-
 
426
										serialNumbersMap.put(lineItem.getSerial_number(), lineItem);
411
									correctRowsMap.put(line, "Entries are correct in the row");
427
										correctRowsMap.put(line, "Entries are correct in the row");
-
 
428
									}
412
								}
429
								}
413
								else{
430
								else{
414
									errorRowsMap.put(line, "Error: Serial Number Missing ");
431
									errorRowsMap.put(line, "Error: Serial Number Missing ");
415
									line++;
432
									line++;
416
									continue;
433
									continue;
Line 424... Line 441...
424
						}
441
						}
425
 
442
 
426
						if(correctRowsMap.containsKey(line) && !errorRowsMap.containsKey(line)){
443
						if(correctRowsMap.containsKey(line) && !errorRowsMap.containsKey(line)){
427
							lineItems.add(lineItem);
444
							lineItems.add(lineItem);
428
						}
445
						}
429
 
-
 
430
						line++;
-
 
431
					}
-
 
432
					
-
 
433
					areValidSerializedItems();
-
 
434
					
-
 
435
				}else{
-
 
436
					
-
 
437
					BufferedReader br = new BufferedReader(new FileReader(fileToCreate));
-
 
438
					long line = 1;
-
 
439
					String strLine;
-
 
440
					String[] values;
-
 
441
					while((strLine = br.readLine())!=null){
-
 
442
						if(strLine.trim().isEmpty()){
-
 
443
							continue;
-
 
444
						}
-
 
445
						if(line==1){
-
 
446
							values = strLine.split("\t");						
-
 
447
							if(values.length !=4){
-
 
448
								errorMsg = errorMsg + "<br> File contains Inappropriate Content ";
-
 
449
								addActionError(errorMsg);
-
 
450
								return create();
-
 
451
							}
-
 
452
							line++;
-
 
453
							continue;
-
 
454
						}
-
 
455
						values = strLine.split("\t");
-
 
456
						for(String s : values){
-
 
457
							logger.info("Row No "+line+" :"+s);
-
 
458
							System.out.println("Row No "+line+" :"+s);
-
 
459
						}
-
 
460
						Item item = nonserializedMap.get(Long.parseLong(values[0]));
-
 
461
						itemType = item.getType();
-
 
462
						
-
 
463
						for(in.shop2020.purchase.LineItem pItem : poLineItems){
-
 
464
							if(pItem.getItemId() == item.getId()){
-
 
465
								poLineItem = pItem;
-
 
466
								break;
-
 
467
							}
-
 
468
						}
-
 
469
						LineItem lineItem = new LineItem();
-
 
470
						lineItem.setId(line);
-
 
471
						lineItem.setItem_id(item.getId());
-
 
472
						lineItem.setBrand(item.getBrand());
-
 
473
						lineItem.setColor(item.getColor());
-
 
474
						lineItem.setModel_name(item.getModelName());
-
 
475
						lineItem.setModel_number(item.getModelNumber());
-
 
476
						lineItem.setProductGroup(item.getProductGroup());
-
 
477
						lineItem.setNlc(poLineItem.getNlc());
-
 
478
						lineItem.setTransfer_price(poLineItem.getUnitPrice());
-
 
479
						lineItem.setUnit_price(poLineItem.getUnitPrice());
-
 
480
 
-
 
481
						if(itemType==ItemType.NON_SERIALIZED){
-
 
482
							if(StringUtils.isNotBlank(values[1]) && StringUtils.isNotEmpty(values[1])){
-
 
483
								lineItem.setItem_number(values[1].trim());
-
 
484
								lineItem.setSerial_number("");
-
 
485
								if(StringUtils.isNotBlank(values[3]) && StringUtils.isNumeric(values[3]) && Double.parseDouble(values[3]) > 0){
-
 
486
									lineItem.setQuantity(Double.parseDouble(values[3].trim()));
-
 
487
									correctRowsMap.put(line, "Entries are correct in the row ");
-
 
488
								}
-
 
489
								else{
-
 
490
									errorRowsMap.put(line, "Error: Invalid Item Quantity ");
-
 
491
									line++;
-
 
492
									continue;
-
 
493
								}
-
 
494
							} else{
-
 
495
								errorRowsMap.put(line, "Error: Item Number Missing ");
-
 
496
								line++;
-
 
497
								continue;
-
 
498
							}
-
 
499
 
-
 
500
						}
-
 
501
 
-
 
502
						if(correctRowsMap.containsKey(line) && !errorRowsMap.containsKey(line)){
-
 
503
							lineItems.add(lineItem);
-
 
504
						}
-
 
505
 
-
 
506
						line++;
446
						line++;
507
					}
447
					}
-
 
448
					areValidSerializedItems(serialNumbersMap);
508
				}
449
				}
509
				
450
 
510
				if(correctRowsMap!=null && correctRowsMap.size()>0){
-
 
511
					if(errorRowsMap!=null && errorRowsMap.size()>0){
451
				if(errorRowsMap!=null && errorRowsMap.size()>0){
512
						for(Long row : errorRowsMap.keySet()){
452
					for(Long row : errorRowsMap.keySet()){
513
							exceptionList.add("At Row "+ row +" "+ errorRowsMap.get(row));
453
						exceptionList.add("At Row "+ row +" "+ errorRowsMap.get(row));
514
						}
-
 
515
					}
454
					}
516
				}
455
				}
517
				else{
456
				if(correctRowsMap.size()==0){
518
					exceptionList.add("-- File Contains Zero Correct Records --");
457
					exceptionList.add("-- File Contains Zero Correct Records --");
519
					if(errorRowsMap!=null && errorRowsMap.size()>0){
458
					if(errorRowsMap!=null && errorRowsMap.size()>0){
520
						exceptionList.add("-- Data in uploaded sheet is Inappropriate --");
459
						exceptionList.add("-- Data in uploaded sheet is Inappropriate --");
521
					}
460
					}
522
				}
461
				}
523
				
462
				
-
 
463
				if(!checkForException()) {
-
 
464
					return null;
-
 
465
				}
-
 
466
				
524
				if(id == null || Long.parseLong(id)==0) {
467
				if(id == null || Long.parseLong(id)==0) {
525
					if(!createPurchase()) {
468
					if(!createPurchase()) {
526
						if(!checkForException()){
469
						if(!checkForException()){
527
							return create();
470
							return create();
528
						}
471
						}
Line 541... Line 484...
541
	            long currentWarehouseId = 0;
484
	            long currentWarehouseId = 0;
542
	            if(!checkDirectScanWarehouse){
485
	            if(!checkDirectScanWarehouse){
543
	            	Warehouse fulfilmentWarehouse = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, po.getSupplierId(), po.getWarehouseId(), 0).get(0);
486
	            	Warehouse fulfilmentWarehouse = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, po.getSupplierId(), po.getWarehouseId(), 0).get(0);
544
	            	currentWarehouseId = fulfilmentWarehouse.getId();
487
	            	currentWarehouseId = fulfilmentWarehouse.getId();
545
	            }
488
	            }
546
				
-
 
547
				for (LineItem lineItem : lineItems) {
489
	            List<InventoryItem> inventoryItems = new ArrayList<InventoryItem>();
548
 
490
 
-
 
491
				for (LineItem lineItem : serialNumbersMap.values()) {
549
					InventoryItem inventoryItem = new InventoryItem();
492
					InventoryItem inventoryItem = new InventoryItem();
550
					inventoryItem.setItemId(lineItem.getItem_id());
493
					inventoryItem.setItemId(lineItem.getItem_id());
551
					inventoryItem.setPurchaseId(Long.parseLong(id));
494
					inventoryItem.setPurchaseId(Long.parseLong(id));
552
					inventoryItem.setCurrentQuantity(0);
495
					inventoryItem.setCurrentQuantity(1);
553
					inventoryItem.setItemNumber(lineItem.getItem_number());
496
					inventoryItem.setItemNumber(lineItem.getItem_number());
554
					inventoryItem.setSerialNumber(lineItem.getSerial_number());
497
					inventoryItem.setSerialNumber(lineItem.getSerial_number());
555
					inventoryItem.setInitialQuantity(new Double(lineItem.getQuantity()).longValue());
498
					log.info("inventory Item serial number --- " + lineItem.getSerial_number());
-
 
499
					inventoryItem.setInitialQuantity(1);
-
 
500
					inventoryItem.setLastScanType(ScanType.PURCHASE);
556
	                if(checkDirectScanWarehouse){
501
	                if(checkDirectScanWarehouse){
557
	                	inventoryItem.setPhysicalWarehouseId(po.getWarehouseId());
502
	                	inventoryItem.setPhysicalWarehouseId(po.getWarehouseId());
558
	                	inventoryItem.setCurrentWarehouseId(po.getWarehouseId());
503
	                	inventoryItem.setCurrentWarehouseId(po.getWarehouseId());
559
	                }else{
504
	                }else{
560
	                	inventoryItem.setPhysicalWarehouseId(po.getWarehouseId());
505
	                	inventoryItem.setPhysicalWarehouseId(po.getWarehouseId());
561
	                	inventoryItem.setCurrentWarehouseId(currentWarehouseId);
506
	                	inventoryItem.setCurrentWarehouseId(currentWarehouseId);
562
	                }
507
	                }
563
					if(!client.isAlive()){
-
 
564
						client = warehouseClient.getClient();
508
					inventoryItems.add(inventoryItem);				
565
					}
-
 
566
					try{
-
 
567
						if(lineItem.getSerial_number()!=null && !lineItem.getSerial_number().isEmpty()){
-
 
568
							if(lineItem.getExtra_info()!=null && "Item scanned already.".equalsIgnoreCase(lineItem.getExtra_info())){
-
 
569
								continue;
-
 
570
							}
-
 
571
						}
-
 
572
						client.scan(inventoryItem, ScanType.PURCHASE, new Double(lineItem.getQuantity()).longValue(), warehouseId, (transferLotId!=null)?transferLotId:0L);
-
 
573
						if(lineItem.getSerial_number()!=null && !lineItem.getSerial_number().isEmpty()){
-
 
574
							exceptionList.add("Item with Serial Number "+ lineItem.getSerial_number() + " Scanned Successfully");
-
 
575
						}
-
 
576
						else{
-
 
577
							exceptionList.add("Item with Item Number "+ lineItem.getItem_number() + " with "+ lineItem.getQuantity() + " units Scanned Successfully");
-
 
578
						}
-
 
579
					}
-
 
580
					catch(Exception e){
-
 
581
						exceptionList.add("Error "+lineItem.getId()+" "+e.getMessage());
-
 
582
						continue;
-
 
583
					}
-
 
584
				}
509
				}
585
 
-
 
586
				if(lineItems!= null && lineItems.size()!=exceptionList.size()){
-
 
587
					if(!checkForException()){
-
 
588
						return null;
-
 
589
					} 
510
				
590
				}else{
511
				try{
-
 
512
					client.scanPurchaseBulk(inventoryItems);
591
					successMsg = "Items scanned Successfully.<br>Check the unfulfilled Quantity for further details";
513
					successMsg = "Items scanned Successfully.<br>Check the unfulfilled Quantity for further details";
-
 
514
					addActionMessage(successMsg);
-
 
515
				}
-
 
516
				catch(Exception e){
-
 
517
					addActionError("Error -  Could not scan in items due to " + e.getMessage());
592
				}
518
				}
593
				
-
 
594
			} catch (Exception e) {
519
			} catch (Exception e) {
595
				errorMsg = errorMsg + " <br> Error while scanning items";
520
				errorMsg = errorMsg + " <br> Error while scanning items";
596
				logger.error(errorMsg, e);
521
				logger.error(errorMsg, e);
597
				e.printStackTrace();
522
				e.printStackTrace();
598
			}
523
			}
599
		}
524
		}
600
		return create();
525
		return create();
601
	}
526
	}
602
	
527
 
603
	public String destroy() {
528
	public String destroy() {
604
		long id = Long.parseLong(this.id);
529
		long id = Long.parseLong(this.id);
605
 
530
 
606
		try {
531
		try {
607
			PurchaseClient warehouseClient = new PurchaseClient();
532
			PurchaseClient warehouseClient = new PurchaseClient();