private TokenAllocationResult handleTotalMaxOverflow(SaleTier tier, BigInteger tomicsForTier) { TokenAllocationResult result = distributeTotalRemainingTokensToTier(tier); BigInteger totalMaxOverflow = tomicsForTier.subtract(result.getAllocatedTomics()); return result.addToOverflow(convertTomicsToUsd(totalMaxOverflow, tier.getDiscount())); }
public BigDecimal getDiscount() { return getTier().getDiscount(); }
@Test public void testDiscountNumberFormat() { SaleTier t = tierRepository.saveAndFlush(createTier(1, "2018-01-01", "2018-01-10", new BigDecimal("0.5239495"), 1000L)); entityManager.detach(t); t = tierRepository.findByTierNo(1).get(); assertEquals(0, t.getDiscount().compareTo(new BigDecimal("0.523950"))); t = tierRepository.saveAndFlush(createTier(2, "2018-01-01", "2018-01-10", new BigDecimal("0.0009495"), 1000L)); entityManager.detach(t); t = tierRepository.findByTierNo(2).get(); assertEquals(0, t.getDiscount().compareTo(new BigDecimal("0.000950"))); }
protected SaleTierResponse fromEntityToResponse(SaleTier tier) { SaleTierResponse response = new SaleTierResponse(); response.setAmount(tier.getTomicsSold()); response.setDiscount(tier.getDiscount()); response.setEndDate(tier.getEndDate()); response.setStartDate(tier.getStartDate()); response.setMaxAmount(tier.getTomicsMax()); response.setName(tier.getDescription()); response.setTierNo(tier.getTierNo()); response.setType(tier.getStatusAtDate(Date.from(Instant.now()))); return response; } }
private TokenAllocationResult distributeToTier(BigDecimal usd, SaleTier tier, Date blockTime) { BigDecimal tomicsDecimal = convertUsdToTomics(usd, tier.getDiscount()); BigInteger tomicsInteger = tomicsDecimal.toBigInteger(); if (tier.isAmountOverflowingTier(tomicsInteger)) { BigInteger remainingTomicsOnTier = tier.getRemainingTomics(); BigDecimal overflowOverTier = tomicsDecimal.subtract(new BigDecimal(remainingTomicsOnTier)); BigDecimal overflowInUsd = convertTomicsToUsd(overflowOverTier, tier.getDiscount()); if (isOverflowingTotalMax(remainingTomicsOnTier)) { LOG.debug("Distributing {} USD to tier {} lead to overflow over the total " +