package api.unicore.component;
 
import static api.util.ComponentConstants.BOOLEAN_NULL;
import static api.util.ComponentConstants.BOOLEAN_NULL_CODE;
import static api.util.ComponentConstants.DATE_NULL;
import static api.util.ComponentConstants.DATE_NULL_CODE;
import static api.util.ComponentConstants.INTEGER_NULL;
import static api.util.ComponentConstants.INTEGER_NULL_CODE;
import static api.util.ComponentConstants.LONG_NULL;
import static api.util.ComponentConstants.LONG_NULL_CODE;
import static api.util.ComponentConstants.STRING_NULL;
import static api.util.ComponentConstants.STRING_NULL_CODE;
import static org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL;
 
import api.UnoComponent;
import api.unicore.component_manual.MerchantRemittanceConfig;
import api.util.BooleanFormat;
import api.util.DateFormat;
import api.util.IntegerFormat;
import api.util.LongFormat;
import api.util.StringFormat;
import iapp.services.ServerObject;
import iapp.util.audit.AuditHelper;
import java.util.Date;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.FormParam;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.codehaus.jackson.annotate.JsonPropertyOrder;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import unipay.validator.EmailListValidator;
 
/**
 * @author CodeGen [Alexander Fliagin]
 * @company UnitedThinkers
 * @since 2013/08/30
 */
 
@JsonSerialize(include=NON_NULL)
@XmlType(propOrder={"remittancePeriodAmex", "remittancePeriodCards", "remittancePeriodACH", "remittancePeriodDeposit", "totalBalance", "netBalance", "maximumWithholdingAmount", "merchantStatementRecipientList", "merchantStatementRecipientListMonthly", "isMerchantStatementExportEnabled", "isRemittanceSourceIgnored", "isRemittanceHoldEnabled", "minimumRemittanceAmount", "isMerchantStatementArchivingEnabled", "recurringFeesBeginDate", "feeWithdrawalPolicyType", "merchantStatementEmailingPolicy", "maxMerchantStatementAmount", "minMerchantStatementAmount", "maxReserveAdjustmentAmount", "convenienceFeeBalance", "remittanceCurrencyCode", "statementPolicyType", "lastRemittanceDate", "remittanceStartDate", "feeTemplateCode", "remittanceHoldUserCode", "remittanceHoldNote", "annualFeePolicy", "balance", "statementViewPolicyType", "feesResponsibleCl", "remittancePeriodMada"})
@JsonPropertyOrder({"remittancePeriodAmex", "remittancePeriodCards", "remittancePeriodACH", "remittancePeriodDeposit", "totalBalance", "netBalance", "maximumWithholdingAmount", "merchantStatementRecipientList", "merchantStatementRecipientListMonthly", "isMerchantStatementExportEnabled", "isRemittanceSourceIgnored", "isRemittanceHoldEnabled", "minimumRemittanceAmount", "isMerchantStatementArchivingEnabled", "recurringFeesBeginDate", "feeWithdrawalPolicyType", "merchantStatementEmailingPolicy", "maxMerchantStatementAmount", "minMerchantStatementAmount", "maxReserveAdjustmentAmount", "convenienceFeeBalance", "remittanceCurrencyCode", "statementPolicyType", "lastRemittanceDate", "remittanceStartDate", "feeTemplateCode", "remittanceHoldUserCode", "remittanceHoldNote", "annualFeePolicy", "balance", "statementViewPolicyType", "feesResponsibleCl", "remittancePeriodMada"})
@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso(MerchantRemittanceConfig.class)
public abstract class AbstractMerchantRemittanceConfig extends UnoComponent<unicore.model.MerchantAccountGroup> {
 
    @FormParam("remittancePeriodAmex")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer remittancePeriodAmex;
 
    @FormParam("remittancePeriodCards")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer remittancePeriodCards;
 
    @FormParam("remittancePeriodACH")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer remittancePeriodACH;
 
    @FormParam("remittancePeriodDeposit")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer remittancePeriodDeposit;
 
    @FormParam("totalBalance")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer totalBalance;
 
