Subversion Repositories SmartDukaan

Rev

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

Rev 30766 Rev 30769
Line 679... Line 679...
679
 
679
 
680
	private void processSpecialSupport(FofoOrder fofoOrder, List<Scheme> supportSchemes, InventoryItem inventoryItem, PartnerType partnerType, LocalDateTime saleDate) throws ProfitMandiBusinessException {
680
	private void processSpecialSupport(FofoOrder fofoOrder, List<Scheme> supportSchemes, InventoryItem inventoryItem, PartnerType partnerType, LocalDateTime saleDate) throws ProfitMandiBusinessException {
681
		int catalogId = inventoryItem.getItem().getCatalogItemId();
681
		int catalogId = inventoryItem.getItem().getCatalogItemId();
682
		float totalMargin = this.selectPercentageScheme(partnerType, saleDate.toLocalDate(), catalogId, false, 0, 0).stream().collect(Collectors.summingDouble(x -> x.getAmount())).floatValue();
682
		float totalMargin = this.selectPercentageScheme(partnerType, saleDate.toLocalDate(), catalogId, false, 0, 0).stream().collect(Collectors.summingDouble(x -> x.getAmount())).floatValue();
683
		LOGGER.info("total percentage margin - {}", totalMargin);
683
		LOGGER.info("total percentage margin - {}", totalMargin);
684
		float totalTaxRate = 0;
684
		float totalTaxRate = stateGstRateRepository.getTotalTaxRate(inventoryItem.getItemId());
685
		for (Scheme scheme : supportSchemes) {
685
		for (Scheme scheme : supportSchemes) {
686
			if (scheme.isBasePlusGstCalc()) {
686
			/*if (scheme.isBasePlusGstCalc()) {
687
				totalTaxRate = stateGstRateRepository.getTotalTaxRate(inventoryItem.getItemId());
-
 
688
			}
687
			}*/
689
			float amountToCredit = scheme.getAmount() * (1 - (totalMargin / (100 + totalTaxRate)));
688
			float amountToCredit = scheme.getAmount() * (1 - (totalMargin / (100 + totalTaxRate)));
690
			List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByScheme(scheme.getId(), inventoryItem.getId());
689
			List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByScheme(scheme.getId(), inventoryItem.getId());
691
			SchemeInOut schemeInOut = schemeInOuts.stream().filter(x -> x.getRolledBackTimestamp() == null).findFirst().orElse(null);
690
			SchemeInOut schemeInOut = schemeInOuts.stream().filter(x -> x.getRolledBackTimestamp() == null).findFirst().orElse(null);
692
			if (schemeInOut == null) {
691
			if (schemeInOut == null) {
693
				schemeInOut = new SchemeInOut();
692
				schemeInOut = new SchemeInOut();
Line 697... Line 696...
697
				schemeInOut.setAmount(amountToCredit);
696
				schemeInOut.setAmount(amountToCredit);
698
				schemeInOut.setStatus(SchemePayoutStatus.PENDING);
697
				schemeInOut.setStatus(SchemePayoutStatus.PENDING);
699
				schemeInOut.setStatusDescription("Special support, Activation pending for IMEI#" + inventoryItem.getSerialNumber());
698
				schemeInOut.setStatusDescription("Special support, Activation pending for IMEI#" + inventoryItem.getSerialNumber());
700
				schemeInOutRepository.persist(schemeInOut);
699
				schemeInOutRepository.persist(schemeInOut);
701
			} else if (Double.valueOf(schemeInOut.getAmount()).intValue() != Double.valueOf(amountToCredit).intValue()) {
700
			} else if (Double.valueOf(schemeInOut.getAmount()).intValue() != Double.valueOf(amountToCredit).intValue()) {
702
				schemeInOut.setStatus(SchemePayoutStatus.REJECTED);
-
 
703
				schemeInOut.setStatusDescription("Special support changed due to update in total margin");
-
 
704
				schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
-
 
705
 
-
 
706
				SchemeInOut schemeInOutNew = new SchemeInOut();
701
				SchemeInOut schemeInOutNew = new SchemeInOut();
707
				schemeInOutNew.setInventoryItemId(inventoryItem.getId());
702
				schemeInOutNew.setInventoryItemId(inventoryItem.getId());
708
				schemeInOutNew.setSchemeId(scheme.getId());
703
				schemeInOutNew.setSchemeId(scheme.getId());
709
				schemeInOutNew.setCreateTimestamp(LocalDateTime.now());
704
				schemeInOutNew.setCreateTimestamp(LocalDateTime.now());
710
				schemeInOutNew.setAmount(amountToCredit);
705
				schemeInOutNew.setAmount(amountToCredit);
711
				if (schemeInOut.getStatus().equals(SchemePayoutStatus.CREDITED)) {
706
				if (schemeInOut.getStatus().equals(SchemePayoutStatus.PENDING)) {
712
					schemeInOutNew.setStatus(SchemePayoutStatus.PENDING);
707
					schemeInOutNew.setStatus(SchemePayoutStatus.PENDING);
713
					schemeInOutNew.setStatusDescription("Special support, Activation pending for IMEI#" + inventoryItem.getSerialNumber());
708
					schemeInOutNew.setStatusDescription("Special support, Activation pending for IMEI#" + inventoryItem.getSerialNumber());
714
					schemeInOutRepository.persist(schemeInOutNew);
709
					schemeInOutRepository.persist(schemeInOutNew);
715
				} else {
710
				} else if (schemeInOut.getStatus().equals(SchemePayoutStatus.CREDITED)) {
716
					schemeInOutNew.setStatus(SchemePayoutStatus.CREDITED);
711
					schemeInOutNew.setStatus(SchemePayoutStatus.CREDITED);
717
					schemeInOutNew.setStatusDescription("Special support credited");
712
					schemeInOutNew.setStatusDescription("Special support credited");
718
					schemeInOutRepository.persist(schemeInOutNew);
713
					schemeInOutRepository.persist(schemeInOutNew);
719
					walletService.addAmountToWallet(inventoryItem.getFofoId(), fofoOrder.getId(), WalletReferenceType.SPECIAL_SUPPORT,
714
					walletService.addAmountToWallet(inventoryItem.getFofoId(), fofoOrder.getId(), WalletReferenceType.SPECIAL_SUPPORT,
720
							"Special support adjusted against overall margin gains for Imei - " + inventoryItem.getSerialNumber(), amountToCredit - schemeInOut.getAmount(),
715
							"Special support adjusted against overall margin gains for Imei - " + inventoryItem.getSerialNumber(), amountToCredit - schemeInOut.getAmount(),
721
							fofoOrder.getCreateTimestamp());
716
							fofoOrder.getCreateTimestamp());
722
 
717
 
723
				}
718
				}
-
 
719
				schemeInOut.setStatus(SchemePayoutStatus.REJECTED);
-
 
720
				schemeInOut.setStatusDescription("Special support changed due to update in total margin");
-
 
721
				schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
724
			}
722
			}
725
 
723
 
726
		}
724
		}
727
 
725
 
728
	}
726
	}