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 }