View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.module.purap.dataaccess.impl;
20  
21  import java.util.HashMap;
22  import java.util.Iterator;
23  import java.util.List;
24  import java.util.Map;
25  
26  import org.apache.ojb.broker.query.Criteria;
27  import org.apache.ojb.broker.query.QueryByCriteria;
28  import org.kuali.kfs.module.purap.PurapConstants;
29  import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceItemMapping;
30  import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceLoadSummary;
31  import org.kuali.kfs.module.purap.dataaccess.ElectronicInvoicingDao;
32  import org.kuali.kfs.module.purap.document.PaymentRequestDocument;
33  import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
34  
35  public class ElectronicInvoicingDaoOjb extends PlatformAwareDaoBaseOjb implements ElectronicInvoicingDao {
36  
37      private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ElectronicInvoicingDaoOjb.class);
38  
39      public ElectronicInvoicingDaoOjb() {
40          super();
41      }
42  
43      @Override
44      public ElectronicInvoiceLoadSummary getElectronicInvoiceLoadSummary(Integer loadId, String vendorDunsNumber) {
45          LOG.debug("getElectronicInvoiceLoadSummary() started");
46  
47          Criteria criteria = new Criteria();
48          criteria.addEqualTo("id", loadId);
49          criteria.addEqualTo("vendorDunsNumber", vendorDunsNumber);
50  
51          return (ElectronicInvoiceLoadSummary) getPersistenceBrokerTemplate().getObjectByQuery(new QueryByCriteria(ElectronicInvoiceLoadSummary.class, criteria));
52      }
53  
54      @Override
55      public List getPendingElectronicInvoices() {
56          LOG.debug("getPendingElectronicInvoices() started");
57  
58          Criteria criteria = new Criteria();
59          criteria.addEqualTo("status.code", PurapConstants.PaymentRequestStatuses.APPDOC_PENDING_E_INVOICE);
60          criteria.addEqualTo("isElectronicInvoice", Boolean.TRUE);
61          List invoices = (List) getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(PaymentRequestDocument.class, criteria));
62          for (Iterator iter = invoices.iterator(); iter.hasNext();) {
63              PaymentRequestDocument p = (PaymentRequestDocument) iter.next();
64          }
65  
66          return invoices;
67      }
68  
69      @Override
70      public Map getDefaultItemMappingMap() {
71          LOG.debug("getDefaultItemMappingMap() started");
72          Criteria criteria = new Criteria();
73          criteria.addIsNull("vendorHeaderGeneratedIdentifier");
74          criteria.addIsNull("vendorDetailAssignedIdentifier");
75          criteria.addEqualTo("active", true);
76          return this.getItemMappingMap(criteria);
77      }
78  
79      @Override
80      public Map getItemMappingMap(Integer vendorHeaderId, Integer vendorDetailId) {
81          if (LOG.isDebugEnabled()) {
82              LOG.debug("getItemMappingMap() started for vendor id " + vendorHeaderId + "-" + vendorDetailId);
83          }
84          Criteria criteria = new Criteria();
85          criteria.addEqualTo("vendorHeaderGeneratedIdentifier", vendorHeaderId);
86          criteria.addEqualTo("vendorDetailAssignedIdentifier", vendorDetailId);
87          criteria.addEqualTo("active", true);
88          return this.getItemMappingMap(criteria);
89      }
90  
91      protected Map getItemMappingMap(Criteria criteria) {
92          Map hm = new HashMap();
93          List itemMappings = (List) getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(ElectronicInvoiceItemMapping.class, criteria));
94  
95          for (Iterator iter = itemMappings.iterator(); iter.hasNext();) {
96              ElectronicInvoiceItemMapping mapping = (ElectronicInvoiceItemMapping) iter.next();
97              hm.put(mapping.getInvoiceItemTypeCode(), mapping);
98          }
99          return hm;
100     }
101 }