
package com.tmerclub.cloud.product.service;

import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.product.dto.StockChangeReasonDTO;
import com.tmerclub.cloud.product.model.StockChangeReason;
import com.tmerclub.cloud.product.vo.StockChangeReasonVO;

import java.util.List;

/**
 * 出入库原因
 *
 * @author lhd
 * @date 2022-06-22 16:57:27
 */
public interface StockChangeReasonService {

    /**
     * 分页获取出入库原因列表
     * @param pageDTO 分页参数
     * @param stockChangeReasonDTO
     * @return 出入库原因列表分页数据
     */
    PageVO<StockChangeReasonVO> page(PageDTO pageDTO, StockChangeReasonDTO stockChangeReasonDTO);

    /**
     * 根据出入库原因id获取出入库原因
     *
     * @param stockChangeReasonId 出入库原因id
     * @return 出入库原因
     */
    StockChangeReasonVO getByStockChangeReasonId(Long stockChangeReasonId);

    /**
     * 保存出入库原因
     * @param stockChangeReasonDTO 出入库原因
     */
    void save(StockChangeReasonDTO stockChangeReasonDTO);

    /**
     * 更新出入库原因
     * @param stockChangeReason 出入库原因
     */
    void update(StockChangeReason stockChangeReason);

    /**
     * 根据出入库原因id删除出入库原因
     * @param stockChangeReasonId 出入库原因id
     */
    void deleteById(Long stockChangeReasonId);

    /**
     * 改变出入库原因状态
     * @param shopId
     * @param stockChangeReasonId
     * @param status
     */
    void changeStatus(Long shopId, Long stockChangeReasonId, Integer status);

    /**
     * 获取店铺所有的出入库原因
     * @param stockChangeReasonDTO
     * @return
     */
    List<StockChangeReasonVO> list(StockChangeReasonDTO stockChangeReasonDTO);
}
