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;
017
018 import java.sql.Date;
019
020 import org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail;
021 import org.kuali.kfs.module.ar.document.CustomerInvoiceDocument;
022
023 public interface InvoiceRecurrenceDocumentService {
024
025 /**
026 * This method returns true if customer invoice detail amount can be taxed.
027 *
028 * @param customer
029 * @param customerInvoiceDetail
030 * @return
031 */
032 public boolean isCustomerInvoiceDetailTaxable( CustomerInvoiceDocument document, CustomerInvoiceDetail customerInvoiceDetail );
033
034 /**
035 * This method returns the appropriate postal code for taxation
036 * @param document
037 * @return
038 */
039 public String getPostalCodeForTaxation( CustomerInvoiceDocument document );
040
041 /**
042 * This method returns true if the invoice has an approved status.
043 *
044 * @param invoiceNumber
045 * @return
046 */
047 public boolean isInvoiceApproved( String invoiceNumber ) ;
048
049 /**
050 * This method returns true if the bein date is valid.
051 *
052 * @param invoiceNumber
053 * @return
054 */
055 public boolean isValidRecurrenceBeginDate( Date beginDate ) ;
056
057 /**
058 * This method returns true if the end date is valid.
059 *
060 * @param invoiceNumber
061 * @return
062 */
063 public boolean isValidRecurrenceEndDate( Date beginDate, Date endDate ) ;
064
065 /**
066 * This method returns true if the end date and number of recurrences are valid if entered together.
067 *
068 * @param invoiceNumber
069 * @return
070 */
071 public boolean isValidEndDateAndTotalRecurrenceNumber( Date beginDate, Date endDate, Integer totalRecurrenceNumber, String intervalCode ) ;
072
073 /**
074 * This method returns true if one of the end date or the number of recurrences is entered.
075 *
076 * @param invoiceNumber
077 * @return
078 */
079 public boolean isValidEndDateOrTotalRecurrenceNumber( Date endDate, Integer totalRecurrenceNumber ) ;
080
081 /**
082 * This method returns true if the number of recurrences is not more than the maximum allowed.
083 *
084 * @param invoiceNumber
085 * @return
086 */
087 public boolean isValidMaximumNumberOfRecurrences( Integer totalRecurrenceNumber, String intervalCode ) ;
088
089 /**
090 * This method returns true if the initiator is valid.
091 *
092 * @param invoiceNumber
093 * @return
094 */
095 public boolean isValidInitiator( String initiator ) ;
096
097
098 }