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.impl;
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    import org.kuali.kfs.module.purap.dataaccess.ElectronicInvoicingDao;
028    import org.kuali.kfs.module.purap.dataaccess.impl.ElectronicInvoicingDaoOjb;
029    import org.kuali.kfs.module.purap.service.ElectronicInvoiceMappingService;
030    import org.springframework.transaction.annotation.Transactional;
031    
032    @Transactional
033    public class ElectronicInvoiceMappingServiceImpl implements ElectronicInvoiceMappingService {
034      private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ElectronicInvoiceMappingServiceImpl.class);
035      
036      private ElectronicInvoicingDao electronicInvoicingDao;
037    
038      public void setElectronicInvoicingDao(ElectronicInvoicingDao electronicInvoicingDao) {
039        this.electronicInvoicingDao = electronicInvoicingDao;
040      }
041      
042      public Map getDefaultItemMappingMap() {
043        LOG.debug("getDefaultItemMappingMap() started");
044        return electronicInvoicingDao.getDefaultItemMappingMap();
045      }
046    
047      public Map getItemMappingMap(Integer vendorHeaderId, Integer vendorDetailId) {
048        LOG.debug("getItemMappingMap() started for vendor id " + vendorHeaderId + "-" + vendorDetailId);
049        return electronicInvoicingDao.getItemMappingMap(vendorHeaderId,vendorDetailId);
050      }
051      
052      public boolean acceptAmountType(String cxmlAmountType) {
053        return ( (cxmlAmountType != null) && (!(cxmlAmountType.equalsIgnoreCase(ITEM_TYPE_RETURN_VALUE_UNACCEPTED))) );
054      }
055      
056      /**
057       * This method defines which field out of the ElectronicInvoiceOrder that the
058       * purchase order number is coming in as
059       * 
060       * @param invoiceOrder  ElectronicInvoiceOrder we need to get the PO ID from
061       * @return the String value of the purchase order id
062       */
063      public String getInvoicePurchaseOrderID(ElectronicInvoiceOrder invoiceOrder) {
064        return invoiceOrder.getOrderReferenceOrderID();
065      }
066      
067      /**
068       * This method defines which field out of the ElectronicInvoiceItem that the
069       * catalog number is coming in as
070       * 
071       * @param eii  ElectronicInvoiceItem we need to get the catalog number from
072       * @return catalog number value
073       */
074      public String getCatalogNumber(ElectronicInvoiceItem item) {
075        return item.getReferenceItemIDSupplierPartID();
076      }
077      
078      /**
079       * This method defines which field out of the ElectronicInvoice that the
080       * customer number field is coming in as
081       * 
082       * @param ei  ElectronicInvoice we need to get the customer number from
083       * @return customer number value
084       */
085      public String getInvoiceCustomerNumber(ElectronicInvoice ei) {
086        // TODO: Future Release - Enter valid location for Customer Number from E-Invoice
087        return null;
088      }
089      
090      /**
091       * This method contains the mapping check for valid Currency Code(s)
092       */
093      public String checkCodeForValidCurrency(String code) {
094        if (!(this.isCodeValidCurrency(code))) {
095          return code;
096        } else {
097          return null;
098        }
099      }
100    
101      /**
102       * This method contains the mapping check for valid Currency Code(s)
103       */
104      public boolean isCodeValidCurrency(String code) {
105        if (code != null) {
106          for (int i = 0; i < CXML_VALID_CURRENCY_CODES.length; i++) {
107            String validCode = CXML_VALID_CURRENCY_CODES[i];
108            if (code.equalsIgnoreCase(validCode)) {
109              return true;
110            }
111          }
112        }
113        return false;
114      }
115      
116      
117    }