Subversion Repositories SmartDukaan

Rev

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

Rev 23444 Rev 23508
Line 5... Line 5...
5
import java.util.HashMap;
5
import java.util.HashMap;
6
import java.util.HashSet;
6
import java.util.HashSet;
7
import java.util.List;
7
import java.util.List;
8
import java.util.Map;
8
import java.util.Map;
9
import java.util.Set;
9
import java.util.Set;
-
 
10
import java.util.stream.Collectors;
10
 
11
 
11
import org.slf4j.Logger;
12
import org.slf4j.Logger;
12
import org.slf4j.LoggerFactory;
13
import org.slf4j.LoggerFactory;
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.stereotype.Component;
15
import org.springframework.stereotype.Component;
Line 347... Line 348...
347
		if (scheme.isRetailerAll()) {
348
		if (scheme.isRetailerAll()) {
348
			for (InventoryItem inventoryItem : completedInventoryItems) {
349
			for (InventoryItem inventoryItem : completedInventoryItems) {
349
				float cashback = this.createSchemeInOut(scheme, inventoryItem);
350
				float cashback = this.createSchemeInOut(scheme, inventoryItem);
350
				walletService.addAmountToWallet(inventoryItem.getFofoId(), inventoryItem.getPurchaseId(),
351
				walletService.addAmountToWallet(inventoryItem.getFofoId(), inventoryItem.getPurchaseId(),
351
						WalletReferenceType.SCHEME_IN,
352
						WalletReferenceType.SCHEME_IN,
352
						"Added SCHEME_IN for item " + itemStringMap.get(inventoryItem.getItemId())
-
 
353
								+ " against invoiceNumber [" + inventoryItem.getPurchase().getPurchaseReference() + "]",
353
						"Added SCHEME_IN for item " + itemStringMap.get(inventoryItem.getItemId()) + " against invoiceNumber " + inventoryItem.getPurchase().getPurchaseReference(),
354
						cashback);
354
						cashback);
355
			}
355
			}
356
		} else {
356
		} else {
357
			List<Integer> retailerIds = retailerSchemeRepository.selectRetailerIdsBySchemeId(scheme.getId());
357
			List<Integer> retailerIds = retailerSchemeRepository.selectRetailerIdsBySchemeId(scheme.getId());
358
			for (InventoryItem inventoryItem : completedInventoryItems) {
358
			for (InventoryItem inventoryItem : completedInventoryItems) {
359
				if (retailerIds.contains(inventoryItem.getFofoId())) {
359
				if (retailerIds.contains(inventoryItem.getFofoId())) {
360
					float cashback = this.createSchemeInOut(scheme, inventoryItem);
360
					float cashback = this.createSchemeInOut(scheme, inventoryItem);
361
					walletService.addAmountToWallet(inventoryItem.getFofoId(), inventoryItem.getPurchaseId(),
361
					walletService.addAmountToWallet(inventoryItem.getFofoId(), inventoryItem.getPurchaseId(),
362
							WalletReferenceType.SCHEME_IN,
362
							WalletReferenceType.SCHEME_IN,
363
							"Added SCHEME_IN for item " + itemStringMap.get(inventoryItem.getItemId())
-
 
364
									+ " against invoiceNumber [" + inventoryItem.getPurchase().getPurchaseReference()
363
							"Added SCHEME_IN for item " + itemStringMap.get(inventoryItem.getItemId()) + " against invoiceNumber " + inventoryItem.getPurchase().getPurchaseReference(), cashback);
365
									+ "]",
-
 
366
							cashback);
-
 
367
				}
364
				}
368
			}
365
			}
369
		}
366
		}
370
 
367
 
371
	}
368
	}
Line 590... Line 587...
590
			float totalCashback = 0;
587
			float totalCashback = 0;
591
			if (schemes.isEmpty()) {
588
			if (schemes.isEmpty()) {
592
				return;
589
				return;
593
			}
590
			}
594
			List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
591
			List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
595
			LOGGER.info("SchemeIn filter inventoryItems {}", inventoryItems);
-
 
596
 
592
 
597
			Map<InventoryItem, Set<Scheme>> inventoryItemSchemesMap = this.toInventoryItemSchemesMap(schemes,
593
			Map<InventoryItem, Set<Scheme>> inventoryItemSchemesMap = this.toInventoryItemSchemesMap(schemes,
598
					inventoryItems);
594
					inventoryItems);
599
 
595
 
600
			if (inventoryItemSchemesMap.isEmpty()) {
596
			if (inventoryItemSchemesMap.isEmpty()) {
Line 617... Line 613...
617
				notAllInventoryItemSchemesMap.put(inventoryItemSchemesEntry.getKey(), notAllSchemes);
613
				notAllInventoryItemSchemesMap.put(inventoryItemSchemesEntry.getKey(), notAllSchemes);
618
				allInventoryItemSchemesMap.put(inventoryItemSchemesEntry.getKey(), allSchemes);
614
				allInventoryItemSchemesMap.put(inventoryItemSchemesEntry.getKey(), allSchemes);
619
				itemIds.add(inventoryItemSchemesEntry.getKey().getItemId());
615
				itemIds.add(inventoryItemSchemesEntry.getKey().getItemId());
620
			}
616
			}
