package com.uas.platform.b2b.service;

import com.uas.platform.b2b.erp.model.ProdInOutRefreshPrice;
import com.uas.platform.b2b.model.PurchaseApBill;
import com.uas.platform.b2b.model.PurchaseApBillItem;
import com.uas.platform.b2b.model.SearchFilter;
import com.uas.platform.core.model.PageInfo;
import org.springframework.data.domain.Page;

import java.util.List;

public interface PurchaseApBillService {

	/**
	 * 批量保存、修改客户应付票据单
	 * 
	 * @param changeItems
	 * @return
	 */
	public void save(List<PurchaseApBillItem> apBillItems);

	/**
	 * 获取需要上传（到卖方）的未上传应付票据
	 * 
	 * @return
	 */
	public List<PurchaseApBill> findNotUpload();

	/**
	 * 上传好需要上传的客户不良品入库单后修改单据的上传状态
	 * 
	 * @param idArray
	 */
	public void onUploadSuccess(String[] idArray);
	
	/**
	 * 批量反过账客户应付发票
	 * 
	 * @param changeItems
	 * @return
	 */
	public void nonPosting(List<PurchaseApBill> apBills);
	
	/**
	 * 获取需要上传（到卖方）的已反过账的客户应发发票
	 * @return
	 */
	public List<PurchaseApBill> getNonPosting();

	/**
	 * 删除已上传（到卖方）的反过账客户应付发票
	 * @param idArray
	 */
	public void onNonPostingUploadSuccess(String[] idArray);

	/**
	 * 分页查找客户应付票据，包括明细
	 * 
	 * @param pageInfo
	 * @param keyword
	 *            查找关键字
	 * @return
	 */
	public Page<PurchaseApBill> findAllByPageInfo(PageInfo pageInfo, String keyword, Long fromDate, Long endDate, SearchFilter filter);

	/**
	 * 用不良品入库单ID查找客户应付票据
	 * 
	 * @param id
	 * @return
	 */
	public PurchaseApBill findById(Long id);

	/**
	 * erp批量更新采购验收单的单价，平台需要批量更新关联的应付发票的单价
	 *
	 * @param acceptItems
	 */
	public void refreshPrice(List<ProdInOutRefreshPrice> prodInOuts);
}
