Subversion Repositories SmartDukaan

Rev

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

Rev 24774 Rev 24976
Line 1... Line 1...
1
package com.spice.profitmandi.service.scheme;
1
package com.spice.profitmandi.service.scheme;
2
 
2
 
3
import java.time.LocalDateTime;
3
import java.time.LocalDateTime;
4
import java.util.ArrayList;
4
import java.util.ArrayList;
-
 
5
import java.util.Arrays;
5
import java.util.HashMap;
6
import java.util.HashMap;
6
import java.util.HashSet;
7
import java.util.HashSet;
7
import java.util.List;
8
import java.util.List;
8
import java.util.Map;
9
import java.util.Map;
9
import java.util.Set;
10
import java.util.Set;
Line 712... Line 713...
712
				}
713
				}
713
			}
714
			}
714
			float taxableSellingPrice = amount / (1 + totalTaxRate / 100);
715
			float taxableSellingPrice = amount / (1 + totalTaxRate / 100);
715
			amount = taxableSellingPrice * scheme.getAmount() / 100;
716
			amount = taxableSellingPrice * scheme.getAmount() / 100;
716
		} else {
717
		} else {
-
 
718
			/*List<SchemeInOut> sios = schemeInOutRepository.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItem.getId())));
-
 
719
			List<Integer> schemeIds = sios.stream().filter(x->x.getSchemeType().equals(SchemeType.IN)).map(x->x.getSchemeId()).collect(Collectors.toList());
-
 
720
			List<Scheme> schemes = schemeRepository.selectBySchemeIds(schemeIds, 0, 0);
-
 
721
			if(schemes.*/
717
			amount = scheme.getAmount();
722
			amount = scheme.getAmount();
718
		}
723
		}
719
		return amount;
724
		return amount;
720
	}
725
	}
721
 
726
 
Line 889... Line 894...
889
		}
894
		}
890
		return schemes;
895
		return schemes;
891
	}
896
	}
892
 
897
 
893
	@Override
898
	@Override
894
	public void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason)
899
	public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
