/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.sys.businessobject;
import java.sql.Date;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import org.kuali.kfs.coa.businessobject.Account;
import org.kuali.kfs.coa.businessobject.Chart;
import org.kuali.kfs.coa.businessobject.ObjectCodeCurrent;
import org.kuali.rice.core.api.mo.common.active.MutableInactivatable;
import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
public class TaxRegion extends PersistableBusinessObjectBase implements MutableInactivatable {
protected String taxRegionCode; // (e.g., state code or district code)
protected String taxRegionName; // (e.g., state name or tax district name)
protected String taxRegionTypeCode;
protected String chartOfAccountsCode;
protected String accountNumber;
protected String financialObjectCode;
protected boolean active;
protected boolean taxRegionUseTaxIndicator;
protected Chart chartOfAccounts;
protected Account account;
protected ObjectCodeCurrent objectCode;
protected TaxRegionType taxRegionType;
protected List<TaxRegionRate> taxRegionRates = new ArrayList<TaxRegionRate>();
protected List<TaxRegionState> taxRegionStates = new ArrayList<TaxRegionState>();
protected List<TaxRegionCounty> taxRegionCounties = new ArrayList<TaxRegionCounty>();
protected List<TaxRegionPostalCode> taxRegionPostalCodes = new ArrayList<TaxRegionPostalCode>();
public List<TaxRegionRate> getTaxRegionRates() {
return taxRegionRates;
}
public void setTaxRegionRates(List<TaxRegionRate> taxRegionRates) {
this.taxRegionRates = taxRegionRates;
}
public List<TaxRegionState> getTaxRegionStates() {
return taxRegionStates;
}
public void setTaxRegionStates(List<TaxRegionState> taxRegionStates) {
this.taxRegionStates = taxRegionStates;
}
public List<TaxRegionCounty> getTaxRegionCounties() {
return taxRegionCounties;
}
public void setTaxRegionCounties(List<TaxRegionCounty> taxRegionCounties) {
this.taxRegionCounties = taxRegionCounties;
}
public List<TaxRegionPostalCode> getTaxRegionPostalCodes() {
return taxRegionPostalCodes;
}
public void setTaxRegionPostalCodes(List<TaxRegionPostalCode> taxRegionPostalCodes) {
this.taxRegionPostalCodes = taxRegionPostalCodes;
}
public TaxRegionType getTaxRegionType() {
return taxRegionType;
}
public void setTaxRegionType(TaxRegionType taxRegionType) {
this.taxRegionType = taxRegionType;
}
public String getAccountNumber() {
return accountNumber;
}
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
@Override
public boolean isActive() {
return active;
}
@Override
public void setActive(boolean active) {
this.active = active;
}
public String getChartOfAccountsCode() {
return chartOfAccountsCode;
}
public void setChartOfAccountsCode(String chartOfAccountsCode) {
this.chartOfAccountsCode = chartOfAccountsCode;
}
public String getFinancialObjectCode() {
return financialObjectCode;
}
public void setFinancialObjectCode(String financialObjectCode) {
this.financialObjectCode = financialObjectCode;
}
public String getTaxRegionCode() {
return taxRegionCode;
}
public void setTaxRegionCode(String taxDistrictCode) {
this.taxRegionCode = taxDistrictCode;
}
public String getTaxRegionName() {
return taxRegionName;
}
public void setTaxRegionName(String taxDistrictName) {
this.taxRegionName = taxDistrictName;
}
protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
// TODO Auto-generated method stub
return null;
}
@Override
public String toString() {
return taxRegionTypeCode + "-" + taxRegionCode + "-" + taxRegionName;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
public Chart getChartOfAccounts() {
return chartOfAccounts;
}
public void setChartOfAccounts(Chart chartOfAccounts) {
this.chartOfAccounts = chartOfAccounts;
}
public ObjectCodeCurrent getObjectCode() {
return objectCode;
}
public void setObjectCode(ObjectCodeCurrent objectCode) {
this.objectCode = objectCode;
}
public String getTaxRegionTypeCode() {
return taxRegionTypeCode;
}
public void setTaxRegionTypeCode(String taxRegionTypeCode) {
this.taxRegionTypeCode = taxRegionTypeCode;
}
public boolean isTaxRegionUseTaxIndicator() {
return taxRegionUseTaxIndicator;
}
public void setTaxRegionUseTaxIndicator(boolean taxRegionUseTaxIndicator) {
this.taxRegionUseTaxIndicator = taxRegionUseTaxIndicator;
}
/**
* This method returns the effective tax region rate based off the date of transaction passed in
* @param dateOfTransaction
* @return
*/
public TaxRegionRate getEffectiveTaxRegionRate(Date dateOfTransaction) {
TaxRegionRate selectedTaxRegionRate = null;
for (TaxRegionRate taxRegionRate : taxRegionRates) {
if (taxRegionRate.getEffectiveDate().getTime() <= dateOfTransaction.getTime() ) {
selectedTaxRegionRate = taxRegionRate;
}
}
return selectedTaxRegionRate;
}
}