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.IcAvailableNum;
import com.hzs.common.domain.scm.ic.ext.IcAvailableNumExt;
import com.hzs.common.domain.scm.ic.ext.IcOnHandNumExt;
import com.hzs.scm.ic.param.AvailableNum;

import java.util.List;

/**
 * <p>
 * 可用量 服务类
 * </p>
 *
 * @author hzs
 * @since 2023-12-09
 */
public interface IIcAvailableNumService extends IService<IcAvailableNum> {

    /*
     * @description: 可用量表是新增或修改 可用量表
     * @author: sui q
     * @date: 2023/11/21 16:19
     * @param: null null
     **/
    void mergeIcAvailableNumByIcOnHandNum(List<IcOnHandNumExt> onHandNumList, Long pkMember);

    /*
     * @description: 可用量表是新增或修改 撤销订单，退单时回退可用量
     * @author: sui q
     * @date: 2023/11/21 16:19
     * @param: null null
     **/
    void mergeIcAvailableNumByOrder(SaOrderExt saOrderExt);

    /*
     * @description: 插入新的可用量
     * @author: sui q
     * @date: 2023/12/18 15:50
     * @param: null null
     **/
    void insertIcAvailableNumByParam(AvailableNum availableNum, Long pkMember);

    /*
     * @description: 出库扣减 可用量表
     * @author: sui q
     * @date: 2023/11/21 16:19
     * @param: null null
     **/
    void updateDeductIcAvailableNumByGeneralOut(IcAvailableNum availableNum, Long pkMember);

    /*
     * @description: 更新可用量
     * @author: sui q
     * @date: 2023/12/18 9:28
     * @param: null null
     **/
    void updateDeductIcAvailableNumByList(List<IcAvailableNumExt> availableNumList);

    /*
     * @description: 下单时验证可用量
     * @author: sui q
     * @date: 2023/12/11 10:01
     * @param: null null
     **/
    List<IcAvailableNumExt> queryAvailableNumByProduct(List<IcAvailableNum> availableNumList);

    /*
     * @description: 根据查询条件查询可用量
     * @author: sui q
     * @date: 2023/12/18 15:10
     * @param: null null
     **/
    List<IcAvailableNumExt> queryAvailableNumByCondition(AvailableNum availableNum);
}
