package com.fjhx.entity.purchase;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import java.util.Map;

import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fjhx.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fjhx.base.BasicEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 采购合同
 * </p>
 *
 * @author ${author}
 * @since 2022-07-14
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class PurchaseContract extends BasicEntity {


    /**
     * 软删除
     */
    @TableField("IsDelete")
    private Boolean isDelete;

    /**
     * 申购单号
     */
    @TableField("ApplyBillNo")
    private String applyBillNo;

    /**
     * 采购合同单号
     */
    @TableField("PurchaseBillNo")
    private String purchaseBillNo;

    /**
     * 供应商ID（对应表ord_factory的ID）
     */
    @TableField("SupplierId")
    private String supplierId;

    /**
     * 物料Code
     */
    @TableField("MaterialCode")
    private String materialCode;

    /**
     * 采购数量
     */
    @TableField("PurchaseQty")
    private BigDecimal purchaseQty;

    /**
     * 单价
     */
    @TableField("Price")
    private BigDecimal price;

    /**
     * 金额
     */
    @TableField("TotalAmount")
    private BigDecimal totalAmount;

    /**
     * 交付日期
     */
    @TableField("DeliverTime")
    private Date deliverTime;

    /**
     * 账期
     */
    @TableField("AccountPeriod")
    private Integer accountPeriod;

    /**
     * 增值税
     */
    @TableField("TaxValue")
    private BigDecimal taxValue;

    /**
     * 发票类型 （枚举定义：0=专用，1=普通）
     */
    @TableField("InvoiceType")
    private Integer invoiceType;

    /**
     * 签约时间
     */
    @TableField("SignTime")
    private Date signTime;

    /**
     * 采购合同状态 （枚举定义：0=待确认，1=审批中，2=进行中，3=已完成）
     */
    @TableField("PurContractState")
    private Integer purContractState;

    /**
     * 合同付款状态 （枚举定义：0=审批中，1=进行中，2=已完成）
     */
    @TableField("ContractPayState")
    private Integer contractPayState;

    /**
     * 供应商出货状态 （枚举定义：0=进行中，1=已完成）
     */
    @TableField("SupplierShipState")
    private Integer supplierShipState;

    /**
     * 审批状态 （枚举定义：0=待审批，1=审批中，2=已审批，3=已驳回，4=已撤回）
     */
    @TableField("ApproveBillState")
    private Integer approveBillState;

    /**
     * 创建人ID
     */
    @TableField("CreateUserID")
    private String createUserId;

    /**
     * 作废合同单号
     */
    @TableField("OldPurchaseBillNo")
    private String oldPurchaseBillNo;

    /**
     * 审核时间
     */
    @TableField("ApprovalTime")
    private Date approvalTime;

    /**
     * 备注
     */
    @TableField("Remark")
    private String remark;

    /**
     * 质检修正金额
     */
    @TableField("AdjustAmount")
    private BigDecimal adjustAmount;

    /**
     * 质检修正数量
     */
    @TableField("AdjustQty")
    private BigDecimal adjustQty;

    /**
     * 已付金额
     */
    @TableField("HadPayAmount")
    private BigDecimal hadPayAmount;

    /**
     * 申请付款金额
     */
    @TableField("ApplyPayAmount")
    private BigDecimal applyPayAmount;

    /**
     * 退货数量
     */
    @TableField("RetBackQty")
    private BigDecimal retBackQty;

    /**
     * 物料名称
     */
    @TableField(exist = false)
    private String materialName;

    /**
     * 供应商名称
     */
    @TableField(exist = false)
    private String supplierName;

    /**
     * 物料名称
     */
    @TableField(exist = false)
    private String materialSpec;

    /**
     * 入库时间
     */
    @TableField(exist = false)
    private String completeStockTime;

    /**
     * 质检状态集合
     */
    @TableField(exist = false)
    private String quantityStatus;

    /**
     * 合同状态集合
     */
    @TableField(exist = false)
    private String contractStatus;

    /**
     * 发票总金额
     */
    @TableField(exist = false)
    private BigDecimal contractAmount;

    /**
     * 校验参数
     */
    @TableField(exist = false)
    private Map<String,Object> check;

    /**
     * 交期
     */
    @TableField(exist = false)
    private Integer accountDate;

    /**
     * 入库编号
     */
    @TableField(exist = false)
    private String inOutStorageNo;


}
