/*
* 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.cab.document.service;
import java.util.List;
import org.kuali.kfs.module.cab.businessobject.PurchasingAccountsPayableDocument;
import org.kuali.kfs.module.cab.businessobject.PurchasingAccountsPayableItemAsset;
import org.kuali.kfs.module.cab.document.web.struts.PurApLineForm;
import org.kuali.kfs.module.purap.businessobject.PurApItem;
import org.kuali.kfs.module.purap.document.PurchaseOrderDocument;
/**
* This class declares methods used by CAB PurAp Line process
*/
public interface PurApInfoService {
/**
* Valid asset number means asset number must exist in Asset table with status active ( a, c, s, u)
*
* @param poId
* @param capitalAssetSystemTypeCode
* @param purApItem
* @return
*/
List<Long> retrieveValidAssetNumberForLocking(Integer poId, String capitalAssetSystemTypeCode, PurApItem purApItem);
/**
* Get the workflow document number for given poId
*
* @param poId
* @return
*/
PurchaseOrderDocument getCurrentDocumentForPurchaseOrderIdentifier(Integer poId);
/**
* Set Purchasing order email address and contact phone from PurAp.
*
* @param purApLineForm form
*/
void setPurchaseOrderFromPurAp(PurApLineForm purApLineForm);
/**
* Set CAMS transaction type code the user entered in PurAp
*
* @param poId
*/
void setCamsTransactionFromPurAp(List<PurchasingAccountsPayableDocument> purApDocs);
/**
* Set CAB line item information from PurAp PaymentRequestItem or CreditMemoItem.
*
* @param purchasingAccountsPayableItemAsset
* @param docTypeCode
*/
void setAccountsPayableItemsFromPurAp(PurchasingAccountsPayableItemAsset purchasingAccountsPayableItemAsset, String docTypeCode);
}