package com.jwipc.finance.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 对账模块-物料凭证
 * </p>
 *
 * @author shenyang.ou
 * @since 2024-03-04
 */
@Getter
@Setter
@TableName("fin_receive_voucher")
public class ReceiveVoucher implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 数据主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 凭证类型 1:常规 2:寄售 3:费用 4-扣款
     */
    private Integer voucherType;

    /**
     * 特殊库存标识
     */
    private String specialInventoryFlag;

    /**
     * 是否允许对账标识；0-否；1-是
     */
    private Integer accountStatementFlag;

    /**
     * 入库凭证号(物料凭证编号)
     */
    private String mvCode;

    /**
     * 物料凭证编号(集采)
     */
    private String jcMvCode;

    /**
     * 行号（物料凭证行号）
     */
    private String mvItemNo;

    /**
     * 物料凭证中的项目(集采)
     */
    private String jcMvItemNo;

    /**
     * 凭证年度（物料凭证年度）
     */
    private String mvYear;

    /**
     * 凭证日期
     */
    private LocalDateTime mvDate;

    /**
     * 采购订单日期
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private LocalDateTime purPostDate;

    /**
     * 凭证过账日期 (凭证过账日期)
     */
    private LocalDateTime mvPostDate;

    /**
     * 凭证创建日期
     */
    private LocalDateTime mvCreateDate;

    /**
     * 凭证类型  WA 发货  WE 收货 WI  库存凭证 WL 发货/交货
     */
    private String mvType;

    /**
     * 物料凭证的年份(集采)
     */
    private String jcMvYear;

    /**
     * 入库数量（记账数量 - 订单单位计）
     */
    private BigDecimal mvNum;

    /**
     * 入库数量（记账数量 - 基本单位计）
     */
    private BigDecimal mvBasicNum;

    /**
     * 批号
     */
    private String batch;

    /**
     * 供应商批次号
     */
    private String supplierBatch;

    /**
     * 供应商编码
     */
    private String supplierCode;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 公司编码
     */
    private String companyCode;

    /**
     * 公司名称
     */
    private String companyName;

    /**
     * 工厂编码
     */
    private String factoryCode;

    /**
     * 集采工厂
     */
    private String jcFactoryCode;

    /**
     * 工厂名称
     */
    private String factoryName;

    /**
     * 货币代码
     */
    private String currencyCode;

    /**
     * SAP移动类型
     */
    private String sapMoveType;

    /**
     * 凭证标识 S:收货 H:退货
     */
    private String voucherFlag;

    /**
     * 物料编码 (物料号)
     */
    private String materialCode;

    /**
     * 物料组编码
     */
    private String materialGroupCode;

    /**
     * 物料名称
     */
    private String materialName;

    /**
     * 物料描述
     */
    private String materialDesc;

    /**
     * 税率代码
     */
    private String taxCode;

    /**
     * 税率描述
     */
    private String taxDesc;

    /**
     * 税率值(%)
     */
    private BigDecimal taxValue;

    /**
     * 未税单价
     */
    private BigDecimal notTaxPrice;

    /**
     * 含税单价
     */
    private BigDecimal taxPrice;

    /**
     * 未税金额
     */
    private BigDecimal notTaxAmount;

    /**
     * 含税金额
     */
    private BigDecimal taxAmount;

    /**
     * 税额
     */
    private BigDecimal diffTaxAmount;

    /**
     * 未税单价转换比
     */
    private Integer unitPriceConvert;

    /**
     * 纳税返回国家(国家代码)
     */
    private String taxReturnCountry;

    /**
     * MIRO凭证号(发票凭证编号)
     */
    private String invoicedCode;

    /**
     * 发票过账数量
     */
    private BigDecimal invoicedNum;

    /**
     * 发票过账金额(未税)
     */
    private BigDecimal invoicedAmount;

    /**
     * 发票过账金额(含税)
     */
    private BigDecimal invoicedTaxAmount;

    /**
     * 发票申请数量
     */
    private BigDecimal applyInvoicedNum;

    /**
     * 发票申请金额(未税)
     */
    private BigDecimal applyInvoicedAmount;

    /**
     * 发票申请金额(含税)
     */
    private BigDecimal applyInvoicedTaxAmount;

    /**
     * 参考凭证号
     */
    private String cvCode;

    /**
     * 参考凭证的凭证号(集采)
     */
    private String jcCvCode;

    /**
     * 参考凭证号行号
     */
    private String cvItemNo;

    /**
     * 参考凭证项目(集采)
     */
    private String jcCvItemNo;

    /**
     * 参考凭证年度
     */
    private String cvYear;

    /**
     * 参考凭证会计年度(集采)
     */
    private String jcCvYear;

    /**
     * 参考凭证过账日期
     */
    private LocalDateTime cvPostDate;

    /**
     * 采购订单号
     */
    private String poCode;

    /**
     * 采购凭证编号(集采)
     */
    private String jcPoCode;

    /**
     * 采购订单行号
     */
    private String poItemNo;

    /**
     * (集采)采购凭证行号
     */
    private String jcPoItemNo;

    /**
     * 采购订单数量
     */
    private BigDecimal poNum;

    /**
     * 采购订单未税金额
     */
    private BigDecimal poNotTaxAmount;

    /**
     * 采购订单含税金额
     */
    private BigDecimal poTaxAmount;

    /**
     * 采购订单类型
     */
    private String poType;

    /**
     * 采购订单类型描述
     */
    private String poTypeName;

    /**
     * 采购组编码
     */
    private String pgCode;

    /**
     * 采购组名称
     */
    private String pgName;

    /**
     * 询源采购组编码
     */
    private String seekPgCode;

    /**
     * 询源采购组名称
     */
    private String seekPgName;

    /**
     * 采购组织编码
     */
    private String purchaseOrgCode;

    /**
     * 采购组织名称
     */
    private String purchaseOrgName;

    /**
     * 采购组
     */
    private String purchaseGroup;

    /**
     * 付款方式代码
     */
    private String paymentWayCode;

    /**
     * 付款方式描述
     */
    private String paymentWayDesc;

    /**
     * 付款条件代码
     */
    private String paymentTermCode;

    /**
     * 付款条件描述
     */
    private String paymentTermName;

    /**
     * 基本单位
     */
    private String poMeterUnit;

    /**
     * 价格单位
     */
    private String poPriceUnit;

    /**
     * 材料商编码
     */
    private String materialSupplierCode;

    /**
     * 材料商名称
     */
    private String materialSupplierName;

    /**
     * 运费类型
     */
    private String freightType;

    /**
     * 同步时间
     */
    private LocalDateTime syncTime;

    /**
     * 最后更新时间
     */
    private LocalDateTime lastUpdateTime;

    /**
     * SAP客户端
     */
    private String sapClient;

    /**
     * 数据组合键 供应商编码+凭证类型+物料凭证年度+物料凭证号+行号+SAP客户端
     */
    private String dataKey;

    /**
     * 凭证是否冻结 0:否 1:是
     */
    private Integer lockFlag;

    /**
     * 抬头文本
     */
    private String headUpText;

    /**
     * 特殊库存类型
     */
    private String inventoryType;

    /**
     * 销售订单
     */
    private String salesOrder;

    /**
     * 销售订单行号
     */
    private String salesItemNo;

    /**
     * 库存地点-
编码
     */
    private String inventoryLocation;

    /**
     * 库存地点-描述
     */
    private String inventoryLocationDesc;

    /**
     * 项目文本
     */
    private String projectText;

    /**
     * 是否退货 X 是(目前单指常规类型的)
     */
    private String returnFlag;

    /**
     * 采购员id
     */
    private Long purchaseUserId;

    /**
     * 采购员编码
     */
    private String purchaseUserCode;

    /**
     * 采购员名称
     */
    private String purchaseUserName;

    /**
     * 采购类型标识 1:集采 2:自采
     */
    private Integer purchaseTypeFlag;

    /**
     * 附加费用 - 条件类型
     */
    private String termType;

    /**
     * 附加费用 - 条件描述
     */
    private String termDesc;

    /**
     * 行项目文本
     */
    private String lineItemText;

    /**
     * 结算数量 =【常规】入库数量
     */
    private BigDecimal settleNumber;

    /**
     * 净重/数量 = 【附加费用】入库数量
     */
    private BigDecimal weightNumber;

    /**
     * 修改过标记。0.否 1.是
     */
    private Byte modified;

    /**
     * 订单单位
     */
    private String orderUnit;

    /**
     * 数据组合键 供应商编码+物料凭证年度+物料凭证号+行号
     */
    private String dataPrimary;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 物流单号
     */
    private String trackingNumber;

    /**
     * 库存类型：X	质量检验	S	冻结的	2	质量检验	3	冻结的		非限制使用	F	非限制使用
     */
    private String stockType;

    /**
     * 对账方式 0:线上对账，1:线下对账
     */
    private Integer accountWay;

    /**
     * 提单号(非生产性送货单：SAP手动填写的是SRM的送货单号)
     */
    private String billOfLadingNo;

    /**
     * 送货单号
     */
    private String deliveryOrderNo;

    /**
     * 送货单行号
     */
    private String deliveryItemNo;

    /**
     * 交货单号
     */
    private String deliveryNote;

    /**
     * 汇率
     */
    private String exchangeRate;

    /**
     * 项目文本
     */
    private String sapRemark;

    /**
     * 收货方
     */
    private String deliveryObject;

    /**
     * 卸货点
     */
    private String disburdenAddress;

    /**
     * 需求部门
     */
    private String devDepartment;

    /**
     * 收货日期
     */
    private LocalDateTime deliveryDate;

    /**
     * 生产日期
     */
    private LocalDateTime productionDate;

    /**
     * 有效期至
     */
    private LocalDateTime termDate;

    /**
     * SC订单号
     */
    private String zlsdh;

    /**
     * 规格
     */
    private String specs;

    /**
     * 原含税单价
     */
    private BigDecimal originalTaxPrice;

    /**
     * 扣款比例（其他折扣）
     */
    private BigDecimal deductionRatio;

    /**
     * 质检单号
     */
    private String qualityTestingNo;

    /**
     * 制单人
     */
    private String creator;

    /**
     * 借代项
     */
    private String metonymyItem;

    /**
     * 不良原因
     */
    private String adverseCauses;

    /**
     * 扩展字段1（免检标识）
     */
    private String extendFiled1;

    /**
     * 扩展字段2
     */
    private String extendFiled2;

    /**
     * 扩展字段3
     */
    private String extendFiled3;

    /**
     * 付款到期日
     */
    private LocalDateTime paymentExpireDate;

    /**
     * 报关公司编码
     */
    private String supplierCode2;

    /**
     * 报关公司名称
     */
    private String supplierName2;
}
