package com.uas.platform.b2b.service;

import com.uas.platform.b2b.erp.model.InquiryMould;
import com.uas.platform.b2b.erp.model.QuotationDown;
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 PurchaseInquiryMouldService {

	/**
	 * 批量保存、修改采购询价
	 * 
	 * @param inquiryMould
	 *            询价
	 * @return
	 */
	public PurchaseInquiryMould save(PurchaseInquiryMould inquiryMould);

	/**
	 * 附件ID写到询价单
	 * 
	 * @return
	 */
	public void saveAttach(List<Attach> attachs);

	/**
	 * 分页查找询价单
	 * 
	 * @param pageInfo
	 * @param keyword
	 *            查找关键词
	 * @return
	 */
	public SPage<PurchaseInquiryMouldInfo> findAllByPageInfo(PageInfo pageInfo, String keyword, SearchFilter filter);

	/**
	 * 用询价单ID查找询价单
	 * 
	 * @param id
	 * @return
	 */
	public PurchaseInquiryMouldInfo findById(Long id);

	/**
	 * 查找所有待上传到买家ERP的报价信息
	 * 
	 * @return
	 */
	List<PurchaseInquiryMould> findNotUploadReply();

	/**
	 * 报价信息成功传到买家ERP之后
	 * 
	 * @param idArray
	 */
	public void onReplyUploadSuccess(String[] idArray);

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

	/**
	 * 平台的客户询价单的报价信息传到供应商ERP之后，修改平台里面的询价单的报价信息上传状态
	 * 
	 * @param idArray
	 */
	public void onReplyDownSuccess(String[] idArray);

	/**
	 * 保存编辑的回复信息
	 * 
	 * @param inquiryMouldItem
	 */
	public PurchaseInquiryMouldItem save(PurchaseInquiryMouldItem inquiryMouldItem);

	/**
	 * 来自供应商ERP端的报价
	 * 
	 * @param downs
	 */
	public void reply(List<QuotationDown> downs);

	/**
	 * B2B回复报价
	 * 
	 * @param inquiryMould
	 */
	public PurchaseInquiryMould reply(PurchaseInquiryMould inquiryMould);

	/**
	 * 买家在收到报价信息后，点击提交按钮后，状态传至平台，至此平台的供应商不能再对这张询价单进行报价
	 * 
	 * @param sourceIds
	 */
	public void check(Long[] sourceIds);

	public void save(List<PurchaseInquiryMould> convertInquiryMould);

	/**
	 * 已作废的单据状态修改
	 * 
	 * @param inquiryMoulds
	 */
	public void onInvalid(List<InquiryMould> inquiryMoulds);

	/**
	 * 买家反提交
	 * @param ids
	 */
	void reCheck(Long[] ids);

}
