package com.zt.plat.module.erp.controller.admin.erp.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

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

@Schema(description = "管理后台 - ERP合同映射 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ErpContractRespVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9114")
    @ExcelProperty("主键")
    private Long id;

    @Schema(description = "操作标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "3035")
    @ExcelProperty("操作标识")
    private String operationId;

    @Schema(description = "合同主信息主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10259")
    @ExcelProperty("合同主信息主键")
    private Long contractMainId;

    @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同编号")
    private String contractPaperNumber;

    @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("合同名称")
    private String contractName;

    @Schema(description = "合同类型编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同类型编号")
    private String contractTypeNumber;

    @Schema(description = "合同类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @ExcelProperty("合同类型名称")
    private String contractTypeName;

    @Schema(description = "合同类别", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同类别")
    private String contractCategory;

    @Schema(description = "是否虚拟合同", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否虚拟合同")
    private String isVirtualContract;

    @Schema(description = "客户/供应商编号;SAP客商公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("客户/供应商编号;SAP客商公司代码")
    private String supplierNumber;

    @Schema(description = "客户/供应商名称;SAP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @ExcelProperty("客户/供应商名称;SAP客商公司名称")
    private String supplierName;

    @Schema(description = "代理方;SAP客商公司代码")
    @ExcelProperty("代理方;SAP客商公司代码")
    private String agent;

    @Schema(description = "合同实施主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同实施主体编号;SAP公司代码")
    private String contractImplementNumber;

    @Schema(description = "合同签订主体编号;SAP公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同签订主体编号;SAP公司代码")
    private String contractSignNumber;

    @Schema(description = "合同签订日期;格式：YYYY-MM-DD", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同签订日期;格式：YYYY-MM-DD")
    private LocalDate signDate;

    @Schema(description = "合同起始日期;格式：YYYY-MM-DD，长单合同：长单合同起始日期 非长单：合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同起始日期;格式：YYYY-MM-DD，长单合同：长单合同起始日期 非长单：合同合同签订日期")
    private LocalDate startDate;

    @Schema(description = "合同终止日期;格式：YYYY-MM-DD，长单合同：长单合同起始日期 非长单：合同合同签订日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同终止日期;格式：YYYY-MM-DD，长单合同：长单合同起始日期 非长单：合同合同签订日期")
    private LocalDate stopDate;

    @Schema(description = "币种编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("币种编号")
    private String currency;

    @Schema(description = "合同总金额（原币-含税）;非长单合同：合同金额 长单合同：默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同总金额（原币-含税）;非长单合同：合同金额 长单合同：默认1000000000000000.00")
    private BigDecimal sourceAmount;

    @Schema(description = "合同总金额（本位币-含税）;非长单合同：合同金额*合同的临时汇率 长单合同：默认1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同总金额（本位币-含税）;非长单合同：合同金额*合同的临时汇率 长单合同：默认1000000000000000.00")
    private BigDecimal basicAmount;

    @Schema(description = "变更后合同总金额（原币-含税）;如果未做合同变更，金额等于合同总金额（原币-含税）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("变更后合同总金额（原币-含税）;如果未做合同变更，金额等于合同总金额（原币-含税）")
    private BigDecimal changeSourceAmount;

    @Schema(description = "变更后合同总金额（本位币-含税）;如果未做合同变更，金额等于合同总金额（本位币-含税）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("变更后合同总金额（本位币-含税）;如果未做合同变更，金额等于合同总金额（本位币-含税）")
    private BigDecimal changeBasicAmount;

    @Schema(description = "合同状态编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同状态编号")
    private String statusNumber;

    @Schema(description = "合同状态名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @ExcelProperty("合同状态名称")
    private String statusName;

    @Schema(description = "是否有预付款;长单合同:否，非长单:取合同的预付款", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否有预付款;长单合同:否，非长单:取合同的预付款")
    private String isPrepayment;

    @Schema(description = "预付款比例;有预付款则需要填写")
    @ExcelProperty("预付款比例;有预付款则需要填写")
    private BigDecimal prepaymentRatio;

    @Schema(description = "预付款金额;有预付款则需要填写(通过计算得出)")
    @ExcelProperty("预付款金额;有预付款则需要填写(通过计算得出)")
    private BigDecimal prepaymentAmount;

    @Schema(description = "履约保证金-变更前（原币）")
    @ExcelProperty("履约保证金-变更前（原币）")
    private BigDecimal sourceBeforeBond;

    @Schema(description = "履约保证金-变更前（本位币）")
    @ExcelProperty("履约保证金-变更前（本位币）")
    private BigDecimal basicBeforeBond;

    @Schema(description = "履约保证金-变更后（原币）")
    @ExcelProperty("履约保证金-变更后（原币）")
    private BigDecimal sourceAfterBond;

    @Schema(description = "履约保证金-变更后（本位币）")
    @ExcelProperty("履约保证金-变更后（本位币）")
    private BigDecimal basicAfterBond;

    @Schema(description = "是否含质保金", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否含质保金")
    private String isQualityassuranceAmount;

    @Schema(description = "质保金比例;有质保金则需要填写")
    @ExcelProperty("质保金比例;有质保金则需要填写")
    private BigDecimal qualityassuranceRatio;

    @Schema(description = "质保金金额;有质保金则需要填写")
    @ExcelProperty("质保金金额;有质保金则需要填写")
    private BigDecimal qualityassuranceAmount;

    @Schema(description = "是否内部企业", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否内部企业")
    private String isInternal;

    @Schema(description = "收支性质", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("收支性质")
    private String nature;

    @Schema(description = "备注信息;提交ERP")
    @ExcelProperty("备注信息;提交ERP")
    private String remark;

    @Schema(description = "累计结算金额（原币-含税）;暂定不传")
    @ExcelProperty("累计结算金额（原币-含税）;暂定不传")
    private BigDecimal sourceAccumulateSettlementAmount;

    @Schema(description = "累计结算金额（本位币-含税）;暂定不传")
    @ExcelProperty("累计结算金额（本位币-含税）;暂定不传")
    private BigDecimal basicAccumulateSettlementAmount;

    @Schema(description = "累计已收付款金额（原币-含税）;暂定不传")
    @ExcelProperty("累计已收付款金额（原币-含税）;暂定不传")
    private BigDecimal sourceUseAmount;

    @Schema(description = "累计已收付款金额（本位币-含税）;暂定不传")
    @ExcelProperty("累计已收付款金额（本位币-含税）;暂定不传")
    private BigDecimal basicUseAmount;

    @Schema(description = "累计已开收票金额（原币-含税）;暂定不传")
    @ExcelProperty("累计已开收票金额（原币-含税）;暂定不传")
    private BigDecimal sourceInvoiceAmount;

    @Schema(description = "累计已开收票金额（本位币-含税）;暂定不传")
    @ExcelProperty("累计已开收票金额（本位币-含税）;暂定不传")
    private BigDecimal basicInvoiceAmount;

    @Schema(description = "累计预付款金额（原币-含税）;暂定不传")
    @ExcelProperty("累计预付款金额（原币-含税）;暂定不传")
    private BigDecimal sourceAccumulatePrepayment;

    @Schema(description = "累计预付款金额（本位币-含税）;暂定不传")
    @ExcelProperty("累计预付款金额（本位币-含税）;暂定不传")
    private BigDecimal basicAccumulatePrepayment;

    @Schema(description = "履约保证金累计付款金额（原币）;暂定不传")
    @ExcelProperty("履约保证金累计付款金额（原币）;暂定不传")
    private BigDecimal sourceAccumulateBond;

    @Schema(description = "履约保证金累计付款金额（本位币）;暂定不传")
    @ExcelProperty("履约保证金累计付款金额（本位币）;暂定不传")
    private BigDecimal basicAccumulateBond;

    @Schema(description = "履约保证金累计收款金额（原币）;暂定不传")
    @ExcelProperty("履约保证金累计收款金额（原币）;暂定不传")
    private BigDecimal sourceAccumulateAmount;

    @Schema(description = "履约保证金累计收款金额（本位币）;暂定不传")
    @ExcelProperty("履约保证金累计收款金额（本位币）;暂定不传")
    private BigDecimal basicAccumulateAmount;

    @Schema(description = "是否框架合同;如果为是，合同总金额（本币）、合同总金额（原币）、变更后合同总金额（原币-含税）、变更后合同总金额（本位币-含税）赋默认值为：1000000000000000.00", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否框架合同;如果为是，合同总金额（本币）、合同总金额（原币）、变更后合同总金额（原币-含税）、变更后合同总金额（本位币-含税）赋默认值为：1000000000000000.00")
    private String isFramework;

    @Schema(description = "境内/境外", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("境内/境外")
    private String isDomestic;

    @Schema(description = "建筑服务发生地;销售合同，且类型为SAP02COSR必填")
    @ExcelProperty("建筑服务发生地;销售合同，且类型为SAP02COSR必填")
    private String architectureService‌Place;

    @Schema(description = "达到收款条件金额;销售合同，且类型为SAP02COSR必填")
    @ExcelProperty("达到收款条件金额;销售合同，且类型为SAP02COSR必填")
    private BigDecimal payeeConditionAmount;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDate createTime;

}