elnafateh created FINERACT-2740:
-----------------------------------
Summary: Reviewed Loan-Loss Provisioning Entry Lifecycle
Key: FINERACT-2740
URL: https://issues.apache.org/jira/browse/FINERACT-2740
Project: Apache Fineract
Issue Type: Improvement
Components: Loan
Reporter: elnafateh
Loan-loss provisioning entries can have their journal entries posted
immediately upon creation, via the createjournalentry command. There is no
review step: a provisioning entry that has just been generated can have its
reserves posted to the general ledger without anyone confirming the entry is
correct first.
This is a gap relative to how Fineract typically treats accounting-impacting
actions. Other financially significant workflows in the system, loan reschedule
requests for example, require an explicit review-and-decide step. The record is
created in a pending state, and a separate, deliberate action moves it forward,
before the action with real financial consequences is allowed to happen.
Provisioning has no equivalent. Creation and journal-posting are two separate
API calls today, but nothing stops the second from immediately following the
first.\
h4. *Expected Behavior*
A provisioning entry should carry a review status, distinct from whether its
journal entries have been created: draft (generated but not yet reviewed),
approved (reviewed and accepted), or rejected (reviewed and declined).
h4. *Transitions*
A newly created provisioning entry starts in draft.
A draft entry can be moved to approved or rejected
An approved entry may be reverted back to draft ("undo"), but only if no
journal entries have been created for it yet.
A rejected entry has no further transitions available.
h4. *How this constrains existing behavior*
Journal entries may only be created for a provisioning entry that is currently
approved. Posting for a draft or rejected entry must fail, with nothing posted.
This includes the existing option to request immediate journal posting at
creation time; a newly created entry is always draft, so that request must fail
the same way.
Regenerating a provisioning entry's underlying rows (the existing "recreate"
action) must only be allowed while the entry is still in draft.
These three new methods should live on ProvisioningEntriesWritePlatformService:
approveProvisioningEntry(Long provisioningEntryId, JsonCommand command)
rejectProvisioningEntry(Long provisioningEntryId, JsonCommand command)
undoProvisioningEntryApproval(Long provisioningEntryId, JsonCommand command)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)