package api.unicore.component.fees;
 
import static api.util.ComponentConstants.BOOLEAN_NULL;
import static api.util.ComponentConstants.BOOLEAN_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.unicore.component.fees_manual.BatchFeePolicy;
import api.util.BooleanFormat;
import api.util.StringFormat;
import iapp.util.audit.AuditHelper;
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;
 
/**
 * @author CodeGen [Liza Zhydok]
 * @company UnitedThinkers
 * @since 2013/02/04
 */
 
@JsonSerialize(include=NON_NULL)
@XmlType(propOrder={"approvalRegularProcessing", "approvalRebillProcessing", "approvalRetryProcessing", "approvalRegularItem", "approvalRebillItem", "approvalRetryItem", "declineRegularProcessing", "declineRebillProcessing", "declineRetryProcessing", "declineRegularItem", "declineRebillItem", "declineRetryItem", "blacklistRegularProcessing", "blacklistRebillProcessing", "blacklistRegularItem", "blacklistRebillItem", "errorProcessing", "errorItem", "visaDeposit", "masterCardDeposit", "discoverDeposit", "achDeposit", "amexDeposit", "cardsChargebackDeposit", "convenienceFee", "achReturnDeposit"})
@JsonPropertyOrder({"approvalRegularProcessing", "approvalRebillProcessing", "approvalRetryProcessing", "approvalRegularItem", "approvalRebillItem", "approvalRetryItem", "declineRegularProcessing", "declineRebillProcessing", "declineRetryProcessing", "declineRegularItem", "declineRebillItem", "declineRetryItem", "blacklistRegularProcessing", "blacklistRebillProcessing", "blacklistRegularItem", "blacklistRebillItem", "errorProcessing", "errorItem", "visaDeposit", "masterCardDeposit", "discoverDeposit", "achDeposit", "amexDeposit", "cardsChargebackDeposit", "convenienceFee", "achReturnDeposit"})
@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso(BatchFeePolicy.class)
public abstract class AbstractBatchFeePolicy {
 
