/*
* 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.sql.Date;
import java.sql.Timestamp;
import org.kuali.kfs.module.purap.document.VendorCreditMemoDocument;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.core.api.datetime.DateTimeService;
import org.kuali.rice.core.api.util.type.KualiDecimal;
public enum CreditMemoDocumentFixture {
CM_ONLY_REQUIRED_PO_FIELDS(null, // paymentRequestIdentifier
null, // creditMemoNumber
null, // creditMemoDate
null, // creditMemoAmount
new KualiDecimal(1), // grandTotal
new KualiDecimal(1), // totalDollarAmount
null, // creditMemoPaidTimestamp
null, // itemMiscellaneousCreditDescription
null, // purchaseOrderEndDate
"appleton", // accountsPayableProcessorIdentifier
PurchasingAccountsPayableDocumentFixture.CM_ONLY_REQUIRED_FIELDS, // purapDocumentFixture
AccountsPayableDocumentFixture.CM_ONLY_REQUIRED_FIELDS, // apDocumentFixture
new CreditMemoItemFixture[] {CreditMemoItemFixture.CM_QTY_UNRESTRICTED_ITEM_1} // requisitionItemMultiFixtures
),
CM_ONLY_REQUIRED_FIELDS(null, // paymentRequestIdentifier
"12345", // creditMemoNumber
SpringContext.getBean(DateTimeService.class).getCurrentSqlDate(), // creditMemoDate
new KualiDecimal(1), // creditMemoAmount
new KualiDecimal(1), // grandTotal
new KualiDecimal(1), // totalDollarAmount
null, // creditMemoPaidTimestamp
null, // itemMiscellaneousCreditDescription
null, // purchaseOrderEndDate
"appleton", // accountsPayableProcessorIdentifier
PurchasingAccountsPayableDocumentFixture.CM_ONLY_REQUIRED_FIELDS, // purapDocumentFixture
AccountsPayableDocumentFixture.CM_ONLY_REQUIRED_FIELDS, // apDocumentFixture
new CreditMemoItemFixture[] {CreditMemoItemFixture.CM_QTY_UNRESTRICTED_ITEM_1} // creditMemoItemMultiFixtures
);
public final Integer paymentRequestIdentifier;
public final String creditMemoNumber;
public final Date creditMemoDate;
public final KualiDecimal creditMemoAmount;
public final KualiDecimal grandTotal;
public final KualiDecimal totalDollarAmount;
public final Timestamp creditMemoPaidTimestamp;
public final String itemMiscellaneousCreditDescription;
public final Date purchaseOrderEndDate;
public final String accountsPayableProcessorIdentifier;
private PurchasingAccountsPayableDocumentFixture purapDocumentFixture;
private AccountsPayableDocumentFixture apDocumentFixture;
private CreditMemoItemFixture[] creditMemoItemFixtures;
private CreditMemoDocumentFixture(
Integer paymentRequestIdentifier,
String creditMemoNumber,
Date creditMemoDate,
KualiDecimal creditMemoAmount,
KualiDecimal grandTotal,
KualiDecimal totalDollarAmount,
Timestamp creditMemoPaidTimestamp,
String itemMiscellaneousCreditDescription,
Date purchaseOrderEndDate,
String accountsPayableProcessorIdentifier,
PurchasingAccountsPayableDocumentFixture purapDocumentFixture,
AccountsPayableDocumentFixture apDocumentFixture,
CreditMemoItemFixture[] creditMemoItemFixtures) {
this.paymentRequestIdentifier = paymentRequestIdentifier;
this.creditMemoNumber = creditMemoNumber;
this.creditMemoDate = creditMemoDate;
this.creditMemoAmount = creditMemoAmount;
this.grandTotal = grandTotal;
this.totalDollarAmount = totalDollarAmount;
this.creditMemoPaidTimestamp = creditMemoPaidTimestamp;
this.itemMiscellaneousCreditDescription = itemMiscellaneousCreditDescription;
this.purchaseOrderEndDate = purchaseOrderEndDate;
this.purapDocumentFixture = purapDocumentFixture;
this.apDocumentFixture = apDocumentFixture;
this.creditMemoItemFixtures = creditMemoItemFixtures;
this.accountsPayableProcessorIdentifier = accountsPayableProcessorIdentifier;
}
public VendorCreditMemoDocument createCreditMemoDocument() {
VendorCreditMemoDocument doc = apDocumentFixture.createCreditMemoDocument(purapDocumentFixture);
doc.setPaymentRequestIdentifier(this.paymentRequestIdentifier);
doc.setCreditMemoNumber(this.creditMemoNumber);
doc.setCreditMemoDate(this.creditMemoDate);
doc.setCreditMemoAmount(this.creditMemoAmount);
doc.setGrandTotal(this.grandTotal);
doc.setTotalDollarAmount(this.totalDollarAmount);
doc.setCreditMemoPaidTimestamp(this.creditMemoPaidTimestamp);
doc.setItemMiscellaneousCreditDescription(this.itemMiscellaneousCreditDescription);
doc.setPurchaseOrderEndDate(this.purchaseOrderEndDate);
doc.setAccountsPayableProcessorIdentifier(this.accountsPayableProcessorIdentifier);
//manually set bank for now
doc.setBankCode("TEST");
for (CreditMemoItemFixture creditMemoItemFixture : creditMemoItemFixtures) {
creditMemoItemFixture.addTo(doc);
}
return doc;
}
}