    @FormParam("netBalance")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer netBalance;
 
    @FormParam("maximumWithholdingAmount")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer maximumWithholdingAmount;
 
    @FormParam("merchantStatementRecipientList")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String merchantStatementRecipientList;
 
    @FormParam("merchantStatementRecipientListMonthly")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String merchantStatementRecipientListMonthly;
 
    @FormParam("isMerchantStatementExportEnabled")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean isMerchantStatementExportEnabled;
 
    @FormParam("isRemittanceSourceIgnored")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean isRemittanceSourceIgnored;
 
    @FormParam("isRemittanceHoldEnabled")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean isRemittanceHoldEnabled;
 
    @FormParam("minimumRemittanceAmount")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer minimumRemittanceAmount;
 
    @FormParam("isMerchantStatementArchivingEnabled")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean isMerchantStatementArchivingEnabled;
 
    @FormParam("recurringFeesBeginDate")
    @DateFormat
    @DefaultValue(DATE_NULL_CODE)
    protected Date recurringFeesBeginDate;
 
    @FormParam("feeWithdrawalPolicyType")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String feeWithdrawalPolicyType;
 
    @FormParam("merchantStatementEmailingPolicy")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String merchantStatementEmailingPolicy;
 
    @FormParam("maxMerchantStatementAmount")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer maxMerchantStatementAmount;
 
    @FormParam("minMerchantStatementAmount")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer minMerchantStatementAmount;
 
    @FormParam("maxReserveAdjustmentAmount")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer maxReserveAdjustmentAmount;
 
    @FormParam("convenienceFeeBalance")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer convenienceFeeBalance;
 
    @FormParam("remittanceCurrencyCode")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String remittanceCurrencyCode;
 
    @FormParam("statementPolicyType")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String statementPolicyType;
 
    @FormParam("lastRemittanceDate")
    @DateFormat
    @DefaultValue(DATE_NULL_CODE)
    protected Date lastRemittanceDate;
 
    @FormParam("remittanceStartDate")
    @DateFormat
    @DefaultValue(DATE_NULL_CODE)
    protected Date remittanceStartDate;
 
    @FormParam("feeTemplateCode")
    @LongFormat
    @DefaultValue(LONG_NULL_CODE)
    protected Long feeTemplateCode;
 
    @FormParam("remittanceHoldUserCode")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String remittanceHoldUserCode;
 
    @FormParam("remittanceHoldNote")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String remittanceHoldNote;
 
    @FormParam("annualFeePolicy")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String annualFeePolicy;
 
    @FormParam("balance")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer balance;
 
    @FormParam("statementViewPolicyType")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String statementViewPolicyType;
 
    @FormParam("feesResponsibleCl")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String feesResponsibleCl;
 
    @FormParam("remittancePeriodMada")
    @IntegerFormat
    @DefaultValue(INTEGER_NULL_CODE)
    protected Integer remittancePeriodMada;
 
 
    public AbstractMerchantRemittanceConfig(){
        super();
        applyDefaults();
    }
 
    public AbstractMerchantRemittanceConfig(unicore.model.MerchantAccountGroup object){
        super(object);
    }
 
 
    private void applyDefaults() {
        if (!isProxyObject()) {
            remittancePeriodAmex = INTEGER_NULL;
            remittancePeriodCards = INTEGER_NULL;
            remittancePeriodACH = INTEGER_NULL;
            remittancePeriodDeposit = INTEGER_NULL;
            totalBalance = INTEGER_NULL;
            netBalance = INTEGER_NULL;
            maximumWithholdingAmount = INTEGER_NULL;
            merchantStatementRecipientList = STRING_NULL;
            merchantStatementRecipientListMonthly = STRING_NULL;
            isMerchantStatementExportEnabled = BOOLEAN_NULL;
            isRemittanceSourceIgnored = BOOLEAN_NULL;
            isRemittanceHoldEnabled = BOOLEAN_NULL;
            minimumRemittanceAmount = INTEGER_NULL;
            isMerchantStatementArchivingEnabled = BOOLEAN_NULL;
            recurringFeesBeginDate = DATE_NULL;
            feeWithdrawalPolicyType = STRING_NULL;
            merchantStatementEmailingPolicy = STRING_NULL;
            maxMerchantStatementAmount = INTEGER_NULL;
            minMerchantStatementAmount = INTEGER_NULL;
            maxReserveAdjustmentAmount = INTEGER_NULL;
            convenienceFeeBalance = INTEGER_NULL;
            remittanceCurrencyCode = STRING_NULL;
            statementPolicyType = STRING_NULL;
            lastRemittanceDate = DATE_NULL;
            remittanceStartDate = DATE_NULL;
            feeTemplateCode = LONG_NULL;
            remittanceHoldUserCode = STRING_NULL;
            remittanceHoldNote = STRING_NULL;
            annualFeePolicy = STRING_NULL;
            balance = INTEGER_NULL;
            statementViewPolicyType = STRING_NULL;
            feesResponsibleCl = STRING_NULL;
            remittancePeriodMada = INTEGER_NULL;
        }
    }
 
