package com.uas.platform.b2b.service;

import java.util.List;

import com.uas.platform.b2b.erp.model.ProdInOutRefreshPrice;
import org.springframework.data.domain.Page;

import com.uas.platform.b2b.model.PurchaseReturn;
import com.uas.platform.b2b.model.PurchaseReturnItem;
import com.uas.platform.b2b.model.SearchFilter;
import com.uas.platform.core.model.PageInfo;

public interface PurchaseReturnService {

	/**
	 * 批量保存、修改客户采购验退单
	 * 
	 * @param returnItems
	 * @return
	 */
	public void save(List<PurchaseReturnItem> returnItems);

	/**
	 * 获取需要上传（到卖方）的未上传采购验退单
	 * 
	 * @return
	 */
	public List<PurchaseReturn> findNotUpload();

	/**
	 * 上传好需要上传的客户采购验退单后修改单据的上传状态
	 * 
	 * @param idArray
	 */
	public void onUploadSuccess(String[] idArray);
	

	/**
	 * 批量反过账客户采购验退单
	 * 
	 * @param changeItems
	 * @return
	 */
	public void nonPosting(List<PurchaseReturn> returns);
	
	/**
	 * 获取需要上传（到卖方）的以反过账的采购验退单
	 * @return
	 */
	public List<PurchaseReturn> getNonPosting();

	/**
	 * 删除已上传（到卖方）的反过账采购验退单
	 * @param idArray
	 */
	public void onNonPostingUploadSuccess(String[] idArray);
	

	/**
	 * 分页查找客户采购验收，包括明细
	 * 
	 * @param pageInfo
	 * @param keyword
	 *            查找关键词
	 * @return
	 */
	public Page<PurchaseReturn> findAllByPageInfo(PageInfo pageInfo, String keyword, SearchFilter filter);

	/**
	 * 用变更单ID查找客户采购验收
	 * 
	 * @param id
	 * @return
	 */
	public PurchaseReturn findById(Long id);

	/**
	 * 批量更新采购验退单单价转换成采购验退单数据
	 *
	 * @param prodInOuts
	 * @return
	 */
	List<PurchaseReturnItem> convertPirceForProdIn(List<ProdInOutRefreshPrice> prodInOuts);
}
