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.ar.document.service.impl;
017
018 import java.util.Collection;
019 import java.util.HashMap;
020 import java.util.Map;
021
022 import org.kuali.kfs.module.ar.businessobject.AppliedPayment;
023 import org.kuali.kfs.module.ar.businessobject.InvoicePaidApplied;
024 import org.kuali.kfs.module.ar.document.CustomerInvoiceDocument;
025 import org.kuali.kfs.module.ar.document.service.InvoicePaidAppliedService;
026 import org.kuali.kfs.sys.service.UniversityDateService;
027 import org.kuali.rice.kns.service.BusinessObjectService;
028 import org.springframework.transaction.annotation.Transactional;
029
030 @Transactional
031 public class InvoicePaidAppliedServiceImpl implements InvoicePaidAppliedService<AppliedPayment> {
032
033 private BusinessObjectService businessObjectService;
034 private UniversityDateService universityDateService;
035
036 /**
037 * @see org.kuali.kfs.module.ar.document.service.InvoicePaidAppliedService#clearDocumentPaidAppliedsFromDatabase(java.lang.String)
038 */
039 public void clearDocumentPaidAppliedsFromDatabase(String documentNumber) {
040 Map<String,String> fields = new HashMap<String,String>();
041 fields.put("documentNumber", documentNumber);
042 businessObjectService.deleteMatching(InvoicePaidApplied.class, fields);
043 }
044
045 // /**
046 // * @see org.kuali.kfs.module.ar.document.service.InvoicePaidAppliedService#getInvoicePaidAppliedsForCustomerInvoiceDetail(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail, org.kuali.kfs.module.ar.document.PaymentApplicationDocument)
047 // */
048 // public Collection<InvoicePaidApplied> getInvoicePaidAppliedsForCustomerInvoiceDetail(CustomerInvoiceDetail customerInvoiceDetail, PaymentApplicationDocument paymentApplicationDocument) {
049 // List<InvoicePaidApplied> invoicePaidApplieds = paymentApplicationDocument.getInvoicePaidApplieds();
050 // List<InvoicePaidApplied> relatedInvoicePaidApplieds = new ArrayList<InvoicePaidApplied>();
051 //
052 // for(InvoicePaidApplied invoicePaidApplied : invoicePaidApplieds) {
053 // boolean matches = true;
054 // matches &= invoicePaidApplied.getInvoiceItemNumber().equals(customerInvoiceDetail.getSequenceNumber());
055 // matches &= invoicePaidApplied.getFinancialDocumentReferenceInvoiceNumber().equals(customerInvoiceDetail.getDocumentNumber());
056 // if(matches) {
057 // relatedInvoicePaidApplieds.add(invoicePaidApplied);
058 // }
059 // }
060 // return relatedInvoicePaidApplieds;
061 // }
062
063 // /**
064 // * @see org.kuali.kfs.module.ar.document.service.InvoicePaidAppliedService#getInvoicePaidAppliedsForCustomerInvoiceDetail(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail)
065 // */
066 // @SuppressWarnings("unchecked")
067 // public Collection<InvoicePaidApplied> getInvoicePaidAppliedsForCustomerInvoiceDetail(CustomerInvoiceDetail customerInvoiceDetail) {
068 // Map criteria = new HashMap();
069 // criteria.put("invoiceItemNumber", customerInvoiceDetail.getSequenceNumber());
070 // criteria.put("financialDocumentReferenceInvoiceNumber", customerInvoiceDetail.getDocumentNumber());
071 // return businessObjectService.findMatching(InvoicePaidApplied.class, criteria);
072 // }
073 //
074 // public Collection<InvoicePaidApplied> getInvoicePaidAppliedsForCustomerInvoiceDetail(CustomerInvoiceDetail customerInvoiceDetail, String applicationDocNumber) {
075 // Map criteria = new HashMap();
076 // criteria.put("documentNumber", customerInvoiceDetail.getDocumentNumber());
077 // criteria.put("invoiceItemNumber", customerInvoiceDetail.getSequenceNumber());
078 // criteria.put("financialDocumentReferenceInvoiceNumber", customerInvoiceDetail.getDocumentNumber());
079 // return businessObjectService.findMatching(InvoicePaidApplied.class, criteria);
080 // }
081
082 // public Collection<InvoicePaidApplied> getApprovedInvoicePaidAppliedsForCustomerInvoiceDetail(CustomerInvoiceDetail customerInvoiceDetail) {
083 // Map criteria = new HashMap();
084 // criteria.put("invoiceItemNumber", customerInvoiceDetail.getSequenceNumber());
085 // criteria.put("financialDocumentReferenceInvoiceNumber", customerInvoiceDetail.getDocumentNumber());
086 // criteria.put("documentHeader.financialDocumentStatusCode", KFSConstants.DocumentStatusCodes.APPROVED);
087 // return businessObjectService.findMatching(InvoicePaidApplied.class, criteria);
088 // }
089
090 public Integer getNumberOfInvoicePaidAppliedsForInvoiceDetail(String financialDocumentReferenceInvoiceNumber, Integer invoiceItemNumber){
091 Map<String, Object> criteria = new HashMap<String, Object>();
092 criteria.put("financialDocumentReferenceInvoiceNumber", financialDocumentReferenceInvoiceNumber);
093 criteria.put("invoiceItemNumber", invoiceItemNumber);
094
095 return businessObjectService.countMatching(InvoicePaidApplied.class, criteria);
096 }
097
098 public Collection<InvoicePaidApplied> getInvoicePaidAppliedsFromSpecificDocument(String documentNumber, String referenceCustomerInvoiceDocumentNumber) {
099 Map criteria = new HashMap();
100 criteria.put("financialDocumentReferenceInvoiceNumber", referenceCustomerInvoiceDocumentNumber);
101 criteria.put("documentNumber", documentNumber);
102 return businessObjectService.findMatching(InvoicePaidApplied.class, criteria);
103 }
104
105
106
107 /**
108 * @see org.kuali.kfs.module.ar.document.service.InvoicePaidAppliedService#doesInvoiceHaveAppliedAmounts(org.kuali.kfs.module.ar.document.CustomerInvoiceDocument)
109 */
110 public boolean doesInvoiceHaveAppliedAmounts(CustomerInvoiceDocument document) {
111
112 HashMap<String, String> criteria = new HashMap<String, String>();
113 criteria.put("financialDocumentReferenceInvoiceNumber", document.getDocumentNumber());
114
115 Collection<InvoicePaidApplied> results = businessObjectService.findMatching(InvoicePaidApplied.class, criteria);
116 for( InvoicePaidApplied invoicePaidApplied : results ){
117 //don't include discount (the doc num and the ref num are the same document number)
118 if( !invoicePaidApplied.getDocumentNumber().equals(document.getDocumentNumber())){
119 return true;
120 }
121 }
122 return false;
123 }
124
125 /**
126 * @see org.kuali.kfs.module.ar.document.service.InvoicePaidAppliedService#getInvoicePaidAppliedsForInvoice(java.lang.String)
127 */
128 public Collection<InvoicePaidApplied> getInvoicePaidAppliedsForInvoice(String documentNumber) {
129 Map<String, String> criteria = new HashMap<String, String>();
130 criteria.put("financialDocumentReferenceInvoiceNumber", documentNumber);
131 return businessObjectService.findMatching(InvoicePaidApplied.class, criteria);
132 }
133
134 /**
135 * @see org.kuali.kfs.module.ar.document.service.InvoicePaidAppliedService#getInvoicePaidAppliedsForInvoice(org.kuali.kfs.module.ar.document.CustomerInvoiceDocument)
136 */
137 public Collection<InvoicePaidApplied> getInvoicePaidAppliedsForInvoice(CustomerInvoiceDocument invoice) {
138 return getInvoicePaidAppliedsForInvoice(invoice.getDocumentNumber());
139 }
140
141 public BusinessObjectService getBusinessObjectService() {
142 return businessObjectService;
143 }
144
145 public void setBusinessObjectService(BusinessObjectService businessObjectService) {
146 this.businessObjectService = businessObjectService;
147 }
148
149 public UniversityDateService getUniversityDateService() {
150 return universityDateService;
151 }
152
153 public void setUniversityDateService(UniversityDateService universityDateService) {
154 this.universityDateService = universityDateService;
155 }
156 }