Subversion Repositories SmartDukaan

Rev

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

Rev 27440 Rev 27713
Line 497... Line 497...
497
					schemeInOut.setStatus(SchemePayoutStatus.PENDING);
497
					schemeInOut.setStatus(SchemePayoutStatus.PENDING);
498
					schemeInOut.setStatusDescription("Subject to investment days maintained");
498
					schemeInOut.setStatusDescription("Subject to investment days maintained");
499
					return 0;
499
					return 0;
500
			} else {
500
			} else {
501
				schemeInOut.setStatus(SchemePayoutStatus.CREDITED);
501
				schemeInOut.setStatus(SchemePayoutStatus.CREDITED);
-
 
502
				if(scheme.getType().equals(SchemeType.IN)) {
-
 
503
					schemeInOut.setStatusDescription("Credited for GRN of IMEI#" + inventoryItem.getSerialNumber());
-
 
504
				}
502
				schemeInOut.setStatusDescription("Credited for sale of IMEI#" + inventoryItem.getSerialNumber());
505
				schemeInOut.setStatusDescription("Credited for sale of IMEI#" + inventoryItem.getSerialNumber());
503
				schemeInOut.setCreditTimestamp(LocalDateTime.now());
506
				schemeInOut.setCreditTimestamp(LocalDateTime.now());
504
			}
507
			}
505
		}
508
		}
506
		return amountToCredit;
509
		return amountToCredit;
Line 672... Line 675...
672
		}
675
		}
673
		return schemes;
676
		return schemes;
674
	}
677
	}
675
 
678
 
676
	@Override
679
	@Override
-
 
680
	//This is being called to reverse schemes while processing price Drop
677
	public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
681
	public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
678
			throws ProfitMandiBusinessException {
682
			throws ProfitMandiBusinessException {
679
		PriceDrop priceDrop = priceDropRepository.selectById(priceDropId);
683
		PriceDrop priceDrop = priceDropRepository.selectById(priceDropId);
680
		Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
684
		Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
681
				.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
685
				.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
Line 698... Line 702...
698
			Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds, 0, schemeIds.size())
702
			Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds, 0, schemeIds.size())
699
					.stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
703
					.stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
700
			for (SchemeInOut schemeInOut : schemeInOuts) {
704
			for (SchemeInOut schemeInOut : schemeInOuts) {
701
				InventoryItem ii = inventoryItemsMap.get(schemeInOut.getInventoryItemId());
705
				InventoryItem ii = inventoryItemsMap.get(schemeInOut.getInventoryItemId());
702
				Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
706
				Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
703
				if (scheme.getType().equals(SchemeType.OUT))
-
 
704
					continue;
-
 
705
				if (scheme.getAmountType().equals(AmountType.FIXED)) {
707
				if (scheme.getAmountType().equals(AmountType.FIXED)) {
706
					continue;
708
					continue;
707
				}
709
				}
708
				if (schemeInOut.getRolledBackTimestamp() == null) {
710
				if (scheme.getType().equals(SchemeType.IN) && schemeInOut.getRolledBackTimestamp() == null) {
709
					float newAmount = getAmount(ii, scheme);
711
					float newAmount = getAmount(ii, scheme);
710
					if (schemeInOut.getAmount() - newAmount >= 0.01f) {
712
					if (schemeInOut.getAmount() - newAmount >= 0.01f) {
711
						schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
713
						schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
712
						schemeInOutRepository.persist(schemeInOut);
714
						
713
						SchemeInOut sioNew = new SchemeInOut();
715
						SchemeInOut sioNew = new SchemeInOut();
714
						sioNew.setAmount(newAmount);
716
						sioNew.setAmount(newAmount);
-
 
717
						sioNew.setStatus(schemeInOut.getStatus());
-
 
718
						sioNew.setStatusDescription(schemeInOut.getStatusDescription());
715
						sioNew.setInventoryItemId(schemeInOut.getInventoryItemId());
719
						sioNew.setInventoryItemId(schemeInOut.getInventoryItemId());
716
						sioNew.setSchemeId(schemeInOut.getSchemeId());
720
						sioNew.setSchemeId(schemeInOut.getSchemeId());
717
						schemeInOutRepository.persist(sioNew);
721
						schemeInOutRepository.persist(sioNew);
-
 
722
 
-
 
723
						schemeInOut.setStatus(SchemePayoutStatus.REJECTED);
-
 
724
						schemeInOut.setStatusDescription("Pricedrop processed, new entries added");
-
 
725
						//IF not credited then dont consider any credit/debit for that sio entry
-
 
726
						if(schemeInOut.getCreditTimestamp()!=null) {
718
						amountToCredit += sioNew.getAmount();
727
							amountToCredit += sioNew.getAmount();
719
						amountToDebit += schemeInOut.getAmount();
728
							amountToDebit += schemeInOut.getAmount();
-
 
729
						}
720
					}
730
					}
721
 
731
 
722
				}
732
				}
723
			}
733
			}
