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.cab.batch.dataaccess.impl;
017
018 import java.sql.Timestamp;
019 import java.text.ParseException;
020 import java.util.Collection;
021
022 import org.apache.ojb.broker.query.Criteria;
023 import org.apache.ojb.broker.query.QueryByCriteria;
024 import org.kuali.kfs.gl.businessobject.Entry;
025 import org.kuali.kfs.module.cab.CabConstants;
026 import org.kuali.kfs.module.cab.CabPropertyConstants;
027 import org.kuali.kfs.module.cab.batch.dataaccess.ExtractDao;
028 import org.kuali.kfs.module.cab.businessobject.BatchParameters;
029 import org.kuali.kfs.module.purap.businessobject.CreditMemoAccountRevision;
030 import org.kuali.kfs.module.purap.businessobject.PaymentRequestAccountRevision;
031 import org.kuali.kfs.module.purap.businessobject.PurchaseOrderAccount;
032 import org.kuali.kfs.sys.context.SpringContext;
033 import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb;
034 import org.kuali.rice.kns.service.DateTimeService;
035
036 public class ExtractDaoOjb extends PlatformAwareDaoBaseOjb implements ExtractDao {
037 /**
038 * @see org.kuali.kfs.module.cab.batch.dataaccess.ExtractDao#findMatchingGLEntries(org.kuali.kfs.module.cab.businessobject.BatchParameters)
039 */
040 public Collection<Entry> findMatchingGLEntries(BatchParameters batchParameters) {
041 Criteria criteria = new Criteria();
042 criteria.addGreaterThan(CabPropertyConstants.Entry.TRANSACTION_DATE_TIME_STAMP, batchParameters.getLastRunTime());
043
044 if (!batchParameters.getExcludedChartCodes().isEmpty())
045 criteria.addNotIn(CabPropertyConstants.Entry.CHART_OF_ACCOUNTS_CODE, batchParameters.getExcludedChartCodes());
046
047 if (!batchParameters.getExcludedSubFundCodes().isEmpty())
048 criteria.addNotIn(CabPropertyConstants.Entry.ACCOUNT_SUB_FUND_GROUP_CODE, batchParameters.getExcludedSubFundCodes());
049
050 if (!batchParameters.getIncludedFinancialBalanceTypeCodes().isEmpty())
051 criteria.addIn(CabPropertyConstants.Entry.FINANCIAL_BALANCE_TYPE_CODE, batchParameters.getIncludedFinancialBalanceTypeCodes());
052
053 if (!batchParameters.getIncludedFinancialObjectSubTypeCodes().isEmpty())
054 criteria.addIn(CabPropertyConstants.Entry.FINANCIAL_OBJECT_FINANCIAL_OBJECT_SUB_TYPE_CODE, batchParameters.getIncludedFinancialObjectSubTypeCodes());
055
056 if (!batchParameters.getExcludedFiscalPeriods().isEmpty())
057 criteria.addNotIn(CabPropertyConstants.Entry.UNIVERSITY_FISCAL_PERIOD_CODE, batchParameters.getExcludedFiscalPeriods());
058
059 if (!batchParameters.getExcludedDocTypeCodes().isEmpty())
060 criteria.addNotIn(CabPropertyConstants.Entry.FINANCIAL_DOCUMENT_TYPE_CODE, batchParameters.getExcludedDocTypeCodes());
061
062 QueryByCriteria query = new QueryByCriteria(Entry.class, criteria);
063 query.addOrderByAscending(CabPropertyConstants.Entry.DOCUMENT_NUMBER);
064 query.addOrderByAscending(CabPropertyConstants.Entry.TRANSACTION_DATE_TIME_STAMP);
065 return getPersistenceBrokerTemplate().getCollectionByQuery(query);
066 }
067
068 /**
069 * @see org.kuali.kfs.module.cab.batch.dataaccess.ExtractDao#findPreTaggablePOAccounts(org.kuali.kfs.module.cab.businessobject.BatchParameters)
070 */
071 public Collection<PurchaseOrderAccount> findPreTaggablePOAccounts(BatchParameters batchParameters) {
072 Criteria statusCodeCond1 = new Criteria();
073 statusCodeCond1.addEqualTo(CabPropertyConstants.PreTagExtract.PURAP_CAPITAL_ASSET_SYSTEM_STATE_CODE, CabConstants.CAPITAL_ASSET_SYSTEM_STATE_CODE_NEW);
074
075 Criteria statusCodeOrCond = new Criteria();
076 statusCodeOrCond.addIsNull(CabPropertyConstants.PreTagExtract.PURAP_CAPITAL_ASSET_SYSTEM_STATE_CODE);
077 statusCodeOrCond.addOrCriteria(statusCodeCond1);
078
079 Criteria criteria = new Criteria();
080 Timestamp lastRunTimestamp = new Timestamp(((java.util.Date)batchParameters.getLastRunDate()).getTime());
081 criteria.addGreaterThan(CabPropertyConstants.PreTagExtract.PO_INITIAL_OPEN_TIMESTAMP, lastRunTimestamp);
082 criteria.addEqualTo(CabPropertyConstants.PreTagExtract.PO_STATUS_CODE, CabConstants.PO_STATUS_CODE_OPEN);
083 criteria.addAndCriteria(statusCodeOrCond);
084 criteria.addGreaterOrEqualThan(CabPropertyConstants.PreTagExtract.PURAP_ITEM_UNIT_PRICE, batchParameters.getCapitalizationLimitAmount());
085
086 if (!batchParameters.getExcludedChartCodes().isEmpty())
087 criteria.addNotIn(CabPropertyConstants.PreTagExtract.CHART_OF_ACCOUNTS_CODE, batchParameters.getExcludedChartCodes());
088
089 if (!batchParameters.getExcludedSubFundCodes().isEmpty())
090 criteria.addNotIn(CabPropertyConstants.PreTagExtract.ACCOUNT_SUB_FUND_GROUP_CODE, batchParameters.getExcludedSubFundCodes());
091
092 if (!batchParameters.getIncludedFinancialObjectSubTypeCodes().isEmpty())
093 criteria.addIn(CabPropertyConstants.PreTagExtract.FINANCIAL_OBJECT_SUB_TYPE_CODE, batchParameters.getIncludedFinancialObjectSubTypeCodes());
094
095 QueryByCriteria query = new QueryByCriteria(PurchaseOrderAccount.class, criteria);
096 return getPersistenceBrokerTemplate().getCollectionByQuery(query);
097 }
098
099
100 /**
101 * @see org.kuali.kfs.module.cab.batch.dataaccess.ExtractDao#findCreditMemoAccountHistory(org.kuali.kfs.module.cab.businessobject.BatchParameters)
102 */
103 public Collection<CreditMemoAccountRevision> findCreditMemoAccountRevisions(BatchParameters batchParameters) {
104 Criteria criteria = new Criteria();
105 criteria.addGreaterThan(CabPropertyConstants.CreditMemoAccountRevision.ACCOUNT_REVISION_TIMESTAMP, batchParameters.getLastRunTime());
106
107 if (!batchParameters.getExcludedChartCodes().isEmpty())
108 criteria.addNotIn(CabPropertyConstants.CreditMemoAccountRevision.CHART_OF_ACCOUNTS_CODE, batchParameters.getExcludedChartCodes());
109
110 if (!batchParameters.getExcludedSubFundCodes().isEmpty())
111 criteria.addNotIn(CabPropertyConstants.CreditMemoAccountRevision.ACCOUNT_SUB_FUND_GROUP_CODE, batchParameters.getExcludedSubFundCodes());
112
113 if (!batchParameters.getIncludedFinancialObjectSubTypeCodes().isEmpty())
114 criteria.addIn(CabPropertyConstants.CreditMemoAccountRevision.FINANCIAL_OBJECT_FINANCIAL_OBJECT_SUB_TYPE_CODE, batchParameters.getIncludedFinancialObjectSubTypeCodes());
115
116 QueryByCriteria query = new QueryByCriteria(CreditMemoAccountRevision.class, criteria);
117 query.addOrderByAscending(CabPropertyConstants.CreditMemoAccountRevision.ACCOUNT_REVISION_TIMESTAMP);
118 Collection<CreditMemoAccountRevision> historyRecs = getPersistenceBrokerTemplate().getCollectionByQuery(query);
119 return historyRecs;
120 }
121
122 /**
123 * @see org.kuali.kfs.module.cab.batch.dataaccess.ExtractDao#findPaymentRequestAccountHistory(org.kuali.kfs.module.cab.businessobject.BatchParameters)
124 */
125 public Collection<PaymentRequestAccountRevision> findPaymentRequestAccountRevisions(BatchParameters batchParameters) {
126 Criteria criteria = new Criteria();
127 criteria.addGreaterThan(CabPropertyConstants.PaymentRequestAccountRevision.ACCOUNT_REVISION_TIMESTAMP, batchParameters.getLastRunTime());
128
129 if (!batchParameters.getExcludedChartCodes().isEmpty())
130 criteria.addNotIn(CabPropertyConstants.PaymentRequestAccountRevision.CHART_OF_ACCOUNTS_CODE, batchParameters.getExcludedChartCodes());
131
132 if (!batchParameters.getExcludedSubFundCodes().isEmpty())
133 criteria.addNotIn(CabPropertyConstants.PaymentRequestAccountRevision.ACCOUNT_SUB_FUND_GROUP_CODE, batchParameters.getExcludedSubFundCodes());
134
135 if (!batchParameters.getIncludedFinancialObjectSubTypeCodes().isEmpty())
136 criteria.addIn(CabPropertyConstants.PaymentRequestAccountRevision.FINANCIAL_OBJECT_FINANCIAL_OBJECT_SUB_TYPE_CODE, batchParameters.getIncludedFinancialObjectSubTypeCodes());
137
138 QueryByCriteria query = new QueryByCriteria(PaymentRequestAccountRevision.class, criteria);
139 query.addOrderByAscending(CabPropertyConstants.PaymentRequestAccountRevision.ACCOUNT_REVISION_TIMESTAMP);
140 Collection<PaymentRequestAccountRevision> historyRecs = getPersistenceBrokerTemplate().getCollectionByQuery(query);
141 return historyRecs;
142 }
143 }