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 }