/// ///LOGIC CLASS FOR TABLE t_wmsStockPandian ///By wm with codesmith. ///on 07/27/2018 /// using System; using System.Collections.Generic; using System.Linq; using System.Text; using DeiNiu.wms.Data.Model; using System.Data; using System.Transactions; using DeiNiu.Utils; namespace DeiNiu.wms.Logical { [Serializable] public class lWmsStockPandian :lbase { public lWmsStockPandian() { initialize(); } WmsStockPandian _obj; public WmsStockPandian getWmsStockPandian { get { if (_obj == null) { _obj = new WmsStockPandian(); } _obj.operater = operId; return _obj; } } WmsStockPandianResult _pandianItem; public WmsStockPandianResult getWmsStockPandianResult { get { if (_pandianItem == null) { _pandianItem = new WmsStockPandianResult(); } _pandianItem.operater = operId; return _pandianItem; } } public lWmsStockPandian(int operId) : base(operId) { initialize(); } /// /// get all data /// public DataSet getAllData() { return _obj.Query(); } /// /// get all data /// public DataSet getAllActiveData() { return _obj.QueryActived(); } /// /// get a record by id /// public void initialize(int id) { _obj = id != 0 ? new WmsStockPandian(id) : new WmsStockPandian(); _obj.operater = operId; } /// /// get a record by id 0 /// public void initialize() { initialize(0); } /// /// get a record by id /// public void initialize(DataRow dr) { _obj = new WmsStockPandian(dr); _obj.operater = operId; } protected override DeiNiu.Data.BaseObject.BaseModel getModel() { return _obj; } //begin cust db operation, query, excute sql etc. /// /// update in a transaction scrop /// public void update() { if (valid()) { using (TransactionScope scope = new TransactionScope()) { //Node tmp = new Node(); //tmp.parentid = 1; //tmp.name = "test trans" + DateTime.Now; //tmp.description = "this is for transTest"; //tmp.Add(); _obj.Update(); scope.Complete(); } } } private bool valid() { return true; } public void createPanOrder(int panType,int createBy,string inputValues, string stockCondition) { WmsStockPandian pandian = new WmsStockPandian(); pandian.orderNo = Utils.Util.getOrderNo(Utils.enumCreateOrderType.pandianOrder,pandian.getNextSeq(enumCreateOrderType.pandianOrder)); pandian.condition = stockCondition; pandian.createby = createBy; pandian.operater = operId; pandian.type = panType; pandian.inputValus = inputValues; pandian.Add(); } public bool startPandian(string orderNo) { WmsStockPandian pandian = new WmsStockPandian(orderNo); if (pandian.ID > 0 && pandian.status ==(int) enumPandianStatus.未开始) { } else { return false; } using (TransactionScope scope = new TransactionScope()) { pandian.status = (int)enumPandianStatus.已开始; pandian.createDetailMirror(); pandian.startTime = pandian.getDateTime(); pandian.Update(); scope.Complete(); } return true; } public bool delPandian(string orderNo) { WmsStockPandian pandian = new WmsStockPandian(orderNo); if (pandian.ID > 0 && pandian.status == (int)enumPandianStatus.未开始) { } else { return false; } return pandian.Delete() >0; } public bool finishPandian(string orderNo) { WmsStockPandian pandian = new WmsStockPandian(orderNo); pandian.operater = operId; pandian.status = (int)enumPandianStatus.结束; pandian.endTime = pandian.getDateTime(); bool ret = true; using (TransactionScope scope = new TransactionScope()) { ret= pandian.Update()>0; ret =ret && pandian.finishPandian(orderNo, pandian.condition); scope.Complete(); } return ret; } internal bool adjustPandianStock(string orderNo, bool isRollBack) { WmsStockPandianAdjust wpa; WmsStock wstk; decimal factor = isRollBack ? 1 : -1 ; DataTable dt = getWmsStockPandian.getPandianBanlanceDetail(orderNo); WmsStockPandian wsp = new WmsStockPandian(orderNo); wsp.adjustStatus =isRollBack ?(int)enumPandianAdjustStatus.未调整 : (int)enumPandianAdjustStatus.已调整; wsp.operater = operId; using (TransactionScope scope = new TransactionScope()) { wsp.Update(); if (isRollBack) { getWmsStockPandian.deleteAdjust(orderNo); } foreach (DataRow dr in dt.Rows) { WmsStockRecord r = new WmsStockRecord(); wpa = new WmsStockPandianAdjust(dr); wpa.operater = operId; r.count = wpa.count; //删除旧库存记录 wstk = new WmsStock( wpa.locationId,wpa.skuId); wstk.Delete(); if (!isRollBack) { r.description = "盘点调整"; wpa.Add(); if (wpa.data == 0) //盘亏 { r.count = r.count * -1; //减库存 } else { wstk = new WmsStock(dr); wstk.Add(); } } else //回退 { r.description = "回退调整"; if (wpa.data == 1)//盘赢 { r.count = r.count * -1;//减库存 } else { wstk = new WmsStock(dr); wstk.operater = operId; wstk.Add(); } } r.goodsId = wpa.goodsId.Trim(); r.locationId = wpa.locationId.Trim(); r.productDate = wpa.productDate; r.validDate = wpa.validDate; r.orderNo = wpa.orderNo.Trim(); r.rectype = (int)enumStockRecordType.盘点调整; r.operater = this.operId; r.Add(); } scope.Complete(); } return true; } internal bool newPandianItem(string orderNo, string locationId, int skuId,string barcode,string prdDate, string batch, decimal count) { WmsStockPandianResult wr; if (skuId == 0)//get skuid { string dtValid = prdDate; WmsGoods wg = new WmsGoods(); DataTable dt = wg.getGoodsBybarcod(barcode); if (dt.Rows.Count > 0) { wg = new WmsGoods(dt.Rows[0]); wg = new WmsGoods(wg.goodsId); DateTime dtprd = Util.pareseDateString(prdDate); dtValid = dtprd.AddDays(wg.expiryDays).ToShortDateString(); Dictionary skuValues = new Dictionary(); skuValues[WmsConstants.SKU_RESEVRED_BATCH_ATTNAME] = batch; skuValues[WmsConstants.SKU_RESEVRED_EXPIREDATE_ATTNAME] = dtValid; skuValues[WmsConstants.SKU_RESEVRED_PRDDATE_ATTNAME] = dtprd.ToShortDateString(); Dictionary dic = new lLot().getSKU(skuValues, wg.goodsId); foreach (int i in dic.Keys) { skuId = i; break; } wr = new WmsStockPandianResult(orderNo, locationId,skuId); wr.goodsId = wg.goodsId; wr.validDate = dtValid; wr.batch = batch; wr.productDate = prdDate; } else { return false; } } else { wr = new WmsStockPandianResult(orderNo, locationId, skuId); } wr.orderNo = orderNo; wr.locationId = locationId.ToUpper(); wr.skuId = skuId; wr.avCount = count; wr.operater = operId; if (wr.ID > 0) { return wr.Update() > 0; } else return wr.Add() >0; } internal DataTable getPandianItem(string orderNo, string locationId) { return getWmsStockPandianResult.getPandianItem(orderNo,locationId); } } }