/* * 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.ar.fixture; import java.math.BigDecimal; import java.sql.Date; import org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail; import org.kuali.kfs.module.ar.document.CustomerInvoiceDocument; import org.kuali.rice.core.api.util.type.KualiDecimal; /** * Fixture class for customer invoice details */ public enum CustomerInvoiceDetailFixture { BASE_CUSTOMER_INVOICE_DETAIL(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode null, // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal(10), // invoiceItemUnitPrice new KualiDecimal(10), // amount new KualiDecimal(0) // invoiceItemTaxAmount , null), CUSTOMER_INVOICE_DETAIL_AMOUNT_EQUALS_ZERO(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode null, // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(0), // invoiceItemQuantity new BigDecimal(0), // invoiceItemUnitPrice new KualiDecimal(0), // amount new KualiDecimal(0) // invoiceItemTaxAmount , null), CUSTOMER_INVOICE_DETAIL_WITH_NEGATIVE_AMOUNT(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode null, // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal(-1), // invoiceItemUnitPrice new KualiDecimal(-1), // amount new KualiDecimal(0) // invoiceItemTaxAmount , null), CUSTOMER_INVOICE_DETAIL_DISCOUNT_WITH_NEGATIVE_AMOUNT(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode null, // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal(-1), // invoiceItemUnitPrice new KualiDecimal(-1), // amount new KualiDecimal(0) // invoiceItemTaxAmount , new CustomerInvoiceDetail()), CUSTOMER_INVOICE_DETAIL_DISCOUNT_WITH_POSITIVE_AMOUNT(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode null, // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal(1), // invoiceItemUnitPrice new KualiDecimal(1), // amount new KualiDecimal(0) // invoiceItemTaxAmount , new CustomerInvoiceDetail()), CUSTOMER_INVOICE_DETAIL_SUBFUND_RECEIVABLE(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode "8110", // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal(1), // invoiceItemUnitPrice new KualiDecimal(1), // amount new KualiDecimal(0) // invoiceItemTaxAmount , null), CUSTOMER_INVOICE_DETAIL_SUBFUND_RECEIVABLE_2(null, // documentNumber "BL", // chartOfAccountsCode "2336320", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode "8118", // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal(1), // invoiceItemUnitPrice new KualiDecimal(5), // amount new KualiDecimal(0) // invoiceItemTaxAmount , null), CUSTOMER_INVOICE_DETAIL_CHART_RECEIVABLE(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode "8118", // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal(1), // invoiceItemUnitPrice new KualiDecimal(1), // amount new KualiDecimal(0), // invoiceItemTaxAmount null), CUSTOMER_INVOICE_DETAIL_CHART_RECEIVABLE_2(null, // documentNumber "BL", // chartOfAccountsCode "2336320", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode "8118", // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal(1), // invoiceItemUnitPrice new KualiDecimal(5.0), // amount new KualiDecimal(0), // invoiceItemTaxAmount null), ZERO_DOLLAR_INVOICE_DETAIL(KualiDecimal.ZERO), ONE_DOLLAR_INVOICE_DETAIL(new KualiDecimal(1)), TEN_DOLLAR_INVOICE_DETAIL(new KualiDecimal(10)), FIFTY_DOLLAR_INVOICE_DETAIL(new KualiDecimal(50)), ONE_HUNDRED_DOLLAR_INVOICE_DETAIL(new KualiDecimal(100)), ONE_THOUSAND_DOLLAR_INVOICE_DETAIL(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber null, // subAccountNumber "5000", // financialObjectCode null, // financialSubObjectCode null, // organizationRefId null, // projectCode null, // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal("1000.00"), // invoiceItemUnitPrice new KualiDecimal("1000.00"), // amount new KualiDecimal(0) // invoiceItemTaxAmount , null), FIVE_HUNDRED_DOLLAR_INVOICE_DETAIL(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber null, // subAccountNumber "5000", // financialObjectCode null, // financialSubObjectCode null, // organizationRefId null, // projectCode null, // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity new BigDecimal("500.00"), // invoiceItemUnitPrice new KualiDecimal("500.00"), // amount new KualiDecimal(0) // invoiceItemTaxAmount , null), ; public String documentNumber; public String chartOfAccountsCode; public String accountNumber; public String subAccountNumber; public String financialObjectCode; public String financialSubObjectCode; public String projectCode; public String organizationReferenceId; public String accountsReceivableObjectCode; public Date invoiceItemServiceDate; public BigDecimal invoiceItemQuantity; public BigDecimal invoiceItemUnitPrice; public KualiDecimal amount; public KualiDecimal invoiceItemTaxAmount; public CustomerInvoiceDetail parentCustomerInvoiceDetail; /** * Create a customer invoice detail where all you really care about is the amount. * * @param amount */ CustomerInvoiceDetailFixture(KualiDecimal amount) { this(null, // documentNumber "BL", // chartOfAccountsCode "1031400", // accountNumber "ADV", // subAccountNumber "5000", // financialObjectCode "SAC", // financialSubObjectCode "CID", // organizationRefId "BOB", // projectCode null, // accountsReceivableObjectCode Date.valueOf("2008-01-01"), // invoiceItemServiceDate new BigDecimal(1), // invoiceItemQuantity amount.bigDecimalValue(), // invoiceItemUnitPrice amount, // amount new KualiDecimal(0), // invoiceItemTaxAmount null); } /** * Create a customer invoice detail with specific values for all fields. * * @param documentNumber * @param chartOfAccountsCode * @param accountNumber * @param subAccountNumber * @param financialObjectCode * @param financialSubObjectCode * @param organizationReferenceId * @param projectCode * @param accountsReceivableObjectCode * @param invoiceItemServiceDate * @param invoiceItemQuantity * @param invoiceItemUnitPrice * @param amount * @param invoiceItemTaxAmount * @param parentCustomerInvoiceDetail */ CustomerInvoiceDetailFixture(String documentNumber, String chartOfAccountsCode, String accountNumber, String subAccountNumber, String financialObjectCode, String financialSubObjectCode, String organizationReferenceId, String projectCode, String accountsReceivableObjectCode, Date invoiceItemServiceDate, BigDecimal invoiceItemQuantity, BigDecimal invoiceItemUnitPrice, KualiDecimal amount, KualiDecimal invoiceItemTaxAmount, CustomerInvoiceDetail parentCustomerInvoiceDetail) { this.documentNumber = documentNumber; this.chartOfAccountsCode = chartOfAccountsCode; this.accountNumber = accountNumber; this.subAccountNumber = subAccountNumber; this.financialObjectCode = financialObjectCode; this.financialSubObjectCode = financialSubObjectCode; this.projectCode = projectCode; this.organizationReferenceId = organizationReferenceId; this.accountsReceivableObjectCode = accountsReceivableObjectCode; this.invoiceItemServiceDate = invoiceItemServiceDate; this.invoiceItemQuantity = invoiceItemQuantity; this.invoiceItemUnitPrice = invoiceItemUnitPrice; this.amount = amount; this.invoiceItemTaxAmount = invoiceItemTaxAmount; this.parentCustomerInvoiceDetail = parentCustomerInvoiceDetail; } /** * This method creates a customer invoice detail based on the information for this enum * * @return */ public CustomerInvoiceDetail createCustomerInvoiceDetail() { CustomerInvoiceDetail customerInvoiceDetail = new CustomerInvoiceDetail(); customerInvoiceDetail.setDocumentNumber(documentNumber); customerInvoiceDetail.setChartOfAccountsCode(chartOfAccountsCode); customerInvoiceDetail.setAccountNumber(accountNumber); customerInvoiceDetail.setSubAccountNumber(subAccountNumber); customerInvoiceDetail.setFinancialObjectCode(financialObjectCode); customerInvoiceDetail.setFinancialSubObjectCode(financialSubObjectCode); customerInvoiceDetail.setProjectCode(projectCode); customerInvoiceDetail.setOrganizationReferenceId(organizationReferenceId); customerInvoiceDetail.setAccountsReceivableObjectCode(accountsReceivableObjectCode); customerInvoiceDetail.setInvoiceItemServiceDate(invoiceItemServiceDate); customerInvoiceDetail.setInvoiceItemUnitPrice(invoiceItemUnitPrice); customerInvoiceDetail.setInvoiceItemQuantity(invoiceItemQuantity); customerInvoiceDetail.setAmount(amount); customerInvoiceDetail.setInvoiceItemTaxAmount(invoiceItemTaxAmount); customerInvoiceDetail.setParentDiscountCustomerInvoiceDetail(parentCustomerInvoiceDetail); return customerInvoiceDetail; } /** * Add this customer invoice detail to the passed in document * * @param customerInvoiceDocument */ public CustomerInvoiceDetail addTo(CustomerInvoiceDocument customerInvoiceDocument) { CustomerInvoiceDetail customerInvoiceDetail = this.createCustomerInvoiceDetail(); customerInvoiceDetail.setDocumentNumber(customerInvoiceDocument.getDocumentNumber()); customerInvoiceDetail.setAccountNumber(accountNumber); customerInvoiceDetail.setAmount(amount); customerInvoiceDetail.setChartOfAccountsCode(chartOfAccountsCode); customerInvoiceDetail.setFinancialObjectCode(financialObjectCode); customerInvoiceDetail.setFinancialSubObjectCode(financialSubObjectCode); customerInvoiceDetail.setInvoiceItemQuantity(invoiceItemQuantity); customerInvoiceDetail.setInvoiceItemServiceDate(invoiceItemServiceDate); customerInvoiceDetail.setInvoiceItemTaxAmount(invoiceItemTaxAmount); customerInvoiceDetail.setInvoiceItemUnitPrice(invoiceItemUnitPrice); customerInvoiceDetail.setOrganizationReferenceId(organizationReferenceId); customerInvoiceDetail.setProjectCode(projectCode); customerInvoiceDetail.setSubAccountNumber(subAccountNumber); customerInvoiceDocument.addSourceAccountingLine(customerInvoiceDetail); return customerInvoiceDetail; } }