621
 
617
 
622
			List<Item> items = itemRepository.selectByIds(itemIds);
-
 
623
			Map<Integer, String> itemStringMap = this.toItemStringMap(items);
-
 
624
 
-
 
625
			int itemsCount = 0;
618
			int itemsCount = 0;
626
			for (Map.Entry<InventoryItem, Set<Scheme>> allInventoryItemSchemesEntry : allInventoryItemSchemesMap
619
			for (Map.Entry<InventoryItem, Set<Scheme>> allInventoryItemSchemesEntry : allInventoryItemSchemesMap
627
					.entrySet()) {
620
					.entrySet()) {
628
				float inventoryItemCashback = 0;
621
				float inventoryItemCashback = 0;
629
				for (Scheme scheme : allInventoryItemSchemesEntry.getValue()) {
622
				for (Scheme scheme : allInventoryItemSchemesEntry.getValue()) {
Line 654... Line 647...
654
						totalCashback += inventoryItemCashback;
647
						totalCashback += inventoryItemCashback;
655
						itemsCount++;
648
						itemsCount++;
656
					}
649
					}
657
				}
650
				}
658
			}
651
			}
-
 
652
			if(itemsCount > 0) {
659
			walletService.addAmountToWallet(retailerId, purchaseId, WalletReferenceType.SCHEME_IN,
653
				walletService.addAmountToWallet(retailerId, purchaseId, WalletReferenceType.SCHEME_IN,
660
					"Added for SCHEME IN against invoice " + purchase.getPurchaseReference() + " (total" + itemsCount + "pcs)", totalCashback);
654
						"Added for SCHEME IN against invoice " + purchase.getPurchaseReference() + " (total " + itemsCount + " pcs)", totalCashback);
-
 
655
				LOGGER.info("Added Rs.{} for SCHEME IN against invoice {} total pcs({}) {}", totalCashback, purchase.getPurchaseReference(), itemsCount);
661
			purchase.setCashback(totalCashback);
656
				purchase.setCashback(purchase.getCashback() + totalCashback);
662
			purchaseRepository.persist(purchase);
657
				purchaseRepository.persist(purchase);
-
 
658
			}
663
		}
659
		}
664
	}
660
	}
665
 
661
 
666
	private float createSchemeInOut(Scheme scheme, InventoryItem inventoryItem) {
662
	private float createSchemeInOut(Scheme scheme, InventoryItem inventoryItem) {
667
		SchemeInOut schemeInOut = schemeInOutRepository.selectByScheme(scheme.getId(), inventoryItem.getId());
663
		SchemeInOut schemeInOut = schemeInOutRepository.selectByScheme(scheme.getId(), inventoryItem.getId());
Line 791... Line 787...
791
			fofoOrder.setCashback(totalCashback);
787
			fofoOrder.setCashback(totalCashback);
792
			fofoOrderRepository.persist(fofoOrder);
788
			fofoOrderRepository.persist(fofoOrder);
793
		}
789
		}
794
	}
790
	}
795
 
791
 
-
 
792
	@Override
-
 
793
	public void rollbackSchemeForInventoryItemId(int inventoryItemId) {
-
 
794
		/*Set<Integer> inventoryItemIds = new HashSet<>();
-
 
795
		inventoryItemIds.add(inventoryItemId);
-
 
796
		float amountToRollback = 0;
-
 
797
		List<SchemeInOut> schemes = schemeInOutRepository.selectByInventoryItemIds(inventoryItemIds);
-
 
798
		for(SchemeInOut schemeInOut: schemes) {
-
 
799
			schemeInOut.setRolled_back_timestamp(LocalDateTime.now());
-
 
800
			schemeInOutRepository.persist(schemeInOut);
-
 
801
			amountToRollback += schemeInOut.getAmount();
-
 
802
		}*/
-
 
803
		//TODO: Unused
-
 
804
	}
-
 
805
 
-
 
806
	@Override
-
 
807
	public void rollbackSchemes(List<InventoryItem> inventoryItems, int rollbackReference, String rollbackReason) {
-
 
808
		Set<Integer> inventoryItemIdSet = new HashSet<>(inventoryItems.stream().map(x->x.getId()).collect(Collectors.toList()));
-
 
809
		float amountToRollback = 0;
-
 
810
		List<SchemeInOut> schemes = schemeInOutRepository.selectByInventoryItemIds(inventoryItemIdSet);
-
 
811
		for(SchemeInOut schemeInOut: schemes) {
-
 
812
			schemeInOut.setRolled_back_timestamp(LocalDateTime.now());
-
 
813
			schemeInOutRepository.persist(schemeInOut);
-
 
814
			amountToRollback += schemeInOut.getAmount();
-
 
815
		}
-
 
816
		walletService.rollbackAmountFromWallet(inventoryItems.get(0).getFofoId(), amountToRollback, rollbackReference, WalletReferenceType.SCHEME_IN, rollbackReason);
-
 
817
		
-
 
818
	}
-
 
819
 
796
}
820
}