View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.module.bc.batch.service.impl;
20  
21  import org.kuali.kfs.module.bc.batch.dataaccess.BudgetConstructionHumanResourcesPayrollInterfaceDao;
22  import org.kuali.kfs.module.bc.batch.service.BudgetConstructionHumanResourcesPayrollInterfaceService;
23  import org.springframework.transaction.annotation.Transactional;
24  
25  @Transactional
26  public class BudgetConstructionHumanResourcesPayrollInterfaceServiceImpl implements BudgetConstructionHumanResourcesPayrollInterfaceService {
27  
28      protected BudgetConstructionHumanResourcesPayrollInterfaceDao budgetConstructionHumanResourcesPayrollInterfaceDao;
29      
30      
31      /**
32       * 
33       * @see org.kuali.kfs.module.bc.batch.service.BudgetConstructionHumanResourcesPayrollInterfaceService#refreshBudgetConstructionPosition(java.lang.Integer, boolean, boolean)
34       */
35      public void refreshBudgetConstructionPosition(Integer baseYear, boolean positionSynchOK, boolean CSFUpdateOK) {
36       /**
37        *  base year positions are built only if current payroll information is still flowing into budget construction
38        *  otherwise, the base year positions are frozen
39        */
40          Integer requestYear = baseYear+1;
41          if (positionSynchOK && CSFUpdateOK)
42          {
43              budgetConstructionHumanResourcesPayrollInterfaceDao.buildBudgetConstructionPositionBaseYear(baseYear);
44          }
45          /**
46           *  request year positions are updated as long as human resources information is still flowing into budget construction
47           */
48          if (positionSynchOK)
49          {
50              budgetConstructionHumanResourcesPayrollInterfaceDao.buildBudgetConstructionPositonRequestYear(requestYear);
51              budgetConstructionHumanResourcesPayrollInterfaceDao.buildBudgetConstructionAdministrativePosts();
52          }
53      }
54  
55      /**
56       * 
57       * @see org.kuali.kfs.module.bc.batch.service.BudgetConstructionHumanResourcesPayrollInterfaceService#refreshBudgetConstructionIntendedIncumbent(java.lang.Integer, boolean, boolean)
58       */
59      public void refreshBudgetConstructionIntendedIncumbent(Integer baseYear, boolean positionSynchOK, boolean CSFUpdateOK, boolean BCUpdatesAllowed) {
60          Integer requestYear = baseYear+1;
61          /**
62           *  the intended incumbent table is updated when human resources information is still flowing into budget construction.
63           *  when this is no longer the case, only the names are updated (unless all of budget construction is no longer in update mode).
64           */
65          if (positionSynchOK)
66          {
67              if (CSFUpdateOK)
68              {
69                  // we update the faculty level (full, associate, assistant, etc.) only if base payroll information is still flowing into budget construction.
70                  // otherwise, we assume that the base payroll is "frozen" as a base-line for salary setting, and we stop allowing people to move between faculty levels.
71                  // this version builds intended incumbent and updates faculty ranks.
72                  budgetConstructionHumanResourcesPayrollInterfaceDao.buildBudgetConstructionIntendedIncumbentWithFacultyAttributes(requestYear);
73              }
74              else
75              {
76                  // this version builds intended incumbent without adding anyone to the faculty levels.
77                  budgetConstructionHumanResourcesPayrollInterfaceDao.buildBudgetConstructionIntendedIncumbent(requestYear);
78              }
79          }
80          else
81          {
82             // the name is always updated if the budget is in update mode, even if intended incumbent was not rebuilt because position synchronization was off.
83              if (BCUpdatesAllowed)
84              {
85                 budgetConstructionHumanResourcesPayrollInterfaceDao.updateNamesInBudgetConstructionIntendedIncumbent();
86              }
87          }
88      }
89  
90      public void setBudgetConstructionHumanResourcesPayrollInterfaceDao (BudgetConstructionHumanResourcesPayrollInterfaceDao budgetConstructionHumanResourcesPayrollInterfaceDao)
91      {
92          this.budgetConstructionHumanResourcesPayrollInterfaceDao = budgetConstructionHumanResourcesPayrollInterfaceDao;
93      }
94      
95  }