| 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 |
}
|