/**
 * @filename:#BillingIncome 2024-10-22
 * @project KJT v1.1.0 Copyright(c) 2024 wanglang Co. Ltd. All right reserved.
 */
package com.trade.service.finance.paymentcollection.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.trade.common.core.domain.BizBaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * @Description:入账表实体类
 * @version: v1.1.0
 * @author: wanglang
 */
@Data
@EqualsAndHashCode(callSuper = false)
// @Accessors(chain = true)
public class BillingIncome extends BizBaseEntity {

    private static final long serialVersionUID = 1729565652016L;
    @ApiModelProperty(name = "actualAmount", value = "实际到账金额")
    private BigDecimal actualAmount;
    @ApiModelProperty(name = "actualRetainedAmount", value = "实际留存人民币金额")
    private BigDecimal actualRetainedAmount;
    @ApiModelProperty(name = "agencyCertNo", value = "代理公司统一社会信用代码/注册号")
    private String agencyCertNo;
    @ApiModelProperty(name = "agencyEnterpriseName", value = "代理公司企业名称")
    private String agencyEnterpriseName;
    @ApiModelProperty(name = "applyAmount", value = "申请金额")
    // 对于退税就是总额
    private BigDecimal applyAmount;
    @ApiModelProperty(name = "contractName", value = "合同名称")
    private String contractName;
    @ApiModelProperty(name = "customerUserId", value = "客户id")
    private Long customerUserId;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ApiModelProperty(name = "applyEntryDate", value = "申请入账日期")
    private LocalDate applyEntryDate;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ApiModelProperty(name = "actualEntryDate", value = "实际入账日期")
    private LocalDate actualEntryDate;
    @ApiModelProperty(name = "financierIdentifier", value = "资金方标识")
    private String financierIdentifier;
    @ApiModelProperty(name = "importerCertNo", value = "进口商统一社会信用代码/注册号")
    private String importerCertNo;
    @ApiModelProperty(name = "importerEnterpriseName", value = "进口商企业名称")
    private String importerEnterpriseName;
    @ApiModelProperty(name = "paymentType", value = "款项类型1出口退税款2贸易回款3预收货款4贸易融资款5技术服务费6出口退税服务费")
    private String paymentType;
    @ApiModelProperty(name = "paymentWay", value = "入账方式2入账申请1系统录入")
    private String paymentWay;
    @ApiModelProperty(name = "remark", value = "备注")
    private String remark;
    @ApiModelProperty(name = "salesContractNo", value = "合同编号")
    private String salesContractNo;
    @ApiModelProperty(name = "settlementAmount", value = "结汇人民币金额")
    private BigDecimal settlementAmount;
    @ApiModelProperty(name = "status", value = "入账状态1待确认2已收款")
    private String status;
    @ApiModelProperty(name = "transactionNumber", value = "交易编号")
    private String transactionNumber;
    @ApiModelProperty(name = "currencyCode", value = "申请币种")
    private String applyCurrency = "CNY"; // 默认人民币
    @ApiModelProperty(name = "currencyCode", value = "币种")
    private String actualCurrency;
    @ApiModelProperty(name = "currencyCode", value = "币种")
    private String settlementCurrency;
    @ApiModelProperty(name = "currencyCode", value = "币种")
    private String actualRetainedCurrency;
    @ApiModelProperty(name = "saleOrderNo", value = "销售订单编号")
    private String saleOrderNo;
    @ApiModelProperty(name = "businessNumber", value = "业务编号")
    private String businessNumber;
    @ApiModelProperty(name = "payeeType", value = "收款方类型1客户2资金方3代理公司4长银科技公司")
    private String payeeType;
    @ApiModelProperty(name = "payeeType", value = "收款方名称")
    private String payeeName;
    @ApiModelProperty(name = "payerType", value = "付款方类型1代理公司2资金方3税务局4进口商")
    private String payerType;
    @ApiModelProperty(name = "payerName", value = "付款方名称")
    private String payerName;
    @ApiModelProperty(name = "tradeReceivableCurrency", value = "应收货款币种代码")
    private String tradeReceivableCurrency;
    @ApiModelProperty(name = "tradeReceivableAmount", value = "应收货款金额")
    private BigDecimal tradeReceivableAmount;
}
