/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.bc.document.dataaccess; import java.util.Collection; import java.util.List; import org.kuali.kfs.module.bc.businessobject.BudgetConstructionAccountOrganizationHierarchy; import org.kuali.kfs.module.bc.businessobject.BudgetConstructionAccountReports; import org.kuali.kfs.module.bc.businessobject.BudgetConstructionFundingLock; import org.kuali.kfs.module.bc.businessobject.BudgetConstructionHeader; import org.kuali.kfs.module.bc.businessobject.BudgetConstructionOrganizationReports; import org.kuali.kfs.module.bc.businessobject.BudgetConstructionPullup; import org.kuali.kfs.module.bc.businessobject.PendingBudgetConstructionAppointmentFunding; import org.kuali.kfs.module.bc.businessobject.PendingBudgetConstructionGeneralLedger; import org.kuali.rice.core.api.util.type.KualiInteger; /** * This interface defines the methods that a BudgetConstructionDao must provide. */ public interface BudgetConstructionDao { /** * This gets a BudgetConstructionHeader using the candidate key chart, account, subaccount, fiscalyear * * @param chartOfAccountsCode * @param accountNumber * @param subAccountNumber * @param fiscalYear * @return BudgetConstructionHeader */ public BudgetConstructionHeader getByCandidateKey(String chartOfAccountsCode, String accountNumber, String subAccountNumber, Integer fiscalYear); /** * This deletes a BudgetConstructionFundingLock from the database * * @param budgetConstructionFundingLock */ public void deleteBudgetConstructionFundingLock(BudgetConstructionFundingLock budgetConstructionFundingLock); /** * This gets the set of BudgetConstructionFundingLocks asssociated with a BC EDoc (account). Each BudgetConstructionFundingLock * has the positionNumber dummy attribute set to the associated Position that is locked. A positionNumber value of "NotFnd" * indicates the BudgetConstructionFundingLock is an orphan. * * @param chartOfAccountsCode * @param accountNumber * @param subAccountNumber * @param fiscalYear * @return Collection<BudgetConstructionFundingLock> */ public Collection<BudgetConstructionFundingLock> getFlocksForAccount(String chartOfAccountsCode, String accountNumber, String subAccountNumber, Integer fiscalYear); /** * Returns the position number associated with a funding lock or the not found string if the lock is an orphan. * * @param budgetConstructionFundingLock - funding lock to get position for * @return position number associated with lock */ public String getPositionAssociatedWithFundingLock(BudgetConstructionFundingLock budgetConstructionFundingLock); /** * This method deletes all BudgetConstructionPullup rows associated with a user. * * @param principalName */ public void deleteBudgetConstructionPullupByUserId(String principalName); /** * This method returns a list of BudgetConstructionPullup objects (organizations) ownded by the user that have the pullflag set * * @param principalName * @return */ public List<BudgetConstructionPullup> getBudgetConstructionPullupFlagSetByUserId(String principalName); /** * This returns a list of BudgetConstructionPullup objects (organizations) that are children to the passed in organization for * the user * * @param principalId * @param chartOfAccountsCode * @param organizationCode * @return */ public List<BudgetConstructionPullup> getBudgetConstructionPullupChildOrgs(String principalId, String chartOfAccountsCode, String organizationCode); /** * Returns the sum of the salary detail request amounts for an accounting line * * @param salaryDetailLine * @return */ public KualiInteger getPendingBudgetConstructionAppointmentFundingRequestSum(PendingBudgetConstructionGeneralLedger salaryDetailLine); /** * returns a list of fringe benefit accounting lines for a document * * @param documentNumber * @param fringeObjects * @return */ public List getDocumentPBGLFringeLines(String documentNumber, List fringeObjects); /** * Returns a list of account organization hierarchy levels for an account * * @param chartOfAccountsCode * @param accountNumber * @param universityFiscalYear * @return */ public List<BudgetConstructionAccountOrganizationHierarchy> getAccountOrgHierForAccount(String chartOfAccountsCode, String accountNumber, Integer universityFiscalYear); /** * Returns a list of Pending Budget GL rows that are Salary Setting detail related, based on the set of salarySettingObjects * passed in * * @param documentNumber * @param salarySettingObjects * @return */ public List getPBGLSalarySettingRows(String documentNumber, List salarySettingObjects); /** * Retrieves all <code>PendingBudgetConstructionAppointmentFunding</code> records for the given position key. * * @param universityFiscalYear budget fiscal year, primary key field for position record * @param positionNumber position number, primary key field for position record * @return List of PendingBudgetConstructionAppointmentFunding objects */ public List<PendingBudgetConstructionAppointmentFunding> getAllFundingForPosition(Integer universityFiscalYear, String positionNumber); /** * Returns a <code>BudgetConstructionAccountReports</code> object for the given key. * * @param chartOfAccountsCode * @param accountNumber * @return */ public BudgetConstructionAccountReports getAccountReports(String chartOfAccountsCode, String accountNumber); /** * Returns a <code>BudgetConstructionOrganizationReports</code> object for the given key. * * @param chartOfAccountsCode * @param organizationCode * @return */ public BudgetConstructionOrganizationReports getOrganizationReports(String chartOfAccountsCode, String organizationCode); /** * Builds an Account Organization Hierarchy by recursively calling itself inserting each Hierarchy row (<code>BudgetConstructionAccountOrganizationHierarchy</code>) * while walking the organization reports to structure (<code>BudgetConstructionOrganizationReports</code>) stopping at the * root of the organization tree or overflow value, whatever comes first. * * @param rootChart * @param rootOrganization * @param universityFiscalYear * @param chartOfAccountsCode * @param accountNumber * @param currentLevel * @param organizationChartOfAccountsCode * @param organizationCode * @return */ public boolean insertAccountIntoAccountOrganizationHierarchy(String rootChart, String rootOrganization, Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, Integer currentLevel, String organizationChartOfAccountsCode, String organizationCode); /** * deletes an existing set of Account Organization Hierarchy objects from the DB for the account key passed in * * @param universityFiscalYear * @param chartOfAccountsCode * @param accountNumber */ public void deleteExistingAccountOrganizationHierarchy(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber); }