use of org.mifos.application.servicefacade.CollectionSheetEntryDecomposedDto in project head by mifos.
the class CollectionSheetEntryAction method create.
@TransactionDemarcate(validateAndResetToken = true)
public ActionForward create(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) throws PageExpiredException {
logTrackingInfo("create", request, form);
final BulkEntryActionForm collectionSheetActionForm = (BulkEntryActionForm) form;
final CollectionSheetEntryGridDto previousCollectionSheetEntryDto = retrieveFromRequestCollectionSheetEntryDto(request);
final CollectionSheetEntryDecomposedDto decomposedViews = new CollectionSheetEntryViewTranslator().toDecomposedView(previousCollectionSheetEntryDto.getBulkEntryParent());
logBeforeSave(request, collectionSheetActionForm, previousCollectionSheetEntryDto);
final long beforeSaveData = System.currentTimeMillis();
final CollectionSheetErrorsDto collectionSheetErrors = this.collectionSheetServiceFacade.saveCollectionSheet(previousCollectionSheetEntryDto, getUserContext(request).getId());
logAfterSave(request, decomposedViews, System.currentTimeMillis() - beforeSaveData, collectionSheetErrors.isDatabaseError());
storeOnRequestErrorAndCollectionSheetData(request, decomposedViews, collectionSheetErrors);
request.setAttribute(CollectionSheetEntryConstants.CENTER, previousCollectionSheetEntryDto.getBulkEntryParent().getCustomerDetail().getDisplayName());
setErrorMessagesIfErrorsExist(request, collectionSheetErrors);
/*
* Visit CREATESUCCESS if user entered data that breaks business rules, such as withdrawing more than the total
* amount in a savings account. Is this intended? It seems like we wouldn't want to even call
* saveCollectionSheet if business rules were violated in this manner.
*
* JohnW: Yes it is intended. The collection sheet logic 'does what it can' in terms of updating accounts. It
* allows for accounts with no issues to be persisted while building up error lists (warning lists really) for
* accounts that have problems (including breaking business rules) preventing them being persisted.
*
* So, in summary, what happens is, although "saveCollectionSheet" is called, part of the responsibility of the
* "saveCollectionSheet" process is to identify for each account if rules are broken. Only accounts that 'pass'
* are saved, the others are identified so that a warning message can be shown.
*/
return mapping.findForward(CollectionSheetEntryConstants.CREATESUCCESS);
}
Aggregations