package com.uas.platform.b2b.service;

import java.util.List;

import org.springframework.data.domain.Page;

import com.uas.platform.b2b.erp.model.SaleDownChangeReply;
import com.uas.platform.b2b.model.PurchaseOrderChange;
import com.uas.platform.b2b.model.PurchaseOrderChangeItem;
import com.uas.platform.core.model.PageInfo;

public interface PurchaseOrderChangeService {

	/**
	 * 批量保存、修改采购订单变更单
	 * 
	 * @param changeItems
	 * @return
	 */
	public void save(List<PurchaseOrderChangeItem> changeItems);

	/**
	 * 已回复，未上传到买家ERP的变更单回复信息
	 * 
	 * @return
	 */
	public List<PurchaseOrderChange> findNotUploadReply();

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

	/**
	 * 查找所有待上传到供应商ERP的变更单
	 * 
	 * @return
	 */
	public List<PurchaseOrderChange> findNotUploadOrderChange();

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

	/**
	 * 来自供应商ERP端的批量回复
	 * 
	 * @param replies
	 */
	public void reply(List<SaleDownChangeReply> replies);

	/**
	 * 查找所有在平台回复的，待上传到卖家ERP的回复记录
	 * 
	 * @return
	 */
	public List<PurchaseOrderChange> findNotSendReply();

	/**
	 * 平台的变更单回复传到供应商ERP之后，修改平台里面的变更单的回复信息上传状态
	 * 
	 * @param idArray
	 */
	public void onSaleDownChangeReplySuccess(String[] idArray);

	/**
	 * 分页查找变更单，包括明细
	 * 
	 * @param pageInfo
	 * @return
	 */
	public Page<PurchaseOrderChange> findAllByPageInfo(PageInfo pageInfo);

	/**
	 * 回复单个明细
	 * 
	 * @param reply
	 */
	public void reply(PurchaseOrderChange change);

	/**
	 * 用变更单ID查找变更单
	 * 
	 * @param id
	 * @return
	 */
	public PurchaseOrderChange findById(Long id);
	
	/**
	 * 获取待回复的客户变更单条数
	 * 
	 * @return
	 */
	public int getOnhandCount();

}
