/*
* 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.module.purap.fixture;
import java.math.BigDecimal;
import org.kuali.kfs.module.purap.PurapConstants.PaymentRequestStatuses;
import org.kuali.kfs.module.purap.document.PaymentRequestDocument;
import org.kuali.rice.core.api.util.type.KualiDecimal;
public enum PaymentRequestTaxTabFixture {
// S: successful; F: failing
// for testing tax income class
INCOME_EMPTY(null, null, null, null, null, null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
INCOME_N_OTHERS_EMPTY("N", null, null, null, null, null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
INCOME_N_OTHERS_NOTEMPTY("N", new BigDecimal(1), new BigDecimal(1), "US", "1234567890", null, true, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
INCOME_NOTN_TAX_COUNTRY_EMPTY("O", null, null, null, null, null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
// for testing tax rates
INCOME_F_TAX_VALID("F", new BigDecimal(14), new BigDecimal("3.4"), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
INCOME_F_FED_INVALID("F", new BigDecimal(15), new BigDecimal("3.4"), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
INCOME_F_ST_INVALID("F", new BigDecimal(30), new BigDecimal(1), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
INCOME_I_TAX_VALID("I", new BigDecimal(30), new BigDecimal(0), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
INCOME_I_FED_INVALID("I", new BigDecimal(10), new BigDecimal(0), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
INCOME_I_ST_INVALID("I", new BigDecimal(30), new BigDecimal(1), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
INCOME_R_TAX_VALID("R", new BigDecimal(10), new BigDecimal(0), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
INCOME_R_FED_INVALID("R", new BigDecimal(14), new BigDecimal(0), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
INCOME_R_ST_INVALID("R", new BigDecimal(10), new BigDecimal(1), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
FED_ZERO_ST_ZERO("F", new BigDecimal(0), new BigDecimal(0), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
FFD_ZERO_ST_NOTZERO("F", new BigDecimal(0), new BigDecimal("3.4"), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
FED_NOTZERO_ST_ZERO("F", new BigDecimal(30), new BigDecimal(0), "US", "1234567890", null, null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
// for testing tax indicators
GROSS_TAX_NOTZERO("R", new BigDecimal(30), new BigDecimal(0), "US", "1234567890", null, null, true, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
GROSS_TAX_ZERO("R", new BigDecimal(0), new BigDecimal(0), "US", "1234567890", null, null, true, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
FOREIGN_TAX_ZERO("F", new BigDecimal(0), new BigDecimal(0), "US", "1234567890", null, null, null, true, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
FOREIGN_TAX_NOTZERO("F", new BigDecimal(30), new BigDecimal("3.4"), "US", "1234567890", null, null, null, true, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
USAID_OTHER_INCOME_F_TAX_ZERO("F", new BigDecimal(0), new BigDecimal(0), "US", "1234567890", null, null, null, null, true, true, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
USAID_INCOME_NOTF_TAX_NOTZERO("R", new BigDecimal(10), new BigDecimal(0), "US", "1234567890", null, null, null, null, true, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
OTHER_TAX_ZERO("I", new BigDecimal(0), new BigDecimal(0), "US", "1234567890", null, null, null, null, null, true, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
OTHER_TAX_NOTZERO("I", new BigDecimal(30), new BigDecimal(0), "US", "1234567890", null, null, null, null, null, true, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
SW4_INCOME_F_TAX_ZERO("F", new BigDecimal(0), new BigDecimal(0), "US", "1234567890", new KualiDecimal(1), null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // S
SW4_NEG_INCOME_NOTF_TAX_NOTZERO("R", new BigDecimal(10), new BigDecimal(0), "US", "1234567890", new KualiDecimal(-1), null, null, null, null, null, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW), // F
SW4_TREATY_GROSS_FOREIGN_USAID_OTHER("F", new BigDecimal(0), new BigDecimal(0), "US", "1234567890", new KualiDecimal(1), true, true, true, true, true, PaymentRequestStatuses.APPDOC_AWAITING_TAX_REVIEW); // F
private String taxClassificationCode;
private BigDecimal federalTaxPercent; // number is in whole form so 5% is 5.00
private BigDecimal stateTaxPercent; // number is in whole form so 5% is 5.00
private String taxCountryCode;
private String taxNQIId;
private KualiDecimal taxSpecialW4Amount;
private Boolean taxExemptTreatyIndicator;
private Boolean grossUpIndicator;
private Boolean foreignSourceIndicator;
private Boolean taxUSAIDPerDiemIndicator;
private Boolean otherTaxExemptIndicator;
private String statusCode;
private PaymentRequestTaxTabFixture(
String taxClassificationCode,
BigDecimal federalTaxPercent,
BigDecimal stateTaxPercent,
String taxCountryCode,
String taxNQIId,
KualiDecimal taxSpecialW4Amount,
Boolean taxExemptTreatyIndicator,
Boolean grossUpIndicator,
Boolean foreignSourceIndicator,
Boolean taxUSAIDPerDiemIndicator,
Boolean otherTaxExemptIndicator,
String statusCode) {
this.taxClassificationCode = taxClassificationCode;
this.federalTaxPercent = federalTaxPercent;
this.stateTaxPercent = stateTaxPercent;
this.taxCountryCode = taxCountryCode;
this.taxNQIId = taxNQIId;
this.taxSpecialW4Amount = taxSpecialW4Amount;
this.taxExemptTreatyIndicator = taxExemptTreatyIndicator;
this.grossUpIndicator = grossUpIndicator;
this.foreignSourceIndicator = foreignSourceIndicator;
this.taxUSAIDPerDiemIndicator = taxUSAIDPerDiemIndicator;
this.otherTaxExemptIndicator = otherTaxExemptIndicator;
this.statusCode = statusCode;
}
public PaymentRequestDocument populate(PaymentRequestDocument preqDocument) {
preqDocument.setTaxClassificationCode(taxClassificationCode);
preqDocument.setTaxFederalPercent(federalTaxPercent);
preqDocument.setTaxStatePercent(stateTaxPercent);
preqDocument.setTaxCountryCode(taxCountryCode);
preqDocument.setTaxNQIId(taxNQIId);
preqDocument.setTaxSpecialW4Amount(taxSpecialW4Amount);
preqDocument.setTaxExemptTreatyIndicator(taxExemptTreatyIndicator);
preqDocument.setTaxGrossUpIndicator(grossUpIndicator);
preqDocument.setTaxForeignSourceIndicator(foreignSourceIndicator);
preqDocument.setTaxUSAIDPerDiemIndicator(taxUSAIDPerDiemIndicator);
preqDocument.setTaxOtherExemptIndicator(otherTaxExemptIndicator);
preqDocument.setApplicationDocumentStatus(statusCode);
return preqDocument;
}
}