package nccloud.api.ic.m4c;

import java.util.List;
import java.util.Map;

import nc.vo.ic.m4c.entity.SaleOutVO;
import nc.vo.pub.BusinessException;

/**
 * 
 * @Description: 销售出库单维护接口
 *   
 * @author: 曹军
 * @date:   2019-5-17 上午9:23:53   
 * @version NCC1909
 */

public interface IAPISaleOutMaintain {

  /**
   * 销售出库单新增保存操作
   * @param vos
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] save(List<Map<String, Object>> paramList) throws BusinessException;

  /**
   * 销售出库单修改操作
   * @param vos
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] update(List<Map<String, Object>> paramList) throws BusinessException;

  /**
   * 销售出库单修改签字操作
   * @param paramList
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] updateAndSign(List<Map<String, Object>> paramList) throws BusinessException;

  /**
   * 销售出库单删除操作
   * @param vos
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] delete(SaleOutVO[] vos) throws BusinessException;

  /**
   * 销售出库单签字操作
   * @param vos
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] sign(SaleOutVO[] vos) throws BusinessException;

  /**
   * 销售出库单取消签字操作
   * @param vos
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] unSign(SaleOutVO[] vos) throws BusinessException;

  /**
   * 根据销售订单生成销售出库单
   * @param vos
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] saveRefSaleOrder(List<Map<String, Object>> paramMapList)
      throws BusinessException;
  /**
   *  根据发货单生成销售出库单
   * @param vos
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] saveRefDelivery (List<Map<String, Object>> paramMapList)
      throws BusinessException;
  /**
   * 参照生成销售出库单
   * @param vos
   * @return
   * @throws BusinessException
   */
  public SaleOutVO[] saveFromRef (List<Map<String, Object>> paramList)
      throws BusinessException;

}
