package com.yd.dal.entity.agms.fortune;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang.StringUtils;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author xxy
 */
public class CommissionPayoutStatus {

    private Long orderId;

    private Long fortuneId;
    /**
     * 来佣检核年月
     */
    private String commissionPayoutYearmonth;

    /**
     * 保险公司
     */
    private String insurerName;

    /**
     * 购买方案
     */
    private String productName;


    /**
     * 保单号
     */
    private String policyNo;

    /**
     * 缴费年限
     */
    private String paymentTermUnit;

    /**
     * 保障期间
     */
    private String coverTermType;

    /**
     * 保费
     */
    private BigDecimal orderPrice;

    /**
     * 经纪人
     */
    private String practitionerName;

    /**
     * 营业部
     */
    private String insurerBranchDeptName;

    /**
     * 体系
     */
    private String subordinateSystemName;

    /**
     * 经纪人职级
     */
    private String practitionerLevel;

    /**
     * 来佣金额
     */
    private BigDecimal commissionAmount;

    /**
     * 佣金类型
     */
    private String commissionType;

    /**
     * 应发佣率
     */
    private BigDecimal referralRate;

    /**
     * 应发金额
     */
    private BigDecimal referralAmount;

    /**
     * 发佣状态
     */
    private String commissionPayoutStatus;
    /**
     * 预计发佣年月
     */
    private Date predictMonthPeriod;
    /**
     * 发佣年月
     */
    private String monthPeriod;

    private String remark;
    /**
     * 渠道类型: 对公:1; 对私:2或者空
     */
    private String channelType;
    /**
     * 所属渠道
     */
    private String channelName;

    public String getCommissionPayoutYearmonth() {
        return commissionPayoutYearmonth;
    }

    public void setCommissionPayoutYearmonth(String commissionPayoutYearmonth) {
        this.commissionPayoutYearmonth = commissionPayoutYearmonth;
    }

    public String getInsurerName() {
        return insurerName;
    }

    public void setInsurerName(String insurerName) {
        this.insurerName = insurerName;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getPolicyNo() {
        return policyNo;
    }

    public void setPolicyNo(String policyNo) {
        this.policyNo = policyNo;
    }

    public String getPaymentTermUnit() {
        return paymentTermUnit;
    }

    public void setPaymentTermUnit(String paymentTermUnit) {
        this.paymentTermUnit = paymentTermUnit;
    }

    public String getCoverTermType() {
        return coverTermType;
    }

    public void setCoverTermType(String coverTermType) {
        this.coverTermType = coverTermType;
    }

    public BigDecimal getOrderPrice() {
        return orderPrice;
    }

    public void setOrderPrice(BigDecimal orderPrice) {
        this.orderPrice = orderPrice;
    }

    public String getPractitionerName() {
        return practitionerName;
    }

    public void setPractitionerName(String practitionerName) {
        this.practitionerName = practitionerName;
    }

    public String getInsurerBranchDeptName() {
        return insurerBranchDeptName;
    }

    public void setInsurerBranchDeptName(String insurerBranchDeptName) {
        this.insurerBranchDeptName = insurerBranchDeptName;
    }

    public String getSubordinateSystemName() {
        return subordinateSystemName;
    }

    public void setSubordinateSystemName(String subordinateSystemName) {
        this.subordinateSystemName = subordinateSystemName;
    }

    public String getPractitionerLevel() {
        return practitionerLevel;
    }

    public void setPractitionerLevel(String practitionerLevel) {
        this.practitionerLevel = practitionerLevel;
    }

    public BigDecimal getCommissionAmount() {
        return commissionAmount;
    }

    public void setCommissionAmount(BigDecimal commissionAmount) {
        this.commissionAmount = commissionAmount;
    }

    public String getCommissionType() {
        return commissionType;
    }

    public void setCommissionType(String commissionType) {
        this.commissionType = commissionType;
    }

    public BigDecimal getReferralRate() {
        return referralRate;
    }

    public void setReferralRate(BigDecimal referralRate) {
        this.referralRate = referralRate;
    }

    public BigDecimal getReferralAmount() {
        return referralAmount;
    }

    public void setReferralAmount(BigDecimal referralAmount) {
        this.referralAmount = referralAmount;
    }

    public String getCommissionPayoutStatus() {
        return commissionPayoutStatus;
    }

    public void setCommissionPayoutStatus(String commissionPayoutStatus) {
        this.commissionPayoutStatus = commissionPayoutStatus;
    }

    public String getMonthPeriod() {
        if (StringUtils.isEmpty(monthPeriod)) {
            return StringUtils.EMPTY;
        }
        return monthPeriod;
    }

    public void setMonthPeriod(String monthPeriod) {
        this.monthPeriod = monthPeriod;
    }

    public Long getFortuneId() {
        return fortuneId;
    }

    public void setFortuneId(Long fortuneId) {
        this.fortuneId = fortuneId;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    @Override
    public String toString() {
        return "CommissionPayoutStatus{" +
                "orderId=" + orderId +
                ", fortuneId=" + fortuneId +
                ", commissionPayoutYearmonth='" + commissionPayoutYearmonth + '\'' +
                ", insurerName='" + insurerName + '\'' +
                ", productName='" + productName + '\'' +
                ", policyNo='" + policyNo + '\'' +
                ", paymentTermUnit='" + paymentTermUnit + '\'' +
                ", coverTermType='" + coverTermType + '\'' +
                ", orderPrice=" + orderPrice +
                ", practitionerName='" + practitionerName + '\'' +
                ", insurerBranchDeptName='" + insurerBranchDeptName + '\'' +
                ", subordinateSystemName='" + subordinateSystemName + '\'' +
                ", practitionerLevel='" + practitionerLevel + '\'' +
                ", commissionAmount=" + commissionAmount +
                ", commissionType='" + commissionType + '\'' +
                ", referralRate=" + referralRate +
                ", referralAmount=" + referralAmount +
                ", commissionPayoutStatus='" + commissionPayoutStatus + '\'' +
                ", monthPeriod='" + monthPeriod + '\'' +
                ", remark='" + remark + '\'' +
                ", channelType='" + channelType + '\'' +
                '}';
    }
    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
    public Date getPredictMonthPeriod() {
        return predictMonthPeriod;
    }

    public void setPredictMonthPeriod(Date predictMonthPeriod) {
        this.predictMonthPeriod = predictMonthPeriod;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

	/**
	 * 渠道类型: 对公:1; 对私:2或者空
	 * @return the channelType
	 */
	public String getChannelType() {
		return channelType;
	}

	/**
	 * 渠道类型: 对公:1; 对私:2或者空
	 * @param channelType the channelType to set
	 */
	public void setChannelType(String channelType) {
		this.channelType = channelType;
	}

    public String getChannelName() {
        return channelName;
    }

    public void setChannelName(String channelName) {
        this.channelName = channelName;
    }
}
