package com.yd.csf.service.model;

import com.baomidou.mybatisplus.annotation.*;
import com.yd.csf.service.annotation.Auditable;
import lombok.Data;

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

/**
 * 保单来佣表
 *
 * @TableName commission
 */
@TableName(value = "commission")
@Auditable(table = "commission", idField = "commissionBizId")
@Data
public class Commission implements Serializable {
    /**
     * serial id
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 应收账款编号 （非关联保单号，用应收账款编号比对）
     */
    private String receivableNo;

    /**
     * 保单来佣业务id
     */
    private String commissionBizId;

    /**
     * 入账检核年月 yyyy-MM
     */
    private String reconciliationYearMonth;

    /**
     * 应收款类型 R=关联保单应收单 U=非关联保单应收单
     */
    private String commissionBizType;

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

    /**
     * 期交保费
     */
    private String premium;

    /**
     * 保单币种
     */
    private String policyCurrency;

    /**
     * 保险公司 id
     */
    private String insuranceCompanyBizId;

    /**
     * 对账公司
     */
    private String reconciliationCompany;

    /**
     * 对账公司编码
     */
    private String reconciliationCompanyCode;

    /**
     * 对账公司业务id
     */
    private String reconciliationCompanyBizId;

    /**
     * 产品计划 id
     */
    private String productLaunchBizId;

    /**
     * 佣金期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
     */
    private Integer commissionPeriod;

    /**
     * 总来佣期数
     */
    private Integer totalPeriod;

    /**
     * 来佣名称(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
     */
    private String commissionName;

    /**
     * 来佣类型(1:销售拥金;2:销售奖金;3:销售津贴;4:续期佣金;5:服务津贴;等等)
     */
    private String commissionType;

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

    /**
     * 来佣币种
     */
    private String currency;

    /**
     * 结算汇率
     */
    private BigDecimal exchangeRate;

    /**
     * 来佣金额（港币）
     */
    private BigDecimal hkdAmount;

    /**
     * 当前来佣比例
     */
    private BigDecimal currentCommissionRatio;

    /**
     * 来佣日期
     */
    private Date commissionDate;

    /**
     * 来佣状态 0=未比对 1=比对成功 2=比对失败 3=未查询到预计来佣，需要先同步到预计来佣表
     */
    private String status;

    /**
     * 来佣比对状态-修改理由
     */
    private String statusDesc;

    /**
     * 预计来佣业务id
     */
    private String commissionExpectedBizId;

    /**
     * 人工备注
     */
    private String manualRemark;

    /**
     * 通用备注
     */
    private String remark;

    /**
     * 删除标识: 0-正常, 1-删除
     */
    @TableLogic
    private Integer isDeleted;

    /**
     * 创建人ID
     */
    @TableField(value = "creator_id", fill = FieldFill.INSERT)
    private String creatorId;

    /**
     * 创建人名称
     */
    @TableField(value = "creator_name", fill = FieldFill.INSERT)
    private String creatorName;

    /**
     * 更新人ID
     */
    @TableField(value = "updater_id", fill = FieldFill.INSERT_UPDATE)
    private String updaterId;

    /**
     * 更新人名称
     */
    @TableField(value = "updater_name", fill = FieldFill.INSERT_UPDATE)
    private String updaterName;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

//    public BigDecimal calculateCurrentPaidRatio() {
//        // 当前来佣比例=当前入账金额/结算汇率/保费 * 100
//        return amount.divide(new BigDecimal(premium), 4, RoundingMode.HALF_UP)
//                .divide(exchangeRate, 4, RoundingMode.HALF_UP)
//                .multiply(new BigDecimal(100));
//    }

}