724
			int fofoId = inventoryItems.get(0).getFofoId();
734
			int fofoId = inventoryItems.get(0).getFofoId();
Line 734... Line 744...
734
			}
744
			}
735
		}
745
		}
736
	}
746
	}
737
 
747
 
738
	@Override
748
	@Override
-
 
749
	//Always being called from cancel order means no SCHEME IN is considered
739
	public void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason,
750
	public void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason,
740
			SchemeType schemeType) throws ProfitMandiBusinessException {
751
			SchemeType schemeType) throws ProfitMandiBusinessException {
741
		Map<Integer, InventoryItem> inventoryItemsMap = inventoryItems.stream()
752
		Map<Integer, InventoryItem> inventoryItemsMap = inventoryItems.stream()
742
				.collect(Collectors.toMap(x -> x.getId(), x -> x));
753
				.collect(Collectors.toMap(x -> x.getId(), x -> x));
743
		List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByInventoryItemIds(inventoryItemsMap.keySet());
754
		List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByInventoryItemIds(inventoryItemsMap.keySet());
Line 758... Line 769...
758
				}
769
				}
759
			}
770
			}
760
		}
771
		}
761
		int fofoId = inventoryItems.get(0).getFofoId();
772
		int fofoId = inventoryItems.get(0).getFofoId();
762
		WalletReferenceType walletReferenceType = schemeType.equals(SchemeType.OUT) ? WalletReferenceType.SCHEME_OUT
773
		WalletReferenceType walletReferenceType = schemeType.equals(SchemeType.OUT) ? WalletReferenceType.SCHEME_OUT
763
				: schemeType.equals(SchemeType.IN) ? WalletReferenceType.SCHEME_IN : WalletReferenceType.ACTIVATION_SCHEME;
774
				: schemeType.equals(SchemeType.INVESTMENT) ? WalletReferenceType.INVESTMENT_PAYOUT : WalletReferenceType.ACTIVATION_SCHEME;
764
		if (amountToRollback > 0) {
775
		if (amountToRollback > 0) {
765
			// TODO//
776
			// TODO//
766
			walletService.rollbackAmountFromWallet(fofoId, amountToRollback, reversalReference, walletReferenceType,
777
			walletService.rollbackAmountFromWallet(fofoId, amountToRollback, reversalReference, walletReferenceType,
767
					reversalReason, LocalDateTime.now());
778
					reversalReason, LocalDateTime.now());
768
		}
779
		}
Line 949... Line 960...
949
				pendingPayout.setCreditTimestamp(LocalDateTime.now());
960
				pendingPayout.setCreditTimestamp(LocalDateTime.now());
950
				pendingPayout.setStatus(SchemePayoutStatus.CREDITED);
961
				pendingPayout.setStatus(SchemePayoutStatus.CREDITED);
951
				pendingPayout.setStatusDescription("Activation margin credited");
962
				pendingPayout.setStatusDescription("Activation margin credited");
952
			} else {
963
			} else {
953
				pendingPayout.setStatus(SchemePayoutStatus.REJECTED);
964
				pendingPayout.setStatus(SchemePayoutStatus.REJECTED);
-
 
965
				pendingPayout.setRolledBackTimestamp(LocalDateTime.now());;
954
				pendingPayout.setStatusDescription("Rejected, activated on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()));
966
				pendingPayout.setStatusDescription("Rejected, activated on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()));
955
			}
967
			}
956
		}
968
		}
957
	}
969
	}
958
 
970