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.ld.document.validation.impl; 017 018 import org.kuali.kfs.module.ld.LaborKeyConstants; 019 import org.kuali.kfs.module.ld.businessobject.BenefitsCalculation; 020 import org.kuali.rice.kns.document.MaintenanceDocument; 021 import org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase; 022 import org.kuali.rice.kns.util.KualiDecimal; 023 import org.kuali.rice.kns.util.ObjectUtils; 024 025 /** 026 * Business rule(s) applicable to Benefit Calculation Documents. 027 */ 028 public class BenefitsCalculationDocumentRule extends MaintenanceDocumentRuleBase { 029 030 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BenefitsCalculationDocumentRule.class); 031 protected BenefitsCalculation oldBenefitsCalculation; 032 protected BenefitsCalculation newBenefitsCalculation; 033 034 /** 035 * Constructs a BenefitsCalculationDocumentRule.java. 036 */ 037 public BenefitsCalculationDocumentRule() { 038 super(); 039 } 040 041 /** 042 * Processes the rules 043 * 044 * @param document MaintenanceDocument type of document to be processed. 045 * @return boolean true when success 046 * @see org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase#processCustomApproveDocumentBusinessRules(org.kuali.rice.kns.document.MaintenanceDocument) 047 */ 048 @Override 049 protected boolean processCustomApproveDocumentBusinessRules(MaintenanceDocument document) { 050 051 LOG.info("Entering processCustomApproveDocumentBusinessRules()"); 052 053 // process rules 054 checkRules(document); 055 056 return true; 057 } 058 059 /** 060 * Processes the rules 061 * 062 * @param document MaintenanceDocument type of document to be processed. 063 * @return boolean true when success 064 * @see org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase#processCustomRouteDocumentBusinessRules(org.kuali.rice.kns.document.MaintenanceDocument) 065 */ 066 @Override 067 protected boolean processCustomRouteDocumentBusinessRules(MaintenanceDocument document) { 068 069 boolean success = true; 070 071 LOG.info("Entering processCustomRouteDocumentBusinessRules()"); 072 073 // process rules 074 success &= checkRules(document); 075 076 return success; 077 } 078 079 /** 080 * Processes the rules 081 * 082 * @param document MaintenanceDocument type of document to be processed. 083 * @return boolean true when success 084 * @see org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase#processCustomSaveDocumentBusinessRules(org.kuali.rice.kns.document.MaintenanceDocument) 085 */ 086 @Override 087 protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) { 088 089 boolean success = true; 090 091 LOG.info("Entering processCustomSaveDocumentBusinessRules()"); 092 093 // process rules 094 success &= checkRules(document); 095 096 return success; 097 } 098 099 /** 100 * Checks the fringe benefit percentage cannot be equal to or over 100% 101 * 102 * @param document MaintenanceDocument type 103 * @return boolean false when the fringe benefit percentage cannot be equal to or over 100% 104 */ 105 protected boolean checkRules(MaintenanceDocument document) { 106 107 boolean success = true; 108 109 /* The fringe benefit percentage cannot be equal to or over 100% */ 110 if (ObjectUtils.isNotNull(newBenefitsCalculation.getPositionFringeBenefitPercent())) { 111 if (newBenefitsCalculation.getPositionFringeBenefitPercent().isGreaterEqual(new KualiDecimal(100))) { 112 putFieldError("positionFringeBenefitPercent", LaborKeyConstants.ERROR_FRINGE_BENEFIT_PERCENTAGE_INVALID); 113 success = false; 114 } 115 } 116 117 return success; 118 } 119 120 /** 121 * This method sets the convenience objects like newAccount and oldAccount, so you have short and easy handles to the new and 122 * old objects contained in the maintenance document. It also calls the BusinessObjectBase.refresh(), which will attempt to load 123 * all sub-objects from the DB by their primary keys, if available. 124 * 125 * @param document - the maintenanceDocument being evaluated 126 * @return none 127 */ 128 @Override 129 public void setupConvenienceObjects() { 130 131 // setup oldBenefitsCalculation convenience objects, make sure all possible sub-objects are populated 132 oldBenefitsCalculation = (BenefitsCalculation) super.getOldBo(); 133 134 // setup newBenefitsCalculation convenience objects, make sure all possible sub-objects are populated 135 newBenefitsCalculation = (BenefitsCalculation) super.getNewBo(); 136 } 137 138 }