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 }