package com.hzs.scm.ic.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.scm.ic.IcOnHandNum;
import com.hzs.common.domain.scm.ic.ext.IcOnHandNumExt;
import com.hzs.common.domain.scm.sale.ext.IcSaleoutHExt;
import com.hzs.scm.ic.param.OnHandNumParam;

import java.util.List;

/**
 * <p>
 * 现存量 服务类
 * </p>
 *
 * @author hzs
 * @since 2023-11-21
 */
public interface IIcOnHandNumService extends IService<IcOnHandNum> {

    /*
     * @description: 入库单生成新的现存量记录，入库类，新增
     * @author: sui q
     * @date: 2023/11/21 16:19
     * @param: null null
     **/
    void mergeIcOnHandNumByGeneralIn(Object generalHvo, List<?> generalBvoList, Integer orderType, Long pkMember);

    /*
     * @description: 出库单生成新的现存量记录，出口类，按照先进先出进行扣减,出库是提交签呈进行扣减，驳回回退库存
     * @author: sui q
     * @date: 2023/11/21 16:19
     * @param: null null
     **/
    void mergeIcOnHandNumByGeneralOut(Object generalHvo, List<?> generalBvoList, Integer orderType, Long pkMember);

    /*
     * @description: 出库单签呈驳回，回复数量
     * @author: sui q
     * @date: 2023/11/29 9:51
     * @param: null null
     **/
    void backIcOnHandNumByGeneralOut(Object generalHvo, List<?> generalBvoList, Integer orderType, Long pkMember);

    /*
     * @description: 销售出库单出库按照先进先出的模式自动出库
     * @author: sui q
     * @date: 2023/11/21 16:19
     * @param: null null
     **/
    void mergeIcOnHandNumByGeneralOut(IcSaleoutHExt icSaleOutExt, Integer orderType, Long pkMember);

    /*
     * @description: 店铺出库,公司发给店铺按照先进先出的模式自动出库
     * @author: sui q
     * @date: 2023/11/21 16:19
     * @param: null null
     **/
    Boolean mergeIcOnHandNumByStoreOut(SaOrderExt saOrderExt, Integer orderType, Long pkMember);

    /*
     * @description: 查询现存量，用于现存量查询，盘点参照使用
     * @author: sui q
     * @date: 2023/12/20 13:50
     * @param: null null
     **/
    List<IcOnHandNumExt> queryInventoryProductByParam(OnHandNumParam onHandNumParam);

    /*
     * @description: 根据主键批量查询现存量
     * @author: sui q
     * @date: 2023/12/21 10:18
     * @param: null null
     **/
    List<IcOnHandNumExt> queryOnHandNumByList(List<Long> idList);
}
