package com.jwipc.finance.model.query;

import cn.hutool.core.util.StrUtil;
import com.jwipc.query.BasePageQuery;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 *     开票申请查询实体类
 * </p>
 *
 * @author li.kui
 * @version 1.0
 * @since 2020/8/13
 */
@Data
public class CostInvoicedApplyQuery extends BasePageQuery {
    /**
     * 开票申请单ID
     */
    private Long invoicedApplyId;
    /**
     * 开票申请单ID集合
     */
    private List<Long> iaIdList;
    /**
     * 开票申请单号
     */
    private String invoiceApplyNo;
    /**
     * SAP发票凭证号
     */
    private String invoiceVoucher;
    private String purchaseGroup;
    /**
     * 供应商编码
     */
    private String supplierCode;
    private Integer isSupplier;
    /**
     * 供应商名称
     */
    private String supplierName;
    /**
     * 供应商编码或名称
     */
    private String supCodeOrName;
    /**
     * OA审批流程号
     */
    private String oaProcessNo;
    /**
     * 公司编码
     */
    private String companyCode;
    /**
     * 数据状态 -1:全部 1:暂存发票 2:待采购确认发票 3:采购拒绝发票 4:待推送OA审批 5:OA审批中 6:OA审批不通过 7:待财务确认发票 8:财务驳回发票 9:发票已确认
     */
    private Integer status;
    /**
     * 数据状态 系统待办使用
     */
    private String iaStatus;
    /**
     * 数据状态
     */
    private List<Integer> statusList;
    /**
     * 过账状态 -1:全部 1:暂存 2:待过账 3:过账失败 4:过账成功
     */
    private Integer postStatus;
    /**
     * 单据类型 1:材料开票申请 2:运费开票申请
     */
    private Integer orderType;
    /**
     * 是否无纸化；0-否；1-是
     */
    private Integer paperlessFlag;
    /**
     * 创建时间(起)
     */
    private String createTimeStart;
    private String createUserName;
    private String sort;
    private String order;
    /**
     * 创建时间(至)
     */
    private String createTimeEnd;
    private String paymentExpireDateStart;
    private String paymentExpireDateEnd;
    /**
     * 当前登录用户(根据登录人的所属工厂编码来做数据权限)
     */
    private Long userId;
    /**
     * 角色类型 1:采购 2:财务
     */
    private Integer roleType;
    /**
     * 删除标记 1：删除也查询 0：只查询未删除数据
     */
    private Integer delFlg;
    private List<String> factoryCodes;
    /**
     * 开票含税总金额 起
     */
    private BigDecimal invoiceTaxMoneyBegin;
    /**
     * 开票含税总金额 止
     */
    private BigDecimal invoiceTaxMoneyEnd;
    /**
     * 采购员
     */
    private String purchaseUser;
    private String currencyCode;
    private String financeConfirmUserName;
    /**
     * 对账年份
     */
    private String accountStatementYear;

    /**
     * 对账月份
     */
    private String accountStatementMonth;


    public String getInvoiceApplyNoLike(){
        return StringUtils.isEmpty(this.invoiceApplyNo) ? null : "%" + this.invoiceApplyNo + "%";
    }

    public String getInvoiceVoucherLike(){
        return StringUtils.isEmpty(this.invoiceVoucher) ? null : "%" + this.invoiceVoucher + "%";
    }

    public String getSupplierNameLike(){
        return StringUtils.isEmpty(this.supplierName) ? null : "%" + this.supplierName + "%";
    }

    public String getSupCodeOrNameLike(){
        return StringUtils.isEmpty(this.supCodeOrName) ? null : "%" + this.supCodeOrName + "%";
    }

    public String getOpCodeLike(){
        return StringUtils.isEmpty(this.oaProcessNo) ? null : "%" + this.oaProcessNo + "%";
    }

    public String getCreateTimeStart(){
        if(StringUtils.isNotEmpty(this.createTimeStart)){
            return this.createTimeStart + " 00:00:00";
        }
        return "";
    }

    public String getCreateTimeEnd(){
        if(StringUtils.isNotEmpty(this.createTimeEnd)){
            return this.createTimeEnd + " 23:59:59";
        }
        return "";
    }

    public String getSort(){
        if(StringUtils.isNotEmpty(this.sort)){
            return StrUtil.toUnderlineCase(this.sort);
        }
        return "";
    }
}
