Subversion Repositories SmartDukaan

Rev

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

Rev 25503 Rev 25507
Line 1... Line 1...
1
package com.spice.profitmandi.service.scheme;
1
package com.spice.profitmandi.service.scheme;
2
 
2
 
-
 
3
import java.time.LocalDate;
3
import java.time.LocalDateTime;
4
import java.time.LocalDateTime;
4
import java.util.ArrayList;
5
import java.util.ArrayList;
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;
Line 375... Line 376...
375
		Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
376
		Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
376
		PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(retailerId,
377
		PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(retailerId,
377
				purchase.getCreateTimestamp().toLocalDate());
378
				purchase.getCreateTimestamp().toLocalDate());
378
		LOGGER.info("purchase is completed = {}", (purchase.getCompleteTimestamp() != null));
379
		LOGGER.info("purchase is completed = {}", (purchase.getCompleteTimestamp() != null));
379
		if (purchase.getCompleteTimestamp() != null) {
380
		if (purchase.getCompleteTimestamp() != null) {
380
			List<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.IN, purchase.getCompleteTimestamp());
381
			List<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.IN, partnerType,
-
 
382
					purchase.getCompleteTimestamp());
381
			float totalCashback = 0;
383
			float totalCashback = 0;
382
			if (schemes.isEmpty()) {
384
			if (schemes.isEmpty()) {
383
				return;
385
				return;
384
			}
386
			}
385
			List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
387
			List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
Line 485... Line 487...
485
 
487
 
486
	@Override
488
	@Override
487
	public void processSchemeOut(int fofoOrderId, int retailerId) throws ProfitMandiBusinessException {
489
	public void processSchemeOut(int fofoOrderId, int retailerId) throws ProfitMandiBusinessException {
488
		FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(retailerId, fofoOrderId);
490
		FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(retailerId, fofoOrderId);
489
 
491
 
-
 
492
		PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(retailerId,
-
 
493
				fofoOrder.getCreateTimestamp().toLocalDate());
-
 
494
 
490
		List<ScanRecord> scanRecords = scanRecordRepository.selectAllByOrderId(fofoOrderId);
495
		List<ScanRecord> scanRecords = scanRecordRepository.selectAllByOrderId(fofoOrderId);
491
		Set<Integer> inventoryItemIds = scanRecords.stream().map(x -> x.getInventoryItemId())
496
		Set<Integer> inventoryItemIds = scanRecords.stream().map(x -> x.getInventoryItemId())
492
				.collect(Collectors.toSet());
497
				.collect(Collectors.toSet());
493
		Set<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds).stream()
498
		Set<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds).stream()
494
				.filter(x -> x.getSerialNumber() != null && !x.getSerialNumber().equals(""))
499
				.filter(x -> x.getSerialNumber() != null && !x.getSerialNumber().equals(""))
Line 499... Line 504...
499
		}
504
		}
500
 
505
 
501
		float totalCashback = 0;
506
		float totalCashback = 0;
502
		int count = 0;
507
		int count = 0;
503
 
508
 
-
 
509
		Set<Scheme> allFixedSchemes = schemeRepository
504
		Set<Scheme> allFixedSchemes = schemeRepository.selectActiveAll(SchemeType.OUT, fofoOrder.getCreateTimestamp())
510
				.selectActiveAll(SchemeType.OUT, partnerType, fofoOrder.getCreateTimestamp()).stream()
505
				.stream().filter(scheme -> scheme.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toSet());
511
				.filter(scheme -> scheme.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toSet());
506
 
512
 
507
		for (InventoryItem inventoryItem : inventoryItems) {
513
		for (InventoryItem inventoryItem : inventoryItems) {
508
			int itemCashback = 0;
514
			int itemCashback = 0;
509
			Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
515
			Purchase purchase = purchaseRepository.selectByIdAndFofoId(inventoryItem.getPurchaseId(), retailerId);
510
			Set<Integer> schemeIds = new HashSet<>(
516
			Set<Integer> schemeIds = new HashSet<>(
511
					schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
517
					schemeItemRepository.selectSchemeIdByItemId(inventoryItem.getItemId()));
-
 
518
			List<Scheme> schemes = null;
-
 
519
			if (purchase.getCompleteTimestamp().isAfter(LocalDate.of(2019, 9, 1).atStartOfDay())) {
512
			Set<Scheme> schemes = schemeRepository.selectActiveAll(SchemeType.OUT, purchase.getCompleteTimestamp())
520
				schemes = schemeRepository.selectActiveAll(SchemeType.OUT, partnerType, fofoOrder.getCreateTimestamp());
-
 
521
			} else {
-
 
522
				schemes = schemeRepository.selectActiveAll(SchemeType.OUT, partnerType,
-
 
523
						purchase.getCompleteTimestamp());
-
 
524
			}
513
					.stream().filter(x -> x.getAmountType().equals(AmountType.PERCENTAGE)).collect(Collectors.toSet());
525
			Set<Scheme> schemesSet = schemes.stream().filter(x -> x.getAmountType().equals(AmountType.PERCENTAGE))
-
 
526
					.collect(Collectors.toSet());
514
			schemes.addAll(allFixedSchemes);
527
			schemesSet.addAll(allFixedSchemes);
515
			schemes = schemes.stream().filter(x -> schemeIds.contains(x.getId())).collect(Collectors.toSet());
528
			schemesSet = schemesSet.stream().filter(x -> schemeIds.contains(x.getId())).collect(Collectors.toSet());
516
			for (Scheme scheme : schemes) {
529
			for (Scheme scheme : schemesSet) {
517
				itemCashback += this.createSchemeInOut(scheme, inventoryItem);
530
				itemCashback += this.createSchemeInOut(scheme, inventoryItem);
518
			}
531
			}
519
			if (itemCashback > 0) {
532
			if (itemCashback > 0) {
520
				count++;
533
				count++;
521
				totalCashback += itemCashback;
534
				totalCashback += itemCashback;