package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.payment;

import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author 符溶馨
 */
@Schema(description = "管理后台 - 付款申请  请求Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class BpmOAPaymentRespVO extends BpmOABaseRespVO {

    @Schema(description = "申请人编号")
    private Long userId;

    @Schema(description = "申请人名称")
    private String userName;

    @Schema(description = "申请事由")
    private String reason;

    @Schema(description = "付款类型 | 字典值参考 bpm_oa_payment_type")
    private Integer type;

    @Schema(description = "费用产生部门编号")
    private Long deptId;

    @Schema(description = "费用产生部门名称")
    private String deptName;

    @Schema(description = "工厂明细", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private List<FactoryDetailVO> factoryDetail;

    @Schema(description = "项目编号")
    private String projectNo;

    @Schema(description = "采购单编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Long procureId;

    @Schema(description = "项目名称")
    private String projectName;

    @Schema(description = "银行编号")
    private Long bankId;

    @Schema(description = "付款人昵称")
    private String nickname;

    @Schema(description = "银行名称")
    private String bankName;

    @Schema(description = "银行账号")
    private String bankNo;

    @Schema(description = "付款方式 | 1预付款 2分期付款 3全额付款")
    private Integer paymentMethod;

    @Schema(description = "付款总额 | 针对预付款、分期付款情况")
    private BigDecimal totalAmount;

    @Schema(description = "付款比例 | 针对分期付款情况")
    private BigDecimal paymentRatio;

    @Schema(description = "付款金额")
    private BigDecimal amount;

    @Schema(description = "付款公司编号")
    private Long paymentCompany;

    @Schema(description = "付款公司名称")
    private String paymentCompanyName;

    @Schema(description = "是否后补发票 | 0否 1是", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Integer isTickets;

    @Schema(description = "后补票批注", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String annotations;

    @Schema(description = "补票状态 | 0待补票 1已补票 2已确认", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Integer status;

    @Schema(description = "父级审批编号")
    private Long parentId;

    @Schema(description = "累计付款比列")
    private BigDecimal ratio;

    @Schema(description = "累计付款金额")
    private BigDecimal paymentAmount;

    @Schema(description = "上传文件")
    private List<UploadUserFile> fileItems;

    @Schema(description = "后补文件")
    private List<UploadUserFile> laterFileItems;
}