    @Override
    public void from() {
        fromInternal();
        super.from();
    }
 
    protected abstract void fromInternal();
    @Override
    public abstract void to();
    @Override
    public abstract void initializeNew();
 
    @Override
    public String toString(){
        StringBuilder sb = new StringBuilder();
        sb.append("remittance-config: {");
        sb.append("remittancePeriodAmex: ");
        sb.append(remittancePeriodAmex);
        sb.append(',').append(' ');
        sb.append("remittancePeriodCards: ");
        sb.append(remittancePeriodCards);
        sb.append(',').append(' ');
        sb.append("remittancePeriodACH: ");
        sb.append(remittancePeriodACH);
        sb.append(',').append(' ');
        sb.append("remittancePeriodDeposit: ");
        sb.append(remittancePeriodDeposit);
        sb.append(',').append(' ');
        sb.append("totalBalance: ");
        sb.append(totalBalance);
        sb.append(',').append(' ');
        sb.append("netBalance: ");
        sb.append(netBalance);
        sb.append(',').append(' ');
        sb.append("maximumWithholdingAmount: ");
        sb.append(maximumWithholdingAmount);
        sb.append(',').append(' ');
        sb.append("merchantStatementRecipientList: ");
        sb.append(merchantStatementRecipientList);
        sb.append(',').append(' ');
        sb.append("merchantStatementRecipientListMonthly: ");
        sb.append(merchantStatementRecipientListMonthly);
        sb.append(',').append(' ');
        sb.append("isMerchantStatementExportEnabled: ");
        sb.append(isMerchantStatementExportEnabled);
        sb.append(',').append(' ');
        sb.append("isRemittanceSourceIgnored: ");
        sb.append(isRemittanceSourceIgnored);
        sb.append(',').append(' ');
        sb.append("isRemittanceHoldEnabled: ");
        sb.append(isRemittanceHoldEnabled);
        sb.append(',').append(' ');
        sb.append("minimumRemittanceAmount: ");
        sb.append(minimumRemittanceAmount);
        sb.append(',').append(' ');
        sb.append("isMerchantStatementArchivingEnabled: ");
        sb.append(isMerchantStatementArchivingEnabled);
        sb.append(',').append(' ');
        sb.append("recurringFeesBeginDate: ");
        sb.append(recurringFeesBeginDate);
        sb.append(',').append(' ');
        sb.append("feeWithdrawalPolicyType: ");
        sb.append(feeWithdrawalPolicyType);
        sb.append(',').append(' ');
        sb.append("merchantStatementEmailingPolicy: ");
        sb.append(merchantStatementEmailingPolicy);
        sb.append(',').append(' ');
        sb.append("maxMerchantStatementAmount: ");
        sb.append(maxMerchantStatementAmount);
        sb.append(',').append(' ');
        sb.append("minMerchantStatementAmount: ");
        sb.append(minMerchantStatementAmount);
        sb.append(',').append(' ');
        sb.append("maxReserveAdjustmentAmount: ");
        sb.append(maxReserveAdjustmentAmount);
        sb.append(',').append(' ');
        sb.append("convenienceFeeBalance: ");
        sb.append(convenienceFeeBalance);
        sb.append(',').append(' ');
        sb.append("remittanceCurrencyCode: ");
        sb.append(remittanceCurrencyCode);
        sb.append(',').append(' ');
        sb.append("statementPolicyType: ");
        sb.append(statementPolicyType);
        sb.append(',').append(' ');
        sb.append("lastRemittanceDate: ");
        sb.append(lastRemittanceDate);
        sb.append(',').append(' ');
        sb.append("remittanceStartDate: ");
        sb.append(remittanceStartDate);
        sb.append(',').append(' ');
        sb.append("feeTemplateCode: ");
        sb.append(feeTemplateCode);
        sb.append(',').append(' ');
        sb.append("remittanceHoldUserCode: ");
        sb.append(remittanceHoldUserCode);
        sb.append(',').append(' ');
        sb.append("remittanceHoldNote: ");
        sb.append(remittanceHoldNote);
        sb.append(',').append(' ');
        sb.append("annualFeePolicy: ");
        sb.append(annualFeePolicy);
        sb.append(',').append(' ');
        sb.append("balance: ");
        sb.append(balance);
        sb.append(',').append(' ');
        sb.append("statementViewPolicyType: ");
        sb.append(statementViewPolicyType);
        sb.append(',').append(' ');
        sb.append("feesResponsibleCl: ");
        sb.append(feesResponsibleCl);
        sb.append(',').append(' ');
        sb.append("remittancePeriodMada: ");
        sb.append(remittancePeriodMada);
        sb.append('}');
        return sb.toString();
    }
 
 
    @XmlAttribute(name="remittancePeriodAmex")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("remittancePeriodAmex")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getRemittancePeriodAmex(){
        return remittancePeriodAmex;
    }
 
