package com.jwipc.finance.model.query;

import com.google.common.collect.Lists;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * <p>
 *     创建开票申请查询实体类
 * </p>
 *
 * @author li.kui
 * @version 1.0
 * @since 2020/8/13
 */
@Data
public class CreateInvoicedApplyQuery {
    /**
     * 供应商编码
     */
    private String supplierCode;
    private String paymentTermCode;
    /**
     * 公司编码
     */
    private String companyCode;
    /**
     * 工厂编码
     */
    private String factoryCode;
    private String taxCode;
    /**
     * 币种
     */
    private String currencyCode;
    /**
     * 单据类型 1:材料商对账单 2:承运商对账单
     */
    private Integer orderType;
    private String poType;
    private String poTypes;
    private List<String> poTypeList;
    /**
     * 对账单状态 默认取状态为9:财务确认通过
     */
    private Integer asStatus = 9;
    /**
     * 对账单明细开票完成标识 默认 0:否
     */
    private Integer isComplete = 0;
    /**
     * 对账单明细删除标识 默认0:未删除
     */
    private Integer asdDeleteFlag = 0;
    /**
     * 排除的对账单明细ID
     */
    private String excludeAsdIds;
    /**
     * 排除的对账单明细ID集合
     */
    private List<Long> excludeAsdIdList;
    /**
     * 临时删除的对账单明细ID
     */
    private String tempDelAsdIds;
    /**
     * 临时删除的对账单明细ID集合
     */
    private List<Long> tempDelAsdIdList;
    /**
     * 对账单号
     */
    private String asNo;
    /**
     * 对账单行号
     */
    private String asdItemNo;
    /**
     * 入库时间起
     */
    private String inStockStartDate;
    /**
     * 入库时间至
     */
    private String inStockEndDate;
    /**
     * 入库凭证号
     */
    private String receiveCode;
    /**
     * 入库凭证行号
     */
    private String receiveRowNo;
    /**
     * SAP订单号
     */
    private String poCode;
    /**
     * 采购订单行号
     */
    private String poItemNo;
    /**
     * 物料编码
     */
    private String materialCode;
    /**
     * 物料名称
     */
    private String materialName;
    /**
     * 快速创建选择的对账单明细ID
     */
    private String asdIds;
    /**
     * 快速创建选择的对账单明细ID集合
     */
    private List<Long> asdIdList;
    /**
     * 创建开票申请时允许使用的对账单明细ID
     */
    private List<Long> allowUseAsdIdList;


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

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


    public List<Long> getAsdIdList(){
        List<Long> list = Lists.newArrayList();

        if(StringUtils.isNotEmpty(this.asdIds)){
            final String[] asdIdArr = StringUtils.split(this.asdIds, ",");
            for(String asdId: asdIdArr){
                list.add(Long.parseLong(asdId));
            }
        }
        return list;
    }
}
