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 }