/*
* 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.businessobject;
import java.util.HashMap;
import java.util.Map;
import org.kuali.kfs.module.purap.PurapConstants;
import org.kuali.kfs.module.purap.document.BulkReceivingDocument;
import org.kuali.kfs.module.purap.document.ElectronicInvoiceRejectDocument;
import org.kuali.kfs.module.purap.document.LineItemReceivingDocument;
import org.kuali.kfs.module.purap.document.PaymentRequestDocument;
import org.kuali.kfs.module.purap.document.PaymentRequestDocumentTest;
import org.kuali.kfs.module.purap.document.PurchaseOrderDocument;
import org.kuali.kfs.module.purap.document.RequisitionDocument;
import org.kuali.kfs.module.purap.document.VendorCreditMemoDocument;
import org.kuali.kfs.module.purap.document.service.PaymentRequestServiceTest;
import org.kuali.kfs.module.purap.fixture.BulkReceivingDocumentFixture;
import org.kuali.kfs.module.purap.fixture.CreditMemoDocumentFixture;
import org.kuali.kfs.module.purap.fixture.ElectronicInvoiceLoadSummaryFixture;
import org.kuali.kfs.module.purap.fixture.ElectronicInvoiceRejectDocumentFixture;
import org.kuali.kfs.module.purap.fixture.LineItemReceivingDocumentFixture;
import org.kuali.kfs.module.purap.fixture.PaymentRequestDocumentFixture;
import org.kuali.kfs.module.purap.fixture.PurchaseOrderDocumentFixture;
import org.kuali.kfs.module.purap.fixture.RequisitionDocumentFixture;
import org.kuali.kfs.sys.ConfigureContext;
import org.kuali.kfs.sys.context.KualiTestBase;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.kfs.sys.fixture.UserNameFixture;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import org.kuali.rice.krad.service.BusinessObjectService;
import org.kuali.rice.krad.service.DocumentService;
@ConfigureContext(session = UserNameFixture.appleton)
public class RelatedViewsTest extends KualiTestBase {
private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(PaymentRequestServiceTest.class);
private DocumentService documentService;
private PaymentRequestDocumentTest preqDocTest;
private BusinessObjectService businessObjectService;
@Override
public void setUp() throws Exception {
super.setUp();
if (null == documentService) {
documentService = SpringContext.getBean(DocumentService.class);
}
if (null == businessObjectService) {
businessObjectService = SpringContext.getBean(BusinessObjectService.class);
}
if (null == preqDocTest) {
preqDocTest = new PaymentRequestDocumentTest();
}
}
private PurchaseOrderDocument createBasicPurchaseOrderDocument() throws Exception {
return preqDocTest.createPurchaseOrderDocument(PurchaseOrderDocumentFixture.PO_APPROVAL_REQUIRED,false);
}
private PaymentRequestDocument createBasicPaymentRequestDocument() throws Exception {
PaymentRequestDocument preq = preqDocTest.createPaymentRequestDocument(
PaymentRequestDocumentFixture.PREQ_APPROVAL_REQUIRED,
createBasicPurchaseOrderDocument(),
true, new KualiDecimal[] {new KualiDecimal(100)});
return preq;
}
private RequisitionDocument createBasicRequisitionDocument() throws Exception {
return RequisitionDocumentFixture.REQ_ONLY_REQUIRED_FIELDS.createRequisitionDocument();
}
public VendorCreditMemoDocument createBasicVendorCreditMemoDocument() throws Exception {
return CreditMemoDocumentFixture.CM_ONLY_REQUIRED_FIELDS.createCreditMemoDocument();
}
private LineItemReceivingDocument createBasicLineItemReceivingDocument() throws Exception {
LineItemReceivingDocument lird = LineItemReceivingDocumentFixture.EMPTY_LINE_ITEM_RECEIVING.createLineItemReceivingDocument();
lird.populateReceivingLineFromPurchaseOrder(createBasicPurchaseOrderDocument());
return lird;
}
private BulkReceivingDocument createBasicBulkReceivingDocument() throws Exception {
return BulkReceivingDocumentFixture.SIMPLE_DOCUMENT.createBulkReceivingDocument();
}
private ElectronicInvoiceRejectDocument createBasicElectronicInvoiceRejectDocument() throws Exception {
ElectronicInvoiceLoadSummary eils = ElectronicInvoiceLoadSummaryFixture.EILS_BASIC.createElectronicInvoiceLoadSummary();
BusinessObjectService boService = SpringContext.getBean(BusinessObjectService.class);
boService.save(eils);
changeCurrentUser(UserNameFixture.kfs);
return ElectronicInvoiceRejectDocumentFixture.EIR_ONLY_REQUIRED_FIELDS.createElectronicInvoiceRejectDocument(eils);
}
public void testPaymentRequestView() throws Exception {
PaymentRequestDocument preq = createBasicPaymentRequestDocument();
preq.setApplicationDocumentStatus(PurapConstants.PaymentRequestStatuses.APPDOC_AWAITING_FISCAL_REVIEW);
documentService.saveDocument(preq);
Map <String, String> keys = new HashMap <String, String>();
keys.put("documentNumber", preq.getDocumentNumber());
keys.put("purapDocumentIdentifier", preq.getPurapDocumentIdentifier().toString());
PaymentRequestView prv = businessObjectService.findByPrimaryKey(PaymentRequestView.class, keys);
assertEquals(preq.getApplicationDocumentStatus(), prv.getApplicationDocumentStatus());
}
public void testPurchaseOrderView() throws Exception {
PurchaseOrderDocument po = createBasicPurchaseOrderDocument();
po.setApplicationDocumentStatus(PurapConstants.PurchaseOrderStatuses.APPDOC_AMENDMENT);
documentService.saveDocument(po);
Map <String, String> keys = new HashMap <String, String>();
keys.put("documentNumber", po.getDocumentNumber());
keys.put("purapDocumentIdentifier", po.getPurapDocumentIdentifier().toString());
PurchaseOrderView pov = businessObjectService.findByPrimaryKey(PurchaseOrderView.class, keys);
assertEquals(po.getApplicationDocumentStatus(), pov.getApplicationDocumentStatus());
}
public void testVendorCreditMemoView() throws Exception {
VendorCreditMemoDocument vcm = createBasicVendorCreditMemoDocument();
vcm.setApplicationDocumentStatus(PurapConstants.CreditMemoStatuses.APPDOC_AWAITING_ACCOUNTS_PAYABLE_REVIEW);
documentService.saveDocument(vcm);
Map <String, String> keys = new HashMap <String, String>();
keys.put("documentNumber", vcm.getDocumentNumber());
keys.put("purapDocumentIdentifier", vcm.getPurapDocumentIdentifier().toString());
CreditMemoView cmv = businessObjectService.findByPrimaryKey(CreditMemoView.class, keys);
assertEquals(vcm.getApplicationDocumentStatus(), cmv.getApplicationDocumentStatus());
}
public void testBulkReceivingView() throws Exception {
BulkReceivingDocument br = createBasicBulkReceivingDocument();
br.setApplicationDocumentStatus(PurapConstants.CreditMemoStatuses.APPDOC_AWAITING_ACCOUNTS_PAYABLE_REVIEW);
documentService.saveDocument(br);
Map <String, String> keys = new HashMap <String, String>();
keys.put("documentNumber", br.getDocumentNumber());
BulkReceivingView brv = businessObjectService.findByPrimaryKey(BulkReceivingView.class, keys);
assertEquals(br.getApplicationDocumentStatus(), brv.getApplicationDocumentStatus());
}
public void testElectronicInvoiceRejectView() throws Exception {
ElectronicInvoiceRejectDocument eirt = createBasicElectronicInvoiceRejectDocument();
eirt.setApplicationDocumentStatus(PurapConstants.CreditMemoStatuses.APPDOC_AWAITING_ACCOUNTS_PAYABLE_REVIEW);
documentService.saveDocument(eirt);
Map <String, String> keys = new HashMap <String, String>();
keys.put("documentNumber", eirt.getDocumentNumber());
ElectronicInvoiceRejectView erv = businessObjectService.findByPrimaryKey(ElectronicInvoiceRejectView.class, keys);
assertEquals(eirt.getApplicationDocumentStatus(), erv.getApplicationDocumentStatus());
}
public void testLineItemReceivingView() throws Exception {
LineItemReceivingDocument lird = createBasicLineItemReceivingDocument();
lird.setApplicationDocumentStatus(PurapConstants.LineItemReceivingStatuses.APPDOC_IN_PROCESS);
documentService.saveDocument(lird);
Map <String, String> keys = new HashMap <String, String>();
keys.put("documentNumber", lird.getDocumentNumber());
LineItemReceivingView lirv = businessObjectService.findByPrimaryKey(LineItemReceivingView.class, keys);
assertEquals(lird.getApplicationDocumentStatus(), lirv.getApplicationDocumentStatus());
}
public void testRequisitionView() throws Exception {
RequisitionDocument reqs = createBasicRequisitionDocument();
reqs.setApplicationDocumentStatus(PurapConstants.RequisitionStatuses.APPDOC_AWAIT_CHART_REVIEW);
documentService.saveDocument(reqs);
Map <String, String> keys = new HashMap <String, String>();
keys.put("documentNumber", reqs.getDocumentNumber());
RequisitionView reqsv = businessObjectService.findByPrimaryKey(RequisitionView.class, keys);
assertEquals(reqs.getApplicationDocumentStatus(), reqsv.getApplicationDocumentStatus());
}
}