package cn.superdesk.uniorder.dto.param.thirdpart.szhtxx.electronicInvoice;

import cn.superdesk.uniorder.common.pagination.AnBaseQueryCriteria;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.SuperBuilder;

import java.util.List;

/**
 * @author linjinyu
 * @email linjinyu@avic-s.com
 * @date 2022-01-24 11:50:43
 */
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder(toBuilder = true)
@Data
@ToString
public class SzhtxxElectronicInvoiceFptxxQueryCriteria extends AnBaseQueryCriteria {

    @ApiModelProperty("单选-金税盘专用-szhtxxElectronicInvoiceFptxxId-由于机制，尽量不要用Id")
    private Long       szhtxxElectronicInvoiceFptxxId;
    @ApiModelProperty("多选-金税盘专用-由于机制，尽量不要用Id")
    private List<Long> szhtxxElectronicInvoiceFptxxIdSelected;


    /****************************************** SzhtxxElectronicInvoiceFptxxResult start ******************************************/

    @ApiModelProperty("2.7.3.1-发票号 单向 精确")
    private String fphm;
    @ApiModelProperty("2.7.3.1-发票号 区向 开始或结束的发票号")
    private String fphmStart;
    private String fphmEnd;

    @ApiModelProperty("2.7.3.2-(5)发票代码:对当前列表数据`发票代码`字段内容,`精确`查询,多张发票存在同一个发票代码;")
    private String fpdm;

    /****************************************** SzhtxxElectronicInvoiceFptxxResult   end ******************************************/

    @ApiModelProperty("2.7.3.2-(6)发票请求唯一流水号:对当前列表数据中`开票申请编号`字段内容,`精确`查询;")
//	@ApiModelProperty("已实现-发票请求唯一流水号^_^每张发票的发票请求唯一流水号无重复,由企业定义.限制固定20位.流水号包含公司简称(如:华为终端:HWZD************)")
    private String       fpqqlsh;
    @ApiModelProperty("多选-开票申请 适配 蓝票时等同于 invoiceApplySnsSelected")
    private List<String> fpqqlshSelected;
    @ApiModelProperty("2.7.3.2-(6)开票申请编号:对当前列表数据中`开票申请编号`字段内容,`精确`查询;")
    private String       invoiceApplySn;

    @ApiModelProperty("2.7.3.2-(7)对账单编号:对当前列表数据中`对账单编号`字段内容,`精确`查询;")
    private String accountingOrderSn;

    @ApiModelProperty("2.7.3.2-(8)购买方税号:对当前列表数据中`购买方税号`字段内容,`精确`查询;")
    private String ghfNsrsbh;
    @ApiModelProperty("购买方名称,对购买方名称字段，模糊查询")
    private String ghfmc;
    @ApiModelProperty("2.7.3.2-(9)销售方税号:对当前列表数据中`销售方税号`字段内容,`精确`查询;")
    private String xhfNsrsbh;

    @ApiModelProperty("2.7.3.2-(10)开票人:对当前列表数据`开票人`字段内容,`模糊`查询;")
    private String kpy;
    @ApiModelProperty("2.7.3.2-(11)收款人:对当前列表数据`收款人`字段内容,`模糊`查询;")
    private String sky;
    @ApiModelProperty("2.7.3.2-(12)复核人:对当前列表数据`复核人`字段内容,`模糊`查询;")
    private String fhr;


    @ApiModelProperty("2.7.3.2-(13)创建人:对当前列表数据`创建人`字段内容,`模糊`查询;")
    private Long fptxxCreateUserId;
    @ApiModelProperty("2.7.3.2-(13)开票申请人:对当前列表数据`开票申请人`字段内容,`模糊`查询;")
    private Long makeInvoiceUserId;
    @ApiModelProperty("2.7.3.2-(13)回款登记人:对当前列表数据`回款登记人`字段内容,`模糊`查询;")
    private Long backAccountUserId;


    @ApiModelProperty("2.7.3.3-企业名称;`模糊`查询;")
    private String outVirtId;
    @ApiModelProperty("2.7.3.3-企业名称;`模糊`查询;预留;")
    private String outVirtName;

