public boolean checkInstitutionalProposalPersonUnitCreditSplitTotals( InstitutionalProposalPersonUnitCreditSplitRuleEvent event) { int errorCount = 0; for (InvestigatorCreditType creditType : loadInvestigatorCreditTypes()) { if (creditType.addsToHundred()) { ScaleTwoDecimal value = event.getTotalsByCreditSplitType().get(creditType.getCode()); if (value == null) { break; // value may not have been initialized yet, so we don't want to block save } if (!MAX_TOTAL_VALUE.subtract(value).isZero()) { InstitutionalProposalCreditSplitAuditError.addAuditError( PROPOSAL_PERSON_UNIT_CREDIT_SPLIT_ERROR_MSG_KEY, creditType.getDescription()); errorCount++; } } } return errorCount == 0; }