    public void setRemittancePeriodAmex(Integer value){
        this.remittancePeriodAmex = value;
    }
 
    @XmlAttribute(name="remittancePeriodCards")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("remittancePeriodCards")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getRemittancePeriodCards(){
        return remittancePeriodCards;
    }
 
    public void setRemittancePeriodCards(Integer value){
        this.remittancePeriodCards = value;
    }
 
    @XmlAttribute(name="remittancePeriodACH")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("remittancePeriodACH")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getRemittancePeriodACH(){
        return remittancePeriodACH;
    }
 
    public void setRemittancePeriodACH(Integer value){
        this.remittancePeriodACH = value;
    }
 
    @XmlAttribute(name="remittancePeriodDeposit")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("remittancePeriodDeposit")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @NotNull
    @Min(0)
    public Integer getRemittancePeriodDeposit(){
        return remittancePeriodDeposit;
    }
 
    public void setRemittancePeriodDeposit(Integer value){
        this.remittancePeriodDeposit = value;
    }
 
    @XmlAttribute(name="totalBalance")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("totalBalance")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    public Integer getTotalBalance(){
        return totalBalance;
    }
 
 
    @XmlAttribute(name="netBalance")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("netBalance")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    public Integer getNetBalance(){
        return netBalance;
    }
 
 
    @XmlAttribute(name="maximumWithholdingAmount")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("maximumWithholdingAmount")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getMaximumWithholdingAmount(){
        return maximumWithholdingAmount;
    }
 
    public void setMaximumWithholdingAmount(Integer value){
        this.maximumWithholdingAmount = value;
    }
 
    @XmlAttribute(name="merchantStatementRecipientList")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("merchantStatementRecipientList")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    @EmailListValidator
    public String getMerchantStatementRecipientList(){
        return merchantStatementRecipientList;
    }
 
    public void setMerchantStatementRecipientList(String value){
        this.merchantStatementRecipientList = value;
    }
 
    @XmlAttribute(name="merchantStatementRecipientListMonthly")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("merchantStatementRecipientListMonthly")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    @EmailListValidator
    public String getMerchantStatementRecipientListMonthly(){
        return merchantStatementRecipientListMonthly;
    }
 
    public void setMerchantStatementRecipientListMonthly(String value){
        this.merchantStatementRecipientListMonthly = value;
    }
 
