private boolean updateManualCheckDisbursementStatus(DisbursementDTO disbursement) { boolean updated = false; if ((DisbursementConstants.PAY_PAYEE_CHECK.equals( disbursement.getDisbursementMethodPaymentCode())) && (disbursement.isManualCheckIndicator())) { Collection<DisbursementStatusDTO> disbursementStatusList = disbursement.getDisbursementStatuses(); for (DisbursementStatusDTO disbursementStatus : disbursementStatusList) { if (DisbursementConstants.DISB_STATUS_TYPE_CODE_ISSUED_PAYMENT.equals( disbursementStatus.getDisbursementStatusType()) && (DisbursementConstants.DISB_STATUS_REASON_CODE_MANUAL_PAYMENT.equals( disbursementStatus.getDisbursementStatusReason()))) { disbursementStatus.setDisbursementStatusReason( DisbursementConstants.DISB_STATUS_REASON_CODE_SENT_TO_PAYMENT_PROCESSOR); DTOUtils.saveEntityWithAssociations(lds, disbursement); updated = true; } } } return updated; }
/** * Update Disbursement Status. * * @param disbursements DisbursementDTO collection */ public void updateDisbursementStatus(Collection<DisbursementDTO> disbursements) { for (DisbursementDTO dto : disbursements) { Collection<DisbursementStatusDTO> statusColl = dto.getDisbursementStatuses(); /* This logic is updating the existing man_pay record, This should be no different from regular status update, expire the existing record * and create a new record for DISB_STATUS_REASON_CODE_SENT_TO_PAYMENT_PROCESSOR * if (updateManualCheckDisbursementStatus(dto)) { continue; }*/ DisbursementStatusDTO voidedDisbStatus = null; for (DisbursementStatusDTO disbursementStatusDTO : statusColl) { if (disbursementStatusDTO.getEndDateTime() == null) { disbursementStatusDTO.setEndDateTime(DateUtility.getSystemDateTime()); } // Check for voids and stop pay no issue statuses if (disbursementStatusDTO .getDisbursementStatusType() .equals(DisbursementConstants.DISB_STATUS_TYPE_CODE_PAYMENT_VOIDED_NOT_REISSUED) || disbursementStatusDTO .getDisbursementStatusType() .equals(DisbursementConstants.DISB_STATUS_TYPE_CODE_PAYMENT_STOPPED_NOT_REISSUED)) { voidedDisbStatus = disbursementStatusDTO; } } DisbursementStatusDTO currentStatus = new DisbursementStatusDTO(); if (voidedDisbStatus != null) { // If voided copy the current codes for the new status record. currentStatus.setDisbursementStatusType(voidedDisbStatus.getDisbursementStatusType()); currentStatus.setDisbursementState(voidedDisbStatus.getDisbursementState()); } else if ((dto.isManualCheckIndicator()) || (dto.getFinancialAgreementTypeCode().equals("dsb") && dto.getDisbursementTypeCode().equals("prenote"))) { currentStatus.setDisbursementStatusType( DisbursementConstants.DISB_STATUS_TYPE_CODE_ISSUED_PAYMENT); currentStatus.setDisbursementState(DisbursementConstants.DISB_STATE_TYPE_CODE_OPEN); } else { currentStatus.setDisbursementStatusType( DisbursementConstants.DISB_STATUS_TYPE_CODE_AWAITING_PAYMENT); currentStatus.setDisbursementState(DisbursementConstants.DISB_STATE_TYPE_CODE_INCOMPLETE); } currentStatus.setDisbursementStatusReason( DisbursementConstants.DISB_STATUS_REASON_CODE_SENT_TO_PAYMENT_PROCESSOR); currentStatus.setEffectiveDateTime(DateUtility.getSystemDateTime()); /** * AP Export Performance Fix - @GR - 03/30/2014 - Save just the Disbursement Status record. */ // dto.getDisbursementStatuses().add(currentStatus); statusColl.add(currentStatus); // DTOUtils.saveEntityWithAssociations(lds, dto); /* * Save the DisbursementStatusBO along with all its * associations from the values in DTO */ // fetch DisbursementBO DisbursementBO disbursement = getDisbursementDao().retrieveDisbursement(dto.getRecordId()); /* * Instantiate the custom mapper for * DisbursementStatusBO */ DisbursementStatusDTOMapper disbStatusDTOMapper = new DisbursementStatusDTOMapper(disbursement); for (DisbursementStatusDTO disbstatus : statusColl) { DTOUtils.saveEntityWithAssociations( lds, disbstatus, DisbursementStatusBO.class, disbStatusDTOMapper, true); } } }