/* * 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.purap.fixture; import java.math.BigDecimal; import org.kuali.kfs.sys.businessobject.TaxRegion; import org.kuali.kfs.sys.businessobject.TaxRegionPostalCode; import org.kuali.kfs.sys.businessobject.TaxRegionRate; import org.kuali.kfs.sys.businessobject.TaxRegionState; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.datetime.DateTimeService; public class TaxFixture { public enum TaxTestCaseFixture { SalesTaxHappyPathTest( true, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull true, //fundGroupCodeTaxable true, //objectCodeTaxable true, //isDeliveryStateTaxable false //isUseTax ), SalesTaxItemTypeNotTaxableTest( false, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull true, //fundGroupCodeTaxable true, //objectCodeTaxable true, //isDeliveryStateTaxable false //isUseTax ), SalesTaxItemTaxFieldNullTest( true, //isItemTypeTaxable false, //isItemTaxAmountNull true, //iscommodityCodeNull true, //fundGroupCodeTaxable true, //objectCodeTaxable true, //isDeliveryStateTaxable false //isUseTax ), SalesTaxCommodityCodeNullTest( true, //isItemTypeTaxable true, //isItemTaxAmountNull false, //iscommodityCodeNull true, //fundGroupCodeTaxable true, //objectCodeTaxable true, //isDeliveryStateTaxable false //isUseTax ), SalesTaxDeliveryStateExemptTest( true, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull true, //fundGroupCodeTaxable true, //objectCodeTaxable false, //isDeliveryStateTaxable false //isUseTax ), SalesTaxDeliveryStateExemptWithNonTaxableFundTest( true, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull false, //fundGroupCodeTaxable true, //objectCodeTaxable false, //isDeliveryStateTaxable false //isUseTax ), SalesTaxAccountNotTaxableTest( true, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull false, //fundGroupCodeTaxable true, //objectCodeTaxable true, //isDeliveryStateTaxable false //isUseTax ), SalesTaxObjectCodeNotTaxableTest( true, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull true, //fundGroupCodeTaxable false, //objectCodeTaxable true, //isDeliveryStateTaxable false //isUseTax ), SalesTaxParamDisabledTest( true, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull true, //fundGroupCodeTaxable true, //objectCodeTaxable true, //isDeliveryStateTaxable false, //isUseTax false //isSalesTaxEnabled ), UseTaxHappyPathTest( true, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull true, //fundGroupCodeTaxable true, //objectCodeTaxable true, //isDeliveryStateTaxable true //isUseTax ), UseTaxItemTypeNotTaxableTest( false, //isItemTypeTaxable true, //isItemTaxAmountNull true, //iscommodityCodeNull true, //fundGroupCodeTaxable true, //objectCodeTaxable true, //isDeliveryStateTaxable true //isUseTax ); private boolean isSalesTaxEnabled; private final boolean isItemTypeTaxable; private final boolean isItemTaxAmountNull; private final boolean iscommodityCodeNull; private final boolean fundGroupCodeTaxable; private final boolean objectCodeTaxable; private final boolean isDeliveryStateTaxable; private final boolean isUseTax; TaxTestCaseFixture(boolean isItemTypeTaxable, boolean isItemTaxAmountNull, boolean iscommodityCodeNull, boolean fundGroupCodeTaxable, boolean objectCodeTaxable, boolean isDeliveryStateTaxable, boolean isUseTax) { this.isItemTypeTaxable = isItemTypeTaxable; this.isItemTaxAmountNull = isItemTaxAmountNull; this.iscommodityCodeNull = iscommodityCodeNull; this.fundGroupCodeTaxable = fundGroupCodeTaxable; this.objectCodeTaxable = objectCodeTaxable; this.isDeliveryStateTaxable = isDeliveryStateTaxable; this.isUseTax = isUseTax; this.isSalesTaxEnabled = true; } TaxTestCaseFixture(boolean isItemTypeTaxable, boolean isItemTaxAmountNull, boolean iscommodityCodeNull, boolean fundGroupCodeTaxable, boolean objectCodeTaxable, boolean isDeliveryStateTaxable, boolean isUseTax, boolean isSalesTaxEnabled) { this.isItemTypeTaxable = isItemTypeTaxable; this.isItemTaxAmountNull = isItemTaxAmountNull; this.iscommodityCodeNull = iscommodityCodeNull; this.fundGroupCodeTaxable = fundGroupCodeTaxable; this.objectCodeTaxable = objectCodeTaxable; this.isDeliveryStateTaxable = isDeliveryStateTaxable; this.isUseTax = isUseTax; this.isSalesTaxEnabled = isSalesTaxEnabled; } public boolean isConsolidationObjectCode() { return objectCodeTaxable; } public boolean isFundGroupCodeTaxable() { return fundGroupCodeTaxable; } public boolean iscommodityCodeNull() { return iscommodityCodeNull; } public boolean isItemTypeTaxable() { return isItemTypeTaxable; } public boolean isUseTax() { return isUseTax; } public boolean isItemTaxAmountNull() { return isItemTaxAmountNull; } public boolean isObjectCodeTaxable() { return objectCodeTaxable; } public boolean isDeliveryStateTaxable() { return isDeliveryStateTaxable; } public boolean isSalesTaxEnabled(){ return isSalesTaxEnabled; } } /** * All the below tax fixtures are copied from TaxServiceTest */ public enum TaxRegionFixture { TAX_REGION_NO_USE_TAX("NOUSETAX", "NOUSETAX", "POST", "BA", "6044900", "1500", false, true), TAX_REGION_WITH_USE_TAX("USETAX", "USETAX", "ST", "BA", "6044900", "1500", true, true), ; public String taxRegionCode; public String taxRegionName; public String taxRegionTypeCode; public String chartOfAccountsCode; public String accountNumber; public String financialObjectCode; public boolean taxRegionUseTaxIndicator; public boolean active; private TaxRegionFixture(String taxRegionCode, String taxRegionName, String taxRegionTypeCode, String chartOfAccountsCode, String accountNumber, String financialObjectCode, boolean taxRegionUseTaxIndicator, boolean active) { this.taxRegionCode = taxRegionCode; this.taxRegionName = taxRegionName; this.taxRegionTypeCode = taxRegionTypeCode; this.chartOfAccountsCode = chartOfAccountsCode; this.accountNumber = accountNumber; this.financialObjectCode = financialObjectCode; this.taxRegionUseTaxIndicator = taxRegionUseTaxIndicator; this.active = active; } public TaxRegion createTaxRegion(TaxRegionRateFixture[] taxRegionRateFixtures, TaxRegionPostalCodeFixture[] taxRegionPostalCodeFixtures, TaxRegionStateFixture[] taxRegionStateFixtures) { TaxRegion taxRegion = new TaxRegion(); taxRegion.setTaxRegionCode(this.taxRegionCode); taxRegion.setTaxRegionName(this.taxRegionName); taxRegion.setTaxRegionTypeCode(this.taxRegionTypeCode); taxRegion.setChartOfAccountsCode(this.chartOfAccountsCode); taxRegion.setAccountNumber(this.accountNumber); taxRegion.setFinancialObjectCode(this.financialObjectCode); taxRegion.setTaxRegionUseTaxIndicator(this.taxRegionUseTaxIndicator); taxRegion.setActive(this.active); if (taxRegionRateFixtures != null) { for (TaxRegionRateFixture taxRegionRateFixture : taxRegionRateFixtures) { taxRegionRateFixture.addTo(taxRegion); } } if (taxRegionPostalCodeFixtures != null) { for (TaxRegionPostalCodeFixture taxRegionPostalCodeFixture : taxRegionPostalCodeFixtures) { taxRegionPostalCodeFixture.addTo(taxRegion); } } if (taxRegionStateFixtures != null) { for (TaxRegionStateFixture taxRegionStateFixture : taxRegionStateFixtures) { taxRegionStateFixture.addTo(taxRegion); } } return taxRegion; } } /** * This class is a fixture for creating tax region rates */ public enum TaxRegionRateFixture { TAX_REGION_RATE_05("01/01/2008", new BigDecimal(.05)), TAX_REGION_RATE_07("01/01/2008", new BigDecimal(.07)), ; public String effectiveDate; public BigDecimal taxRate; private TaxRegionRateFixture(String effectiveDate, BigDecimal taxRate) { this.effectiveDate = effectiveDate; this.taxRate = taxRate; } public TaxRegionRate createTaxRegionRate() { TaxRegionRate taxRegionRate = new TaxRegionRate(); taxRegionRate.setTaxRate(this.taxRate); try { taxRegionRate.setEffectiveDate(SpringContext.getBean(DateTimeService.class).convertToSqlDate(this.effectiveDate)); } catch( Exception e ){ } return taxRegionRate; } public void addTo(TaxRegion taxRegion) { TaxRegionRate taxRegionRate = this.createTaxRegionRate(); taxRegionRate.setTaxRegionCode(taxRegion.getTaxRegionCode()); taxRegion.getTaxRegionRates().add(taxRegionRate); } } public enum TaxRegionPostalCodeFixture { PO_46202("46202-5260", "US", true), PO_46202_SHORT("46202", "US", true), ; public String postalCode; public String countryCode; public boolean active; private TaxRegionPostalCodeFixture(String postalCode, String countryCode, boolean active) { this.postalCode = postalCode; this.countryCode = countryCode; this.active = active; } public TaxRegionPostalCode createTaxRegionPostalCode() { TaxRegionPostalCode taxRegionPostalCode = new TaxRegionPostalCode(); taxRegionPostalCode.setPostalCode(this.postalCode); taxRegionPostalCode.setPostalCountryCode(this.countryCode); taxRegionPostalCode.setActive(this.active); return taxRegionPostalCode; } public void addTo(TaxRegion taxRegion) { TaxRegionPostalCode taxRegionPostalCode = this.createTaxRegionPostalCode(); taxRegionPostalCode.setTaxRegionCode(taxRegion.getTaxRegionCode()); taxRegion.getTaxRegionPostalCodes().add(taxRegionPostalCode); } } public enum TaxRegionStateFixture { IN("IN", "US", true), ; public String stateCode; public String countryCode; public boolean active; private TaxRegionStateFixture(String stateCode, String countryCode, boolean active) { this.stateCode = stateCode; this.countryCode = countryCode; this.active = active; } public TaxRegionState createTaxRegionState() { TaxRegionState taxRegionState = new TaxRegionState(); taxRegionState.setStateCode(this.stateCode); taxRegionState.setPostalCountryCode(this.countryCode); taxRegionState.setActive(this.active); return taxRegionState; } public void addTo(TaxRegion taxRegion) { TaxRegionState taxRegionState = this.createTaxRegionState(); taxRegionState.setTaxRegionCode(taxRegion.getTaxRegionCode()); taxRegion.getTaxRegionStates().add(taxRegionState); } } }