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.LiabilityDecreaseDocument;
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 LiabilityDecreaseDocumentRules 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, (LiabilityDecreaseDocument) transLineDocument, true);
042
043 isValid &= validateRegistration(isValid, (LiabilityDecreaseDocument) transLineDocument, true);
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 LiabilityDecreaseDocument liabilityDecreaseDocument = (LiabilityDecreaseDocument) transLineDocument;
054 boolean isSource = line instanceof EndowmentSourceTransactionLine ? true : false;
055 taxLotsService.updateLiabilityDecreaseTransactionLineTaxLots(isSource, (EndowmentTaxLotLinesDocumentBase) liabilityDecreaseDocument, 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 @Override
069 protected boolean validateTransactionLine(EndowmentTransactionLinesDocument endowmentTransactionLinesDocument, EndowmentTransactionLine line, int index) {
070 boolean isValid = true;
071
072 isValid &= super.validateTransactionLine(endowmentTransactionLinesDocument, line, index);
073
074 if (isValid) {
075 // Obtain Prefix for Error fields in UI.
076 String ERROR_PREFIX = getErrorPrefix(line, index);
077
078 // Ensure for cash Tx do not have a Etran.
079 isValid &= checkCashTransactionEndowmentCode(endowmentTransactionLinesDocument, line, ERROR_PREFIX);
080
081 if (endowmentTransactionLinesDocument.isErrorCorrectedDocument()) {
082 // Validate Amount is Less than Zero.
083 isValid &= validateTransactionAmountLessThanZero(line, ERROR_PREFIX);
084
085 // Validate Units is Less than Zero.
086 isValid &= validateTransactionUnitsLessThanZero(line, ERROR_PREFIX);
087 }
088 else {
089 // Validate Amount is Greater than Zero.
090 isValid &= validateTransactionAmountGreaterThanZero(line, ERROR_PREFIX);
091
092 // Validate Units is Greater than Zero.
093 isValid &= validateTransactionUnitsGreaterThanZero(line, ERROR_PREFIX);
094 }
095
096 // Validates Units & Amount are equal.
097 isValid &= validateTransactionUnitsAmountEqual(line, ERROR_PREFIX);
098 }
099
100 return GlobalVariables.getMessageMap().getErrorCount() == 0;
101 }
102
103 /**
104 * @see org.kuali.rice.kns.rules.DocumentRuleBase#processCustomRouteDocumentBusinessRules(org.kuali.rice.kns.document.Document)
105 */
106 @Override
107 protected boolean processCustomRouteDocumentBusinessRules(Document document) {
108 boolean isValid = super.processCustomRouteDocumentBusinessRules(document);
109 isValid &= !GlobalVariables.getMessageMap().hasErrors();
110
111 LiabilityDecreaseDocument liabilityDecreaseDocument = (LiabilityDecreaseDocument) document;
112
113 if (isValid) {
114 // Validate Security
115 isValid &= validateSecurity(isValid, liabilityDecreaseDocument, true);
116
117 // Validate Registration code.
118 isValid &= validateRegistration(isValid, liabilityDecreaseDocument, true);
119
120 if (!isValid)
121 return isValid;
122
123 // Empty out the Target Tx Line in weird case they got entered.
124 liabilityDecreaseDocument.getTargetTransactionLines().clear();
125
126 // Validate atleast one Tx was entered.
127 if (!transactionLineSizeGreaterThanZero(liabilityDecreaseDocument, true))
128 return false;
129
130 isValid &= super.processCustomSaveDocumentBusinessRules(document);
131 }
132
133 return GlobalVariables.getMessageMap().getErrorCount() == 0;
134 }
135
136 }