    @XmlAttribute(name="isMerchantStatementExportEnabled")
    @FormParam("isMerchantStatementExportEnabled")
    @BooleanFormat
    public Boolean getIsMerchantStatementExportEnabled(){
        return isMerchantStatementExportEnabled;
    }
 
    public void setIsMerchantStatementExportEnabled(Boolean value){
        this.isMerchantStatementExportEnabled = value;
    }
 
    @XmlAttribute(name="isRemittanceSourceIgnored")
    @FormParam("isRemittanceSourceIgnored")
    @BooleanFormat
    public Boolean getIsRemittanceSourceIgnored(){
        return isRemittanceSourceIgnored;
    }
 
    public void setIsRemittanceSourceIgnored(Boolean value){
        this.isRemittanceSourceIgnored = value;
    }
 
    @XmlAttribute(name="isRemittanceHoldEnabled")
    @FormParam("isRemittanceHoldEnabled")
    @BooleanFormat
    public Boolean getIsRemittanceHoldEnabled(){
        return isRemittanceHoldEnabled;
    }
 
    public void setIsRemittanceHoldEnabled(Boolean value){
        this.isRemittanceHoldEnabled = value;
    }
 
    @XmlAttribute(name="minimumRemittanceAmount")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("minimumRemittanceAmount")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getMinimumRemittanceAmount(){
        return minimumRemittanceAmount;
    }
 
    public void setMinimumRemittanceAmount(Integer value){
        this.minimumRemittanceAmount = value;
    }
 
    @XmlAttribute(name="isMerchantStatementArchivingEnabled")
    @FormParam("isMerchantStatementArchivingEnabled")
    @BooleanFormat
    public Boolean getIsMerchantStatementArchivingEnabled(){
        return isMerchantStatementArchivingEnabled;
    }
 
    public void setIsMerchantStatementArchivingEnabled(Boolean value){
        this.isMerchantStatementArchivingEnabled = value;
    }
 
    @XmlAttribute(name="recurringFeesBeginDate")
    @FormParam("recurringFeesBeginDate")
    @DateFormat
    @JsonDeserialize(using=api.util.DateDeserializer.class)
    public Date getRecurringFeesBeginDate(){
        return recurringFeesBeginDate;
    }
 
    public void setRecurringFeesBeginDate(Date value){
        this.recurringFeesBeginDate = value;
    }
 
    @XmlAttribute(name="feeWithdrawalPolicyType")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("feeWithdrawalPolicyType")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getFeeWithdrawalPolicyType(){
        return feeWithdrawalPolicyType;
    }
 
    public void setFeeWithdrawalPolicyType(String value){
        this.feeWithdrawalPolicyType = value;
    }
 
    @XmlAttribute(name="merchantStatementEmailingPolicy")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("merchantStatementEmailingPolicy")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getMerchantStatementEmailingPolicy(){
        return merchantStatementEmailingPolicy;
    }
 
    public void setMerchantStatementEmailingPolicy(String value){
        this.merchantStatementEmailingPolicy = value;
    }
 
    @XmlAttribute(name="maxMerchantStatementAmount")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("maxMerchantStatementAmount")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getMaxMerchantStatementAmount(){
        return maxMerchantStatementAmount;
    }
 
    public void setMaxMerchantStatementAmount(Integer value){
        this.maxMerchantStatementAmount = value;
    }
 
    @XmlAttribute(name="minMerchantStatementAmount")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("minMerchantStatementAmount")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getMinMerchantStatementAmount(){
        return minMerchantStatementAmount;
    }
 
    public void setMinMerchantStatementAmount(Integer value){
        this.minMerchantStatementAmount = value;
    }
 
    @XmlAttribute(name="maxReserveAdjustmentAmount")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("maxReserveAdjustmentAmount")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getMaxReserveAdjustmentAmount(){
        return maxReserveAdjustmentAmount;
    }
 
    public void setMaxReserveAdjustmentAmount(Integer value){
        this.maxReserveAdjustmentAmount = value;
    }
 
