-
Notifications
You must be signed in to change notification settings - Fork 2.2k
FINERACT-2312: Accruals added for savings accounts #4885
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
bbf1a12 to
b38e757
Compare
|
@sayhaed Please drop this generic "Savings Accounts Improvements" and start using clear, descriptive short description for the PRs which tells exactly what this PR is intended to do! |
|
Hi @adamsaghy, thank you for the feedback. Just to clarify, this PR is indeed related to the overall "Savings Accounts Improvements" initiative. The team decided to split the changes into multiple PRs to improve clarity and facilitate the review process, while keeping a consistent title to reflect that they all belong to the same scope. |
The Fineract story id just fine to connect them. The PR title should tell exactly what it is doing and "improvements" is too generic and useless. Kindly asking you to rename it! |
b38e757 to
86b0c35
Compare
|
Thanks, @adamsaghy I’ve updated the PR title to make it more specific, as suggested. |
e412073 to
02defa0
Compare
| return interest; | ||
| } | ||
|
|
||
| public BigDecimal calculateInterestOnBalanceForAcrualsSavings(final BigDecimal interestToCompound, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo in method calculateInterestOnBalanceForAcrualsSavings -> calculateInterestOnBalanceForAccrualsSavings
Also if this method is for calculating the interest accrual for overdraft balance, please rename this to describe that action...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what is the difference between calculateInterestOnBalance and calculateInterestOnBalanceForAccrualsSavings?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We remove that method
| private final BigDecimal overdraftAmount; | ||
| private final boolean isAccountTransfer; | ||
| private final List<TaxPaymentDTO> taxPayments; | ||
| private final Boolean isOverdraftDown; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what this field is for?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we remove that field
...ache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForSavings.java
Outdated
Show resolved
Hide resolved
| } | ||
| } | ||
|
|
||
| private static final class SavingAccrualMapper implements RowMapper<SavingsAccrualData> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo in the class name: SavingAccrualMapper -> SavingsAccrualMapper?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changed
|
|
||
| private final String schemaSql; | ||
|
|
||
| SavingAccrualMapper() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we use JPQL here instead of native queries?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
| @Override | ||
| public CommandProcessingResult addAccrualEntries(Long savingsAccountId) { | ||
| SavingsAccount savingsAccount = savingsAccountAssembler.assembleFrom(savingsAccountId, false); | ||
| final LocalDate tillDate = DateUtils.getBusinessLocalDate(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The two methods are 90% duplicate.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please make sure to reuse and extract the common parts!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have removed that method and extracted the repeated functionality into a common one, as suggested.
44d0ca5 to
4948021
Compare
...che/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
Show resolved
Hide resolved
...unting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformServiceImpl.java
Show resolved
Hide resolved
...eract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
Show resolved
Hide resolved
fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingConstants.java
Outdated
Show resolved
Hide resolved
| AccrualAccountsForSavings.INTEREST_ON_SAVINGS.getValue(), AccrualAccountsForSavings.INTEREST_PAYABLE.getValue(), | ||
| savingsProductId, paymentTypeId, savingsId, transactionId, transactionDate, amount, isReversal); | ||
| } else { | ||
| this.helper.createCashBasedJournalEntriesAndReversalsForSavings(office, currencyCode, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this accrual based or cash based? if accrual based, please dont use "createCashBasedJournalEntriesAndReversalsForSaving" method.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we change that part
| this.helper.createCashBasedJournalEntriesAndReversalsForSavings(office, currencyCode, | ||
| AccrualAccountsForSavings.INTEREST_ON_SAVINGS.getValue(), AccrualAccountsForSavings.INTEREST_PAYABLE.getValue(), | ||
| savingsProductId, paymentTypeId, savingsId, transactionId, transactionDate, amount, isReversal); | ||
| } else { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The transaction amount cannot be zero or minus!!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
...ounting/productaccountmapping/service/ProductToGLAccountMappingWritePlatformServiceImpl.java
Show resolved
Hide resolved
| final List<SavingsAccountTransaction> orderedAccrualTransactions = new ArrayList<>(); | ||
|
|
||
| for (final SavingsAccountTransaction transaction : listOfTransactionsSorted) { | ||
| if (transaction.isAccrual()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are using this for accrual transactions and interval validations. If the period is different, it ensures that it is not posted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would you mind to rework this to use stream API?
Something like this:
public List<SavingsAccountTransaction> retreiveOrderedAccrualTransactions() {
return retrieveListOfTransactions().stream()
.filter(SavingsAccountTransaction::isAccrual)
.sorted(new SavingsAccountTransactionComparator())
.collect(Collectors.toList());
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Its better for readability ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, i will change it, thnks for the advice :)
| savings.id, | ||
| savings.accountNumber, | ||
| savings.accruedTillDate, | ||
| CASE WHEN apm.financialAccountType = 18 THEN TRUE ELSE FALSE END, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this hardcoded value?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The number 18 corresponds to the interest_receivables account type. It is used to prevent impacting products that were created before this accounting entry existed, ensuring that the workflow operates without issues.
| AND ( savings.accruedTillDate <= :tillDate OR savings.accruedTillDate IS NULL ) | ||
| ORDER BY savings.id | ||
| """) | ||
| List<SavingsAccrualData> findPeriodicAccrualData(@Param("tillDate") LocalDate tillDate, @Param("savingsId") Long savingsId, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since the accountingRule is coming as parameter, the method name is not correct. Should we remove the "periodic" part?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, I have removed the 'periodic' part from the method name.
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.3.xsd"> | ||
| <changeSet author="fineract" id="161"> | ||
| <createTable tableName="m_savings_product_accrual_charge"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what is this table for?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I dont see any entity or logic which would use this...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This table has been removed.
0468dfb to
437c404
Compare
| minBalanceForInterestCalculation, isSavingsInterestPostingAtCurrentPeriodEnd, isUserPosting, | ||
| financialYearBeginningMonth); | ||
|
|
||
| postingPeriod.setOverdraftInterestRateAsFraction( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure to use MathContext here!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, thanks. I've added the MathContext
| private static final Set<String> SAVINGS_PRODUCT_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList( | ||
| SavingsApiConstants.localeParamName, SavingsApiConstants.monthDayFormatParamName, nameParamName, shortNameParamName, | ||
| descriptionParamName, currencyCodeParamName, digitsAfterDecimalParamName, inMultiplesOfParamName, | ||
| interestReceivableAccount, descriptionParamName, currencyCodeParamName, digitsAfterDecimalParamName, inMultiplesOfParamName, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dont just randomly insert interestReceivableAccount, make sure it is inserted where all the rest of incoming gl account fields are listed...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, thanks for the suggestion. I moved INTEREST_RECEIVABLE to be grouped with the other GL account fields. The change is applied.
| private TaxGroup taxGroup; | ||
|
|
||
| @Column(name = "accrued_till_date") | ||
| protected LocalDate accruedTillDate; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason for having it as protected? If no, make it private! ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've changed it, thanks
|
|
||
| Long retrieveAccountIdByExternalId(ExternalId externalId); | ||
|
|
||
| Collection<SavingsAccrualData> retrievePeriodicAccrualData(LocalDate tillDate, SavingsAccount savings); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please either use List or Set... we dont want Collection... way too generic...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We change it to a list, thanks
|
|
||
| private void awaitJob(Instant beforeExecuteTime, Supplier<Callable<Map<String, String>>> retrieveLastRunHistory) { | ||
| final Duration timeout = Duration.ofMinutes(2); | ||
| final Duration timeout = Duration.ofMinutes(5); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why to change this? There would be maximum 2-3 savings account where periodic accrual handling is configured... it should not even run for 10 secs... no need to change this!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed
adamsaghy
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please review my comments!
3e7cf54 to
9ea0c9b
Compare
|
Hi, i made the changes, can you help me to review again please ? |
sayhaed
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
HI @adamsaghy, can you help us to review the changes please?
.../test/java/org/apache/fineract/integrationtests/SavingsAccrualAccountingIntegrationTest.java
Show resolved
Hide resolved
| minBalanceForInterestCalculation, isSavingsInterestPostingAtCurrentPeriodEnd, isUserPosting, | ||
| financialYearBeginningMonth); | ||
|
|
||
| postingPeriod.setOverdraftInterestRateAsFraction( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, thanks. I've added the MathContext
| private static final Set<String> SAVINGS_PRODUCT_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList( | ||
| SavingsApiConstants.localeParamName, SavingsApiConstants.monthDayFormatParamName, nameParamName, shortNameParamName, | ||
| descriptionParamName, currencyCodeParamName, digitsAfterDecimalParamName, inMultiplesOfParamName, | ||
| interestReceivableAccount, descriptionParamName, currencyCodeParamName, digitsAfterDecimalParamName, inMultiplesOfParamName, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, thanks for the suggestion. I moved INTEREST_RECEIVABLE to be grouped with the other GL account fields. The change is applied.
| private TaxGroup taxGroup; | ||
|
|
||
| @Column(name = "accrued_till_date") | ||
| protected LocalDate accruedTillDate; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've changed it, thanks
|
|
||
| Long retrieveAccountIdByExternalId(ExternalId externalId); | ||
|
|
||
| Collection<SavingsAccrualData> retrievePeriodicAccrualData(LocalDate tillDate, SavingsAccount savings); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We change it to a list, thanks
|
|
||
| private void awaitJob(Instant beforeExecuteTime, Supplier<Callable<Map<String, String>>> retrieveLastRunHistory) { | ||
| final Duration timeout = Duration.ofMinutes(2); | ||
| final Duration timeout = Duration.ofMinutes(5); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed
|
HI @adamsaghy, can you help us to review the changes please? |
0b2e08c to
19fa34a
Compare
adamsaghy
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, but rely on #4876, that PR must be merged before this.
cf3fdf4 to
a1fd289
Compare
aef986f to
bad5f29
Compare
|
Merged afer #4876 |
This quality of life patch reduces static weaving log message priority,
reducing the default gradle build output by about 60 lines.
example gradle run with these messages:
> Configure project :custom
ℹ Skipping static weaving configuration for non-Java project: custom
> Configure project :fineract-accounting
Configuring EclipseLink static weaving for fineract-accounting
> Configure project :fineract-branch
Configuring EclipseLink static weaving for fineract-branch
...
* update release notice years in NOTICE_RELEASE and NOTICE_SOURCE
* step 5
* simplify mention of tests: "Ensure all tests pass for this commit both in CI and locally"
* recommend GPG signing annotated release tag
* step 8: improve svn commands
* This way is simpler and more efficient, especially with a bunch of release candidate dirs in the staging area.
* step 10: mention need to test rc before +1 vote -- See:
* https://www.apache.org/legal/release-policy.html#release-approval
* https://www.apache.org/legal/release-policy.html#approving-a-release
* step 12: only PMC members can upload releases
* step 13: simplify & explain "finalize branch" instructions
* Document what worked for me for 1.12.1.
* I didn't need to create the extra `merge-$VERSION` branch and do the recursive merge.
* document how asciidoctor upgrade is blocked
* see "official docs - deps stuck" thread on fineract dev mailing list
* https://lists.apache.org/thread/7mmsj13spb11vgz0z38fhwgzwtq03brr
* can't upgrade to 4.x because of one of these:
* asciidoctor/asciidoctorj-pdf#25
* jruby/jruby#5573
* asciidoctor/asciidoctorj-pdf#16
* improve asciidoc config - opt for simplicity where the complexity adds nothing
* compat-mode is off by default, no need for it here
* default optimization should be fine
* media should have been screen | print | prepress, just leave it as default instead
* page size? I really don't think this is going to be printed much, just go with default
* PDF version 1.8 is invalid, just use the default unless we someday have a good reason to pin this
* reduce copyright years sources of truth
* see also: https://docs.asciidoctor.org/pdf-converter/latest/asciidoc-attributes/
* remove unnecessary asciidoctorj 3.0.0 version string -- no need to pin this
* remove prompt character from Bash shell examples
* it isn't properly syntax-highlighted and it looks confusing with line numbers (which we might want to add)
* it isn't necessary
* the prompt character ("%" in this case) is not typically included in shell code examples because it makes it harder to copy and paste shell code examples
* $ is likely more common than % (at least on Debian/Ubuntu), but either way I'd say exclude it
* fix source code syntax labels - use "bash" only when it is actually Bash shell code
* persistence.adoc
* fix broken enumerated list
* resolves these warnings seen with, e.g.: `gradle --info doc`
* `Jul 27, 2025 8:26:48 PM uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb parse_list_item`
* `WARNING: chapters/architecture/persistence.adoc: line 104: list item index: expected 1, got 2`
* `Jul 27, 2025 8:26:48 PM uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb parse_list`
* `WARNING: chapters/architecture/persistence.adoc: line 110: list item index: expected 1, got 3`
* fix wrapping (we use hardbreaks)
* fix typo: `s/plane text/plain text/`
* switch to rouge syntax highlighter - it handles more source languages
* fix broken long shell code lines
* fix .avro file syntax highlighting (it's JSON)
* configuration-gpg.adoc
* fix accidental block continuation
* One little plus sign was making `= Email` appear verbatim in rendered output because it was interpreted as a list continuation.
* See https://docs.asciidoctor.org/asciidoc/latest/lists/continuation/#list-continuation
* recommend more secure keys
* add a line continuation for an enumerated list
* architecture-overview.puml: remove this unused (likely a "Hello World") diagram
* release-schedule.puml: fix pluralization of days
* purely aesthetic: doesn't affect chart rendering
* fix src/bin/binary tarball name typos
* missed a few in e090da2
* fix release branch name
* must match `release/{revnumber}`, per gitVersioning stanza in top level build.gradle
* harden.adoc: fix broken link to CISA
* fineract-doc/build.gradle
* ensure HTML task has diagrams and images availble
FINERACT-2317: Add documentation for approved amount modification endpoints
Bump actions/cache from 4.2.3 to 4.2.4
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@5a3ec84...0400d5f)
---
updated-dependencies:
- dependency-name: actions/cache
dependency-version: 4.2.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <[email protected]>
FINERACT-2314: IP tracking (apache#4825)
Co-authored-by: Juan Pablo Alvarez Hernandez <work_jpa@hotmailcom>
FINERACT-2340: remove nonexistant project "fineract-api" (apache#4924)
FINERACT-2326: The journal entries should be ordered in explicit order
FINERACT-2338: Allow backdated interest change on progressive loans - documentation
FINERACT-2326: Improve null-safety
FINERACT-2338: Allow backdated interest change on progressive loans
- charge-off handling
- write-off handling
- closed loans
- external owner changes
FINERACT-2326: Tax component and group issue serialization
FINERACT-2326: Charges with Tax group Id ignored
FINERACT-2323: support the multiple legs for journal entries
FINERACT-2326: [DOC] Interest rate change documentation
FINERACT-2324: Remove getLoanTransactions from accounting
FINERACT-2326: Fix swagger generation
FINERACT-2343: Fix update currency api validation
FINERACT-2343: added e2e tests for business date and currency validation
FINERACT-2326: Improve command query param regexp to allow hyphens
FINERACT-2326: Fix swagger generation
FINERACT-2326: Fix swagger generation
Bump actions/checkout from 4.2.2 to 5.0.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@11bd719...08c6903)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 5.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
FINERACT-2326: Extract out external dependencies from Client and Group entity
FINERACT-2330: Buy-Down fees Accounting for non merchant product
FINERACT-2326: Missing user permission for Capitalized Income and Buydown fee
FINERACT-2181: Update dependency node to v22
FINERACT-2181: Update dependency com.puppycrawl.tools:checkstyle to v11
FINERACT-2326: Fix UserLoanPermissionTest
FINERACT-2326: Use Hibernate Validator
FINERACT-2232: DeferredIncomeApi as CapitalizedIncomeApi
FINERACT-2326: Introduce FineractProgressiveLoanBeanConfiguration to allow conditionally register beans in `fineract-progressive-loan` module
FINERACT-2326: Rework business date validation and dto handling
FINERACT-2233: Rework journal entry handling logic in Loan module
FINERACT-2279: Add contract termination documentation
FINERACT-1981: Reschedule loan with interest rate change from zero breaks repayment schedule and loan status to OVERPAID
FINERACT-1981: Reschedule loan with interest rate change from zero breaks repayment schedule and loan status to OVERPAID - E2E tests
FINERACT-2312: Adjustment to savings account products by adding a new accounting account interest receivables account. (apache#4876)
FINERACT-2312: Accruals added for savings accounts (apache#4885)
cambios para reverse
test
author Aman-Mittal <[email protected]> 1755282444 +0530 committer Aman-Mittal <[email protected]> 1756043679 +0530 parent 0f53f77 author Aman-Mittal <[email protected]> 1755282444 +0530 committer Aman-Mittal <[email protected]> 1756043674 +0530 parent 0f53f77 author Aman-Mittal <[email protected]> 1755282444 +0530 committer Aman-Mittal <[email protected]> 1756043668 +0530 parent 0f53f77 author Aman-Mittal <[email protected]> 1755282444 +0530 committer Aman-Mittal <[email protected]> 1756043655 +0530 parent 0f53f77 author Aman-Mittal <[email protected]> 1755282444 +0530 committer Aman-Mittal <[email protected]> 1756043650 +0530 parent 0f53f77 author Aman-Mittal <[email protected]> 1755282444 +0530 committer Aman-Mittal <[email protected]> 1756043640 +0530 parent 0f53f77 author Aman-Mittal <[email protected]> 1755282444 +0530 committer Aman-Mittal <[email protected]> 1756043234 +0530 # This is a combination of 30 commits. # This is the 1st commit message: minor sonarqube fixes apply java sptless changes spotless apply Bump actions/checkout from 4.2.2 to 5.0.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@11bd719...08c6903) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> FINERACT-2326: Extract out external dependencies from Client and Group entity FINERACT-2330: Buy-Down fees Accounting for non merchant product FINERACT-2326: Missing user permission for Capitalized Income and Buydown fee # This is the commit message #2: FINERACT-2181: Update dependency node to v22 # This is the commit message #3: FINERACT-2181: Update dependency com.puppycrawl.tools:checkstyle to v11 # This is the commit message apache#4: FINERACT-2326: Fix UserLoanPermissionTest # This is the commit message apache#5: FINERACT-2326: Use Hibernate Validator # This is the commit message apache#6: FINERACT-2232: DeferredIncomeApi as CapitalizedIncomeApi # This is the commit message apache#7: FINERACT-2326: Introduce FineractProgressiveLoanBeanConfiguration to allow conditionally register beans in `fineract-progressive-loan` module # This is the commit message apache#8: FINERACT-2326: Rework business date validation and dto handling # This is the commit message apache#9: FINERACT-2233: Rework journal entry handling logic in Loan module # This is the commit message apache#10: FINERACT-2279: Add contract termination documentation # This is the commit message apache#11: FINERACT-1981: Reschedule loan with interest rate change from zero breaks repayment schedule and loan status to OVERPAID # This is the commit message apache#12: FINERACT-1981: Reschedule loan with interest rate change from zero breaks repayment schedule and loan status to OVERPAID - E2E tests Implemented Sonar Fixes # This is the commit message apache#13: FINERACT-2312: Adjustment to savings account products by adding a new accounting account interest receivables account. (apache#4876) # This is the commit message apache#14: FINERACT-2312: Accruals added for savings accounts (apache#4885) # This is the commit message apache#15: added e2e tests for validation of progressive Loan schedule handling - Reschedule installment (Extend repayment period) # This is the commit message apache#16: FINERACT-1981: Progressive Loan schedule handling - Reschedule installment (Extend repayment period) # This is the commit message apache#17: FINERACT-2330: Buy-Down fees adjustment Acct for non merchant product # This is the commit message apache#18: FINERACT-2330: added e2e tests for buy down fee for non-merchant # This is the commit message apache#19: FINERACT-2327: when Interest Refund was created manually, we should only return the newly created Interest Refund transaction identifiers in the result. # This is the commit message apache#20: FINERACT-2317: Fix updating the available disbursed amount to zero after loan approval # This is the commit message apache#21: FINERACT-2317: added e2e tests for update available disb amount validation with zero value # This is the commit message apache#22: FINERACT-2326: Backdated loan charge-off accrual fix # This is the commit message apache#23: FINERACT-1926: Add previous owner to ExternalAssetOwnerTransfer # This is the commit message apache#24: FINERACT-1926: added e2e tests for asset owner event changes with previous owner # This is the commit message apache#25: Bump actions/setup-java from 4.7.1 to 5.0.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.7.1 to 5.0.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@c5195ef...dded088) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> # This is the commit message apache#26: FINERACT-2337 Fix docker publish for tags # This is the commit message apache#27: FINERACT-2349: final 1.12.1 release doc updates Tidy up docs post-1.12.1 release, alongside updates to https://cwiki.apache.org/confluence/display/FINERACT/ # This is the commit message apache#28: FINERACT-2326: Deregister static mocks # This is the commit message apache#29: Bump actions/checkout from 4.2.2 to 5.0.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@11bd719...08c6903) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> # This is the commit message apache#30: FINERACT-2326: Extract out external dependencies from Client and Group entity FINERACT-2326: Missing user permission for Capitalized Income and Buydown fee FINERACT-2181: Update dependency node to v22 FINERACT-2181: Update dependency com.puppycrawl.tools:checkstyle to v11 FINERACT-2326: Fix UserLoanPermissionTest FINERACT-2232: DeferredIncomeApi as CapitalizedIncomeApi FINERACT-2326: Introduce FineractProgressiveLoanBeanConfiguration to allow conditionally register beans in `fineract-progressive-loan` module FINERACT-2326: Rework business date validation and dto handling FINERACT-2279: Add contract termination documentation FINERACT-1981: Reschedule loan with interest rate change from zero breaks repayment schedule and loan status to OVERPAID - E2E tests FINERACT-2312: Accruals added for savings accounts (apache#4885) FINERACT-1981: Progressive Loan schedule handling - Reschedule installment (Extend repayment period) FINERACT-2330: Buy-Down fees adjustment Acct for non merchant product FINERACT-2330: added e2e tests for buy down fee for non-merchant FINERACT-2327: when Interest Refund was created manually, we should only return the newly created Interest Refund transaction identifiers in the result. FINERACT-2317: added e2e tests for update available disb amount validation with zero value FINERACT-2326: Backdated loan charge-off accrual fix FINERACT-1926: Add previous owner to ExternalAssetOwnerTransfer FINERACT-1926: added e2e tests for asset owner event changes with previous owner Bump actions/setup-java from 4.7.1 to 5.0.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.7.1 to 5.0.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@c5195ef...dded088) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> FINERACT-2337 Fix docker publish for tags FINERACT-2349: final 1.12.1 release doc updates Tidy up docs post-1.12.1 release, alongside updates to https://cwiki.apache.org/confluence/display/FINERACT/ FINERACT-2326: Deregister static mocks
* Bump actions/checkout from 4.2.2 to 5.0.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@11bd719...08c6903) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> * FINERACT-2326: Extract out external dependencies from Client and Group entity * FINERACT-2330: Buy-Down fees Accounting for non merchant product * FINERACT-2326: Missing user permission for Capitalized Income and Buydown fee * FINERACT-2181: Update dependency node to v22 * FINERACT-2181: Update dependency com.puppycrawl.tools:checkstyle to v11 * FINERACT-2326: Fix UserLoanPermissionTest * FINERACT-2326: Use Hibernate Validator * FINERACT-2232: DeferredIncomeApi as CapitalizedIncomeApi * FINERACT-2326: Introduce FineractProgressiveLoanBeanConfiguration to allow conditionally register beans in `fineract-progressive-loan` module * FINERACT-2326: Rework business date validation and dto handling * FINERACT-2233: Rework journal entry handling logic in Loan module * FINERACT-2279: Add contract termination documentation * FINERACT-1981: Reschedule loan with interest rate change from zero breaks repayment schedule and loan status to OVERPAID * FINERACT-1981: Reschedule loan with interest rate change from zero breaks repayment schedule and loan status to OVERPAID - E2E tests * FINERACT-2312: Adjustment to savings account products by adding a new accounting account interest receivables account. (apache#4876) * FINERACT-2312: Accruals added for savings accounts (apache#4885) * added e2e tests for validation of progressive Loan schedule handling - Reschedule installment (Extend repayment period) * FINERACT-1981: Progressive Loan schedule handling - Reschedule installment (Extend repayment period) * FINERACT-2330: Buy-Down fees adjustment Acct for non merchant product * FINERACT-2330: added e2e tests for buy down fee for non-merchant * FINERACT-2327: when Interest Refund was created manually, we should only return the newly created Interest Refund transaction identifiers in the result. * FINERACT-2317: Fix updating the available disbursed amount to zero after loan approval * FINERACT-2317: added e2e tests for update available disb amount validation with zero value * FINERACT-2326: Backdated loan charge-off accrual fix * FINERACT-1926: Add previous owner to ExternalAssetOwnerTransfer * FINERACT-1926: added e2e tests for asset owner event changes with previous owner * Bump actions/setup-java from 4.7.1 to 5.0.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.7.1 to 5.0.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@c5195ef...dded088) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> * FINERACT-2337 Fix docker publish for tags * FINERACT-2349: final 1.12.1 release doc updates Tidy up docs post-1.12.1 release, alongside updates to https://cwiki.apache.org/confluence/display/FINERACT/ * FINERACT-2326: Deregister static mocks --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jose Alberto Hernandez <[email protected]> Co-authored-by: Soma Sörös <[email protected]> Co-authored-by: Mend Renovate <[email protected]> Co-authored-by: mariiaKraievska <[email protected]> Co-authored-by: Adam Saghy <[email protected]> Co-authored-by: Oleksii Novikov <[email protected]> Co-authored-by: Peter Kovacs <[email protected]> Co-authored-by: 04Gomez <[email protected]> Co-authored-by: Christopher Sayhaed Giron Vega <[email protected]> Co-authored-by: Rustam Zeinalov <[email protected]> Co-authored-by: MarianaDmytrivBinariks <[email protected]> Co-authored-by: Attila Budai <[email protected]> Co-authored-by: adam.magyari <[email protected]> Co-authored-by: Arun K <[email protected]> Co-authored-by: Adam Monsen <[email protected]>
Description
Accruals added for savings accounts
-Generate the accruals job.
-Add the corresponding change to the savings account functionality.
-Transactions will be posted according to the product configuration.
-Accounting accounts that are positive point to the default values in the code, and negative accounts that are negative point to the new accounting account. If the accounting account is not configured, it will point to the default accounting accounts.
Ignore if these details are present on the associated Apache Fineract JIRA ticket.
Checklist
Please make sure these boxes are checked before submitting your pull request - thanks!
FYI our guidelines for code reviews are at https://cwiki.apache.org/confluence/display/FINERACT/Code+Review+Guide.