Subversion Repositories SmartDukaan

Rev

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

Rev 26296 Rev 26332
Line 8... Line 8...
8
import java.util.List;
8
import java.util.List;
9
import java.util.Map;
9
import java.util.Map;
10
import java.util.Set;
10
import java.util.Set;
11
import java.util.stream.Collectors;
11
import java.util.stream.Collectors;
12
 
12
 
-
 
13
import javax.persistence.criteria.CriteriaBuilder;
-
 
14
import javax.persistence.criteria.CriteriaQuery;
-
 
15
import javax.persistence.criteria.Predicate;
-
 
16
import javax.persistence.criteria.Root;
-
 
17
 
13
import org.apache.logging.log4j.LogManager;
18
import org.apache.logging.log4j.LogManager;
14
import org.apache.logging.log4j.Logger;
19
import org.apache.logging.log4j.Logger;
-
 
20
import org.hibernate.Session;
-
 
21
import org.hibernate.SessionFactory;
-
 
22
import org.hibernate.query.Query;
15
import org.springframework.beans.factory.annotation.Autowired;
23
import org.springframework.beans.factory.annotation.Autowired;
16
import org.springframework.beans.factory.annotation.Qualifier;
24
import org.springframework.beans.factory.annotation.Qualifier;
17
import org.springframework.stereotype.Component;
25
import org.springframework.stereotype.Component;
18
 
26
 
19
import com.spice.profitmandi.common.enumuration.ItemType;
27
import com.spice.profitmandi.common.enumuration.ItemType;
Line 67... Line 75...
67
 
75
 
68
	@Autowired
76
	@Autowired
69
	private ScanRecordRepository scanRecordRepository;
77
	private ScanRecordRepository scanRecordRepository;
70
 
78
 
71
	@Autowired
79
	@Autowired
-
 
80
	private SessionFactory sessionFactory;
-
 
81
 
-
 
82
	@Autowired
72
	private SchemeRepository schemeRepository;
83
	private SchemeRepository schemeRepository;
73
 
84
 
74
	@Autowired
85
	@Autowired
75
	private RoleManager roleManager;
86
	private RoleManager roleManager;
76
 
87
 
Line 116... Line 127...
116
			throw new ProfitMandiBusinessException(
127
			throw new ProfitMandiBusinessException(
117
					ProfitMandiConstants.START_DATE + ", " + ProfitMandiConstants.END_DATE,
128
					ProfitMandiConstants.START_DATE + ", " + ProfitMandiConstants.END_DATE,
118
					scheme.getStartDateTime() + ", " + scheme.getEndDateTime(), "SCHM_VE_1005");
129
					scheme.getStartDateTime() + ", " + scheme.getEndDateTime(), "SCHM_VE_1005");
119
		}
130
		}
120
 
131
 
121
		//this.validateItemIds(createSchemeRequest);
132
		// this.validateItemIds(createSchemeRequest);
122
		schemeRepository.persist(scheme);
133
		schemeRepository.persist(scheme);
123
		for (int itemId : createSchemeRequest.getItemIds()) {
134
		for (int itemId : createSchemeRequest.getItemIds()) {
124
			SchemeItem schemeItem = new SchemeItem();
135
			SchemeItem schemeItem = new SchemeItem();
125
			schemeItem.setSchemeId(scheme.getId());
136
			schemeItem.setSchemeId(scheme.getId());
126
			schemeItem.setItemId(itemId);
137
			schemeItem.setItemId(itemId);
Line 383... Line 394...
383
			float totalCashback = 0;
394
			float totalCashback = 0;
384
			if (schemes.isEmpty()) {
395
			if (schemes.isEmpty()) {
385
				return;
396
				return;
386
			}
397
			}
387
			List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
398
			List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
388
			
399
 
389
			//Only consider inventory items that were not returned
400
			// Only consider inventory items that were not returned
390
			inventoryItems = inventoryItems.stream().filter(x -> !x.getLastScanType().equals(ScanType.PURCHASE_RET_BAD)
401
			inventoryItems = inventoryItems.stream().filter(x -> !x.getLastScanType().equals(ScanType.PURCHASE_RET_BAD)
391
					&& !x.getLastScanType().equals(ScanType.PURCHASE_RET)).collect(Collectors.toList());
402
					&& !x.getLastScanType().equals(ScanType.PURCHASE_RET)).collect(Collectors.toList());
392
			LOGGER.info(inventoryItems);
403
			LOGGER.info(inventoryItems);
393
			if (inventoryItems.size() == 0)
404
			if (inventoryItems.size() == 0)
394
				return;
405
				return;
Line 473... Line 484...
473
			}
484
			}
474
			taxableSellingPrice = dpForCalc / (1 + totalTaxRate / 100);
485
			taxableSellingPrice = dpForCalc / (1 + totalTaxRate / 100);
475
			amount = taxableSellingPrice * scheme.getAmount() / 100;
486
			amount = taxableSellingPrice * scheme.getAmount() / 100;
476
			System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%f\t%f", inventoryItem.getId(),
487
			System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%f\t%f", inventoryItem.getId(),
477
					inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
488
					inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
478
					scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice, scheme.getAmount(),
489
					scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice,
479
					amount));
490
					scheme.getAmount(), amount));
