001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.module.endow.document.validation.impl; 017 018 import org.kuali.kfs.module.endow.businessobject.EndowmentSourceTransactionLine; 019 import org.kuali.kfs.module.endow.businessobject.EndowmentTransactionLine; 020 import org.kuali.kfs.module.endow.document.EndowmentTaxLotLinesDocumentBase; 021 import org.kuali.kfs.module.endow.document.EndowmentTransactionLinesDocument; 022 import org.kuali.kfs.module.endow.document.LiabilityIncreaseDocument; 023 import org.kuali.kfs.module.endow.document.service.LiabilityDocumentService; 024 import org.kuali.kfs.sys.context.SpringContext; 025 import org.kuali.rice.kns.document.Document; 026 import org.kuali.rice.kns.util.GlobalVariables; 027 028 public class LiabilityIncreaseDocumentRules extends EndowmentTransactionLinesDocumentBaseRules { 029 030 031 /** 032 * @see org.kuali.kfs.module.endow.document.validation.AddTransactionLineRule#processAddTransactionLineRules(org.kuali.kfs.module.endow.document.EndowmentTransactionLinesDocument, 033 * org.kuali.kfs.module.endow.businessobject.EndowmentTransactionLine) 034 */ 035 @Override 036 public boolean processAddTransactionLineRules(EndowmentTransactionLinesDocument transLineDocument, EndowmentTransactionLine line) { 037 boolean isValid = true; 038 039 String ERROR_PREFIX = getErrorPrefix(line, -1); 040 041 isValid &= validateSecurity(isValid, (LiabilityIncreaseDocument) transLineDocument, false); 042 043 isValid &= validateRegistration(isValid, (LiabilityIncreaseDocument) transLineDocument, false); 044 045 if (isValid) { 046 isValid &= super.processAddTransactionLineRules(transLineDocument, line); 047 } 048 049 if (!isValid) 050 return isValid; 051 052 LiabilityDocumentService taxLotsService = SpringContext.getBean(LiabilityDocumentService.class); 053 LiabilityIncreaseDocument liabilityIncreaseDocument = (LiabilityIncreaseDocument) transLineDocument; 054 boolean isSource = line instanceof EndowmentSourceTransactionLine ? true : false; 055 taxLotsService.updateLiabilityIncreaseTransactionLineTaxLots(isSource, (EndowmentTaxLotLinesDocumentBase) liabilityIncreaseDocument, line); 056 057 return GlobalVariables.getMessageMap().getErrorCount() == 0; 058 } 059 060 /** 061 * This method validates the Tx line but from Liability Increase perspective. 062 * 063 * @param endowmentTransactionLinesDocumentBase 064 * @param line 065 * @param index 066 * @return 067 */ 068 protected boolean validateTransactionLine(EndowmentTransactionLinesDocument endowmentTransactionLinesDocument, EndowmentTransactionLine line, int index) { 069 boolean isValid = true; 070 071 isValid &= super.validateTransactionLine(endowmentTransactionLinesDocument, line, index); 072 073 if (isValid) { 074 // Obtain Prefix for Error fields in UI. 075 String ERROR_PREFIX = getErrorPrefix(line, index); 076 077 // Ensure for cash Tx do not have a Etran. 078 isValid &= checkCashTransactionEndowmentCode(endowmentTransactionLinesDocument, line, ERROR_PREFIX); 079 080 if (endowmentTransactionLinesDocument.isErrorCorrectedDocument()) { 081 // Validate Amount is Less than Zero. 082 isValid &= validateTransactionAmountLessThanZero(line, ERROR_PREFIX); 083 084 // Validate Units is Less than Zero. 085 isValid &= validateTransactionUnitsLessThanZero(line, ERROR_PREFIX); 086 } 087 else { 088 // Validate Amount is Greater than Zero. 089 isValid &= validateTransactionAmountGreaterThanZero(line, ERROR_PREFIX); 090 091 // Validate Units is Greater than Zero. 092 isValid &= validateTransactionUnitsGreaterThanZero(line, ERROR_PREFIX); 093 } 094 095 // Validates Units & Amount are equal. 096 isValid &= validateTransactionUnitsAmountEqual(line, ERROR_PREFIX); 097 } 098 099 return GlobalVariables.getMessageMap().getErrorCount() == 0; 100 } 101 102 /** 103 * @see org.kuali.rice.kns.rules.DocumentRuleBase#processCustomRouteDocumentBusinessRules(org.kuali.rice.kns.document.Document) 104 */ 105 @Override 106 protected boolean processCustomRouteDocumentBusinessRules(Document document) { 107 boolean isValid = super.processCustomRouteDocumentBusinessRules(document); 108 109 LiabilityIncreaseDocument liabilityIncreaseDocument = (LiabilityIncreaseDocument) document; 110 111 if (isValid) { 112 // Validate Security 113 isValid &= validateSecurity(isValid, liabilityIncreaseDocument, false); 114 115 // Validate Registration code. 116 isValid &= validateRegistration(isValid, liabilityIncreaseDocument, false); 117 118 if (!isValid) 119 return isValid; 120 121 // Empty out the Source Tx Line in weird case they got entered. 122 liabilityIncreaseDocument.getSourceTransactionLines().clear(); 123 124 // Validate atleast one Tx was entered. 125 if (!transactionLineSizeGreaterThanZero(liabilityIncreaseDocument, false)) 126 return false; 127 128 isValid &= super.processCustomSaveDocumentBusinessRules(document); 129 } 130 131 return GlobalVariables.getMessageMap().getErrorCount() == 0; 132 } 133 134 }