/*
* 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 org.kuali.kfs.module.purap.businessobject.PurApItem;
import org.kuali.kfs.module.purap.businessobject.PurchaseOrderItem;
import org.kuali.kfs.module.purap.document.PurchaseOrderDocument;
import org.kuali.kfs.vnd.businessobject.CommodityCode;
import org.kuali.kfs.vnd.fixture.CommodityCodeFixture;
import org.kuali.rice.core.api.util.type.KualiDecimal;
/**
* Fixture class for Purchase Order Item.
*/
public enum PurchaseOrderItemFixture {
PO_QTY_UNRESTRICTED_ITEM_1(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.BASIC_QTY_ITEM_1, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_QTY_UNRESTRICTED_ITEM_2(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.BASIC_QTY_ITEM_2, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_VALID_FREIGHT_ITEM(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.VALID_FREIGHT_ITEM, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_VALID_SHIPPING_AND_HANDLING_ITEM(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.VALID_SHIPPING_AND_HANDLING_ITEM, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_WITH_MISC_CREDIT_ITEM(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.VALID_MISC_CREDIT_ITEM, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_WITH_NEGATIVE_FREIGHT_ITEM(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.NEGATIVE_FREIGHT_ITEM, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_WITH_NEGATIVE_SHIPPING_AND_HANDLING_ITEM(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.NEGATIVE_SHIPPING_AND_HANDLING_ITEM, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_WITH_ZERO_FREIGHT_ITEM(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.ZERO_FREIGHT_ITEM, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_WITH_ZERO_SHIPPING_AND_HANDLING_ITEM(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.ZERO_SHIPPING_AND_HANDLING_ITEM, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_WITH_MISC_ITEM_NO_DESC(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.MISC_ITEM_NO_DESC, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
PO_QTY_APO_ITEM_1(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.APO_QTY_ITEM_1, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.PO_APO_ACCOUNT_1 } // requisitionAccountMultiFixtures
),
PO_ITEM_BASIC_ACTIVE_COMMODITY_CODE(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.BASIC_QTY_ITEM_1, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 }, // purchaseOrderAccountMultiFixtures
CommodityCodeFixture.COMMODITY_CODE_BASIC_ACTIVE //commodityCodeFixture
),
PO_ITEM_BASIC_INACTIVE_COMMODITY_CODE(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.BASIC_QTY_ITEM_1, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 }, // purchaseOrderAccountMultiFixtures
CommodityCodeFixture.COMMODITY_CODE_BASIC_INACTIVE //commodityCodeFixture
),
PO_ITEM_NON_EXISTENCE_COMMODITY_CODE(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.BASIC_QTY_ITEM_1, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 }, // purchaseOrderAccountMultiFixtures
CommodityCodeFixture.COMMODITY_CODE_NON_EXISTENCE //commodityCodeFixture
),
PO_ITEM_THRESHOLD_CHECK(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.ITEM_FOR_THRESHOLD_CHECK, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 }, // purchaseOrderAccountMultiFixtures
CommodityCodeFixture.COMMODITY_CODE_BASIC_ACTIVE //commodityCodeFixture
),
EINVOICE_PO_ITEM(null, // documentNumber,
null, // itemInvoicedTotalQuantity,
null, // itemInvoicedTotalAmount,
null, // itemReceivedTotalQuantity,
null, // itemReturnedTotalQuantity,
null, // itemOutstandingEncumberedQuantity,
null, // itemOutstandingEncumberedAmount,
true, // itemActiveIndicator,
PurApItemFixture.EINVOICE_ITEM, // purApItemFixture
new PurchaseOrderAccountingLineFixture[] { PurchaseOrderAccountingLineFixture.BASIC_PO_ACCOUNT_1 } // purchaseOrderAccountMultiFixtures
),
;
private String documentNumber;
private KualiDecimal itemInvoicedTotalQuantity;
private KualiDecimal itemInvoicedTotalAmount;
private KualiDecimal itemReceivedTotalQuantity;
private KualiDecimal itemReturnedTotalQuantity;
private KualiDecimal itemOutstandingEncumberedQuantity;
private KualiDecimal itemOutstandingEncumberedAmount;
private boolean itemActiveIndicator = true;
private PurApItemFixture purApItemFixture;
private PurchaseOrderAccountingLineFixture[] purchaseOrderAccountingLineFixtures;
private CommodityCodeFixture commodityCodeFixture;
/**
* Private Constructor.
*/
private PurchaseOrderItemFixture(String documentNumber, KualiDecimal itemInvoicedTotalQuantity, KualiDecimal itemInvoicedTotalAmount, KualiDecimal itemReceivedTotalQuantity, KualiDecimal itemReturnedTotalQuantity, KualiDecimal itemOutstandingEncumberedQuantity, KualiDecimal itemOutstandingEncumberedAmount, boolean itemActiveIndicator, PurApItemFixture purApItemFixture, PurchaseOrderAccountingLineFixture[] purchaseOrderAccountingLineFixtures) {
this.documentNumber = documentNumber;
this.itemInvoicedTotalQuantity = itemInvoicedTotalQuantity;
this.itemInvoicedTotalAmount = itemInvoicedTotalAmount;
this.itemReceivedTotalQuantity = itemReceivedTotalQuantity;
this.itemReturnedTotalQuantity = itemReturnedTotalQuantity;
this.itemOutstandingEncumberedQuantity = itemOutstandingEncumberedQuantity;
this.itemOutstandingEncumberedAmount = itemOutstandingEncumberedAmount;
this.itemActiveIndicator = itemActiveIndicator;
this.purApItemFixture = purApItemFixture;
this.purchaseOrderAccountingLineFixtures = purchaseOrderAccountingLineFixtures;
}
private PurchaseOrderItemFixture(String documentNumber, KualiDecimal itemInvoicedTotalQuantity, KualiDecimal itemInvoicedTotalAmount, KualiDecimal itemReceivedTotalQuantity, KualiDecimal itemReturnedTotalQuantity, KualiDecimal itemOutstandingEncumberedQuantity, KualiDecimal itemOutstandingEncumberedAmount, boolean itemActiveIndicator, PurApItemFixture purApItemFixture, PurchaseOrderAccountingLineFixture[] purchaseOrderAccountingLineFixtures, CommodityCodeFixture commodityCodeFixture) {
this.documentNumber = documentNumber;
this.itemInvoicedTotalQuantity = itemInvoicedTotalQuantity;
this.itemInvoicedTotalAmount = itemInvoicedTotalAmount;
this.itemReceivedTotalQuantity = itemReceivedTotalQuantity;
this.itemReturnedTotalQuantity = itemReturnedTotalQuantity;
this.itemOutstandingEncumberedQuantity = itemOutstandingEncumberedQuantity;
this.itemOutstandingEncumberedAmount = itemOutstandingEncumberedAmount;
this.itemActiveIndicator = itemActiveIndicator;
this.purApItemFixture = purApItemFixture;
this.purchaseOrderAccountingLineFixtures = purchaseOrderAccountingLineFixtures;
this.commodityCodeFixture = commodityCodeFixture;
}
/**
* Creates a Purchase Order Item from this fixture and adds the item to the specified Purchase Order Document.
*
* @param purchaseOrderDocument the specified Purchase Order Document.
*/
public void addTo(PurchaseOrderDocument purchaseOrderDocument) {
PurchaseOrderItem item = null;
item = (PurchaseOrderItem) this.createPurchaseOrderItem(purApItemFixture);
purchaseOrderDocument.addItem(item);
// iterate over the accounts
for (PurchaseOrderAccountingLineFixture purchaseOrderAccountMultiFixture : purchaseOrderAccountingLineFixtures) {
purchaseOrderAccountMultiFixture.addTo(item);
//add latest one to source accounting lines
//purchaseOrderDocument.getSourceAccountingLines().add(item.getSourceAccountingLines().get(item.getSourceAccountingLines().size()-1));
}
}
/**
* Creates a Purchase Order Item using the specified PurAp Item Fixture.
*
* @param purApItemFixture the specified PurAp Item Fixture.
* @return the created Purchase Order Item.
*/
public PurApItem createPurchaseOrderItem(PurApItemFixture purApItemFixture) {
PurchaseOrderItem item = (PurchaseOrderItem) purApItemFixture.createPurApItem(PurchaseOrderItem.class);
item.setDocumentNumber(documentNumber);
item.setItemInvoicedTotalQuantity(itemInvoicedTotalQuantity);
item.setItemInvoicedTotalAmount(itemInvoicedTotalAmount);
item.setItemReceivedTotalQuantity(itemReceivedTotalQuantity);
// item.setItemReturnedTotalQuantity(itemReturnedTotalQuantity);
item.setItemOutstandingEncumberedQuantity(itemOutstandingEncumberedQuantity);
item.setItemOutstandingEncumberedAmount(itemOutstandingEncumberedAmount);
item.setItemActiveIndicator(itemActiveIndicator);
if (commodityCodeFixture != null) {
CommodityCode commodityCode = commodityCodeFixture.createCommodityCode();
item.setCommodityCode(commodityCode);
item.setPurchasingCommodityCode(commodityCode.getPurchasingCommodityCode());
}
return item;
}
}