895
			throws Exception {
900
			throws Exception {
-
 
901
 
-
 
902
		Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
-
 
903
				.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
-
 
904
 
-
 
905
		for (Map.Entry<Integer, List<InventoryItem>> purchaseEntry : purchaseInventoryListMap.entrySet()) {
896
		float amountToCredit = 0;
906
			float amountToCredit = 0;
897
		float amountToDebit = 0;
907
			float amountToDebit = 0;
-
 
908
			int purchaseId = purchaseEntry.getKey();
-
 
909
			List<InventoryItem> purchaseInventoryItemList = purchaseEntry.getValue();
-
 
910
 
898
		Map<Integer, InventoryItem> inventoryItemsMap = inventoryItems.stream()
911
			Map<Integer, InventoryItem> inventoryItemsMap = purchaseInventoryItemList.stream()
899
				.collect(Collectors.toMap(x -> x.getId(), x -> x));
912
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
913
 
900
		List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByInventoryItemIds(inventoryItemsMap.keySet());
914
			List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByInventoryItemIds(inventoryItemsMap.keySet());
901
		List<Integer> schemeIds = schemeInOuts.stream().map(x -> x.getSchemeId()).collect(Collectors.toList());
915
			List<Integer> schemeIds = schemeInOuts.stream().map(x -> x.getSchemeId()).collect(Collectors.toList());
902
		Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds, 0, schemeIds.size()).stream()
916
			Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds, 0, schemeIds.size())
903
				.collect(Collectors.toMap(x -> x.getId(), x -> x));
917
					.stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
904
		for (SchemeInOut schemeInOut : schemeInOuts) {
918
			for (SchemeInOut schemeInOut : schemeInOuts) {
905
			InventoryItem ii = inventoryItemsMap.get(schemeInOut.getInventoryItemId());
919
				InventoryItem ii = inventoryItemsMap.get(schemeInOut.getInventoryItemId());
906
			Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
920
				Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
907
			if (scheme.getAmountType().equals(AmountType.FIXED)) {
921
				if (scheme.getType().equals(SchemeType.OUT))
908
				continue;
922
					continue;
909
			}
-
 
910
			if (schemeInOut.getRolledBackTimestamp() == null) {
-
 
911
				float newAmount = getAmount(ii, scheme);
-
 
912
				if (schemeInOut.getAmount() - newAmount >= 0.01f) {
923
				if (scheme.getAmountType().equals(AmountType.FIXED)) {
913
					schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
-
 
914
					schemeInOutRepository.persist(schemeInOut);
-
 
915
					SchemeInOut sioNew = new SchemeInOut();
-
 
916
					sioNew.setAmount(newAmount);
924
					continue;
917
					sioNew.setInventoryItemId(schemeInOut.getInventoryItemId());
-
 
918
					sioNew.setSchemeId(schemeInOut.getSchemeId());
-
 
919
					schemeInOutRepository.persist(sioNew);
-
 
920
					amountToCredit += sioNew.getAmount();
-
 
921
					amountToDebit += schemeInOut.getAmount();
-
 
922
				}
925
				}
-
 
926
				if (schemeInOut.getRolledBackTimestamp() == null) {
-
 
927
					float newAmount = getAmount(ii, scheme);
-
 
928
					if (schemeInOut.getAmount() - newAmount >= 0.01f) {
-
 
929
						schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
-
 
930
						schemeInOutRepository.persist(schemeInOut);
-
 
931
						SchemeInOut sioNew = new SchemeInOut();
-
 
932
						sioNew.setAmount(newAmount);
-
 
933
						sioNew.setInventoryItemId(schemeInOut.getInventoryItemId());
-
 
934
						sioNew.setSchemeId(schemeInOut.getSchemeId());
-
 
935
						schemeInOutRepository.persist(sioNew);
-
 
936
						amountToCredit += sioNew.getAmount();
-
 
937
						amountToDebit += schemeInOut.getAmount();
-
 
938
					}
923
 
939
 
-
 
940
				}
-
 
941
			}
-
 
942
			int fofoId = inventoryItems.get(0).getFofoId();
-
 
943
			if (amountToDebit > 0) {
-
 
944
				walletService.addAmountToWallet(fofoId, purchaseId, WalletReferenceType.SCHEME_IN, reversalReason,
-
 
945
						-amountToDebit);
-
 
946
			}
-
 
947
			if (amountToCredit > 0) {
-
 
948
				walletService.addAmountToWallet(fofoId, purchaseId, WalletReferenceType.SCHEME_IN, reversalReason,
-
 
949
						amountToCredit);
924
			}
950
			}
925
		}
-
 
926
		int fofoId = inventoryItems.get(0).getFofoId();
-
 
927
		if (amountToDebit > 0) {
-
 
928
			walletService.addAmountToWallet(fofoId, reversalReference, WalletReferenceType.PRICE_DROP, reversalReason,
-
 
929
					-amountToDebit);
-
 
930
		}
-
 
931
		if (amountToCredit > 0) {
-
 
932
			walletService.addAmountToWallet(fofoId, reversalReference, WalletReferenceType.PRICE_DROP, reversalReason,
-
 
933
					amountToCredit);
-
 
934
		}
951
		}
935
	}
952
	}
936
 
953
 
937
	@Override
954
	@Override
938
	public void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason,
955
	public void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason,
Line 961... Line 978...
961
			walletService.rollbackAmountFromWallet(fofoId, amount, reversalReference, walletReferenceType,
978
			walletService.rollbackAmountFromWallet(fofoId, amount, reversalReference, walletReferenceType,
962
					reversalReason);
979
					reversalReason);
963
		}
980
		}
964
	}
981
	}
965
 
982
 
966
/*	@Override
983
	/*
967
	public void updateSchmesForModel(int catalogId) throws ProfitMandiBusinessException {
984
	 * @Override public void updateSchmesForModel(int catalogId) throws
-
 
985
	 * ProfitMandiBusinessException { List<Item> items =
968
		List<Item> items = itemRepository.selectAllByCatalogItemId(catalogId);
986
	 * itemRepository.selectAllByCatalogItemId(catalogId); Map<Integer, Scheme>
969
		Map<Integer, Scheme> schemes = schemeRepository
987
	 * schemes = schemeRepository .selectAllByItemIds(items.stream().map(x ->
970
				.selectAllByItemIds(items.stream().map(x -> x.getId()).collect(Collectors.toList()));
988
	 * x.getId()).collect(Collectors.toList()));
971
 
989
	 * 
-
 
990
	 * }
972
	}*/
991
	 */
973
 
992
 
974
}
993
}