    @FormParam("approvalRegularProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean approvalRegularProcessing = BOOLEAN_NULL;
 
    @FormParam("approvalRebillProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean approvalRebillProcessing = BOOLEAN_NULL;
 
    @FormParam("approvalRetryProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean approvalRetryProcessing = BOOLEAN_NULL;
 
    @FormParam("approvalRegularItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean approvalRegularItem = BOOLEAN_NULL;
 
    @FormParam("approvalRebillItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean approvalRebillItem = BOOLEAN_NULL;
 
    @FormParam("approvalRetryItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean approvalRetryItem = BOOLEAN_NULL;
 
    @FormParam("declineRegularProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean declineRegularProcessing = BOOLEAN_NULL;
 
    @FormParam("declineRebillProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean declineRebillProcessing = BOOLEAN_NULL;
 
    @FormParam("declineRetryProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean declineRetryProcessing = BOOLEAN_NULL;
 
    @FormParam("declineRegularItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean declineRegularItem = BOOLEAN_NULL;
 
    @FormParam("declineRebillItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean declineRebillItem = BOOLEAN_NULL;
 
    @FormParam("declineRetryItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean declineRetryItem = BOOLEAN_NULL;
 
    @FormParam("blacklistRegularProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean blacklistRegularProcessing = BOOLEAN_NULL;
 
    @FormParam("blacklistRebillProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean blacklistRebillProcessing = BOOLEAN_NULL;
 
    @FormParam("blacklistRegularItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean blacklistRegularItem = BOOLEAN_NULL;
 
    @FormParam("blacklistRebillItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean blacklistRebillItem = BOOLEAN_NULL;
 
    @FormParam("errorProcessing")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean errorProcessing = BOOLEAN_NULL;
 
    @FormParam("errorItem")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean errorItem = BOOLEAN_NULL;
 
    @FormParam("visaDeposit")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String visaDeposit = STRING_NULL;
 
    @FormParam("masterCardDeposit")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String masterCardDeposit = STRING_NULL;
 
    @FormParam("discoverDeposit")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String discoverDeposit = STRING_NULL;
 
    @FormParam("achDeposit")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String achDeposit = STRING_NULL;
 
    @FormParam("amexDeposit")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String amexDeposit = STRING_NULL;
 
    @FormParam("cardsChargebackDeposit")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String cardsChargebackDeposit = STRING_NULL;
 
    @FormParam("convenienceFee")
    @BooleanFormat
    @DefaultValue(BOOLEAN_NULL_CODE)
    protected Boolean convenienceFee = BOOLEAN_NULL;
 
    @FormParam("achReturnDeposit")
    @StringFormat
    @DefaultValue(STRING_NULL_CODE)
    protected String achReturnDeposit = STRING_NULL;
 
 
    public AbstractBatchFeePolicy(){
    }
 
    public String toString(){
        StringBuilder sb = new StringBuilder();
        sb.append("policy: {");
        sb.append("approvalRegularProcessing: ");
        sb.append(approvalRegularProcessing);
        sb.append(',').append(' ');
        sb.append("approvalRebillProcessing: ");
        sb.append(approvalRebillProcessing);
        sb.append(',').append(' ');
        sb.append("approvalRetryProcessing: ");
        sb.append(approvalRetryProcessing);
        sb.append(',').append(' ');
        sb.append("approvalRegularItem: ");
        sb.append(approvalRegularItem);
        sb.append(',').append(' ');
        sb.append("approvalRebillItem: ");
        sb.append(approvalRebillItem);
        sb.append(',').append(' ');
        sb.append("approvalRetryItem: ");
        sb.append(approvalRetryItem);
        sb.append(',').append(' ');
        sb.append("declineRegularProcessing: ");
        sb.append(declineRegularProcessing);
        sb.append(',').append(' ');
        sb.append("declineRebillProcessing: ");
        sb.append(declineRebillProcessing);
        sb.append(',').append(' ');
        sb.append("declineRetryProcessing: ");
        sb.append(declineRetryProcessing);
        sb.append(',').append(' ');
        sb.append("declineRegularItem: ");
        sb.append(declineRegularItem);
        sb.append(',').append(' ');
        sb.append("declineRebillItem: ");
        sb.append(declineRebillItem);
        sb.append(',').append(' ');
        sb.append("declineRetryItem: ");
        sb.append(declineRetryItem);
        sb.append(',').append(' ');
        sb.append("blacklistRegularProcessing: ");
        sb.append(blacklistRegularProcessing);
        sb.append(',').append(' ');
        sb.append("blacklistRebillProcessing: ");
        sb.append(blacklistRebillProcessing);
        sb.append(',').append(' ');
        sb.append("blacklistRegularItem: ");
        sb.append(blacklistRegularItem);
        sb.append(',').append(' ');
        sb.append("blacklistRebillItem: ");
        sb.append(blacklistRebillItem);
        sb.append(',').append(' ');
        sb.append("errorProcessing: ");
        sb.append(errorProcessing);
        sb.append(',').append(' ');
        sb.append("errorItem: ");
        sb.append(errorItem);
        sb.append(',').append(' ');
        sb.append("visaDeposit: ");
        sb.append(visaDeposit);
        sb.append(',').append(' ');
        sb.append("masterCardDeposit: ");
        sb.append(masterCardDeposit);
        sb.append(',').append(' ');
        sb.append("discoverDeposit: ");
        sb.append(discoverDeposit);
        sb.append(',').append(' ');
        sb.append("achDeposit: ");
        sb.append(achDeposit);
        sb.append(',').append(' ');
        sb.append("amexDeposit: ");
        sb.append(amexDeposit);
        sb.append(',').append(' ');
        sb.append("cardsChargebackDeposit: ");
        sb.append(cardsChargebackDeposit);
        sb.append(',').append(' ');
        sb.append("convenienceFee: ");
        sb.append(convenienceFee);
        sb.append(',').append(' ');
        sb.append("achReturnDeposit: ");
        sb.append(achReturnDeposit);
        sb.append('}');
        return sb.toString();
    }
 
 
    @XmlAttribute(name="approvalRegularProcessing")
    @FormParam("approvalRegularProcessing")
    @BooleanFormat
    public Boolean getApprovalRegularProcessing(){
        return approvalRegularProcessing;
    }
 
    public void setApprovalRegularProcessing(Boolean value){
        this.approvalRegularProcessing = value;
    }
 
    @XmlAttribute(name="approvalRebillProcessing")
    @FormParam("approvalRebillProcessing")
    @BooleanFormat
    public Boolean getApprovalRebillProcessing(){
        return approvalRebillProcessing;
    }
 
    public void setApprovalRebillProcessing(Boolean value){
        this.approvalRebillProcessing = value;
    }
 
    @XmlAttribute(name="approvalRetryProcessing")
    @FormParam("approvalRetryProcessing")
    @BooleanFormat
    public Boolean getApprovalRetryProcessing(){
        return approvalRetryProcessing;
    }
 
    public void setApprovalRetryProcessing(Boolean value){
        this.approvalRetryProcessing = value;
    }
 
    @XmlAttribute(name="approvalRegularItem")
    @FormParam("approvalRegularItem")
    @BooleanFormat
    public Boolean getApprovalRegularItem(){
        return approvalRegularItem;
    }
 
    public void setApprovalRegularItem(Boolean value){
        this.approvalRegularItem = value;
    }
 
    @XmlAttribute(name="approvalRebillItem")
    @FormParam("approvalRebillItem")
    @BooleanFormat
    public Boolean getApprovalRebillItem(){
        return approvalRebillItem;
    }
 
    public void setApprovalRebillItem(Boolean value){
        this.approvalRebillItem = value;
    }
 
    @XmlAttribute(name="approvalRetryItem")
    @FormParam("approvalRetryItem")
    @BooleanFormat
    public Boolean getApprovalRetryItem(){
        return approvalRetryItem;
    }
 
    public void setApprovalRetryItem(Boolean value){
        this.approvalRetryItem = value;
    }
 
    @XmlAttribute(name="declineRegularProcessing")
    @FormParam("declineRegularProcessing")
    @BooleanFormat
    public Boolean getDeclineRegularProcessing(){
        return declineRegularProcessing;
    }
 
    public void setDeclineRegularProcessing(Boolean value){
        this.declineRegularProcessing = value;
    }
 
    @XmlAttribute(name="declineRebillProcessing")
    @FormParam("declineRebillProcessing")
    @BooleanFormat
    public Boolean getDeclineRebillProcessing(){
        return declineRebillProcessing;
    }
 
    public void setDeclineRebillProcessing(Boolean value){
        this.declineRebillProcessing = value;
    }
 
    @XmlAttribute(name="declineRetryProcessing")
    @FormParam("declineRetryProcessing")
    @BooleanFormat
    public Boolean getDeclineRetryProcessing(){
        return declineRetryProcessing;
    }
 
    public void setDeclineRetryProcessing(Boolean value){
        this.declineRetryProcessing = value;
    }
 
    @XmlAttribute(name="declineRegularItem")
    @FormParam("declineRegularItem")
    @BooleanFormat
    public Boolean getDeclineRegularItem(){
        return declineRegularItem;
    }
 
    public void setDeclineRegularItem(Boolean value){
        this.declineRegularItem = value;
    }
 
    @XmlAttribute(name="declineRebillItem")
    @FormParam("declineRebillItem")
    @BooleanFormat
    public Boolean getDeclineRebillItem(){
        return declineRebillItem;
    }
 
    public void setDeclineRebillItem(Boolean value){
        this.declineRebillItem = value;
    }
 
    @XmlAttribute(name="declineRetryItem")
    @FormParam("declineRetryItem")
    @BooleanFormat
    public Boolean getDeclineRetryItem(){
        return declineRetryItem;
    }
 
    public void setDeclineRetryItem(Boolean value){
        this.declineRetryItem = value;
    }
 
    @XmlAttribute(name="blacklistRegularProcessing")
    @FormParam("blacklistRegularProcessing")
    @BooleanFormat
    public Boolean getBlacklistRegularProcessing(){
        return blacklistRegularProcessing;
    }
 
    public void setBlacklistRegularProcessing(Boolean value){
        this.blacklistRegularProcessing = value;
    }
 
    @XmlAttribute(name="blacklistRebillProcessing")
    @FormParam("blacklistRebillProcessing")
    @BooleanFormat
    public Boolean getBlacklistRebillProcessing(){
        return blacklistRebillProcessing;
    }
 
    public void setBlacklistRebillProcessing(Boolean value){
        this.blacklistRebillProcessing = value;
    }
 
    @XmlAttribute(name="blacklistRegularItem")
    @FormParam("blacklistRegularItem")
    @BooleanFormat
    public Boolean getBlacklistRegularItem(){
        return blacklistRegularItem;
    }
 
    public void setBlacklistRegularItem(Boolean value){
        this.blacklistRegularItem = value;
    }
 
    @XmlAttribute(name="blacklistRebillItem")
    @FormParam("blacklistRebillItem")
    @BooleanFormat
    public Boolean getBlacklistRebillItem(){
        return blacklistRebillItem;
    }
 
    public void setBlacklistRebillItem(Boolean value){
        this.blacklistRebillItem = value;
    }
 
    @XmlAttribute(name="errorProcessing")
    @FormParam("errorProcessing")
    @BooleanFormat
    public Boolean getErrorProcessing(){
        return errorProcessing;
    }
 
    public void setErrorProcessing(Boolean value){
        this.errorProcessing = value;
    }
 
    @XmlAttribute(name="errorItem")
    @FormParam("errorItem")
    @BooleanFormat
    public Boolean getErrorItem(){
        return errorItem;
    }
 
    public void setErrorItem(Boolean value){
        this.errorItem = value;
    }
 
    @XmlAttribute(name="visaDeposit")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("visaDeposit")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getVisaDeposit(){
        return visaDeposit;
    }
 
    public void setVisaDeposit(String value){
        this.visaDeposit = value;
    }
 
    @XmlAttribute(name="masterCardDeposit")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("masterCardDeposit")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getMasterCardDeposit(){
        return masterCardDeposit;
    }
 
    public void setMasterCardDeposit(String value){
        this.masterCardDeposit = value;
    }
 
    @XmlAttribute(name="discoverDeposit")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("discoverDeposit")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getDiscoverDeposit(){
        return discoverDeposit;
    }
 
    public void setDiscoverDeposit(String value){
        this.discoverDeposit = value;
    }
 
    @XmlAttribute(name="achDeposit")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("achDeposit")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getAchDeposit(){
        return achDeposit;
    }
 
    public void setAchDeposit(String value){
        this.achDeposit = value;
    }
 
    @XmlAttribute(name="amexDeposit")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("amexDeposit")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getAmexDeposit(){
        return amexDeposit;
    }
 
    public void setAmexDeposit(String value){
        this.amexDeposit = value;
    }
 
    @XmlAttribute(name="cardsChargebackDeposit")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("cardsChargebackDeposit")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getCardsChargebackDeposit(){
        return cardsChargebackDeposit;
    }
 
    public void setCardsChargebackDeposit(String value){
        this.cardsChargebackDeposit = value;
    }
 
    @XmlAttribute(name="convenienceFee")
    @FormParam("convenienceFee")
    @BooleanFormat
    public Boolean getConvenienceFee(){
        return convenienceFee;
    }
 
    public void setConvenienceFee(Boolean value){
        this.convenienceFee = value;
    }
 
    @XmlAttribute(name="achReturnDeposit")
    @XmlJavaTypeAdapter(value=api.util.StringAdapter.class, type=String.class)
    @FormParam("achReturnDeposit")
    @StringFormat
    @JsonDeserialize(using = api.util.StringDeserializer.class)
    public String getAchReturnDeposit(){
        return achReturnDeposit;
    }
 
    public void setAchReturnDeposit(String value){
        this.achReturnDeposit = value;
    }
 
 
    public void audit(AuditHelper helper, AbstractBatchFeePolicy old) {
        helper.audit("approvalRegularProcessing", approvalRegularProcessing, old.getApprovalRegularProcessing());
        helper.audit("approvalRebillProcessing", approvalRebillProcessing, old.getApprovalRebillProcessing());
        helper.audit("approvalRetryProcessing", approvalRetryProcessing, old.getApprovalRetryProcessing());
        helper.audit("approvalRegularItem", approvalRegularItem, old.getApprovalRegularItem());
        helper.audit("approvalRebillItem", approvalRebillItem, old.getApprovalRebillItem());
        helper.audit("approvalRetryItem", approvalRetryItem, old.getApprovalRetryItem());
        helper.audit("declineRegularProcessing", declineRegularProcessing, old.getDeclineRegularProcessing());
        helper.audit("declineRebillProcessing", declineRebillProcessing, old.getDeclineRebillProcessing());
        helper.audit("declineRetryProcessing", declineRetryProcessing, old.getDeclineRetryProcessing());
        helper.audit("declineRegularItem", declineRegularItem, old.getDeclineRegularItem());
        helper.audit("declineRebillItem", declineRebillItem, old.getDeclineRebillItem());
        helper.audit("declineRetryItem", declineRetryItem, old.getDeclineRetryItem());
        helper.audit("blacklistRegularProcessing", blacklistRegularProcessing, old.getBlacklistRegularProcessing());
        helper.audit("blacklistRebillProcessing", blacklistRebillProcessing, old.getBlacklistRebillProcessing());
        helper.audit("blacklistRegularItem", blacklistRegularItem, old.getBlacklistRegularItem());
        helper.audit("blacklistRebillItem", blacklistRebillItem, old.getBlacklistRebillItem());
        helper.audit("errorProcessing", errorProcessing, old.getErrorProcessing());
        helper.audit("errorItem", errorItem, old.getErrorItem());
        helper.audit("visaDeposit", visaDeposit, old.getVisaDeposit());
        helper.audit("masterCardDeposit", masterCardDeposit, old.getMasterCardDeposit());
        helper.audit("discoverDeposit", discoverDeposit, old.getDiscoverDeposit());
        helper.audit("achDeposit", achDeposit, old.getAchDeposit());
        helper.audit("amexDeposit", amexDeposit, old.getAmexDeposit());
        helper.audit("cardsChargebackDeposit", cardsChargebackDeposit, old.getCardsChargebackDeposit());
        helper.audit("convenienceFee", convenienceFee, old.getConvenienceFee());
        helper.audit("achReturnDeposit", achReturnDeposit, old.getAchReturnDeposit());
    }
 
}