package com.tofly.dzfp.entity.Invoice;

import lombok.Data;

/**
 * @author lihaoli
 * @date 2024/11/15
 */
@Data
public class InvoiceDetail {
    /**
     * 商品名称（如invoiceLineProperty =1，则此商品行为折扣行，折扣行不允许多行折扣，折扣行必须紧邻被折扣行，商品名称必须与被折扣行一致）
     */
    public String goodsName;
    /**
     * 商品编码（商品税收分类编码开发者自行填写）
     */
    public String goodsCode;
    /**
     * 自行编码（可不填）
     */
    public String selfCode;
    /**
     * 单价含税标志：0:不含税,1:含税
     */
    public String withTaxFlag;
    /**
     * 单价（精确到小数点后8位），当单价(price)为空时，数量(num)也必须为空；(price)为空时，含税金额(taxIncludedAmount)、不含税金额(taxExcludedAmount)、税额(tax)都不能为空
     */
    public String price;
    /**
     * 数量（精确到小数点后8位，开具红票时数量为负数）
     */
    public String num;
    /**
     * 单位
     */
    public String unit;
    /**
     * 规格型号
     */
    public String specType;
    /**
     * 税额（精确到小数点后2位），[不含税金额] * [税率] = [税额]；税额允许误差为 0.06。红票为负。不含税金额、税额、含税金额任何一个不传时，会根据传入的单价，数量进行计算，可能和实际数值存在误差，建议都传
     */
    public String tax;
    /**
     * 税率，注：1、纸票清单红票存在为null的情况；2、二手车发票税率为null或者0
     */
    public String taxRate;
    /**
     * 含税金额（精确到小数点后2位），[不含税金额] + [税额] = [含税金额]，红票为负。不含税金额、税额、含税金额任何一个不传时，会根据传入的单价，数量进行计算，可能和实际数值存在误差，建议都传入
     */
    public String taxIncludedAmount;

    /**
     * 不含税金额（精确到小数点后2位）。红票为负。不含税金额、税额、含税金额任何一个不传时，会根据传入的单价，数量进行计算，可能和实际数值存在误差，建议都传入
     */
    public String taxExcludedAmount;

    /**
     *优惠政策标识：0,不使用;1,使用; 数电票时： 01：简易征收 02：稀土产品 03：免税 04：不征税 05：先征后退 06：100%先征后退 07：50%先征后退 08：按3%简易征收 09：按5%简易征收 10：按5%简易征收减按1.5%计征 11：即征即退30% 12：即征即退50% 13：即征即退70% 14：即征即退100% 15：超税负3%即征即退 16：超税负8%即征即退 17：超税负12%即征即退 18：超税负6%即征即退
     */
    public String favouredPolicyFlag;
    /**
     *增值税特殊管理（优惠政策名称）,当favouredPolicyFlag为1时，此项必填 （数电票时为空）
     */
    public String favouredPolicyName;
    /**
     *零税率标识：空,非零税率;1,免税;2,不征税;3,普通零税率；1、当税率为：0%，且增值税特殊管理：为“免税”， 零税率标识：需传“1” 2、当税率为：0%，且增值税特殊管理：为"不征税" 零税率标识：需传“2” 3、当税率为：0%，且增值税特殊管理：为空 零税率标识：需传“3” （数电票时为空）
     */
    private String zeroRateFlag;
}
