package com.jwipc.finance.dto;

import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 *     快速创建开票申请单视图
 * </p>
 *
 * @author li.kui
 * @version 1.0
 * @since 2020/8/31
 */
@Data
public class FastStatementItemDTO {
    /**
     * 对账单明细表ID
     */
    private Long id;
    /**
     * 行号
     */
    private String itemNo;
    /**
     * 对账单ID
     */
    private Long asId;
    /**
     * 对账单号
     */
    private String asNo;
    /**
     * 对账单类型 1:材料类 2:运费类
     */
    private Integer orderType;
    /**
     * 对账数量
     */
    private BigDecimal asQuantity;
    /**
     * 税率编码
     */
    private String taxCode;
    /**
     * 税率描述
     */
    private String taxDesc;
    /**
     * 税率值(%)
     */
    private Integer taxValue;
    /**
     * 未税单价
     */
    private BigDecimal notTaxPrice;
    /**
     * 含税单价
     */
    private BigDecimal taxPrice;
    /**
     * 未税金额
     */
    private BigDecimal notTaxAmount;
    /**
     * 含税金额
     */
    private BigDecimal taxAmount;
    /**
     * 差税额
     */
    private BigDecimal diffTaxAmount;
    /**
     * 开票完成标识 0:未开票 1:已开票
     */
    private Integer invoiceCompleteFlag;
    /**
     * 采购是否可编辑 0:否 1:是
     */
    private Integer editFlag;
    /**
     * 价格单位
     */
    private BigDecimal priceUnit;
    /**
     * 对账差异含税单价
     */
    private BigDecimal asDiffPrice = BigDecimal.ZERO;
    /**
     * 对账差异含税金额
     */
    private BigDecimal asDiffAmount = BigDecimal.ZERO;
    /**
     * 最低对账数量
     */
    private BigDecimal minStatementQuantity;



    // 入库凭证数据
    /**
     * 凭证ID
     */
    private Long receiveId;
    /**
     * 凭证号
     */
    private String receiveCode;
    /**
     * 凭证行号
     */
    private String receiveRowNo;
    /**
     * 入库凭证标识 S:入库 H:退货
     */
    private String voucherFlag;
    /**
     * 入库数量
     */
    private BigDecimal receiveNum;
    /**
     * 入库日期
     */
    private Date receiveDate;
    /**
     * 物料编码
     */
    private String materialCode;
    /**
     * 物料名称
     */
    private String materialName;
    /**
     * 规格
     */
    private String specs;
    /**
     * 物料单位
     */
    private String materialUnit;
    /**
     * SC订单号
     */
    private String zlsdh;
    /**
     * SAP订单号
     */
    private String poCode;
    /**
     * 订单类型
     */
    private String orderTypeCode;
    /**
     * 订单类型名称
     */
    private String orderTypeName;
    /**
     * 采购订单行号
     */
    private String poItemNo;
    /**
     * 付款方式编码
     */
    private String paymentWayCode;
    /**
     * 付款方式名称
     */
    private String paymentWayDesc;
    /**
     * 付款条件编码
     */
    private String paymentTermCode;
    private String paymentTermCodeName;
    /**
     * 付款条件名称
     */
    private String paymentTermName;
    /**
     * 询源采购组编码
     */
    private String seekPgCode;
    /**
     * 询源采购组名称
     */
    private String seekPgName;



    // 采购审批相关字段
    /**
     * 采购审批-订单未税单价
     */
    private BigDecimal poNotTaxPrice;
    /**
     * 采购审批-订单含税单价
     */
    private BigDecimal poTaxPrice;
    /**
     * 采购审批-订单未税金额
     */
    private BigDecimal poNotTaxAmount;
    /**
     * 采购审批-订单含税金额
     */
    private BigDecimal poTaxAmount;
    /**
     * 采购订单-税额
     */
    private BigDecimal poDiffTaxAmount;
    /**
     * 采购审批-订单税率值
     */
    private Integer poTaxValue;
    /**
     * 采购审批-订单税率编码
     */
    private String poTaxCode;
    /**
     * 采购审批-订单税率描述
     */
    private String poTaxDesc;



    // 承运商对账字段
    /**
     * 材料商编码
     */
    private String materialSupplierCode;
    /**
     * 材料商名称
     */
    private String materialSupplierName;
    /**
     * 运费类型
     */
    private String freightType;


    // 集采订单相关信息
    /**
     * 集采SAP订单号
     */
    private String jcPoCode;
    /**
     * 集采采购订单行号
     */
    private String jcPoItemNo;
    /**
     * 集采工厂编码
     */
    private String jcFactoryCode;


    /**
     * 参考凭证号
     */
    private String cvCode;
    /**
     * 参考凭证行号
     */
    private String cvItemNo;
    /**
     * 参考凭证年度
     */
    private String cvYear;
    /**
     * SAP移动类型
     */
    private String sapMoveType;


    // 对账单主表数据
    /**
     * 公司代码
     */
    private String companyCode;
    /**
     * 公司名称
     */
    private String companyName;
    /**
     * 供应商编码
     */
    private String supplierCode;
    /**
     * 供应商名称
     */
    private String supplierName;
    /**
     * 工厂编码
     */
    private String factoryCode;
    /**
     * 工厂名称
     */
    private String factoryName;
    /**
     * 币种
     */
    private String currencyCode;
    /**
     * 对账单创建时间
     */
    private Date createTime;
    /**
     * 采购组
     */
    private String purchaseGroup;
    private String purchaseGroupName;

    private Integer finConf;


    public String getPaymentTermCodeName() {
        if(null != this.paymentTermName){
            return "(" + this.paymentTermCode + ")" + this.paymentTermName;
        }
        return "";
    }
}