    @XmlAttribute(name="convenienceFeeBalance")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("convenienceFeeBalance")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    public Integer getConvenienceFeeBalance(){
        return convenienceFeeBalance;
    }
 
 
    @XmlAttribute(name="remittanceCurrencyCode")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("remittanceCurrencyCode")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getRemittanceCurrencyCode(){
        return remittanceCurrencyCode;
    }
 
    public void setRemittanceCurrencyCode(String value){
        this.remittanceCurrencyCode = value;
    }
 
    @XmlAttribute(name="statementPolicyType")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("statementPolicyType")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getStatementPolicyType(){
        return statementPolicyType;
    }
 
    public void setStatementPolicyType(String value){
        this.statementPolicyType = value;
    }
 
    @XmlAttribute(name="lastRemittanceDate")
    @FormParam("lastRemittanceDate")
    @DateFormat
    @JsonDeserialize(using=api.util.DateDeserializer.class)
    public Date getLastRemittanceDate(){
        return lastRemittanceDate;
    }
 
 
    @XmlAttribute(name="remittanceStartDate")
    @FormParam("remittanceStartDate")
    @DateFormat
    @JsonDeserialize(using=api.util.DateDeserializer.class)
    public Date getRemittanceStartDate(){
        return remittanceStartDate;
    }
 
    public void setRemittanceStartDate(Date value){
        this.remittanceStartDate = value;
    }
 
    @XmlAttribute(name="feeTemplateCode")
    @XmlJavaTypeAdapter(value=api.util.LongAdapter.class, type=Long.class)
    @FormParam("feeTemplateCode")
    @LongFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Long getFeeTemplateCode(){
        return feeTemplateCode;
    }
 
    public void setFeeTemplateCode(Long value){
        this.feeTemplateCode = value;
    }
 
    @XmlAttribute(name="remittanceHoldUserCode")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("remittanceHoldUserCode")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getRemittanceHoldUserCode(){
        return remittanceHoldUserCode;
    }
 
    public void setRemittanceHoldUserCode(String value){
        this.remittanceHoldUserCode = value;
    }
 
    @XmlAttribute(name="remittanceHoldNote")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("remittanceHoldNote")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getRemittanceHoldNote(){
        return remittanceHoldNote;
    }
 
    public void setRemittanceHoldNote(String value){
        this.remittanceHoldNote = value;
    }
 
    @XmlAttribute(name="annualFeePolicy")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("annualFeePolicy")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    @NotNull
    public String getAnnualFeePolicy(){
        return annualFeePolicy;
    }
 
    public void setAnnualFeePolicy(String value){
        this.annualFeePolicy = value;
    }
 
    @XmlAttribute(name="balance")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("balance")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    public Integer getBalance(){
        return balance;
    }
 
 
    @XmlAttribute(name="statementViewPolicyType")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("statementViewPolicyType")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getStatementViewPolicyType(){
        return statementViewPolicyType;
    }
 
    public void setStatementViewPolicyType(String value){
        this.statementViewPolicyType = value;
    }
 
    @XmlAttribute(name="feesResponsibleCl")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("feesResponsibleCl")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getFeesResponsibleCl(){
        return feesResponsibleCl;
    }
 
    public void setFeesResponsibleCl(String value){
        this.feesResponsibleCl = value;
    }
 
    @XmlAttribute(name="remittancePeriodMada")
    @XmlJavaTypeAdapter(value=api.util.IntegerAdapter.class, type=Integer.class)
    @FormParam("remittancePeriodMada")
    @IntegerFormat
    @JsonDeserialize(using=api.util.NumberDeserializer.class)
    @Min(0)
    public Integer getRemittancePeriodMada(){
        return remittancePeriodMada;
    }
 
