@Transactional public class ContractsGrantsInvoiceCreateDocumentServiceImpl extends Object implements ContractsGrantsInvoiceCreateDocumentService
org.kuali.kfs.module.ar.batch.service.ContractsGrantsInvoiceDocumentCreateService
Constructor and Description |
---|
ContractsGrantsInvoiceCreateDocumentServiceImpl() |
Modifier and Type | Method and Description |
---|---|
protected org.kuali.rice.core.api.util.type.KualiDecimal |
addBalanceToAwardAccountBudgetAmount(Balance balance,
org.kuali.rice.core.api.util.type.KualiDecimal awardAccountBudgetAmount,
boolean firstFiscalPeriod)
Adds the budget balance to the award account budget amount
|
protected org.kuali.rice.core.api.util.type.KualiDecimal |
addBalanceToAwardAccountCumulativeAmount(ContractsGrantsInvoiceDocument document,
Balance balance,
ContractsAndGrantsBillingAward award,
org.kuali.rice.core.api.util.type.KualiDecimal awardAccountCumulativeAmount,
boolean firstFiscalPeriod)
Sums the balance to the given awardAccountCumulativeAmount and returns that summed amount
|
protected InvoiceAccountDetail |
buildInvoiceAccountDetailForAwardAccount(ContractsAndGrantsBillingAward award,
ContractsAndGrantsBillingAwardAccount awardAccount,
String documentNumber,
InvoiceGeneralDetail invoiceGeneralDetail)
Builds a new invoice account detail for a given award account
|
protected List<InvoiceAddressDetail> |
buildInvoiceAddressDetailsFromAgency(ContractsAndGrantsBillingAgency agency,
ContractsGrantsInvoiceDocument document)
Builds a list of InvoiceAddressDetails based on the customer associated with an Agency
|
protected List<InvoiceBill> |
buildInvoiceBills(List<Bill> bills,
Date invoiceDate)
Generates InvoiceBills for each of the given Bills
|
protected List<InvoiceMilestone> |
buildInvoiceMilestones(List<Milestone> milestones,
Date invoiceDate)
Generates InvoiceMilestones for each of the given milestones
|
protected Map<String,org.kuali.rice.core.api.util.type.KualiDecimal> |
calculateAmountsByCategory(Map<String,BigDecimal> percentagesByCategory,
org.kuali.rice.core.api.util.type.KualiDecimal amount)
Given a Map of category keys mapping percentage values and an amount, find what amount each percentage would be
|
protected org.kuali.rice.core.api.util.type.KualiDecimal |
calculateBalanceAmountWithoutLastBilledPeriod(Date lastBilledDate,
Balance glBalance)
This method would make sure the amounts of the current period are not included.
|
protected org.kuali.rice.core.api.util.type.KualiDecimal |
calculateMilestoneAmount(ContractsGrantsInvoiceDocument document) |
protected BigDecimal |
calculatePercentageByInvoiceDetailAccountObjectCodes(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes,
org.kuali.rice.core.api.util.type.KualiDecimal total)
Finds the percentage that the given total is of the sum of the current expenditures of the given invoiceDetailAccountObjectCodes
|
protected Map<String,BigDecimal> |
calculatePercentagesByCategory(Map<String,List<InvoiceDetailAccountObjectCode>> invoiceDetailAccountObjectCodesByCategory,
org.kuali.rice.core.api.util.type.KualiDecimal total)
Calculates the percentage of the given total each list of invoice detail account object codes represents
|
protected org.kuali.rice.core.api.util.type.KualiDecimal |
calculateTotalBillAmount(ContractsGrantsInvoiceDocument document) |
protected org.kuali.rice.core.api.util.type.KualiDecimal |
calculateTotalExpenditureAmount(ContractsGrantsInvoiceDocument document,
List<ContractsGrantsLetterOfCreditReviewDetail> locReviewDetails) |
protected org.kuali.rice.core.api.util.type.KualiDecimal |
cleanAmount(org.kuali.rice.core.api.util.type.KualiDecimal amount)
Null protects the addition in retrieveAccurateBalanceAmount
|
ContractsGrantsInvoiceDocument |
createCGInvoiceDocumentByAwardInfo(ContractsAndGrantsBillingAward awd,
List<ContractsAndGrantsBillingAwardAccount> accounts,
String chartOfAccountsCode,
String organizationCode,
List<org.kuali.rice.krad.util.ErrorMessage> errorMessages,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails,
String locCreationType)
This method creates a single CG Invoice Document
|
List<org.kuali.rice.krad.util.ErrorMessage> |
createCGInvoiceDocumentsByAwards(Collection<ContractsAndGrantsBillingAward> awards,
ArConstants.ContractsAndGrantsInvoiceDocumentCreationProcessType creationProcessTypeCode)
This method is called by the manual CINV creation process create Contracts & Grants Invoice Documents by Awards.
|
List<org.kuali.rice.krad.util.ErrorMessage> |
createCGInvoiceDocumentsByAwards(Collection<ContractsAndGrantsBillingAward> awards,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails,
String locCreationType)
Looks for Contracts & Grants Invoice Document with a status of Saved, meaning they have been created and saved to "inbox", but
This method is called by the C&G LOC Review document to generate contracts grants invoice documents
|
protected List<org.kuali.rice.krad.util.ErrorMessage> |
createInvoices(Collection<ContractsAndGrantsBillingAward> awards,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails,
String locCreationType)
This method iterates through awards and create cgInvoice documents
|
protected void |
createInvoicesByAccounts(ContractsAndGrantsBillingAward awd,
List<org.kuali.rice.krad.util.ErrorMessage> errorMessages,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails,
String locCreationType)
Generates and saves Contracts & Grants Invoice Documents based on the award accounts of the passed in award
|
protected void |
createInvoicesByAward(ContractsAndGrantsBillingAward awd,
List<org.kuali.rice.krad.util.ErrorMessage> errorMessages,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails,
String locCreationType)
Generates and saves a single Contracts & Grants Invoice Document based on the given award
|
protected void |
createInvoicesByContractControlAccounts(ContractsAndGrantsBillingAward awd,
List<org.kuali.rice.krad.util.ErrorMessage> errorMessages,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails,
String locCreationType)
Generates and saves Contracts & Grants Invoice Documents based on the given award's contract control accounts
|
protected void |
distributeAmountAmongAllAccountObjectCodes(ContractsGrantsInvoiceDocument document,
ContractsAndGrantsBillingAwardAccount awdAcct,
List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectsCodes,
ContractsGrantsLetterOfCreditReviewDetail locReviewDetail)
For letter of credit, this distributes the amount for matching LOC invoice detail account object codes (which is very probably all of invoice detail account object codes in the given list) evenly
|
protected List<InvoiceDetailAccountObjectCode> |
filterInvoiceAccountObjectCodesByDocumentAndAccount(ContractsGrantsInvoiceDocument document,
ContractsAndGrantsBillingAwardAccount awdAcct,
List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectsCodes)
Filters the given list of invoice detail account object codes by the given document and account
|
protected InvoiceDetailAccountObjectCode |
findFirstPositiveCurrentExpenditureInvoiceDetailAccountObjectCode(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes)
Given a list of invoice detail account object codes, return the first one with a positive currentExpenditure field
|
protected void |
generateAndSaveContractsAndGrantsInvoiceDocument(ContractsAndGrantsBillingAward awd,
List<ContractsAndGrantsBillingAwardAccount> validAwardAccounts,
String coaCode,
String orgCode,
List<org.kuali.rice.krad.util.ErrorMessage> errorMessages,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails,
String locCreationType)
Generates and then saves a Contracts & Grants Invoice Document
|
List<ContractsGrantsInvoiceDetail> |
generateValuesForCategories(String documentNumber,
List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes,
Map<String,org.kuali.rice.core.api.util.type.KualiDecimal> budgetAmountsByCostCategory,
List<AwardAccountObjectCodeTotalBilled> awardAccountObjectCodeTotalBilleds)
1.
|
AccountService |
getAccountService() |
AwardAccountObjectCodeTotalBilledDao |
getAwardAccountObjectCodeTotalBilledDao() |
protected org.kuali.rice.core.api.util.type.KualiDecimal |
getBudgetBalanceAmount(Balance balance,
boolean firstFiscalPeriod)
Determines the balance amount (cg + annual) from the given budget balance
|
org.kuali.rice.krad.service.BusinessObjectService |
getBusinessObjectService() |
org.kuali.rice.core.api.config.property.ConfigurationService |
getConfigurationService() |
ContractsAndGrantsModuleBillingService |
getContractsAndGrantsModuleBillingService() |
ContractsGrantsBillingAwardVerificationService |
getContractsGrantsBillingAwardVerificationService() |
ContractsGrantsBillingUtilityService |
getContractsGrantsBillingUtilityService() |
ContractsGrantsInvoiceDocumentService |
getContractsGrantsInvoiceDocumentService() |
CostCategoryService |
getCostCategoryService() |
CustomerService |
getCustomerService() |
org.kuali.rice.core.api.datetime.DateTimeService |
getDateTimeService() |
FinancialSystemDocumentService |
getFinancialSystemDocumentService() |
protected Collection<ContractsGrantsInvoiceDocument> |
getInProgressInvoicesForAward(ContractsAndGrantsBillingAward award)
Looks up all the in progress contracts & grants invoices for the award
|
protected InvoiceDetailAccountObjectCode |
getInvoiceDetailAccountObjectCodeByBalanceAndCategory(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes,
Balance bal,
String documentNumber,
Long proposalNumber,
CostCategory category)
Looks up or constructs an InvoiceDetailAccountObjectCode based on a given balance and billing category
|
OptionsService |
getOptionsService() |
org.kuali.rice.coreservice.framework.parameter.ParameterService |
getParameterService() |
UniversityDateService |
getUniversityDateService() |
protected List<ContractsAndGrantsBillingAwardAccount> |
getValidAwardAccounts(List<ContractsAndGrantsBillingAwardAccount> awardAccounts,
ContractsAndGrantsBillingAward award)
This method returns the valid award accounts based on evaluation of billing frequency and invoice document status
|
protected Set<Account> |
harvestAccountsFromContractsGrantsInvoices(Collection<ContractsGrantsInvoiceDocument> contractsGrantsInvoices)
Pulls all the unique accounts from the source accounting lines on the given ContractsGrantsInvoiceDocument
|
protected boolean |
hasBillableAccounts(ContractsAndGrantsBillingAward award) |
protected boolean |
includePeriod13InPeriod01Calculations()
Determines if Period 13 should be included in Period 01 calculations for invoice details and invoice account details
|
protected boolean |
isBalanceCostShare(Balance bal)
Determines if a balance represents a cost share or not
|
protected boolean |
isFirstFiscalPeriod()
Determines if today, the document creation date, occurs within the first fiscal period
|
protected InvoiceDetailAccountObjectCode |
lookupInvoiceDetailAccountObjectCode(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectsCodes,
Balance bal,
Long proposalNumber)
Looks for a matching invoice detail account object code in the given list that matches the given balance and proposal number
|
protected Map<String,List<AwardAccountObjectCodeTotalBilled>> |
mapAwardAccountObjectCodeTotalBilledsByCategoryCode(List<AwardAccountObjectCodeTotalBilled> awardAccountObjectCodeTotalBilleds)
Converts a List of AwardAccountObjectCodeTotalBilled into a Map, keyed by the Cost Category which most closely matches them
|
protected Map<String,List<InvoiceDetailAccountObjectCode>> |
mapInvoiceDetailAccountObjectCodesByCategoryCode(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes)
Converts a List of InvoiceDetailAccountObjectCodes into a map where the key is the category code
|
protected void |
performAwardValidation(Collection<ContractsAndGrantsBillingAward> awards,
Map<ContractsAndGrantsBillingAward,List<String>> invalidGroup,
List<ContractsAndGrantsBillingAward> qualifiedAwards)
Perform all validation checks on the awards passed in to determine if CGB Invoice documents can be
created for the given awards.
|
protected void |
populateContractsGrantsInvoiceDocument(ContractsAndGrantsBillingAward award,
ContractsGrantsInvoiceDocument document,
List<ContractsGrantsLetterOfCreditReviewDetail> locReviewDetails,
String locCreationType)
This method helps in setting up basic values for Contracts & Grants Invoice Document
|
protected void |
populateInvoiceDetailFromAward(InvoiceGeneralDetail invoiceGeneralDetail,
ContractsAndGrantsBillingAward award)
This method takes all the applicable attributes from the associated award object and sets those attributes into their
corresponding invoice attributes.
|
protected void |
populateInvoiceFromAward(ContractsAndGrantsBillingAward award,
List<ContractsAndGrantsBillingAwardAccount> awardAccounts,
ContractsGrantsInvoiceDocument document,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails,
String locCreationType)
This method takes all the applicable attributes from the associated award object and sets those attributes into their
corresponding invoice attributes.
|
protected void |
redistributeAmountsToInvoiceAccountCategories(Map<String,List<InvoiceDetailAccountObjectCode>> redistributionAccountObjectCodesByCategory,
Map<String,org.kuali.rice.core.api.util.type.KualiDecimal> amountsByCategory)
Redistributes the given amounts mapped by category to each of the invoice detail account object codes mapped by category code
|
protected Collection<CostCategory> |
retrieveAllBillingCategories() |
protected List<Balance> |
retrieveBalances(Integer fiscalYear,
String chartOfAccountsCode,
String accountNumber,
List<String> balanceTypeCodeList)
Retrieves balances used to populate amounts for an invoice account detail
|
protected List<AwardAccountObjectCodeTotalBilled> |
retrieveBillingInformationForAwardAccount(ContractsAndGrantsBillingAwardAccount awdAcct)
Retrieves all of the billing information performed against the given award account
|
protected List<String> |
retrieveContractsGrantsInvoiceDocumentsToRoute(org.kuali.rice.kew.api.document.DocumentStatus statusCode,
String initiatorPrincipalId)
Returns a list of all saved but not yet routed Contracts & Grants Invoice Documents, using the KualiWorkflowInfo service.
|
Collection<String> |
retrieveExpenseObjectTypes()
Retrieve expense object types by the basic accounting category for expenses
|
protected ContractsGrantsLetterOfCreditReviewDetail |
retrieveMatchingLetterOfCreditReviewDetail(ContractsAndGrantsBillingAwardAccount awardAccount,
List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails)
Finds a letter of credit review detail which matches the given award account, or null if one could not be found
|
Collection<ContractsAndGrantsBillingAward> |
retrieveNonLOCAwards()
Validates and parses the file identified by the given files name.
|
void |
routeContractsGrantsInvoiceDocuments()
This method retrieves all the Contracts & Grants Invoice Documents with a status of Saved and
routes them to the next step in the routing path.
|
void |
setAccountingPeriodService(AccountingPeriodService accountingPeriodService)
Sets the accountingPeriodService attribute value.
|
void |
setAccountService(AccountService accountService) |
void |
setAccountsReceivableDocumentHeaderService(AccountsReceivableDocumentHeaderService accountsReceivableDocumentHeaderService)
Sets the accountsReceivableDocumentHeaderService attribute value.
|
void |
setAwardAccountObjectCodeTotalBilledDao(AwardAccountObjectCodeTotalBilledDao awardAccountObjectCodeTotalBilledDao) |
void |
setBusinessObjectService(org.kuali.rice.krad.service.BusinessObjectService businessObjectService)
Sets the businessObjectService attribute value.
|
void |
setConfigurationService(org.kuali.rice.core.api.config.property.ConfigurationService configurationService) |
void |
setContractsAndGrantsModuleBillingService(ContractsAndGrantsModuleBillingService contractsAndGrantsModuleBillingService) |
void |
setContractsGrantsBillingAwardVerificationService(ContractsGrantsBillingAwardVerificationService contractsGrantsBillingAwardVerificationService) |
void |
setContractsGrantsBillingUtilityService(ContractsGrantsBillingUtilityService contractsGrantsBillingUtilityService) |
void |
setContractsGrantsInvoiceDocumentService(ContractsGrantsInvoiceDocumentService contractsGrantsInvoiceDocumentService)
Sets the contractsGrantsInvoiceDocumentService attribute value.
|
void |
setCostCategoryService(CostCategoryService costCategoryService) |
void |
setCustomerService(CustomerService customerService) |
void |
setDateTimeService(org.kuali.rice.core.api.datetime.DateTimeService dateTimeService) |
void |
setDocumentService(org.kuali.rice.krad.service.DocumentService documentService)
Sets the documentService attribute value.
|
void |
setFinancialSystemDocumentService(FinancialSystemDocumentService financialSystemDocumentService) |
void |
setKualiModuleService(org.kuali.rice.krad.service.KualiModuleService kualiModuleService)
Sets the kualiModuleService attribute value.
|
void |
setOptionsService(OptionsService optionsService) |
void |
setParameterService(org.kuali.rice.coreservice.framework.parameter.ParameterService parameterService) |
void |
setUniversityDateService(UniversityDateService universityDateService) |
void |
setVerifyBillingFrequencyService(VerifyBillingFrequencyService verifyBillingFrequencyService)
Sets the verifyBillingFrequencyService attribute value.
|
void |
setWorkflowDocumentService(org.kuali.rice.krad.workflow.service.WorkflowDocumentService workflowDocumentService)
Sets the workflowDocumentService attribute value.
|
protected void |
splitOutRedistribution(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes,
org.kuali.rice.core.api.util.type.KualiDecimal amount)
Splits an amount evenly over the given List of invoice detail account object codes
|
protected void |
storeCreationErrors(List<org.kuali.rice.krad.util.ErrorMessage> errorMessages,
String creationProcessTypeCode) |
protected void |
storeValidationErrors(Map<ContractsAndGrantsBillingAward,List<String>> invalidGroup,
Collection<ContractsGrantsInvoiceDocumentErrorLog> contractsGrantsInvoiceDocumentErrorLogs,
String creationProcessTypeCode) |
protected InvoiceDetailAccountObjectCode |
sumInvoiceDetailAccountObjectCodes(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes)
Sums the current expenditures of the given invoice detail account object codes
|
protected void |
takeAPennyLeaveAPennyCGBStyle(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes,
org.kuali.rice.core.api.util.type.KualiDecimal amountToTarget)
If the total of current expenditures within the list of InvoiceDetailAccountObjectCode business objects does not meet the amount to target,
steal or give a penny from one of those business objects so that it does
|
protected void |
updateCategoryActualAmountsByBalance(ContractsGrantsInvoiceDocument document,
Balance balance,
ContractsAndGrantsBillingAward award,
List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes,
boolean firstFiscalPeriod)
Updates the appropriate amounts for the InvoiceDetailAccountObjectCode matching the given balance
|
protected void |
updateCategoryBudgetAmountsByBalance(Balance balance,
Map<String,org.kuali.rice.core.api.util.type.KualiDecimal> budgetAmountsByCostCategory,
boolean firstFiscalPeriod)
Updates the cost category budget amount (in the given Map, budgetAmountsByCostCategory) by the total amount of the balance
|
protected void |
updateInvoiceDetailAccountObjectCodesByBilledAmount(ContractsAndGrantsBillingAwardAccount awdAcct,
List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectsCodes)
Updates all of the given invoice detail object codes by the billed amount for the given award account (and updates the current expenditures accordingly)
|
protected boolean |
useTimeBasedBillingFrequency(String billingFrequencyCode)
Given the billing frequency code, determines if the billing is time-based: monthly, quarterly, bi-annual, or annual
|
protected void |
validateAward(List<String> errorList,
ContractsAndGrantsBillingAward award)
Perform validation for an award to determine if a CGB Invoice document can be created for the award.
|
Collection<ContractsAndGrantsBillingAward> |
validateAwards(Collection<ContractsAndGrantsBillingAward> awards,
Collection<ContractsGrantsInvoiceDocumentErrorLog> contractsGrantsInvoiceDocumentErrorLogs,
String errOutputFile,
String creationProcessTypeCode)
This method validates awards and output an error file including unqualified awards with reason stated.
|
protected void |
writeErrorEntryByAward(ContractsAndGrantsBillingAward award,
List<String> validationCategory,
PrintStream printStream) |
protected void |
writeErrorToFile(Map<ContractsAndGrantsBillingAward,List<String>> invalidGroup,
String errOutputFile) |
protected void |
writeReportHeader(PrintStream printStream) |
protected void |
writeToReport(String proposalNumber,
String accountNumber,
String awardBeginningDate,
String awardEndingDate,
String awardTotalAmount,
String cumulativeExpenses,
PrintStream printStream) |
protected AccountService accountService
protected AccountingPeriodService accountingPeriodService
protected AccountsReceivableDocumentHeaderService accountsReceivableDocumentHeaderService
protected AwardAccountObjectCodeTotalBilledDao awardAccountObjectCodeTotalBilledDao
protected org.kuali.rice.krad.service.BusinessObjectService businessObjectService
protected org.kuali.rice.core.api.config.property.ConfigurationService configurationService
protected ContractsGrantsBillingAwardVerificationService contractsGrantsBillingAwardVerificationService
protected ContractsGrantsBillingUtilityService contractsGrantsBillingUtilityService
protected ContractsAndGrantsModuleBillingService contractsAndGrantsModuleBillingService
protected ContractsGrantsInvoiceDocumentService contractsGrantsInvoiceDocumentService
protected CostCategoryService costCategoryService
protected CustomerService customerService
protected org.kuali.rice.core.api.datetime.DateTimeService dateTimeService
protected org.kuali.rice.krad.service.DocumentService documentService
protected FinancialSystemDocumentService financialSystemDocumentService
protected org.kuali.rice.krad.service.KualiModuleService kualiModuleService
protected org.kuali.rice.coreservice.framework.parameter.ParameterService parameterService
protected VerifyBillingFrequencyService verifyBillingFrequencyService
protected org.kuali.rice.krad.workflow.service.WorkflowDocumentService workflowDocumentService
protected UniversityDateService universityDateService
protected OptionsService optionsService
public static final String REPORT_LINE_DIVIDER
public ContractsGrantsInvoiceCreateDocumentServiceImpl()
public List<org.kuali.rice.krad.util.ErrorMessage> createCGInvoiceDocumentsByAwards(Collection<ContractsAndGrantsBillingAward> awards, ArConstants.ContractsAndGrantsInvoiceDocumentCreationProcessType creationProcessTypeCode)
ContractsGrantsInvoiceCreateDocumentService
createCGInvoiceDocumentsByAwards
in interface ContractsGrantsInvoiceCreateDocumentService
awards
- Collection of Awards used to create Contracts & Grants Invoice DocumentsContractsGrantsInvoiceCreateDocumentService.createCGInvoiceDocumentsByAwards(java.util.Collection, org.kuali.kfs.module.ar.ArConstants.ContractsAndGrantsInvoiceDocumentCreationProcessType)
public List<org.kuali.rice.krad.util.ErrorMessage> createCGInvoiceDocumentsByAwards(Collection<ContractsAndGrantsBillingAward> awards, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails, String locCreationType)
ContractsGrantsInvoiceCreateDocumentService
createCGInvoiceDocumentsByAwards
in interface ContractsGrantsInvoiceCreateDocumentService
awards
- Collection of Awards used to create Contracts Grants Invoice DocumentsaccountDetails
- the account details to create the awardslocCreationType
- whether loc documents should be created by fund or fund groupContractsGrantsInvoiceCreateDocumentService.createCGInvoiceDocumentsByAwards(java.util.Collection, java.util.List, java.lang.String)
protected List<org.kuali.rice.krad.util.ErrorMessage> createInvoices(Collection<ContractsAndGrantsBillingAward> awards, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails, String locCreationType)
awards
- used to create cgInvoice documentsaccountDetails
- letter of credit details if we're creating via loclocCreationType
- letter of credit creation type if we're creating via locprotected void createInvoicesByAward(ContractsAndGrantsBillingAward awd, List<org.kuali.rice.krad.util.ErrorMessage> errorMessages, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails, String locCreationType)
awd
- the award to generate a Contracts & Grants Invoice Document forerrLines
- a holder for error messagesaccountDetails
- letter of credit details if we're creating via loclocCreationType
- letter of credit creation type if we're creating via locprotected void createInvoicesByContractControlAccounts(ContractsAndGrantsBillingAward awd, List<org.kuali.rice.krad.util.ErrorMessage> errorMessages, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails, String locCreationType)
awd
- the award with contract control accounts to build Contracts & Grants Invoice Documents fromerrLines
- a holder for error messagesaccountDetails
- letter of credit details if we're creating via loclocCreationType
- letter of credit creation type if we're creating via locprotected void createInvoicesByAccounts(ContractsAndGrantsBillingAward awd, List<org.kuali.rice.krad.util.ErrorMessage> errorMessages, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails, String locCreationType)
awd
- the award to build Contracts & Grants Invoice Documents from the award accounts onerrLines
- a holder for error messagesaccountDetails
- letter of credit details if we're creating via loclocCreationType
- letter of credit creation type if we're creating via locprotected void generateAndSaveContractsAndGrantsInvoiceDocument(ContractsAndGrantsBillingAward awd, List<ContractsAndGrantsBillingAwardAccount> validAwardAccounts, String coaCode, String orgCode, List<org.kuali.rice.krad.util.ErrorMessage> errorMessages, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails, String locCreationType)
awd
- the award for the documentvalidAwardAccounts
- the award accounts which should appear on the documentcoaCode
- the chart code for the documentorgCode
- the organization code for the documenterrLines
- a List of error messages, to be appended to if there are errors in document generationaccountDetails
- letter of credit details if we're creating via loclocCreationType
- letter of credit creation type if we're creating via locpublic ContractsGrantsInvoiceDocument createCGInvoiceDocumentByAwardInfo(ContractsAndGrantsBillingAward awd, List<ContractsAndGrantsBillingAwardAccount> accounts, String chartOfAccountsCode, String organizationCode, List<org.kuali.rice.krad.util.ErrorMessage> errorMessages, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails, String locCreationType)
ContractsGrantsInvoiceCreateDocumentService
createCGInvoiceDocumentByAwardInfo
in interface ContractsGrantsInvoiceCreateDocumentService
awd
- Award used to create CG Invoice Documentaccounts
- of award accounts used to create CG Invoice DocumentchartOfAccountsCode
- chart code used to create CG Invoice DocumentorganizationCode
- org code used to create CG Invoice DocumenterrorMessages
- a List of error messages the process can append toaccountDetails
- the account details to create the awardslocCreationType
- whether loc documents should be created by fund or fund groupContractsGrantsInvoiceCreateDocumentService.createCGInvoiceDocumentByAwardInfo(org.kuali.kfs.integration.cg.ContractsAndGrantsBillingAward, java.util.List, java.lang.String, java.lang.String, java.util.List, java.util.List, java.lang.String)
protected void populateInvoiceFromAward(ContractsAndGrantsBillingAward award, List<ContractsAndGrantsBillingAwardAccount> awardAccounts, ContractsGrantsInvoiceDocument document, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails, String locCreationType)
award
- The associated award that the invoice will be linked to.awardAccounts
- document
- accountDetails
- letter of credit details if we're creating via loclocCreationType
- letter of credit creation type if we're creating via locprotected ContractsGrantsLetterOfCreditReviewDetail retrieveMatchingLetterOfCreditReviewDetail(ContractsAndGrantsBillingAwardAccount awardAccount, List<ContractsGrantsLetterOfCreditReviewDetail> accountDetails)
awardAccount
- the award account to find a matching contracts grants letter of credit review detail foraccountDetails
- a List of contracts grants letter of credit review detailsprotected void updateCategoryActualAmountsByBalance(ContractsGrantsInvoiceDocument document, Balance balance, ContractsAndGrantsBillingAward award, List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes, boolean firstFiscalPeriod)
document
- the CINV document we're generatingbalance
- the balance to update amounts byaward
- the award on the CINV document we're generatinginvoiceDetailAccountObjectsCodes
- the List of invoiceDetailObjectCodes to update one offirstFiscalPeriod
- whether we're generating the CINV document in the fiscal fiscal period or notprotected org.kuali.rice.core.api.util.type.KualiDecimal addBalanceToAwardAccountCumulativeAmount(ContractsGrantsInvoiceDocument document, Balance balance, ContractsAndGrantsBillingAward award, org.kuali.rice.core.api.util.type.KualiDecimal awardAccountCumulativeAmount, boolean firstFiscalPeriod)
document
- the CINV document we're generatingbalance
- the balance to update amounts byaward
- the award on the CINV document we're generatingawardAccountCumulativeAmount
- the beginning cumulative expense amount for the award account of the balancefirstFiscalPeriod
- whether we're generating the CINV document in the fiscal fiscal period or notprotected void updateCategoryBudgetAmountsByBalance(Balance balance, Map<String,org.kuali.rice.core.api.util.type.KualiDecimal> budgetAmountsByCostCategory, boolean firstFiscalPeriod)
balance
- the balance to update the budget amounts bybudgetAmountsByCostCategory
- the Map of budget amounts sorted by cost categoryfirstFiscalPeriod
- whether this CINV is being generated in the first fiscal period or notprotected org.kuali.rice.core.api.util.type.KualiDecimal addBalanceToAwardAccountBudgetAmount(Balance balance, org.kuali.rice.core.api.util.type.KualiDecimal awardAccountBudgetAmount, boolean firstFiscalPeriod)
balance
- the balance to update the budget amounts byawardAccountBudgetAmount
- the beginning award account budget amountfirstFiscalPeriod
- whether this CINV is being generated in the first fiscal period or notprotected org.kuali.rice.core.api.util.type.KualiDecimal getBudgetBalanceAmount(Balance balance, boolean firstFiscalPeriod)
balance
- balance to find amount fromfirstFiscalPeriod
- whether the CINV is being created in the first fiscal period or notprotected InvoiceAccountDetail buildInvoiceAccountDetailForAwardAccount(ContractsAndGrantsBillingAward award, ContractsAndGrantsBillingAwardAccount awardAccount, String documentNumber, InvoiceGeneralDetail invoiceGeneralDetail)
award
- the award associated with the award accountawardAccount
- the award account to build the invoice account detail fordocumentNumber
- the number of the document we're currently buildinginvoiceGeneralDetail
- the invoice general detail for the the document we're currently buildingprotected List<InvoiceBill> buildInvoiceBills(List<Bill> bills, Date invoiceDate)
bills
- the bulls to associate with a contracts & grants billing invoiceinvoiceDate
- the date of the invoice we're buildingprotected List<InvoiceMilestone> buildInvoiceMilestones(List<Milestone> milestones, Date invoiceDate)
milestones
- the milestones to associate with a contracts & grants billing invoiceinvoiceDate
- the date of the invoice we're buildingprotected List<InvoiceAddressDetail> buildInvoiceAddressDetailsFromAgency(ContractsAndGrantsBillingAgency agency, ContractsGrantsInvoiceDocument document)
agency
- the agency associated with the proposal we're building a CINV document fordocumentNumber
- the document number of the CINV document we're creatingpublic List<ContractsGrantsInvoiceDetail> generateValuesForCategories(String documentNumber, List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes, Map<String,org.kuali.rice.core.api.util.type.KualiDecimal> budgetAmountsByCostCategory, List<AwardAccountObjectCodeTotalBilled> awardAccountObjectCodeTotalBilleds)
documentNumber
- the number of the document we want to add invoice details toinvoiceDetailAccountObjectCodes
- the List of InvoiceDetailAccountObjectCodes containing amounts to sum into our invoice detailsbudgetAmountsByCostCategory
- the budget amounts, sorted by cost categoryawardAccountObjectCodeTotalBilleds
- the business objects containg what has been billed from the document's award accounts alreadyprotected Map<String,List<InvoiceDetailAccountObjectCode>> mapInvoiceDetailAccountObjectCodesByCategoryCode(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes)
invoiceDetailAccountObjectCodes
- a List of InvoiceDetailAccountObjectCodesprotected Map<String,List<AwardAccountObjectCodeTotalBilled>> mapAwardAccountObjectCodeTotalBilledsByCategoryCode(List<AwardAccountObjectCodeTotalBilled> awardAccountObjectCodeTotalBilleds)
awardAccountObjectCodeTotalBilleds
- the List of AwardAccountObjectCodeTotalBilled business objects to Mapprotected void populateInvoiceDetailFromAward(InvoiceGeneralDetail invoiceGeneralDetail, ContractsAndGrantsBillingAward award)
invoiceGeneralDetail
- the invoice detail to populateaward
- The associated award that the invoice will be linked to.protected void distributeAmountAmongAllAccountObjectCodes(ContractsGrantsInvoiceDocument document, ContractsAndGrantsBillingAwardAccount awdAcct, List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectsCodes, ContractsGrantsLetterOfCreditReviewDetail locReviewDetail)
document
- the CINV document we're creatingawdAcct
- the C&G Award AccountinvoiceDetailAccountObjectsCodes
- the List of invoice detail account object codes we're attempting to generatelocReviewDetail
- the contracts grants letter of credit review detail which is related to the given award accountprotected List<InvoiceDetailAccountObjectCode> filterInvoiceAccountObjectCodesByDocumentAndAccount(ContractsGrantsInvoiceDocument document, ContractsAndGrantsBillingAwardAccount awdAcct, List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectsCodes)
document
- the document which owns the invoice detail account object codesawdAcct
- the award account to find invoice detail account object codes forinvoiceDetailAccountObjectsCodes
- the original list of invoice detail account object codesprotected InvoiceDetailAccountObjectCode sumInvoiceDetailAccountObjectCodes(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes)
invoiceDetailAccountObjectCodes
- invoice detail account object codes to total the current expenditures ofprotected Map<String,BigDecimal> calculatePercentagesByCategory(Map<String,List<InvoiceDetailAccountObjectCode>> invoiceDetailAccountObjectCodesByCategory, org.kuali.rice.core.api.util.type.KualiDecimal total)
invoiceDetailAccountObjectCodesByCategory
- a Map of invoice detail account object codes mapped by categorytotal
- the total of all of the invoice detail account object codesprotected BigDecimal calculatePercentageByInvoiceDetailAccountObjectCodes(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes, org.kuali.rice.core.api.util.type.KualiDecimal total)
invoiceDetailAccountObjectCodes
- a List of invoice detail account object codes to sumtotal
- the total of all of the invoice detail account object codes for that accountprotected Map<String,org.kuali.rice.core.api.util.type.KualiDecimal> calculateAmountsByCategory(Map<String,BigDecimal> percentagesByCategory, org.kuali.rice.core.api.util.type.KualiDecimal amount)
percentagesByCategory
- a map of category code keys mapping percentage valuesamount
- the amount to split by percentagesprotected void redistributeAmountsToInvoiceAccountCategories(Map<String,List<InvoiceDetailAccountObjectCode>> redistributionAccountObjectCodesByCategory, Map<String,org.kuali.rice.core.api.util.type.KualiDecimal> amountsByCategory)
redistributionAccountObjectCodesByCategory
- invoice detail account object codes mapped by category codeamountsByCategory
- amounts mapped by category codeprotected void takeAPennyLeaveAPennyCGBStyle(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes, org.kuali.rice.core.api.util.type.KualiDecimal amountToTarget)
invoiceDetailAccountObjectCodes
- a List of InvoiceDetailAccountObjectCode business objectsamountToTarget
- the amount which the sum of those objects should equalprotected InvoiceDetailAccountObjectCode findFirstPositiveCurrentExpenditureInvoiceDetailAccountObjectCode(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes)
invoiceDetailAccountObjectCodes
- the list of InvoiceDetailAccountObjectCodes to find the first one with a positive currentExpenditureprotected void splitOutRedistribution(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes, org.kuali.rice.core.api.util.type.KualiDecimal amount)
invoiceDetailAccountObjectCodes
- a List of invoice detail account object codes to divvy an amount equally amongamount
- the amount to divvyprotected void updateInvoiceDetailAccountObjectCodesByBilledAmount(ContractsAndGrantsBillingAwardAccount awdAcct, List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectsCodes)
awdAcct
- the award account to find billing information forinvoiceDetailAccountObjectsCodes
- the List of invoice detail account object code business objects to updateprotected List<AwardAccountObjectCodeTotalBilled> retrieveBillingInformationForAwardAccount(ContractsAndGrantsBillingAwardAccount awdAcct)
awdAcct
- a C&G award accountprotected boolean isFirstFiscalPeriod()
protected Collection<CostCategory> retrieveAllBillingCategories()
protected InvoiceDetailAccountObjectCode getInvoiceDetailAccountObjectCodeByBalanceAndCategory(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectCodes, Balance bal, String documentNumber, Long proposalNumber, CostCategory category)
invoiceDetailAccountObjectCodes
- the list of invoice detail account object codes to find a matching Invoice Detail Account Object Code inbal
- the balance to get the account object code fromdocumentNumber
- the document number of the CINV doc being createdproposalNumber
- the proposal number associated with the award on the CINV document we're currently buildingcostCategory
- the cost category associated with the balanceprotected InvoiceDetailAccountObjectCode lookupInvoiceDetailAccountObjectCode(List<InvoiceDetailAccountObjectCode> invoiceDetailAccountObjectsCodes, Balance bal, Long proposalNumber)
invoiceDetailAccountObjectsCodes
- a List of invoice detail account object codes to look up values frombal
- the balance to matchproposalNumber
- the proposal number to matchprotected boolean isBalanceCostShare(Balance bal)
bal
- the balance to checkprotected boolean useTimeBasedBillingFrequency(String billingFrequencyCode)
billingFrequencyCode
- the billing frequency codeprotected List<Balance> retrieveBalances(Integer fiscalYear, String chartOfAccountsCode, String accountNumber, List<String> balanceTypeCodeList)
fiscalYear
- the fiscal year of the balances to findchartOfAccountsCode
- the chart of accounts code of balances to findaccountNumber
- the account number of balances to findbalanceTypeCodeList
- the balance type codes of balances to findprotected boolean includePeriod13InPeriod01Calculations()
protected void populateContractsGrantsInvoiceDocument(ContractsAndGrantsBillingAward award, ContractsGrantsInvoiceDocument document, List<ContractsGrantsLetterOfCreditReviewDetail> locReviewDetails, String locCreationType)
protected org.kuali.rice.core.api.util.type.KualiDecimal calculateMilestoneAmount(ContractsGrantsInvoiceDocument document)
protected org.kuali.rice.core.api.util.type.KualiDecimal calculateTotalBillAmount(ContractsGrantsInvoiceDocument document)
protected org.kuali.rice.core.api.util.type.KualiDecimal calculateTotalExpenditureAmount(ContractsGrantsInvoiceDocument document, List<ContractsGrantsLetterOfCreditReviewDetail> locReviewDetails)
protected org.kuali.rice.core.api.util.type.KualiDecimal calculateBalanceAmountWithoutLastBilledPeriod(Date lastBilledDate, Balance glBalance)
glBalance
- protected org.kuali.rice.core.api.util.type.KualiDecimal cleanAmount(org.kuali.rice.core.api.util.type.KualiDecimal amount)
amount
- the amount to returnpublic Collection<ContractsAndGrantsBillingAward> retrieveNonLOCAwards()
ContractsGrantsInvoiceCreateDocumentService
retrieveNonLOCAwards
in interface ContractsGrantsInvoiceCreateDocumentService
ContractsGrantsInvoiceCreateDocumentService.retrieveNonLOCAwards()
public Collection<ContractsAndGrantsBillingAward> validateAwards(Collection<ContractsAndGrantsBillingAward> awards, Collection<ContractsGrantsInvoiceDocumentErrorLog> contractsGrantsInvoiceDocumentErrorLogs, String errOutputFile, String creationProcessTypeCode)
ContractsGrantsInvoiceCreateDocumentService
validateAwards
in interface ContractsGrantsInvoiceCreateDocumentService
awards
- Collection of awards to validationcontractsGrantsInvoiceDocumentErrorLogs
- Collection of Error Log records for unqualified awards with reason stated.errOutputFile
- The name of the file recording unqualified awards with reason stated (null to skip writing to a file).creationProcessTypeCode
- type of process (Batch, LOC or Manual) calling this methodorg.kuali.kfs.module.ar.batch.service.ContractsGrantsInvoiceCreateDocumentService#validateAwards(java.util.Collection, java.util.Collection)
protected void performAwardValidation(Collection<ContractsAndGrantsBillingAward> awards, Map<ContractsAndGrantsBillingAward,List<String>> invalidGroup, List<ContractsAndGrantsBillingAward> qualifiedAwards)
awards
- to be validatedinvalidGroup
- Map of errors per award that failed validationqualifiedAwards
- List of awards that are valid to create CGB Invoice docs fromprotected void validateAward(List<String> errorList, ContractsAndGrantsBillingAward award)
errorList
- list of validation errors per awardaward
- to perform validation uponprotected void writeErrorToFile(Map<ContractsAndGrantsBillingAward,List<String>> invalidGroup, String errOutputFile)
protected void storeValidationErrors(Map<ContractsAndGrantsBillingAward,List<String>> invalidGroup, Collection<ContractsGrantsInvoiceDocumentErrorLog> contractsGrantsInvoiceDocumentErrorLogs, String creationProcessTypeCode)
protected void storeCreationErrors(List<org.kuali.rice.krad.util.ErrorMessage> errorMessages, String creationProcessTypeCode)
public void routeContractsGrantsInvoiceDocuments()
routeContractsGrantsInvoiceDocuments
in interface ContractsGrantsInvoiceCreateDocumentService
org.kuali.kfs.module.ar.batch.service.ContractsGrantsInvoiceDocumentCreateService#routeContractsGrantsInvoiceDocuments()
protected List<String> retrieveContractsGrantsInvoiceDocumentsToRoute(org.kuali.rice.kew.api.document.DocumentStatus statusCode, String initiatorPrincipalId)
protected void writeErrorEntryByAward(ContractsAndGrantsBillingAward award, List<String> validationCategory, PrintStream printStream) throws IOException
IOException
protected void writeToReport(String proposalNumber, String accountNumber, String awardBeginningDate, String awardEndingDate, String awardTotalAmount, String cumulativeExpenses, PrintStream printStream) throws IOException
IOException
protected void writeReportHeader(PrintStream printStream) throws IOException
printStream
- IOException
protected boolean hasBillableAccounts(ContractsAndGrantsBillingAward award)
protected List<ContractsAndGrantsBillingAwardAccount> getValidAwardAccounts(List<ContractsAndGrantsBillingAwardAccount> awardAccounts, ContractsAndGrantsBillingAward award)
awardAccounts
- protected Set<Account> harvestAccountsFromContractsGrantsInvoices(Collection<ContractsGrantsInvoiceDocument> contractsGrantsInvoices)
contractsGrantsInvoices
- the invoices to pull unique accounts fromprotected Collection<ContractsGrantsInvoiceDocument> getInProgressInvoicesForAward(ContractsAndGrantsBillingAward award)
award
- the award to look up contracts & grants invoices forpublic Collection<String> retrieveExpenseObjectTypes()
retrieveExpenseObjectTypes
in interface ContractsGrantsInvoiceCreateDocumentService
ContractsGrantsInvoiceCreateDocumentService.retrieveExpenseObjectTypes()
public AccountService getAccountService()
public void setAccountService(AccountService accountService)
public void setAccountingPeriodService(AccountingPeriodService accountingPeriodService)
accountingPeriodService
- The accountingPeriodService to set.public void setVerifyBillingFrequencyService(VerifyBillingFrequencyService verifyBillingFrequencyService)
verifyBillingFrequencyService
- The verifyBillingFrequencyService to set.public org.kuali.rice.krad.service.BusinessObjectService getBusinessObjectService()
public void setBusinessObjectService(org.kuali.rice.krad.service.BusinessObjectService businessObjectService)
businessObjectService
- The businessObjectService to set.public void setWorkflowDocumentService(org.kuali.rice.krad.workflow.service.WorkflowDocumentService workflowDocumentService)
workflowDocumentService
- The workflowDocumentService to set.public void setDocumentService(org.kuali.rice.krad.service.DocumentService documentService)
documentService
- The documentService to set.public void setAccountsReceivableDocumentHeaderService(AccountsReceivableDocumentHeaderService accountsReceivableDocumentHeaderService)
accountsReceivableDocumentHeaderService
- The accountsReceivableDocumentHeaderService to set.public void setContractsGrantsInvoiceDocumentService(ContractsGrantsInvoiceDocumentService contractsGrantsInvoiceDocumentService)
contractsGrantsInvoiceDocumentService
- The contractsGrantsInvoiceDocumentService to set.public ContractsGrantsInvoiceDocumentService getContractsGrantsInvoiceDocumentService()
public org.kuali.rice.core.api.datetime.DateTimeService getDateTimeService()
public void setDateTimeService(org.kuali.rice.core.api.datetime.DateTimeService dateTimeService)
public void setKualiModuleService(org.kuali.rice.krad.service.KualiModuleService kualiModuleService)
kualiModuleService
- The kualiModuleService to set.public org.kuali.rice.core.api.config.property.ConfigurationService getConfigurationService()
public void setConfigurationService(org.kuali.rice.core.api.config.property.ConfigurationService configurationService)
public ContractsGrantsBillingUtilityService getContractsGrantsBillingUtilityService()
public void setContractsGrantsBillingUtilityService(ContractsGrantsBillingUtilityService contractsGrantsBillingUtilityService)
public ContractsAndGrantsModuleBillingService getContractsAndGrantsModuleBillingService()
public void setContractsAndGrantsModuleBillingService(ContractsAndGrantsModuleBillingService contractsAndGrantsModuleBillingService)
public FinancialSystemDocumentService getFinancialSystemDocumentService()
public void setFinancialSystemDocumentService(FinancialSystemDocumentService financialSystemDocumentService)
public UniversityDateService getUniversityDateService()
public void setUniversityDateService(UniversityDateService universityDateService)
public AwardAccountObjectCodeTotalBilledDao getAwardAccountObjectCodeTotalBilledDao()
public void setAwardAccountObjectCodeTotalBilledDao(AwardAccountObjectCodeTotalBilledDao awardAccountObjectCodeTotalBilledDao)
public CustomerService getCustomerService()
public void setCustomerService(CustomerService customerService)
public org.kuali.rice.coreservice.framework.parameter.ParameterService getParameterService()
public void setParameterService(org.kuali.rice.coreservice.framework.parameter.ParameterService parameterService)
public ContractsGrantsBillingAwardVerificationService getContractsGrantsBillingAwardVerificationService()
public void setContractsGrantsBillingAwardVerificationService(ContractsGrantsBillingAwardVerificationService contractsGrantsBillingAwardVerificationService)
public CostCategoryService getCostCategoryService()
public void setCostCategoryService(CostCategoryService costCategoryService)
public OptionsService getOptionsService()
public void setOptionsService(OptionsService optionsService)
Copyright © 2004–2015 The Kuali Foundation. All rights reserved.