package com.uas.platform.b2b.service;

import java.util.List;

import org.springframework.data.domain.Page;

import com.uas.platform.b2b.erp.model.PurchaseNotify;
import com.uas.platform.b2b.model.PurchaseNotice;
import com.uas.platform.b2b.model.SaleSend;
import com.uas.platform.b2b.model.SaleSendItem;
import com.uas.platform.core.model.PageInfo;

public interface PurchaseNoticeService {

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

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

	/**
	 * 分页查找送货提醒单
	 * 
	 * @param pageInfo
	 * @return
	 */
	public Page<PurchaseNotice> findAllByPageInfo(PageInfo pageInfo);
	
	/**
	 * 分页查找送货提醒单
	 * 
	 * @param pageInfo
	 * @return
	 */
	public Page<PurchaseNotice> findDoneByPageInfo(PageInfo pageInfo);

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

	/**
	 * 针对送货提醒，填写数量单个发货
	 * 
	 * @param noticeId
	 *            送货提醒ID
	 * @param send
	 *            本次发货
	 */
	public void send(Long noticeId, SaleSend send);
	
	/**
	 * 批量发货
	 * 
	 * @param sendItems
	 */
	public void send(List<SaleSendItem> sendItems);

	/**
	 * 查找送货提醒单的发货记录
	 * 
	 * @param noticeId
	 * @return
	 */
	public List<SaleSendItem> findSendById(long noticeId);

	/**
	 * 查找所有待上传到供应商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);

	/**
	 * 获取待发货的客户送货提醒单条数
	 * 
	 * @return
	 */
	public int getOnhandCount();

}
