package com.yd.csf.feign.request.expectedfortune;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;

@Data
public class ExpectedFortuneAddRequest {

    @Schema(description = "应付款类型 R-关联保单应付款 U-非关联保单应付款", requiredMode = Schema.RequiredMode.REQUIRED)
    private String fortuneBizType;

    @Schema(description = "出账年月 (估)", requiredMode = Schema.RequiredMode.REQUIRED)
    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
    private String payoutDate;

    @Schema(description = "出账年月 (实)", requiredMode = Schema.RequiredMode.REQUIRED)
    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
    private String actualPayoutDate;

    @Schema(description = "关联保单号")
    private String policyNo;

    @Schema(description = "出账状态 0=待出账 1=可出帐，待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出帐，检核完成 7=未找到当前预计发佣对应的来佣, 字典值: csf_expected_fortune_status")
    private String status;

    @Schema(description = "出账状态-修改理由")
    private String statusDesc;

    @Schema(description = "出账项目", requiredMode = Schema.RequiredMode.REQUIRED)
    private String fortuneName;

    @Schema(description = "出账项目类型 字典值：csf_fortune_type", requiredMode = Schema.RequiredMode.REQUIRED)
    private String fortuneType;

    @Schema(description = "出账期数", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer fortunePeriod;

    @Schema(description = "出账总期数", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer fortuneTotalPeriod;

    @Schema(description = "转介人名称", requiredMode = Schema.RequiredMode.REQUIRED)
    private String broker;

    @Schema(description = "broker biz id", requiredMode = Schema.RequiredMode.REQUIRED)
    private String brokerBizId;

    @Schema(description = "所属团队")
    private String team;

    @Schema(description = "所属团队业务ID")
    private String teamBizId;

    @Schema(description = "保单币种金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal ruleAmount;

    @Schema(description = "保单币种", requiredMode = Schema.RequiredMode.REQUIRED)
    private String ruleCurrency;

    @Schema(description = "保单币种→港币汇率（默认保单币种汇率）", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal defaultExchangeRate;

    @Schema(description = "原币种", requiredMode = Schema.RequiredMode.REQUIRED)
    private String originalCurrency;

    @Schema(description = "原币种金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal originalAmount;

    @Schema(description = "原币种→港币汇率", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal originalToHkdRate;

    @Schema(description = "发放币种", requiredMode = Schema.RequiredMode.REQUIRED)
    private String payoutCurrency;

    @Schema(description = "发放币种金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal payoutAmount;

    @Schema(description = "港币→发放币种汇率", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal hkdToPayoutRate;

    @Schema(description = "港币金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal hkdAmount;

    @Schema(description = "备注")
    private String remark;
}
