package com.uas.platform.b2b.service;

import com.uas.platform.b2b.erp.model.PurchaseNotify;
import com.uas.platform.b2b.model.*;
import com.uas.platform.core.model.PageInfo;
import org.springframework.data.domain.Page;

import java.util.List;

public interface PurchaseNoticeService {
	
	/**
	 * 转收料单
	 * @param saleSendItems
	 */
	public void onVerify(List<SaleSendItemVerify> verifies);

	/**
	 * 反审核收料单
	 * @param saleSendItems
	 */
	public void unVerify(List<SaleSendItemVerify> verifies);

	/**
	 * 批量保存、修改客户送货提醒
	 * 
	 * @param notices
	 * @return
	 */
	public List<PurchaseNotice> save(List<PurchaseNotice> notices);

	/**
	 * 批量结案客户送货提醒
	 * 
	 * @param notifies
	 * @return
	 */
	public void end(List<PurchaseNotify> notifies);

	/**
	 * 分页查找送货提醒单
	 * 
	 * @param pageInfo
	 * @param keyword
	 *            查找关键词
	 * @return
	 */
	public Page<PurchaseNotice> findAllByPageInfo(PageInfo pageInfo, String keyword, Long fromDate, Long endDate, SearchFilter filter);

	/**
	 * 分页查找送货提醒单
	 * 
	 * @param pageInfo
	 * @param keyword
	 *            查找关键词
	 * @return
	 */
	public Page<PurchaseNotice> findDoneByPageInfo(PageInfo pageInfo, String keyword, Long fromDate, Long endDate);

	/**
	 * 用单据ID查找送货提醒单
	 * 
	 * @param id
	 * @return
	 */
	public PurchaseNotice findById(Long id);

	/**
	 * 用单据ID查找送货提醒单
	 * 
	 * @param ids
	 * @return
	 */
	public List<PurchaseNotice> findById(Long[] ids);

	/**
	 * 查找所有待上传到供应商ERP的送货提醒
	 * 
	 * @return
	 */
	public List<PurchaseNotice> findNotUploadNotice();

	/**
	 * 平台的送货提醒传到供应商ERP之后，修改平台里面的送货提醒单的上传状态
	 * 
	 * @param idArray
	 */
	public void onNoticeDownSuccess(String[] idArray);

	/**
	 * 查找所有待上传到买家的发货单
	 * 
	 * @return
	 */
	public List<SaleSend> findNotUploadSend();

	/**
	 * 查找所有待上传到卖家的发货单
	 * 
	 * @return
	 */
	public List<SaleSend> findNotSendSend();

	/**
	 * 发货单成功传到买家ERP之后
	 * 
	 * @param idArray
	 */
	public void onSendUploadSuccess(String[] idArray);

	/**
	 * 发货单成功传到卖家ERP之后
	 * 
	 * @param idArray
	 */
	public void onSendDownSuccess(String[] idArray);

	/**
	 * 查找所有待上传到卖家的已结案送货提醒
	 * 
	 * @return
	 */
	public List<PurchaseNotice> findNotSendEnd();

	/**
	 * 已结案送货提醒单成功传到卖家ERP之后
	 * 
	 * @param idArray
	 */
	public void onEndDownSuccess(String[] idArray);

	/**
	 * 买家修改收料通知的数量后，写回到平台
	 * 
	 * @param sendItems
	 */
	public void onSaleSendChange(List<SaleSendItem> sendItems);

    List<SaleSend> findNotUploadSendEDI(Long enUU);

	void send(List<SaleSendItem> sendItems);

}