480
		} else {
491
		} else {
481
			amount = scheme.getAmount();
492
			amount = scheme.getAmount();
482
			System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%d\t%f", inventoryItem.getId(),
493
			System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%d\t%f", inventoryItem.getId(),
483
					inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
494
					inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
484
					scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice, 0, amount));
495
					scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice,
-
 
496
					0, amount));
485
		}
497
		}
486
 
498
 
487
		return amount;
499
		return amount;
488
	}
500
	}
489
 
501
 
Line 516... Line 528...
516
			float itemCashback = 0;
528
			float itemCashback = 0;
517
			Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
529
			Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
518
			Set<Integer> schemeIds = new HashSet<>(
530
			Set<Integer> schemeIds = new HashSet<>(
519
					schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
531
					schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
520
			List<Scheme> schemes = null;
532
			List<Scheme> schemes = null;
521
			if(purchase.getCompleteTimestamp()==null) {
533
			if (purchase.getCompleteTimestamp() == null) {
522
				continue;
534
				continue;
523
			}
535
			}
524
			if (purchase.getCompleteTimestamp().isAfter(LocalDate.of(2019, 9, 1).atStartOfDay())) {
536
			if (purchase.getCompleteTimestamp().isAfter(LocalDate.of(2019, 9, 1).atStartOfDay())) {
525
				schemes = schemeRepository.selectActiveAll(SchemeType.OUT, partnerType, fofoOrder.getCreateTimestamp());
537
				schemes = schemeRepository.selectActiveAll(SchemeType.OUT, partnerType, fofoOrder.getCreateTimestamp());
526
			} else {
538
			} else {
Line 606... Line 618...
606
		return schemes;
618
		return schemes;
607
	}
619
	}
608
 
620
 
609
	@Override
621
	@Override
610
	public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
622
	public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
611
			throws Exception {
623
			throws ProfitMandiBusinessException {
612
 
-
 
613
		Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
624
		Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
614
				.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
625
				.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
615
 
626
 
616
		for (Map.Entry<Integer, List<InventoryItem>> purchaseEntry : purchaseInventoryListMap.entrySet()) {
627
		for (Map.Entry<Integer, List<InventoryItem>> purchaseEntry : purchaseInventoryListMap.entrySet()) {
617
			float amountToCredit = 0;
628
			float amountToCredit = 0;
Line 689... Line 700...
689
			walletService.rollbackAmountFromWallet(fofoId, amount, reversalReference, walletReferenceType,
700
			walletService.rollbackAmountFromWallet(fofoId, amount, reversalReference, walletReferenceType,
690
					reversalReason);
701
					reversalReason);
691
		}
702
		}
692
	}
703
	}
693
 
704
 
-
 
705
	@Override
-
 
706
	public double getTotalMargin(int itemId, PartnerType partnerType, LocalDateTime dateTime) {
-
 
707
		Session session = sessionFactory.getCurrentSession();
-
 
708
		CriteriaBuilder cb = session.getCriteriaBuilder();
-
 
709
		CriteriaQuery<Double> criteriaQuery = cb.createQuery(Double.class);
-
 
710
		Root<SchemeItem> schemeItem = criteriaQuery.from(SchemeItem.class);
-
 
711
		Root<Scheme> scheme = criteriaQuery.from(Scheme.class);
-
 
712
		Predicate schemePredicate = cb.equal(scheme.get(ProfitMandiConstants.AMOUNT_TYPE), AmountType.PERCENTAGE);
-
 
713
		Predicate lessThanPredicate = cb.lessThanOrEqualTo(scheme.get(ProfitMandiConstants.END_DATE_TIME), dateTime);
-
 
714
		Predicate greaterThanPredicate = cb.greaterThanOrEqualTo(scheme.get(ProfitMandiConstants.START_DATE_TIME),
-
 
715
				dateTime);
-
 
716
		Predicate joinPredicate = cb.equal(scheme.get("id"), schemeItem.get("schemeId"));
-
 
717
		Predicate schemeItemPredicate = cb.equal(schemeItem.get(ProfitMandiConstants.ITEM_ID), itemId);
-
 
718
		criteriaQuery.select(cb.sum(scheme.get(ProfitMandiConstants.AMOUNT))).where(schemePredicate, lessThanPredicate,
-
 
719
				greaterThanPredicate, schemeItemPredicate, joinPredicate);
-
 
720
 
-
 
721
		Query<Double> query = session.createQuery(criteriaQuery);
-
 
722
		return query.getSingleResult() + ProfitMandiConstants.SCHEME_INVESTMENT_MARGIN;
-
 
723
 
-
 
724
	}
-
 
725
 
694
	/*
726
	/*
695
	 * @Override public void updateSchmesForModel(int catalogId) throws
727
	 * @Override public void updateSchmesForModel(int catalogId) throws
696
	 * ProfitMandiBusinessException { List<Item> items =
728
	 * ProfitMandiBusinessException { List<Item> items =
697
	 * itemRepository.selectAllByCatalogItemId(catalogId); Map<Integer, Scheme>
729
	 * itemRepository.selectAllByCatalogItemId(catalogId); Map<Integer, Scheme>
698
	 * schemes = schemeRepository .selectAllByItemIds(items.stream().map(x ->
730
	 * schemes = schemeRepository .selectAllByItemIds(items.stream().map(x ->