    @ApiModelProperty("2.7.3.4 发票种类;")
    private Long invoiceTypeId;

    @ApiModelProperty("2.7.3.5 开票方式;-单选")
    private String       invoiceMode;
    @ApiModelProperty("2.7.3.5 开票方式;-多选")
    private List<String> invoiceModeSelected;

    //	@ApiModelProperty("2.7.3.6 发票类型;正常发票/红冲发票")
    @ApiModelProperty(value = "2.7.3.6 开票类型^_^开票类型(1-正常发票;2-红冲发票;10-特殊冲红) 引用 enum SzhtxxElectronicInvoiceFptxxKplxEnum")
    private Integer kplx;
    @ApiModelProperty(value = "2.7.3.7 是否红冲:0-否;1-是; 引用 enum InvoiceInvoicedIsRedWriteOffEnum")
    private Integer isRedWriteOff;

    @ApiModelProperty("2.7.3.8 回款状态;-单选")
    private Integer       backAccountStatus;
    @ApiModelProperty("2.7.3.8 回款状态;-多选")
    private List<Integer> backAccountStatusSelected;

    @ApiModelProperty("2.7.3.9 开票日期;")
    private String makeInvoiceTimeStart;
    @ApiModelProperty("2.7.3.9 开票日期;")
    private String makeInvoiceTimeEnd;

    @ApiModelProperty("2.7.3.9 回款日期;")
    private String backAccountTimeStart;
    @ApiModelProperty("2.7.3.9 回款日期;")
    private String backAccountTimeEnd;

    /**************************************** v2.2 add at 20220427 start ****************************************/

    @ApiModelProperty("2.4.2.4 作废标志-20220427[新增] 未作废/已作废;-单选;")
    private Integer flagVoidSign;
    @ApiModelProperty("2.4.2.4 修复标志-20220427[新增][预留];-单选;")
    private Integer flagRepair;
    @ApiModelProperty("2.4.2.4 清单标志-20220427[新增][预留];-单选;")
    private Integer flagList;

    @ApiModelProperty(value = "报送状态-20220427[新增] 0-未报送;1-已报送;-1报送失败;-单选;")
    private Integer pushedOutStatus;
    @ApiModelProperty(value = "邮件状态-20220427[新增] 0-未发送;1-已发送;-单选; send过去分词 sent")
    private Integer sentEmailStatus;

    /**************************************** v2.2 add at 20220427   end ****************************************/

    /**************************************** v2.3 mark by linjinyu at 20220516 start ****************************************/

    @ApiModelProperty("引用Enum CommonSourceFromEnum-支持多选")
    private List<String> sourceFromsSelected;
    @ApiModelProperty("引用Enum CommonServiceNoEnum-支持多选")
    private List<String> serviceNosSelected;

