using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCS.BLL.DbModels;
using WCS.Model;
using WCS.Model.ApiModel.MatBaseInfo;
using WCS.Model.ApiModel.MatDetailCurrentInfo;
using WCS.Model.ApiModel.Stocktaking;

namespace WCS.BLL.Services.IService
{
    /// <summary>
    /// 盘点模式
    /// </summary>
    public interface IStockTakingService
    {
        public Task<ResponseBase> SysStockTakingOrder(SysStockTakingOrderRequest request);

        public Task<PageQueryResponse<StockTakingOrder>> getStockTakingOrders(GetStockTakingOrdersRequest request);

        public Task<PageQueryResponse<StockTakingOrder>> getStockTakingOrdersByStatus(GetStockTakingOrdersRequest request);

        public Task<ResponseBase> getStockTakingOrderMatDetail(GetStockTakingOrderMatDetailRequest request);

        public Task<ResponseBase> startStockTakingOrder(GetStockTakingOrderMatDetailRequest request);

        public Task<ResponseBase> endStockTakingOrder(GetStockTakingOrderMatDetailRequest request);

        public Task<ResponseBase> queryMatInfoInStocktakingOrder(QueryMatInfoInStocktakingOrderRequest request);


        public Task<ResponseBase> confirmStocktakingOrder(ConfirmStocktakingOrderRequest request);

        public Task<ResponseBase> commitStockTakingOrder(GetStockTakingOrderMatDetailRequest request);


        #region 赛特制冷
        public Task<ResponseCommon> stockTakingById(StockTakingByIdRequest request);

        public Task<PageQueryResponse<MatDetailStocktakingInfoModel>> getStocktakingInfos(GetStocktakingInfosRequest request);

        public Task<PageQueryResponse<MatDetailStocktakingInfoModel>> exportStocktakingInfos(GetStocktakingInfosRequest request);

        public Task<PageQueryResponse<MatDetailCurrentInfoModel>> getStocktakingInfosByShelfCode(GetStocktakingInfosByShelfCodeRequest request);

        public Task<ResponseCommon<object>> updateStocktakingInfo(UpdateStocktakingInfoRequest request);

        public Task<ResponseCommon<object>> deleteStocktakingInfos(DeleteInfosRequest request);

        public Task<ResponseCommon<object>> commitStocktakingInfos(DeleteInfosRequest request);
        #endregion
    }
}
