/* * 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 java.util.ArrayList; import java.util.HashSet; import java.util.List; import org.kuali.kfs.coa.businessobject.ObjectCode; import org.kuali.kfs.integration.cab.CapitalAssetBuilderAssetTransactionType; import org.kuali.kfs.integration.purap.ItemCapitalAsset; import org.kuali.kfs.module.purap.businessobject.RecurringPaymentType; import org.kuali.kfs.module.purap.fixture.PurapTestConstants.PurCams; import org.kuali.rice.core.api.util.type.KualiDecimal; public enum PurchasingCapitalAssetFixture { TWO_CAPITAL(ValidationStrings.CAPITAL,ValidationStrings.CAPITAL), TWO_EXPENSE(ValidationStrings.EXPENSE,ValidationStrings.EXPENSE), CAPITAL_EXPENSE(ValidationStrings.CAPITAL,ValidationStrings.EXPENSE), POSITIVE_QUANTITY_CAPITAL_PRICE_CAP_OBJECT_CODE(PurCams.POSITIVE_AMOUNT,PurCams.CAPITAL_AMOUNT,PurCams.CAPITAL_OBJECT_CODE), POSITIVE_QUANTITY_CAPITAL_PRICE_POSSIBLE_OBJECT_CODE(PurCams.POSITIVE_AMOUNT,PurCams.CAPITAL_AMOUNT,PurCams.POSSIBLE_OBJECT_CODE), POSITIVE_QUANTITY_CAPITAL_PRICE_EXPENSE_OBJECT_CODE(PurCams.POSITIVE_AMOUNT,PurCams.CAPITAL_AMOUNT,PurCams.EXPENSE_OBJECT_CODE), ZERO_QUANTITY_CAPITAL_PRICE_POSSIBLE_OBJECT_CODE(PurCams.ZERO_AMOUNT,PurCams.CAPITAL_AMOUNT,PurCams.POSSIBLE_OBJECT_CODE), NEGATIVE_QUANTITY_CAPITAL_PRICE_POSSIBLE_OBJECT_CODE(PurCams.NEGATIVE_AMOUNT,PurCams.CAPITAL_AMOUNT,PurCams.POSSIBLE_OBJECT_CODE), NULL_QUANTITY_CAPITAL_PRICE_POSSIBLE_OBJECT_CODE(null,PurCams.CAPITAL_AMOUNT,PurCams.POSSIBLE_OBJECT_CODE), POSITIVE_QUANTITY_POSITIVE_PRICE_POSSIBLE_OBJECT_CODE(PurCams.POSITIVE_AMOUNT,PurCams.CAPITAL_POSITIVE_AMOUNT,PurCams.POSSIBLE_OBJECT_CODE), RECURRING_PAYMENT_TYPE_NONRECURRING_TRAN_TYPE(PurCams.RECURRING_PAYMENT_TYPE, PurCams.NONRECURRING_ASSET_NUMBER_REQUIRING_TRAN_TYPE), NO_PAYMENT_TYPE_NONRECURRING_TRAN_TYPE(null, PurCams.NONRECURRING_ASSET_NUMBER_REQUIRING_TRAN_TYPE), RECURRING_PAYMENT_TYPE_NO_TRAN_TYPE(PurCams.RECURRING_PAYMENT_TYPE, null), RECURRING_PAYMENT_TYPE_RECURRING_TRAN_TYPE(PurCams.RECURRING_PAYMENT_TYPE, PurCams.RECURRING_TRAN_TYPE), NO_PAYMENT_TYPE_RECURRING_TRAN_TYPE(null, PurCams.RECURRING_TRAN_TYPE), ASSET_NUMBER_REQUIRING_TRAN_TYPE_ONE_ASSET(PurCams.NONRECURRING_ASSET_NUMBER_REQUIRING_TRAN_TYPE,PurCams.ASSET_NUMBER_1), ASSET_NUMBER_REQUIRING_TRAN_TYPE_NO_ASSETS(PurCams.NONRECURRING_ASSET_NUMBER_REQUIRING_TRAN_TYPE), ASSET_NUMBER_REQUIRING_TRAN_TYPE_TWO_ASSETS(PurCams.NONRECURRING_ASSET_NUMBER_REQUIRING_TRAN_TYPE,PurCams.ASSET_NUMBER_1,PurCams.ASSET_NUMBER_2), NONASSET_NUMBER_REQUIRING_TRAN_TYPE_NO_ASSETS(PurCams.NONRECURRING_NON_ASSET_NUMBER_REQUIRING_TRAN_TYPE), NONASSET_NUMBER_REQUIRING_TRAN_TYPE_ONE_ASSET(PurCams.NONRECURRING_NON_ASSET_NUMBER_REQUIRING_TRAN_TYPE,PurCams.ASSET_NUMBER_1), ; HashSet<String> capitalOrExpenseSet = new HashSet<String>(); ObjectCode objectCode; KualiDecimal quantity; BigDecimal itemUnitPrice; CapitalAssetBuilderAssetTransactionType capitalAssetTransactionType = null; RecurringPaymentType recurringPaymentType = null; List<ItemCapitalAsset> assets = null; /** * Constructor used for tests of PurchasingDocumentRuleBase.validateAccountingLinesNotCapitalAndExpense. * * @param capOrExp1 * @param capOrExp2 * @see PurchasingDocumentRuleBase.validateAccountingLinesNotCapitalAndExpense */ private PurchasingCapitalAssetFixture(String capOrExp1, String capOrExp2) { this.capitalOrExpenseSet.add(capOrExp1); this.capitalOrExpenseSet.add(capOrExp2); this.objectCode = PurCams.EXPENSE_OBJECT_CODE; //Used in these tests only for display of errors. } /** * Constructor used for tests of PurchasingDocumentRuleBase.validateLevelCapitalAssetIndication. * * @param quantity * @param extendedPrice * @param objectCode * @see PurchasingDocumentRuleBase.validateLevelCapitalAssetIndication */ private PurchasingCapitalAssetFixture(KualiDecimal quantity, BigDecimal itemUnitPrice, ObjectCode objectCode) { this.quantity = quantity; this.itemUnitPrice = itemUnitPrice; this.objectCode = objectCode; } /** * Constructor used for tests of PurchasingDocumentRuleBase.validateCapitalAssetTransactionTypeVersusRecurrence * * @param recurringPaymentType * @param capitalAssetTransactionTypeCode * @see PurchasingDocumentRuleBase.validateCapitalAssetTransactionTypeVersusRecurrence */ private PurchasingCapitalAssetFixture(RecurringPaymentType recurringPaymentType, CapitalAssetBuilderAssetTransactionType capitalAssetTransactionType) { this.capitalAssetTransactionType = (CapitalAssetBuilderAssetTransactionType)capitalAssetTransactionType; this.recurringPaymentType = recurringPaymentType; } /** * Constructor used for tests of PurchasingDocumentRuleBase.validateCapitalAssetNumberRequirements. * Note the variable capitalAssetNumbers argument. * * @param capitalAssetTransactionType A CapitalAssetBuilderAssetTransactionType * @param capitalAssetNumbers A variable argument of Longs. * @see PurchasingDocumentRuleBase.validateCapitalAssetNumberRequirements */ private PurchasingCapitalAssetFixture(CapitalAssetBuilderAssetTransactionType capitalAssetTransactionType, Long... capitalAssetNumbers) { this.capitalAssetTransactionType = capitalAssetTransactionType; if ( capitalAssetNumbers != null ) { this.assets = new ArrayList<ItemCapitalAsset>(); for( Long capitalAssetNumber : capitalAssetNumbers ) { //TODO: Fix this //this.assets.add(new PurchasingItemCapitalAssetBase(capitalAssetNumber)); } } } public HashSet<String> populateForCapitalAndExpenseCheck() { return capitalOrExpenseSet; } public HashSet<String> getCapitalOrExpenseSet() { return capitalOrExpenseSet; } public void setCapitalOrExpenseSet(HashSet<String> capitalOrExpenseSet) { this.capitalOrExpenseSet = capitalOrExpenseSet; } public BigDecimal getItemUnitPrice() { return itemUnitPrice; } public void setItemUnitPrice(BigDecimal itemUnitPrice) { this.itemUnitPrice = itemUnitPrice; } public ObjectCode getObjectCode() { return objectCode; } public void setObjectCode(ObjectCode objectCode) { this.objectCode = objectCode; } public KualiDecimal getQuantity() { return quantity; } public void setQuantity(KualiDecimal quantity) { this.quantity = quantity; } public List<ItemCapitalAsset> getAssets() { return assets; } public void setAssets(List<ItemCapitalAsset> assets) { this.assets = assets; } public CapitalAssetBuilderAssetTransactionType getCapitalAssetBuilderAssetTransactionType() { return capitalAssetTransactionType; } public void setCapitalAssetBuilderAssetTransactionType(CapitalAssetBuilderAssetTransactionType capitalAssetTransactionType) { this.capitalAssetTransactionType = capitalAssetTransactionType; } public RecurringPaymentType getRecurringPaymentType() { return recurringPaymentType; } public void setRecurringPaymentType(RecurringPaymentType recurringPaymentType) { this.recurringPaymentType = recurringPaymentType; } public static class ValidationStrings { public static final String CAPITAL = "Capital"; public static final String EXPENSE = "Expense"; public static final String RECURRING = "Recurring"; public static final String NON_RECURRING = "Non-recurring"; } }