package com.uas.platform.b2b.service;

import com.uas.platform.b2b.erp.model.Inquiry;
import com.uas.platform.b2b.model.*;
import com.uas.platform.core.model.PageInfo;
import com.uas.search.b2b.model.SPage;

import java.util.List;

public interface SaleQuotationService {

	/**
	 * 批量保存主动报价
	 *
	 * @param items
	 *            主动报价明细
	 * @return
	 */
	public void save(List<SaleQuotationItem> items);

	/**
	 * 保存主动报价 - 用于在平台上录入
	 * @param item
	 */
	public SaleQuotationItem save(SaleQuotationItem item);

	/**
	 * 未传到买家ERP的主动报价
	 *
	 * @return
	 */
	public List<SaleQuotation> findNotUploadQuotation();

	/**
	 * 未回传到卖家ERP的主动报价
	 *
	 * @return
	 */
	public List<SaleQuotation> findNotBackQuotation();

	/**
	 * 主动报价成功传到买家之后
	 *
	 * @param idArray
	 */
	public void onQuotationUploadSuccess(String[] idArray);

	/**
	 * 主动报价成功回传到卖家之后
	 *
	 * @param idArray
	 */
	public void onQuotationBackSuccess(String[] idArray);

	/**
	 * 主动报价信息（不）采纳之后，写到平台
	 *
	 * @param quotationItems
	 */
	public void onReplyDecide(List<SaleQuotationItem> quotationItems);

	/**
	 * 查找所有待上传到卖家ERP的主动报价的采纳结果
	 *
	 * @return
	 */
	List<SaleQuotationItem> findNotUploadQuotationDecide();

	/**
	 * 平台的主动报价的采纳结果传到供应商ERP之后，修改平台里面的采纳结果上传状态
	 *
	 * @param idArray
	 */
	public void onQuotationDecideDownSuccess(String[] idArray);

	void onReplyInvalid(List<Inquiry> inquiries);

	List<SaleQuotation> findNotUploadQuotationReplyInvalid();

	void onReplyInvalidDownSuccess(String[] split);

	/**
	 * erp主动报价单提交后更新平台状态，给用户提示
	 *
	 * @param ids
	 */
	public void check(Long[] ids);

	/**
	 * 重新处理已提交的单据，将待审批的归纳到已提交里面
	 *
	 * @param pageInfo
	 * @param filter
	 * @return
	 */
	public SPage<SaleQuotationDone> findDoneByPageInfo(PageInfo pageInfo, SearchFilter filter);

	/**
	 * erp主动报价反提交单据状态更新到平台，给用户提示
	 *
	 * @param ids
	 */
	public void recheck(Long[] ids);
}