    public void setRemittancePeriodMada(Integer value){
        this.remittancePeriodMada = value;
    }
 
 
    public void audit(AuditHelper helper, ServerObject object) {
        unicore.model.MerchantAccountGroup s_object = (unicore.model.MerchantAccountGroup) object;
        helper.audit("remittancePeriodAmex", remittancePeriodAmex, s_object.getAmexRemittancePeriod());
        helper.audit("remittancePeriodCards", remittancePeriodCards, s_object.getCcRemittancePeriod());
        helper.audit("remittancePeriodACH", remittancePeriodACH, s_object.getAchRemittancePeriod());
        helper.audit("remittancePeriodDeposit", remittancePeriodDeposit, s_object.getRemittancePeriod());
        helper.audit("totalBalance", totalBalance, s_object.getBalance());
        helper.audit("netBalance", netBalance, s_object.getNetBalance());
        helper.audit("maximumWithholdingAmount", maximumWithholdingAmount, s_object.getMaxWithholdingAmount());
        helper.audit("merchantStatementRecipientList", merchantStatementRecipientList, s_object.getRemittanceRecipientList());
        helper.audit("merchantStatementRecipientListMonthly", merchantStatementRecipientListMonthly, s_object.getRemittanceRecipientListMonthly());
        helper.audit("isMerchantStatementExportEnabled", isMerchantStatementExportEnabled, s_object.getIsMerchantStatementExportEnabled());
        helper.audit("isRemittanceSourceIgnored", isRemittanceSourceIgnored, s_object.getIsIgnoreRemittanceSource());
        helper.audit("isRemittanceHoldEnabled", isRemittanceHoldEnabled, s_object.getIsRemittanceHoldEnabled());
        helper.audit("minimumRemittanceAmount", minimumRemittanceAmount, s_object.getMinimumRemittanceAmount());
        helper.audit("isMerchantStatementArchivingEnabled", isMerchantStatementArchivingEnabled, s_object.getIsMerchantStatementArchivingEnabled());
        helper.audit("recurringFeesBeginDate", recurringFeesBeginDate, s_object.getRecurringFeesBeginDate());
        helper.audit("feeWithdrawalPolicyType", feeWithdrawalPolicyType, s_object.getFeeWithdrawalPolicyCl() == null ? null : s_object.getFeeWithdrawalPolicyCl().getValue());
        helper.audit("merchantStatementEmailingPolicy", merchantStatementEmailingPolicy, s_object.getStatementEmailingPolicy());
        helper.audit("maxMerchantStatementAmount", maxMerchantStatementAmount, s_object.getMaxMerchantStatementAmount());
        helper.audit("minMerchantStatementAmount", minMerchantStatementAmount, s_object.getMinMerchantStatementAmount());
        helper.audit("maxReserveAdjustmentAmount", maxReserveAdjustmentAmount, s_object.getMaxReserveAdjustmentAmount());
        helper.audit("convenienceFeeBalance", convenienceFeeBalance, s_object.getConvenienceFeeBalance());
        helper.audit("remittanceCurrencyCode", remittanceCurrencyCode, s_object.getRemittanceCurrencyCode());
        helper.audit("statementPolicyType", statementPolicyType, s_object.getStatementPolicyCl() == null ? null : s_object.getStatementPolicyCl().getValue());
        helper.audit("lastRemittanceDate", lastRemittanceDate, s_object.getLastRemittanceDate());
        helper.audit("remittanceStartDate", remittanceStartDate, s_object.getRemittanceStartDate());
        helper.audit("feeTemplateCode", feeTemplateCode, s_object.getFeeTemplateCode());
        helper.audit("remittanceHoldUserCode", remittanceHoldUserCode, s_object.getRemittanceHoldUserCode());
        helper.audit("remittanceHoldNote", remittanceHoldNote, s_object.getRemittanceHoldNote());
        helper.audit("annualFeePolicy", annualFeePolicy, s_object.getAnnualFeePolicy());
        helper.audit("balance", balance, s_object.getBalance());
        helper.audit("statementViewPolicyType", statementViewPolicyType, s_object.getStatementViewPolicy());
        helper.audit("feesResponsibleCl", feesResponsibleCl, s_object.getFeesResponsibleCl() == null ? null : s_object.getFeesResponsibleCl().getValue());
        helper.audit("remittancePeriodMada", remittancePeriodMada, s_object.getMadaRemittancePeriod());
 
    }
 
    public static String objectTypeCode(){
        return "remittance-config";
    }
 
}