001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 /*
017 * Created on Mar 7, 2006
018 *
019 */
020 package org.kuali.kfs.module.purap.service;
021
022 import java.util.Map;
023
024 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoice;
025 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceItem;
026 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceOrder;
027
028 public interface ElectronicInvoiceMappingService {
029
030 // default values
031 public static String DEFAULT_BELOW_LINE_ITEM_DESCRIPTION = "Electronically entered amount";
032 // ELECTRONIC INVOICE SHIPPING DESCRIPTION
033 public static String E_INVOICE_SHIPPING_DESCRIPTION = "Shipping";
034
035
036 // role id of the address we use as the Ship To address
037 public static String CXML_ADDRESS_SHIP_TO_ROLE_ID = "shipTo";
038 public static String CXML_ADDRESS_BILL_TO_ROLE_ID = "billTo";
039 public static String CXML_ADDRESS_REMIT_TO_ROLE_ID = "remitTo";
040
041 // name of our default address name we use (null for first available)
042 public static String CXML_ADDRESS_SHIP_TO_NAME = null;
043 public static String CXML_ADDRESS_BILL_TO_NAME = null;
044 public static String CXML_ADDRESS_REMIT_TO_NAME = null;
045
046 /*
047 * These mappings link E-Invoice CXML item types to PREQ Item Types
048 *
049 * If the PREQ ITEM TYPE is null then we do not accept or care
050 * about these items
051 */
052 public static String ITEM_TYPE_RETURN_VALUE_UNACCEPTED = "";
053
054 // ELECTRONIC INVOICE CXML US DOLLAR CODE
055 public static String[] CXML_VALID_CURRENCY_CODES = {"USD"};
056
057 // ELECTRONIC INVOICE CXML OPERATION CODE
058 public static String[] CXML_VALID_OPERATION_CODES = {"new"};
059
060 // ELECTRONIC INVOICE CXML PURPOSE CODE
061 public static String[] CXML_VALID_PURPOSE_CODES = {"standard"};
062
063 public Map getDefaultItemMappingMap();
064
065 public Map getItemMappingMap(Integer vendorHeaderId, Integer vendorDetailId);
066
067 public boolean acceptAmountType(String cxmlAmountType) ;
068
069 /**
070 * This method defines which field out of the ElectronicInvoiceOrder that the
071 * purchase order number is coming in as
072 *
073 * @param invoiceOrder ElectronicInvoiceOrder we need to get the PO ID from
074 * @return the String value of the purchase order id
075 */
076 public String getInvoicePurchaseOrderID(ElectronicInvoiceOrder invoiceOrder);
077
078 /**
079 * This method defines which field out of the ElectronicInvoiceItem that the
080 * catalog number is coming in as
081 *
082 * @param eii ElectronicInvoiceItem we need to get the catalog number from
083 * @return catalog number value
084 */
085 public String getCatalogNumber(ElectronicInvoiceItem item);
086
087 /**
088 * This method defines which field out of the ElectronicInvoice that the
089 * customer number field is coming in as
090 *
091 * @param ei ElectronicInvoice we need to get the customer number from
092 * @return customer number value
093 */
094 public String getInvoiceCustomerNumber(ElectronicInvoice ei);
095
096 /**
097 * This method contains the mapping check for valid Currency Code(s)
098 */
099 public String checkCodeForValidCurrency(String code);
100
101 /**
102 * This method contains the mapping check for valid Currency Code(s)
103 */
104 public boolean isCodeValidCurrency(String code);
105 }