/*
* 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.sys.fixture;
import static org.kuali.kfs.sys.KFSConstants.GL_CREDIT_CODE;
import static org.kuali.kfs.sys.KFSConstants.GL_DEBIT_CODE;
import org.kuali.kfs.fp.businessobject.VoucherSourceAccountingLine;
import org.kuali.kfs.sys.businessobject.AccountingLine;
import org.kuali.kfs.sys.businessobject.SourceAccountingLine;
import org.kuali.kfs.sys.businessobject.TargetAccountingLine;
import org.kuali.kfs.sys.context.TestUtils;
import org.kuali.kfs.sys.document.AccountingDocument;
import org.kuali.rice.core.api.util.type.KualiDecimal;
public enum AccountingLineFixture {
LINE(1, "BL", "1031400", "AC", "ADV", "5000", "SSS", "KUL", "Y", "ONE", "01", "1", "blah", GL_DEBIT_CODE, "2.50"),
LINE1(null, "BA", "6044900", null, null, "1697", null, null, null, null, null, null, null, null, "1000.00"),
LINE2(null, "BL", "1031400", null, "ADV", "5000", "SSS", "KUL", null, "ONE", null, null, null, null, "1.10"),
LINE3(null, "BA", "6044900", null, null, "4008", "POL", null, null, "TWO", null, null, null, null, "1.10"),
LINE4(null, "UA", "1912201", null, null, "5033", null, null, null, null, null, "123", null, null, "1.10"),
LINE5(null, "BL", "1031400", "AC", "ADV", "5000", "SSS", "KUL", null, "ONE", null, null, null, GL_DEBIT_CODE, "1.10"),
LINE6(null, "BL", "1031400", "PE", "ADV", "5000", "SSS", "KUL", null, "ONE", null, "123", null, GL_DEBIT_CODE, "1.10"),
LINE7(null, "BA", "6044900", null, null, "4061", null, null, null, null, null, null, null, null, "1.10"),
LINE8(null, "UA", "1912201", "AC", null, "9980", null, "KUL", "F", null, "01", "2004", "blah", GL_DEBIT_CODE, "1.10"),
LINE9(null, "UA", "1912201", "AC", null, "9980", null, "KUL", "F", null, "01", "2004", null, GL_DEBIT_CODE, "1.10"),
LINE10(null, "UA", "1912201", "AC", null, "8160", null, "KUL", "F", null, "01", "2004", "blah", GL_DEBIT_CODE, "1.10"),
LINE11(null, "UA", "1912201", "AC", null, "9980", null, "KUL", "F", null, null, null, null, GL_DEBIT_CODE, "1.10"),
LINE12(null, "UA", "1912201", "AC", null, "9897", null, "KUL", "F", null, null, null, null, GL_DEBIT_CODE, "1.10"),
LINE13(null, "UA", "1912201", "AC", null, "9899", null, "KUL", "F", null, null, null, null, GL_DEBIT_CODE, "1.10"),
LINE14(null, "UA", "1912201", null, null, "5033", null, null, null, null, null, "123", null, GL_DEBIT_CODE, "1.10"),
LINE15(null, "UA", "1912201", null, null, "5033", null, null, null, null, null, "123", null, GL_CREDIT_CODE, "1.10"),
LINE16(null, "UA", "1912201", "AC", null, "1175", null, "KUL", "F", null, "01", "2004", null, GL_DEBIT_CODE, "1.10"),
LINE17(null, "UA", "1912201", "AC", null, "7600", null, "KUL", "F", null, "01", "2004", null, GL_DEBIT_CODE, "1.10"),
LINE18(null, "BL", "1031400", null, null, "5000", null, null, null, null, null, null, null, null, "1.10"),
APO_LINE1(null, "BL", "0212007", null, null, "4000", null, null, null, null, null, null, null, GL_DEBIT_CODE, "995.00"), APO_LINE2(null, "BL", "0212007", null, null, "4000", null, null, null, null, null, null, null, GL_DEBIT_CODE, "120.00"), APO_LINE3(null, "BL", "0212008", null, null, "4000", null, null, null, null, null, null, null, GL_DEBIT_CODE, "119.99"), APO_LINE4(null, "BL", "0212009", null, null, "4000", null, null, null, null, null, null, null, GL_DEBIT_CODE, "12.49"),
PURAP_LINE1(null, "BL", "1031400", null, null, "5000", null, null, null, null, null, null, null, null, "1.00"),
PURAP_LINE2(null, "BL", "0212007", null, null, "5000", null, null, null, null, null, null, null, null, "1.00"),
PURAP_LINE3(null, "BL", "2231401", null, null, "5000", null, null, null, null, null, null, null, null, "1.00"),
PURAP_PERFORMANCE_LINE(null, "BL", "1031497", null, null, "5000", null, null, null, null, null, null, null, null, "10.00"),
PURAP_LINE_NEGATIVE_AMT(null, "BL", "2231401", null, null, "5000", null, null, null, null, null, null, null, null, "-56.00"),
GEC_LINE1(null, "BL", "1031400", null, "ADV", "5000", "SSS", "KUL", null, null, "01", "123", null, null, "1.10"), ICA_LINE(null, "BL", "5431400", null, null, "5500", null, null, null, null, null, null, null, null, "1.10"), EXPENSE_GEC_LINE(null, "BA", "6044900", "AC", null, "1940", null, "KUL", "F", null, "01", "123", null, null, "1.10"),
DOCUMENT_SERVICE_TEST_LINE(null, "BL", "1031400", null, "ADV", "5000", "SSS", "KUL", "Y", null, null, null, null, GL_DEBIT_CODE, "2.50"), PFIP_SUB_FUND_LINE( null, "BA", "9544900", "AC", null, "9900", null, null, null, null, null, "2004", null, null, "1000.00"), SOURCE_LINE(null, "UA", "1912201", "AC", null, "9980", null, "KUL", "F", null, "01", "2004", "blah", GL_DEBIT_CODE, "1000.00"), EXPENSE_LINE(null, "UA", "1912201", "AC", "BEER", "9900", null, "KUL", "F", null, "01", "2004", "blah", GL_DEBIT_CODE, "1000.00"), EXPENSE_LINE2(null, "BL", "1031400", "AC", "BLDG", "9900", null, "KUL", "F", null, null, null, null, GL_DEBIT_CODE, "1000.00"), EXTERNAL_ENCUMBRANCE_LINE(null, "BL", "1031400", "EX", "BLDG", "9900", null, "KUL", "F", null, "01", "2004", "PE", GL_DEBIT_CODE, "1000.00"),
FLEXIBLE_EXPENSE_LINE(null, "BL", "2231401", "AC", null, "9900", null, "KUL", "F", null, "01", "1", "blah", GL_DEBIT_CODE, "1000.00"), CASH_LINE(null, "BA", "6044900", null, null, "8000", null, "BOB", null, null, null, null, null, null, "1000.00"), LOSSS_ON_RETIRE_LINE(null, "BA", "6044900", null, null, "5137", "CF", "KUL", null, null, null, null, null, null, "1000.00"), ACCRUED_INCOME_LINE(null, "BA", "6044900", null, null, "8111", null, "KUL", null, null, "01", "2004", null, null, "1000.00"), ACCRUED_SICK_PAY_LINE(null, "UA", "1912201", null, null, "2998", null, "KUL", null, null, null, "01", "2004", null, "1000.00"), FUND_BALANCE_LINE(null, "BA", "6044900", null, null, "9899", null, "KUL", null, null, null, "01", "2004", GL_DEBIT_CODE, "1000.00"), LINE2_TOF(null, "BL", "1031400", null, null, "1697", null, null, null, null, null, null, null, null, "1.10"),
REQ_ACCOUNT_MULTI_QUANTITY(null, //sequenceNumber
"BL", //chartOfAccountsCode
"1023200", //accountNumber
null, //balanceTypeCode
null, //subAccountNumber
"4100", //financialObjectCode
null, //financialSubObjectCode
null, //projectCode
null, //encumbranceUpdateCode
null, //organizationReferenceId
null, // referenceOriginCode
null, //referenceNumber
null, //referenceTypeCode
GL_DEBIT_CODE, //debitCreditCode
"100" ), // amount
REQ_ACCOUNT_MULTI_NON_QUANTITY(null, //sequenceNumber
"BL", //chartOfAccountsCode
"1023200", //accountNumber
null, //balanceTypeCode
null, //subAccountNumber
"4078", //financialObjectCode
null, //financialSubObjectCode
null, //projectCode
null, //encumbranceUpdateCode
null, //organizationReferenceId
null, // referenceOriginCode
null, //referenceNumber
null, //referenceTypeCode
GL_DEBIT_CODE, //debitCreditCode
"100" ), // amount
;
public final String accountNumber;
public final String balanceTypeCode;
public final String chartOfAccountsCode;
public final String debitCreditCode;
public final String encumbranceUpdateCode;
public final String financialObjectCode;
public final String financialSubObjectCode;
public final String organizationReferenceId;
public final String projectCode;
public final String referenceOriginCode;
public final String referenceNumber;
public final String referenceTypeCode;
public final String subAccountNumber;
public final KualiDecimal amount;
public final Integer postingYear;
public final Integer sequenceNumber;
AccountingLineFixture(Integer sequenceNumber, String chartOfAccountsCode, String accountNumber, String balanceTypeCode, String subAccountNumber, String financialObjectCode, String financialSubObjectCode, String projectCode, String encumbranceUpdateCode, String organizationReferenceId, String referenceOriginCode, String referenceNumber, String referenceTypeCode, String debitCreditCode, String amount) {
this.postingYear = TestUtils.getFiscalYearForTesting();
this.sequenceNumber = sequenceNumber;
this.accountNumber = accountNumber;
this.balanceTypeCode = balanceTypeCode;
this.chartOfAccountsCode = chartOfAccountsCode;
this.debitCreditCode = debitCreditCode;
this.encumbranceUpdateCode = encumbranceUpdateCode;
this.financialObjectCode = financialObjectCode;
this.financialSubObjectCode = financialSubObjectCode;
this.organizationReferenceId = organizationReferenceId;
this.projectCode = projectCode;
this.referenceOriginCode = referenceOriginCode;
this.referenceNumber = referenceNumber;
this.referenceTypeCode = referenceTypeCode;
this.subAccountNumber = subAccountNumber;
this.amount = new KualiDecimal(amount);
}
private <T extends AccountingLine> T createAccountingLine(Class<T> lineClass) throws InstantiationException, IllegalAccessException {
return createAccountingLine(lineClass, "", this.postingYear, this.sequenceNumber);
}
public <T extends AccountingLine> T createAccountingLine(Class<T> lineClass, String debitCreditCode) throws InstantiationException, IllegalAccessException {
T line = createAccountingLine(lineClass, "", this.postingYear, this.sequenceNumber);
line.setDebitCreditCode(debitCreditCode);
return line;
}
public <T extends AccountingLine> T createAccountingLine(Class<T> lineClass, String documentNumber, Integer postingYear, Integer sequenceNumber) throws InstantiationException, IllegalAccessException {
T line = createLine(lineClass);
line.setDocumentNumber(documentNumber);
line.setPostingYear(postingYear);
line.setSequenceNumber(sequenceNumber);
line.refresh();
return line;
}
private <T extends AccountingLine> T createLine(Class<T> lineClass) throws InstantiationException, IllegalAccessException {
T line = (T) lineClass.newInstance();
line.setAccountNumber(this.accountNumber);
line.setAmount(this.amount);
line.setBalanceTypeCode(this.balanceTypeCode);
line.setChartOfAccountsCode(this.chartOfAccountsCode);
line.setDebitCreditCode(this.debitCreditCode);
line.setEncumbranceUpdateCode(this.encumbranceUpdateCode);
line.setFinancialObjectCode(this.financialObjectCode);
line.setFinancialSubObjectCode(this.financialSubObjectCode);
line.setOrganizationReferenceId(this.organizationReferenceId);
line.setProjectCode(this.projectCode);
line.setReferenceOriginCode(this.referenceOriginCode);
line.setReferenceNumber(this.referenceNumber);
line.setReferenceTypeCode(this.referenceTypeCode);
line.setSubAccountNumber(this.subAccountNumber);
return line;
}
public SourceAccountingLine createSourceAccountingLine() throws InstantiationException, IllegalAccessException {
return createAccountingLine(SourceAccountingLine.class);
}
public VoucherSourceAccountingLine createVoucherSourceAccountingLine() throws InstantiationException, IllegalAccessException {
VoucherSourceAccountingLine line = createAccountingLine(VoucherSourceAccountingLine.class);
line.refreshReferenceObject("objectCode");
line.setObjectTypeCode(line.getObjectCode().getFinancialObjectTypeCode());
return line;
}
public TargetAccountingLine createTargetAccountingLine() throws InstantiationException, IllegalAccessException {
return createAccountingLine(TargetAccountingLine.class);
}
public void addAsSourceTo(AccountingDocument document) throws IllegalAccessException, InstantiationException {
document.addSourceAccountingLine(createAccountingLine(SourceAccountingLine.class, document.getDocumentNumber(), document.getPostingYear(), document.getNextSourceLineNumber()));
}
public void addAsVoucherSourceTo(AccountingDocument document) throws IllegalAccessException, InstantiationException {
VoucherSourceAccountingLine line = createAccountingLine(VoucherSourceAccountingLine.class, document.getDocumentNumber(), document.getPostingYear(), document.getNextSourceLineNumber());
line.refreshReferenceObject("objectCode");
line.setObjectTypeCode(line.getObjectCode().getFinancialObjectTypeCode());
document.addSourceAccountingLine(line);
}
public void addAsTargetTo(AccountingDocument document) throws IllegalAccessException, InstantiationException {
document.addTargetAccountingLine(createAccountingLine(TargetAccountingLine.class, document.getDocumentNumber(), document.getPostingYear(), document.getNextTargetLineNumber()));
}
}