    /**************************************** v2.3 mark by linjinyu at 20220516  end ****************************************/


//	@ApiModelProperty("主要开票项目^_^主要开票商品,或者第一条商品,取项目信息中第一条数据的项目名称(或传递大类例如:办公用品)")
//	private String     kpxm;
//	@ApiModelProperty("开票方识别号^_^必填,开票方纳税人识别号")
//	private String     xhfNsrsbh;
//	@ApiModelProperty("销货方名称^_^销货方名称")
//	private String     xhfmc;
//	@ApiModelProperty("销货方地址电话^_^销货方地址电话")
//	private String     xhfDzdh;
//	@ApiModelProperty("销货方银行账号^_^销货方银行账号")
//	private String     xhfYhzh;
//	@ApiModelProperty("购货方名称^_^购货方名称,即发票抬头.购货方为'个人'时,可输入名称,输入名称是为'个人(名称) ','('为半角;例:个人(王杰)")
//	private String     ghfmc;
//	@ApiModelProperty("购货方纳税人识别号^_^购货方企业类型为'01, 02'时,必填")
//	private String     ghfNsrsbh;
//	@ApiModelProperty("购货方银行账号^_^购货方银行账号")
//	private String     ghfYhzh;
//	@ApiModelProperty("购货方地址电话^_^购货方地址电话")
//	private String     ghfDzdh;
//	@ApiModelProperty("购货方手机^_^购货方手机号(交付手机)")
//	private String     ghfSj;
//	@ApiModelProperty("购货方邮箱^_^购货方邮箱(交付邮箱)")
//	private String     ghfEmail;
//	@ApiModelProperty("交付标志^_^0-不交付;1-交付邮箱;2-交付手机;3-手机邮箱都交付;默认:0")
//	private String     billSentSign;
//	@ApiModelProperty("状态回调地址^_^为空时不回调,不为空时回调,若提供的接收回调地址有误,则最多回调三次,回调成功需返回格式{returnCode:'0000',returnMsg:'原因'}其他都视为失败")
//	private String     callBackUrl;
//	@ApiModelProperty("购货方企业类型^_^购货方企业类型'01, 02'代表企业,两者没区别,'03'代表个人")
//	private String     ghfqylx;
//	@ApiModelProperty("代开标志^_^0-自开;1-代开;默认:0")
//	private String     dkbz;
//	@ApiModelProperty("分机号^_^为空时随机获取分机盘开票,不为空是指定分机盘开具(A9暂时不支持,C48支持)")
//	private String     fjh;
//	@ApiModelProperty("开票员^_^开票员")
//	private String     kpy;
//	@ApiModelProperty("收款员^_^收款员")
//	private String     sky;
//	@ApiModelProperty("复核人^_^复核人")
//	private String     fhr;
//	@ApiModelProperty("开票类型^_^开票类型(1-蓝票;2-红票;10-特殊冲红)")
//	private String     kplx;
//	@ApiModelProperty("原发票代码^_^开红票时必填")
//	private String     yfpDm;
//	@ApiModelProperty("原发票号码^_^开红票时必填")
//	private String     yfpHm;
//	@ApiModelProperty("清单标志^_^0-普通电子发票;1-普通电子发票(清单);2-收购电子发票;3-收购电子发票(清单);4-成品油电子发票(成品油无清单);备注:默认为0;1,3-清单是指强制清单;0,2-如果超出8行自动打印清单;4-成品油,则商品明细行不能有其他商品,一个商品是成品油,另一个不是成品油,开不出来票.并且成品油的发票的商品行中,单价;数量;单位必填,其中单位为升或者吨")
//	private String     qdBz;
//	@ApiModelProperty("清单项目名称^_^清单标志为1时必填")
//	private String     qdxmmc;
//	@ApiModelProperty("价税合计金额^_^小数点后2位,以元为单位,精确到分")
//	private BigDecimal kphjje;
//	@ApiModelProperty("合计不含税金额.所有商品行不含税金额之和.^_^小数点后2位,以元为单位精确到分(单行商品金额之和).")
//	private BigDecimal hjbhsje;
//	@ApiModelProperty("合计税额.所有商品行税额之和.^_^小数点后2位,以元为单位精确到分(单行商品税额之和)")
//	private BigDecimal hjse;
//	@ApiModelProperty("备注^_^增值税发票红字发票开具时,备注要求:开具负数发票,必须在备注中注明'对应正数发票代码:XXXXXXXXX号码:YYYYYYYY'字样,其中'X'为发票代码,'Y'为发票号码.")
//	private String     bz;
//	@ApiModelProperty("0000")
//	private String     returnCode;
//	@ApiModelProperty("发票开具成功")
//	private String     returnMsg;
//	@ApiModelProperty("创建时间")
//	private Date       createTime;
//	@ApiModelProperty("操作人 sysUserId")
//	private Long       createUserId;
//	@ApiModelProperty("操作人 sysUserName")
//	private String     createUserName;
//	@ApiModelProperty("最近更新时间")
//	private Date       updateTime;
//	@ApiModelProperty("操作人 sysUserId")
//	private Long       updateUserId;
//	@ApiModelProperty("操作人 sysUserName")
//	private String     updateUserName;
//	@ApiModelProperty("软删除:0-未删除;1-已删除")
//	private Integer    deleted;


}
