diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/api/InvestmentPurchaseApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/api/InvestmentPurchaseApiConstants.java index 0d707a930..c6bb013d8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/api/InvestmentPurchaseApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/api/InvestmentPurchaseApiConstants.java @@ -45,6 +45,7 @@ public final class InvestmentPurchaseApiConstants { public static final String NAV = "nav"; public static final String STAMP_DUTY = "stampDuty"; public static final String BROKERAGE = "brokerage"; + public static final String OTHER_CHARGES = "otherCharges"; public static final String CATEGORY = "category"; public static final String LAST_INT_DATE = "lastIntDate"; public static final String CR_GL_ACCOUNT_ID = "crGlAccountId"; @@ -55,6 +56,6 @@ public final class InvestmentPurchaseApiConstants { public static final String DATE_FORMAT = "dateFormat"; public static final Set PARAMS = Set.of(BOND_TYPE, SCRIPT_ID, PARTY_ID, DEAL_DATE, DEAL_TIME, SETTLEMENT_TYPE, FACE_VALUE, - PURCHASE_RATE, CONSIDER_AMT, NAV, STAMP_DUTY, BROKERAGE, CATEGORY, LAST_INT_DATE, CR_GL_ACCOUNT_ID, SUB_TYPE, OTHER_DETAILS, - LOCALE, DATE_FORMAT); + PURCHASE_RATE, CONSIDER_AMT, NAV, STAMP_DUTY, BROKERAGE, OTHER_CHARGES, CATEGORY, LAST_INT_DATE, CR_GL_ACCOUNT_ID, SUB_TYPE, + OTHER_DETAILS, LOCALE, DATE_FORMAT); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/data/InvestmentPurchaseData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/data/InvestmentPurchaseData.java index 87ea0c541..75129d93e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/data/InvestmentPurchaseData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/data/InvestmentPurchaseData.java @@ -52,6 +52,7 @@ public class InvestmentPurchaseData { private final BigDecimal balanceUnits; private final BigDecimal brokerage; private final BigDecimal stampDuty; + private final BigDecimal otherCharges; private final BigDecimal bookValue; private final BigDecimal premiumDiscount; private final BigDecimal intRate; @@ -80,14 +81,14 @@ public class InvestmentPurchaseData { .partyName(p.getParty().getPartyName()).dealDate(format(p.getDealDate())).dealTime(p.getDealTime()) .settlementType(p.getSettlementType()).settlementDate(format(p.getSettlementDate())).faceValue(p.getFaceValue()) .purchaseRate(p.getPurchaseRate()).units(p.getUnits()).balanceUnits(p.getBalanceUnits()).brokerage(p.getBrokerage()) - .stampDuty(p.getStampDuty()).bookValue(p.getBookValue()).premiumDiscount(p.getPremiumDiscount()).intRate(p.getIntRate()) - .issueDate(format(p.getIssueDate())).maturityDate(format(p.getMaturityDate())).lastIntDate(format(p.getLastIntDate())) - .accruedDays(p.getAccruedDays()).accruedInterest(p.getAccruedInterest()).settlementAmount(p.getSettlementAmount()) - .ytm(p.getYtm()).category(p.getCategory()).subType(p.getSubType()) - .investmentGlAccountId(p.getInvestmentGlAccount().getId()).investmentGlCode(p.getInvestmentGlAccount().getGlCode()) - .investmentGlName(p.getInvestmentGlAccount().getName()).crGlAccountId(p.getCrGlAccount().getId()) - .crGlCode(p.getCrGlAccount().getGlCode()).crGlName(p.getCrGlAccount().getName()).otherDetails(p.getOtherDetails()) - .status(p.getStatus()).build(); + .stampDuty(p.getStampDuty()).otherCharges(p.getOtherCharges()).bookValue(p.getBookValue()) + .premiumDiscount(p.getPremiumDiscount()).intRate(p.getIntRate()).issueDate(format(p.getIssueDate())) + .maturityDate(format(p.getMaturityDate())).lastIntDate(format(p.getLastIntDate())).accruedDays(p.getAccruedDays()) + .accruedInterest(p.getAccruedInterest()).settlementAmount(p.getSettlementAmount()).ytm(p.getYtm()).category(p.getCategory()) + .subType(p.getSubType()).investmentGlAccountId(p.getInvestmentGlAccount().getId()) + .investmentGlCode(p.getInvestmentGlAccount().getGlCode()).investmentGlName(p.getInvestmentGlAccount().getName()) + .crGlAccountId(p.getCrGlAccount().getId()).crGlCode(p.getCrGlAccount().getGlCode()).crGlName(p.getCrGlAccount().getName()) + .otherDetails(p.getOtherDetails()).status(p.getStatus()).build(); } private static String format(final LocalDate date) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/domain/InvestmentPurchase.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/domain/InvestmentPurchase.java index c9aa74ba4..38858fa29 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/domain/InvestmentPurchase.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/investment/domain/InvestmentPurchase.java @@ -33,8 +33,8 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDa /** * Investment Purchase Entry — one deal (as in the bank's existing CBS "Govt.Security/Bond Entry"). Once saved it is the - * holding that interest, sale and redemption later work against; {@link #balanceUnits} tracks what is still held. - * Every derived figure (units, book value, accrued interest, settlement amount) is computed by the backend. + * holding that interest, sale and redemption later work against; {@link #balanceUnits} tracks what is still held. Every + * derived figure (units, book value, accrued interest, settlement amount) is computed by the backend. */ @Entity @Table(name = "m_investment_purchase") @@ -93,6 +93,9 @@ public class InvestmentPurchase extends AbstractAuditableWithUTCDateTimeCustom + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0595_investment_purchase_other_charges.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0595_investment_purchase_other_charges.xml new file mode 100644 index 000000000..0562f1d3b --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0595_investment_purchase_other_charges.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + +