diff --git a/CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java b/CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java index 06957e67..d4ad1bf4 100644 --- a/CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java +++ b/CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java @@ -2564,25 +2564,27 @@ public Map getProposalsHistory(@Optional int startIndex) { @Override @External(readonly = true) - public List getRemainingMilestones(String ipfsHash){ + public List> getRemainingMilestones(String ipfsHash){ String ipfsHashPrefix = proposalPrefix(ipfsHash); ArrayDB milestoneIDs = milestoneIds.at(ipfsHashPrefix); - List milestoneIdList = new ArrayList<>(); - for (int i = 0; i < milestoneIDs.size(); i++) { + int size = milestoneIDs.size(); + List> milestoneIdList = new ArrayList<>(); + for (int i = 0; i < size; i++) { int milestoneId = milestoneIDs.get(i); String milestonePrefix = mileStonePrefix(ipfsHash, milestoneId); - int proposalTotalPeriod = proposalPeriod.at(ipfsHashPrefix).getOrDefault(0); + int proposalPeriod = ProposalDataDb.proposalPeriod.at(ipfsHashPrefix).getOrDefault(0); int completionPeriod = MilestoneDb.completionPeriod.at(milestonePrefix).getOrDefault(0); - int computedCompletionPeriod = proposalTotalPeriod + completionPeriod; + int computedCompletionPeriod = proposalPeriod + completionPeriod; - int currentPeriod = getPeriodCount(); - if (computedCompletionPeriod > currentPeriod) { - int status = MilestoneDb.status.at(milestonePrefix).getOrDefault(0); - if (status != MILESTONE_REPORT_APPROVED ){ - milestoneIdList.add(milestoneId); - } + int status = MilestoneDb.status.at(milestonePrefix).getOrDefault(0); + + if (status != MILESTONE_REPORT_APPROVED ){ + milestoneIdList.add(Map.of(MILESTONE_ID,milestoneId, + COMPLETION_PERIOD,computedCompletionPeriod, + BUDGET,MilestoneDb.budget.at(milestonePrefix).getOrDefault(BigInteger.ZERO)) + ); } } return milestoneIdList; diff --git a/CPSTreasury/src/main/java/community/icon/cps/score/cpstreasury/CPSTreasury.java b/CPSTreasury/src/main/java/community/icon/cps/score/cpstreasury/CPSTreasury.java index 0e87aeeb..e95ce67c 100644 --- a/CPSTreasury/src/main/java/community/icon/cps/score/cpstreasury/CPSTreasury.java +++ b/CPSTreasury/src/main/java/community/icon/cps/score/cpstreasury/CPSTreasury.java @@ -187,7 +187,6 @@ public BigInteger getOnsetPayment() { BigInteger totalBudget = (BigInteger) proposal_details.get(consts.TOTAL_BUDGET); BigInteger totalPaidAmount = (BigInteger) proposal_details.get(consts.WITHDRAW_AMOUNT); - BigInteger remainingAmount = totalBudget.subtract(totalPaidAmount); Map project_details = Map.of( consts.IPFS_HASH, _ipfs_key, consts.TOKEN, flag, @@ -195,7 +194,7 @@ public BigInteger getOnsetPayment() { consts.TOTAL_INSTALLMENT_PAID, totalPaidAmount, consts.TOTAL_INSTALLMENT_COUNT, totalInstallment, consts.TOTAL_TIMES_INSTALLMENT_PAID, totalPaidCount, - consts.INSTALLMENT_AMOUNT, remainingAmount.divide(BigInteger.valueOf(totalInstallment - totalPaidCount))); + consts.INSTALLMENT_AMOUNT, getInstallmetAmount(_ipfs_key)); projectDetails.add(project_details); @@ -600,6 +599,11 @@ public void updateNewProjects(String oldHash, String newHash, int milestoneCount } + private BigInteger getInstallmetAmount(String ipfsHash){ + List> remainingMilestones = callScore(List.class,getCpsScore(),"getRemainingMilestones",ipfsHash); + BigInteger installmentAmount = (BigInteger) remainingMilestones.get(0).get(consts.BUDGET); + return installmentAmount; + } public T callScore(Class t, Address address, String method, Object... params) { return Context.call(t, address, method, params); diff --git a/CPSTreasury/src/main/java/community/icon/cps/score/cpstreasury/utils/consts.java b/CPSTreasury/src/main/java/community/icon/cps/score/cpstreasury/utils/consts.java index a84965ef..fe450bd1 100644 --- a/CPSTreasury/src/main/java/community/icon/cps/score/cpstreasury/utils/consts.java +++ b/CPSTreasury/src/main/java/community/icon/cps/score/cpstreasury/utils/consts.java @@ -29,6 +29,7 @@ public consts() { public static final String INSTALLMENT_AMOUNT = "installment_amount"; public static final String TOTAL_INSTALLMENT_COUNT = "total_installment_count"; public static final String SPONSOR_BOND_AMOUNT = "sponsor_bond_amount"; + public static final String BUDGET = "budget"; } diff --git a/score-lib/src/main/java/community/icon/cps/score/lib/interfaces/CPSCoreInterface.java b/score-lib/src/main/java/community/icon/cps/score/lib/interfaces/CPSCoreInterface.java index d07d19b3..2212a955 100644 --- a/score-lib/src/main/java/community/icon/cps/score/lib/interfaces/CPSCoreInterface.java +++ b/score-lib/src/main/java/community/icon/cps/score/lib/interfaces/CPSCoreInterface.java @@ -266,7 +266,7 @@ public static class MilestoneVoteAttributes { Map getProposalsHistory(@Optional int startIndex); @External(readonly = true) - List getRemainingMilestones(String ipfsHash); + List> getRemainingMilestones(String ipfsHash); // EventLogs @EventLog(indexed = 1)