package cn.superdesk.uniorder.dto.param.invoice.customer.invoiced;

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

import java.util.Date;
import java.util.List;

/**
 * @Description: 应收账款 查询条件类
 * <p>
 * https://www.tapd.cn/33003868/prong/stories/view/1133003868001002609?url_cache_key=7f8f9e2937de345029f0f29c2e8952e8&action_entry_type=story_tree_list
 * @Author: linjinyu
 * @CreateDate: 2021/7/26 下午3:51
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/7/26 下午3:51
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
@ToString
public class InvoiceInvoicedQueryCriteria extends AnBaseQueryCriteria {


	@ApiModelProperty("3.2.1 公司主体-销方主体Id eq 表(invoice_bank_info.id)")
	private Long   sellerMainId;
	@ApiModelProperty("3.2.1 公司主体-销方名称 like %xxx%")
	private String sellerCompanyName;

	@ApiModelProperty("3.2.2 是否逾期-是否逾期 0<=逾期天数 =IF(0<=B917,已逾期,未逾期):0-未逾期;1-已逾期;")
	private Integer isOverdue;

	@ApiModelProperty("3.2.3 逾期天数 逾期天数 当前日期-开票日期-30 overdueDaysEq 传 '>=','=' 默认为 '>=' ")
	private String  overdueDaysEq = ">=";
	@ApiModelProperty("3.2.3 逾期天数 逾期天数 当前日期-开票日期-30 overdueDaysEq 传 '>=','=' 默认为 '>=' ")
	private Integer overdueDays;

	@ApiModelProperty("3.2.3 逾期天数 企业账期 and invoiced_date < DATE_SUB(CURDATE(),INTERVAL #{overdueDateSub} day)")
	private Integer overdueDateSub;

	@ApiModelProperty("3.2.4 发票种类-发票种类Id-表(invoice_type.id)")
	private Long   invoiceTypeId;
	@ApiModelProperty("3.2.4 发票种类-发票种类")
	private String invoiceType;

	@ApiModelProperty("3.2.5 回款状态-是否回款:0-否;1-是;为空-全部;")
	private Integer       isBackCollection;
	@ApiModelProperty("3.2.5 回款状态-是否回款:0-否;1-是;为空-全部;")
	private List<Integer> isBackCollectionIds;

//	3.2.6 发票状态
//	(1)初始:默认为"全部";
//	(2)选择:单选,全部/正常发票/红冲发票;
//		·正常发票:目前指当前发票的发票金额非负数;
//		·红冲发票:目前指当前发票的发票金额为负数;
//	(3)对当前列表数据的"发票状态"进行筛选查询;

	@ApiModelProperty("3.2.7 是否红冲-是否红冲:0-否;1-是;为空-全部; 大概是某个正常票是不是红冲的问题")
	private Integer isRedWriteOff;


	@ApiModelProperty("3.2.8 是否作废-是否作废:0-正常;1-作废;为空-全部;")
	private Integer isInvalid;

	@ApiModelProperty("3.2.9 客户经理-客户经理-Id-统一订单 sys_user_id ---- add")
	private Long   customerManagerId;
	@ApiModelProperty("3.2.9 客户经理-客户经理-名称")
	private String customerManagerName;

	/****************************************** 搜索条件还没有加-未确定 start ******************************************/

	@ApiModelProperty("3.2.10 组织关系-外部系统 集团Id 一般是指 服务之窗 或 福利商城")
	private Long   outCliqueLeave0Id;
	@ApiModelProperty("3.2.10 组织关系-外部系统 集团名称 一般是指 服务之窗 或 福利商城")
	private String outCliqueLeave0Name;
	@ApiModelProperty("3.2.10 组织关系-外部系统 区域分公司Id eg: 1/2/3/4 一般是指 服务之窗 或 福利商城")
	private String outCliqueLeave14Id;
	@ApiModelProperty("3.2.10 组织关系-外部系统 区域分公司名称 eg: 区域/分公司/ 一般是指 服务之窗 或 福利商城")
	private String outCliqueLeave14Name;

	@ApiModelProperty("3.2.10 组织关系-路径eg 0/1/1/1 中间数值均为服务之窗的数据")
	private String outPath;
	@ApiModelProperty("3.2.10 组织关系-路径eg 集团/分公司/项目/企业 中间数值均为服务之窗的数据")
	private String outEffect;

	/****************************************** 搜索条件还没有加-未确定   end ******************************************/

	@ApiModelProperty("3.2.11 项目企业-外部系统 项目Id 一般是指 服务之窗 或 福利商城")
	private Long   outOrgId;
	@ApiModelProperty("3.2.11 项目企业-外部系统 项目名称 一般是指 服务之窗 或 福利商城")
	private String outOrgName;
	@ApiModelProperty("3.2.11 项目企业-外部系统 企业Id 一般是指 服务之窗 或 福利商城")
	private Long   outVirtId;
	@ApiModelProperty("3.2.11 项目企业-外部系统 企业名称 一般是指 服务之窗 或 福利商城")
	private String outVirtName;


	@ApiModelProperty("3.2.12 发票号码")
	private String invoiceNumber;

	@ApiModelProperty("3.2.13 开票抬头")
	private Long   purchaserMainId;
	private String purchaserCompanyName;

	@ApiModelProperty("3.2.14 开票日期-开票日期 范围 start eg 2021-03-03 < 目标")
	private Date invoicedDateStart;
	@ApiModelProperty("3.2.14 开票日期-开票日期 范围   end eg 目标 < 2021-04-03")
	private Date invoicedDateEnd;

	@ApiModelProperty("3.2.15 回款日期-回款时间 范围 start eg 2021-03-03 < 目标")
	private Date backCollectionTimeStart;
	@ApiModelProperty("3.2.15 回款日期-回款时间 范围   end eg 目标 < 2021-04-03")
	private Date backCollectionTimeEnd;

	@ApiModelProperty("排序 如果不传 默认为 invoiced_date DESC ")
	private String orderByClause = "invoiced_date DESC";

	@ApiModelProperty("勾选导出专用")
	private List<Long> invoiceInvoicedIdList;


}
