2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
///LOGIC CLASS FOR TABLE t_wmsStockPandian
|
|
|
|
|
///By wm with codesmith.
|
|
|
|
|
///on 07/27/2018
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// get all data
|
|
|
|
|
/// </summary>
|
|
|
|
|
public DataSet getAllData()
|
|
|
|
|
{
|
|
|
|
|
return _obj.Query();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// get all data
|
|
|
|
|
/// </summary>
|
|
|
|
|
public DataSet getAllActiveData()
|
|
|
|
|
{
|
|
|
|
|
return _obj.QueryActived();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// get a record by id
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void initialize(int id)
|
|
|
|
|
{
|
|
|
|
|
_obj = id != 0 ? new WmsStockPandian(id) : new WmsStockPandian();
|
|
|
|
|
_obj.operater = operId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// get a record by id 0
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void initialize()
|
|
|
|
|
{
|
|
|
|
|
initialize(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// get a record by id
|
|
|
|
|
/// </summary>
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// update in a transaction scrop
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
//删除旧库存记录
|
2023-09-04 22:41:19 +08:00
|
|
|
|
wstk = new WmsStock( wpa.locationId,wpa.skuId,wpa.goodsId);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
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<string, string> skuValues = new Dictionary<string, string>();
|
|
|
|
|
skuValues[WmsConstants.SKU_RESEVRED_BATCH_ATTNAME] = batch;
|
|
|
|
|
skuValues[WmsConstants.SKU_RESEVRED_EXPIREDATE_ATTNAME] = dtValid;
|
|
|
|
|
skuValues[WmsConstants.SKU_RESEVRED_PRDDATE_ATTNAME] = dtprd.ToShortDateString();
|
|
|
|
|
|
|
|
|
|
Dictionary<int, string> 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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|