using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using DeiNiu.Utils;
using System.Data;
namespace DeiNiu.Wcf
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“ILocationService”。
    [ServiceContract]
    public interface IStockLocationService
    {
        //[OperationContract]
        //void setOperId(int operId, string token);
        [OperationContract]
        void addLocations(Structs locs);
        [OperationContract]
        bool updateWhLocations(int[] ids, Structs locs);
        [OperationContract]
        bool updateSizeLocations(int[] ids, Structs locs);
        [OperationContract]
        bool updateLocationStoreType(int[] ids, Structs locs);
        [OperationContract]
        bool updateLocationStatus(int[] ids, int status);
        [OperationContract]
        bool updateLocationTranLines(int[] ids, Structs locs);
        [OperationContract]
        bool updateLocationLabelId(int[] ids, Structs locs);
        [OperationContract]
        DataSet Query(string querystr, int rownumStart, int rownumEnd);
        [OperationContract]
        DataSet QueryNodes(DataTable dic, string query, int rownumStart, int rownumEnd);
        [OperationContract]
        DataTable getStockRecord(string orderNo);
        [OperationContract]
        DataSet getStockDiff(string querystr, int rownumStart, int rownumEnd);
        [OperationContract]
        DataTable getWmsStockDetails(string goodsId, int skuId, string extrQuery);
        [OperationContract]
        DataTable getStockFreeLocations(string goodsId, int count);
        [OperationContract]
        void initalSkus(bool isDownOnly,int start);
        [OperationContract]
        void initalErpSaleSku();
        [OperationContract]
        int updateJobCross(int[] ids, bool isCross);
       
        /// 
        /// 更新、新增库存
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        [OperationContract]
        int upDownStockLocation(string locId, string goodsId, int skuId, string batch, string reason, decimal count, int type);
        [OperationContract]
        DataSet getDataWaiting4Maintain(string query, int start, int end);
        /// 
        /// 养护记录
        /// 
        /// 
        /// 
        [OperationContract]
        DataSet getDataMaintainRecords(string query, int start, int end);
        /// 
        /// 临近有效期列表
        /// 
        /// 
        /// 
        [OperationContract]
        DataSet getDataNearValid(int days, int start, int end);
        /// 
        /// 失效药品
        /// 
        /// 
        /// 
        [OperationContract]
        DataSet getDataInvaild(int start, int end);
        /// 
        /// query goods in stock
        /// 
        /// 
        /// 
        /// 
        /// 
        [OperationContract]
        DataSet queryStockGoods(string queryStr, int start, int end);
        /// 
        /// 库存数据汇总
        /// 商品名称、批号、存储类型(合格品,其他)
        /// 
        /// 
        /// 
        /// 
        /// 
        [OperationContract]
        DataSet querySumStockGoods(string queryStr, int start, int end);
        /// 
        /// 不考虑批号库存数据汇总
        /// 
        /// 
        /// 
        /// 
        /// 
        [OperationContract]
        DataSet querySumStockGoodsNoBatch(string querystr, int rownumStart, int rownumEnd);
        /// 
        /// 零库库存查询
        /// 为零库补货参考
        /// 
        /// 
        /// 
        /// 
        /// 
        [OperationContract]
        DataSet queryBulkRep(string queryStr, int start, int end);
        /// 
        /// 创建补库单
        /// 
        /// 
        /// 
        [OperationContract]
        bool createGoodsRepOrder(string[] goodsRep);
        [OperationContract]
        bool updateLocScale(int[] ids, Structs locs);
        [OperationContract]
        bool updateLocationABC(int[] ids, Structs locs);
        [OperationContract]
        bool updateLocationOwner(int[] ids, Structs locs);
        [OperationContract]
        DataTable getLocationsUsedPercent();
        /// 
        /// 空货位信息
        /// 
        /// 
        /// 
        //[OperationContract]
        //DataTable getLocation(string locId);
        //[OperationContract]
        //DataTable getLocation1(string locId);
        [OperationContract]
        DataSet queryStockRecords(string querystr, int rownumStart, int rownumEnd);
        //-----------------------盘点-------------------------------------------------------
        [OperationContract]
        bool createPandianOrder(int panType, bool noticeErp, int createBy, string inputValues, string stockCondition);
        [OperationContract]
        bool startPandianOrder(string orderNo);
        [OperationContract]
        bool stopPandianPick(string orderNo);
        [OperationContract]
        DataSet queryPandianOrders(string queryStr, int start, int end);
        [OperationContract]
        bool delPandianOrder(string orderNo);
        [OperationContract]
        DataSet queryPandianBanlanceDetail(string orderNo, string goodsId, int start, int end);
        [OperationContract]
        DataSet getPandianBanlance(string orderNo, int start, int end);
        [OperationContract]
        DataTable getPandianOrder(string orderNo);
        [OperationContract]
        bool adjustPandianStock(string orderNo, bool isRollBack);
        [OperationContract]
        bool finishPandian(string orderNo);
        [OperationContract]
        void formatLocName();
        [OperationContract]
        DataTable getPandianTargetItem(string orderNo, string locationId);
        [OperationContract]
        DataTable getPandianTargetItems(string orderNo);
        [OperationContract]
        DataSet queryPandianResult(string orderNo, string goodsId, int start, int end);
        [OperationContract]
        DataSet queryPandianResultSum(string orderNo, string goodsId, int start, int end);
        [OperationContract]
       bool canStartNewPandian();
        [OperationContract]
        DataSet queryPlateStock(string querystr, int rownumStart, int rownumEnd);
        [OperationContract]
        DataTable queryPerformanceKPI(string querystr, bool isSum);
        [OperationContract]
        DataTable getElbPartStks(string locationId);
        
    }
        
}