package com.maintain.business.domain.vo;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.maintain.common.annotation.ExcelDictFormat;
import com.maintain.common.convert.ExcelDictConvert;
import lombok.Data;
import java.util.Date;

import java.io.Serializable;
import java.util.List;

/**
 * 结算维修单视图对象 erp_settlement_maintain
 *
 * @author liushuai
 * @date 2025-04-03
 */
@Data
@ExcelIgnoreUnannotated
public class ErpSettlementMaintainVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private Long id;

    /**
     * 结算单号
     */
    @ExcelProperty(value = "结算单号")
    private String settlementNumber;

    /**
     * 客户ID
     */
    @ExcelProperty(value = "客户ID")
    private Long clientId;

    /**
     * 客户名称
     */
    @ExcelProperty(value = "客户名称")
    private String clientName;

    /**
     * 客户手机号
     */
    @ExcelProperty(value = "客户手机号")
    private String clientPhone;

    /**
     * 客户类型（1个人 2企业）
     */
    @ExcelProperty(value = "客户类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=个人,2=企业")
    private Integer clientType;

    /**
     * 证件类型（1居民身份证 2纳税识别号）
     */
    @ExcelProperty(value = "证件类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=居民身份证,2=纳税识别号")
    private Integer clientCertificateType;

    /**
     * 证件号
     */
    @ExcelProperty(value = "证件号")
    private String clientCertificateNumber;

    /**
     * 工时费优惠
     */
    @ExcelProperty(value = "工时费优惠")
    private BigDecimal manHourDiscountMoney;

    /**
     * 原料费优惠
     */
    @ExcelProperty(value = "原料费优惠")
    private BigDecimal materialDiscountMoney;

    /**
     * 结算时间
     */
    @ExcelProperty(value = "结算时间")
    private Date settlementTime;

    /**
     * 支付方式（1支付宝 2微信）
     */
    @ExcelProperty(value = "支付方式", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=支付宝,2=微信")
    private Integer paymentMethod;

    /**
     * 付款账号
     */
    @ExcelProperty(value = "付款账号")
    private String paymentAccount;

    /**
     * 付款账号名称
     */
    @ExcelProperty(value = "付款账号名称")
    private String paymentAccountName;

    /**
     * 付款凭证
     */
    @ExcelProperty(value = "付款凭证")
    private String paymentVoucher;

    /**
     * 结算单备注
     */
    @ExcelProperty(value = "结算单备注")
    private String settlementRemark;

    /**
     * 应收金额
     */
    @ExcelProperty(value = "应收金额")
    private BigDecimal receivableMoney;
    /**
     * 实际金额
     */
    @ExcelProperty(value = "实际金额")
    private BigDecimal practicalMoney;

    /**
     * 收款时间
     */
    @ExcelProperty(value = "收款时间")
    private Date collectionTime;

    /**
     * 收款回执
     */
    @ExcelProperty(value = "收款回执")
    private String collectionVoucher;

    /**
     * 收款账号
     */
    @ExcelProperty(value = "收款账号")
    private String collectionAccount;

    /**
     * 收款流水号
     */
    @ExcelProperty(value = "收款流水号")
    private String collectionSerialNumber;

    /**
     * 收款备注
     */
    @ExcelProperty(value = "收款备注")
    private String collectionRemark;

    /**
     * 结算状态（1未确认 2已确认）
     */
    @ExcelProperty(value = "结算状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=未确认,2=已确认")
    private Integer state;

    /**
     * 创建人
     */
    @ExcelProperty(value = "创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;


    private List<ErpRepairFormVo> repairFormList;

}
