/// ///INTERFACE CLASS FOR TABLE t_wmsStock ///By wm with codesmith. ///on 05/14/2017 /// using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using DeiNiu.Utils; namespace DeiNiu.wms.Data.Model { [Serializable] public class WmsStock : WmsStock_base { public WmsStock() { } public WmsStock(int id): base(id) { } public WmsStock(DataRow dr): base(dr) { } /*public WmsStock(string goodsId, string batch, string locationId) { cmdParameters[0] = goodsId; cmdParameters[1] = batch; cmdParameters[2] = locationId; this._goodsId = goodsId; this._batch = batch; this._locationId = locationId; getModel(100); } * */ public WmsStock( string locationId,int skuId) { cmdParameters[1] = skuId; cmdParameters[0] = locationId; getModel(103); } /* public WmsStock( string locationId) { cmdParameters[0] = locationId; getModel(110); } * */ protected override void getImp() { model_imp = new WmsStock_Imp(); } /// /// query same goods locations,存储整货位只含同品同批的情况 ( VOLTYPE=0 OR STORETYPE =0 ) /// /// /// /// /// /// public DataTable querySameGoodsLocations(string goodsId, int skuId = 0, string batch = "", enumWhType whType = enumWhType.合格库,int recommandWareHouse=0) { if (skuId > 0) { return queryBySku(skuId,whType); } cmdParameters[0] = goodsId; if (!String.IsNullOrEmpty(batch)) { cmdParameters[1] = batch; cmdParameters[2] =(int)whType; return CustQuery(200).Tables[0]; } else { cmdParameters[1] = (int)whType; return CustQuery(203).Tables[0]; } } /// /// //query sharing locations,不包括同品同批的情况 /// /// /// /// /// /// /// public DataTable queryOtherSharingLocations(WmsGoods goods, int volType, int locCnt, enumWhType whType = enumWhType.合格库) { cmdParameters[1] = goods; cmdParameters[3] = volType; cmdParameters[4] = locCnt; cmdParameters[5] = (int)whType; return CustQuery(204).Tables[0]; } public DataTable queryBySku(int skuId, enumWhType whType = enumWhType.合格库) { cmdParameters[0] = skuId; cmdParameters[1] = (int)whType; return CustQuery(2011).Tables[0]; } public DataTable queryBySku(string skuCode, enumWhType whType = enumWhType.合格库) { cmdParameters[0] = skuCode; cmdParameters[1] = (int)whType; return CustQuery(202).Tables[0]; } /// /// 根据商品编号和货位容量类别查询 /// /// /// public DataTable queryByGoodsIdVolType(int skuId,string skuCode,string goodsId, string batch, enumWhLocVol locVolType, enumWhType whType) { if (skuId > 0) { return queryBySkuVolType(skuId, locVolType, whType); } if (!string.IsNullOrEmpty( skuCode)) { return queryBySkuVolType(skuCode, locVolType, whType); } cmdParameters[0] = goodsId; cmdParameters[1] = (int)locVolType; cmdParameters[2] = batch; cmdParameters[3] = (int)whType; return CustQuery(500).Tables[0]; } /// /// 根据商品编号和货位容量类别查询 /// /// /// public DataTable queryBySkuVolType(int skuId, enumWhLocVol locVolType, enumWhType whType) { cmdParameters[0] = skuId; cmdParameters[1] = (int)locVolType; cmdParameters[2] = (int)whType; return CustQuery(501).Tables[0]; } public DataTable queryBySkuVolType(string skuCode, enumWhLocVol locVolType, enumWhType whType) { cmdParameters[0] = skuCode; cmdParameters[1] = (int)locVolType; cmdParameters[2] = (int)whType; return CustQuery(502).Tables[0]; } public DataSet QueryByName(string namelike,enumWhType whType) { cmdParameters[0] = namelike; cmdParameters[1] = (int)whType; return CustQuery(300); } public DataTable getStockRecord(string orderNo) { cmdParameters[0] = orderNo; return CustQuery(400).Tables[0]; } private WmsLocation _location; public WmsLocation location { get { if (_location == null || _location.locationId != _locationId) { _location = new WmsLocation(locationId); } return _location; } } /// /// // 更新库存出库信息,库存扣完,则删除记录 /// /// public int updateCountOut() { if (String.IsNullOrEmpty(plateId)) { if (countIn <= 0 && count - countOut <= 0 && countOuting <= 0) { LogHelper.debug(typeof(WmsStock), string.Format("{0} 库存扣完删除库存记录,countIn: {1} ,count: {2},countOut: {3} ,countIn: {4}", goodsId, countIn, count, countOut, countIn) ); return Delete(); // 库存扣完,删除记录 } else { return base.Update(); } } else //托盘,可能多货品、多批次 { WmsPlateStock wps = new WmsPlateStock(skuId,plateId); if (countIn <= 0 && count - countOut <= 0 && countOuting <= 0) { LogHelper.debug(typeof(WmsStock), string.Format("{0} 库存扣完删除库存记录,countIn: {1} ,count: {2},countOut: {3} ,countIn: {4}", goodsId, countIn, count, countOut, countIn) ); int cnt =wps.Delete(); DataTable dt = wps.getPlateStock(plateId); if (dt.Rows.Count == 0) { wps.clearPlate(plateId); } return cnt; // 库存扣完,删除记录 } else { wps.countOut = countOut; wps.countOuting = countOuting; return wps.Update(); } } //return 0; } /// /// get location data by locid /// for wince /// /// /// public DataTable getStockLocation(string locId) { cmdParameters[0] = locId; return CustQuery(600).Tables[0]; } /// /// stock records /// /// /// public DataTable getStocks(string locId) { cmdParameters[0] = locId; return CustQuery(620).Tables[0]; } public DataSet queryByGoodsBarcode(string barcode) { cmdParameters[0] = barcode; return CustQuery(605); } /// /// get locations by goodsid /// for wince with ch title /// /// /// public DataTable getGoodsStockLocations(string barcode) { cmdParameters[0] = barcode; return CustQuery(605).Tables[0]; // return CustQuery(610).Tables[0]; } /// /// 根据商品比较wms和erp库存 /// /// /// public DataTable getStockLocationCompareErp(string goodsId,string barcode) { cmdParameters[0] = goodsId; cmdParameters[1] = barcode; return CustQuery(700).Tables[0]; } /// /// 已下架商品待上架商品列表 /// /// /// public DataTable getLocationDownList4Up(int operId) { cmdParameters[0] = operId; return CustQuery(800).Tables[0]; } public DataTable getGoodsERPStoreByBarcode(string barcode) { cmdParameters[0] = barcode; return CustQuery(900).Tables[0]; } public int maintainIssue(int skuId ,enumStockLocationStatus state, int operId) { cmdParameters[0] = skuId; cmdParameters[1] = (int)state; cmdParameters[2] = operId; return CustOper(1000) ; } public void recordMaintain(string locId, int operId) { cmdParameters[0] = locId; cmdParameters[1] = operId; CustOper(1100); } /// /// 比较wms erp库存 /// /// /// /// /// public DataSet getStockDiff(string querystr, int rownumStart, int rownumEnd) { if (rownumEnd > rownumStart && rownumStart > 0) { this.rownumStart = rownumStart; this.rownumEnd = rownumEnd; } // DataSet ds = string.IsNullOrEmpty(querystr) ? _obj.Query() : _obj.Query(querystr); if (string.IsNullOrEmpty(querystr)) { cmdParameters[0] = querystr; return CustQuery(199) ; } cmdParameters[0] = getCondition(querystr); return CustQuery(199) ; } public DataTable getWmsStockDetails(int skuId,string extrQuery) { cmdParameters[0] = skuId; cmdParameters[1] = getCondition(extrQuery); return CustQuery(1200).Tables[0]; } public DataTable getFreeStockLocations(string goodsId, int count) { cmdParameters[0] = goodsId; cmdParameters[1] = count; return CustQuery(1300).Tables[0]; } /// /// 库存汇总 /// sum by goodsId, batch /// /// /// public DataSet QuerySum(string querystr, int rownumStart, int rownumEnd) { cmdParameters[0] = getCondition(querystr, rownumStart, rownumEnd); return CustQuery(101) ; } /// /// 库存汇总 /// sum by goodsId /// /// /// public DataSet QuerySumNoBatch(string querystr, int rownumStart, int rownumEnd) { cmdParameters[0] = getCondition(querystr, rownumStart, rownumEnd); return CustQuery(98); } /// /// 零库查询,补货参考 /// /// /// public DataSet QueryBulkRep(string querystr, int rownumStart, int rownumEnd) { cmdParameters[0] = getCondition(querystr, rownumStart, rownumEnd); return CustQuery(102); } /// /// 查询库存变动记录 /// /// /// /// /// public DataSet queryStockRecords(string querystr, int rownumStart, int rownumEnd) { cmdParameters[0] = getCondition(querystr, rownumStart, rownumEnd); return CustQuery(1400); } public DataTable getStockInfo(string goodsId,int skuId=0,string batch="", enumWhType whType = enumWhType.合格库) { // Sku sku = skuId > 0 ? new Sku(skuId) : new Sku(skuCode); // int SKUID = sku.ID; cmdParameters[0] = goodsId; cmdParameters[1] = skuId;// batch; cmdParameters[2] = batch;// batch; cmdParameters[3] = (int)whType; return CustQuery(401).Tables[0]; } public decimal getUsedPercent(string locationId) { /* WmsStock stock; WmsGoods goods; decimal maxcnt = 0; decimal percent=0; Wmslocation loc = new Wmslocation(locationId); DataTable dt = getStocks(locationId); foreach (DataRow dr in dt.Rows) { stock = new WmsStock(dr); goods = new WmsGoods(stock.goodsId); decimal cnt = stock.count - stock.countOut + stock.countIn;//- stock.countOuting; //see v_stockGoods (dbo.v_stockGoodsBasic.countIn + dbo.v_stockGoodsBasic.countOut + dbo.v_stockGoodsBasic.count) / dbo.v_stockGoodsBasic.maxCount AS usedPercent, maxcnt = goods.getMaxCount(loc.volType); maxcnt = maxcnt > 0 ? maxcnt : 1; percent += cnt / maxcnt; }*/ cmdParameters[0] = locationId; DataTable dt = CustQuery(1500).Tables[0]; try { if (dt.Rows.Count > 0) { return Convert.ToDecimal(dt.Rows[0][0].ToString()); } } catch { } return 0; } public List getStockObjs(string locationId) { DataTable dt = getStocks(locationId); List lst = new List(); foreach (DataRow dr in dt.Rows) { lst.Add(new WmsStock(dr)); } return lst; } } }