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 package org.kuali.kfs.module.purap.dataaccess.impl; 017 018 import java.util.HashMap; 019 import java.util.Iterator; 020 import java.util.List; 021 import java.util.Map; 022 023 import org.apache.ojb.broker.query.Criteria; 024 import org.apache.ojb.broker.query.QueryByCriteria; 025 import org.kuali.kfs.module.purap.PurapConstants; 026 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceItemMapping; 027 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceLoadSummary; 028 import org.kuali.kfs.module.purap.dataaccess.ElectronicInvoicingDao; 029 import org.kuali.kfs.module.purap.document.ElectronicInvoiceRejectDocument; 030 import org.kuali.kfs.module.purap.document.PaymentRequestDocument; 031 import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb; 032 033 public class ElectronicInvoicingDaoOjb extends PlatformAwareDaoBaseOjb implements ElectronicInvoicingDao { 034 035 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ElectronicInvoicingDaoOjb.class); 036 037 public ElectronicInvoicingDaoOjb() { 038 super(); 039 } 040 041 public ElectronicInvoiceLoadSummary getElectronicInvoiceLoadSummary(Integer loadId, String vendorDunsNumber) { 042 LOG.debug("getElectronicInvoiceLoadSummary() started"); 043 044 Criteria criteria = new Criteria(); 045 criteria.addEqualTo("id", loadId); 046 criteria.addEqualTo("vendorDunsNumber", vendorDunsNumber); 047 048 return (ElectronicInvoiceLoadSummary) getPersistenceBrokerTemplate().getObjectByQuery(new QueryByCriteria(ElectronicInvoiceLoadSummary.class, criteria)); 049 } 050 051 public ElectronicInvoiceLoadSummary saveElectronicInvoiceLoadSummary(ElectronicInvoiceLoadSummary loadSummary) { 052 LOG.debug("saveElectronicInvoiceLoadSummary() started"); 053 getPersistenceBrokerTemplate().store(loadSummary); 054 getPersistenceBroker(true).retrieveAllReferences(loadSummary); 055 return loadSummary; 056 } 057 058 public ElectronicInvoiceRejectDocument saveElectronicInvoiceReject(ElectronicInvoiceRejectDocument reject) { 059 LOG.debug("saveElectronicInvoiceReject() started"); 060 getPersistenceBrokerTemplate().store(reject); 061 getPersistenceBroker(true).retrieveAllReferences(reject); 062 return reject; 063 } 064 065 public List getPendingElectronicInvoices() { 066 LOG.debug("getPendingElectronicInvoices() started"); 067 068 Criteria criteria = new Criteria(); 069 criteria.addEqualTo("status.code", PurapConstants.PaymentRequestStatuses.PENDING_E_INVOICE); 070 criteria.addEqualTo("isElectronicInvoice", Boolean.TRUE); 071 List invoices = (List) getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(PaymentRequestDocument.class, criteria)); 072 for (Iterator iter = invoices.iterator(); iter.hasNext();) { 073 PaymentRequestDocument p = (PaymentRequestDocument) iter.next(); 074 } 075 076 return invoices; 077 } 078 079 public Map getDefaultItemMappingMap() { 080 LOG.debug("getDefaultItemMappingMap() started"); 081 Criteria criteria = new Criteria(); 082 criteria.addIsNull("vendorHeaderGeneratedIdentifier"); 083 criteria.addIsNull("vendorDetailAssignedIdentifier"); 084 criteria.addEqualTo("active", true); 085 return this.getItemMappingMap(criteria); 086 } 087 088 public Map getItemMappingMap(Integer vendorHeaderId, Integer vendorDetailId) { 089 LOG.debug("getItemMappingMap() started for vendor id " + vendorHeaderId + "-" + vendorDetailId); 090 Criteria criteria = new Criteria(); 091 criteria.addEqualTo("vendorHeaderGeneratedIdentifier", vendorHeaderId); 092 criteria.addEqualTo("vendorDetailAssignedIdentifier", vendorDetailId); 093 criteria.addEqualTo("active", true); 094 return this.getItemMappingMap(criteria); 095 } 096 097 protected Map getItemMappingMap(Criteria criteria) { 098 Map hm = new HashMap(); 099 List itemMappings = (List) getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(ElectronicInvoiceItemMapping.class, criteria)); 100 101 for (Iterator iter = itemMappings.iterator(); iter.hasNext();) { 102 ElectronicInvoiceItemMapping mapping = (ElectronicInvoiceItemMapping) iter.next(); 103 hm.put(mapping.getInvoiceItemTypeCode(), mapping); 104 } 105 return hm; 106 } 107 }