ldj/WcfService1/BLL/lWmsOrderRequest.cs

358 lines
11 KiB
C#
Raw Normal View History

2023-05-23 16:13:17 +08:00

/// <summary>
///LOGIC CLASS FOR TABLE t_wmsOrderRequest
///By wm with codesmith.
///on 07/07/2020
/// </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.Wcf;
using DeiNiu.Utils;
namespace DeiNiu.wms.Logical
{
[Serializable]
public class lWmsOrderRequest :lbase
{
WmsOrderRequest _obj;
public lWmsOrderRequest()
{
initialize();
}
public WmsOrderRequest getWmsOrderRequest
{
get
{
if (_obj == null)
{
_obj = new WmsOrderRequest();
}
_obj.operater = operId;
return _obj;
}
}
public lWmsOrderRequest(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 WmsOrderRequest(id) : new WmsOrderRequest();
}
/// <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 WmsOrderRequest(dr);
}
protected override DeiNiu.Data.BaseObject.BaseModel getModel()
{
return _obj;
}
//begin cust db operation, query, excute sql etc.
internal int add(WmsOrderRequest wmsOrder)
{
enumCreateOrderType type = enumCreateOrderType.obsolete;
// enumWhType toWhtype = enumWhType.报废库;
switch ((enumOrderType)wmsOrder.orderType)
{
case enumOrderType.:
type = enumCreateOrderType.obsolete;
// toWhtype = enumWhType.报废库;
break;
case enumOrderType.:
type = enumCreateOrderType.transferInternal;
break;
case enumOrderType.:
type = enumCreateOrderType.transferOutside;
break;
case enumOrderType.退:
type = enumCreateOrderType.returnVender;
break;
2023-11-21 19:18:23 +08:00
case enumOrderType.:
type = enumCreateOrderType.selfPickOrder;
break;
case enumOrderType.:
type = enumCreateOrderType.stockInWithNoOrder;
2023-12-03 22:13:49 +08:00
break;
case enumOrderType.:
type = enumCreateOrderType.stockLocationDown;
2023-11-21 19:18:23 +08:00
break;
2023-05-23 16:13:17 +08:00
}
wmsOrder.orderNo = Util.getOrderNo(type, new WmsOrderRequest().getNextSeq(type));
2023-09-04 22:41:19 +08:00
// wmsOrder.venderNo
wmsOrder.orderTypeName = ((enumOrderType)wmsOrder.orderType).ToString();
wmsOrder.venderName = new Erp_bussinessDoc(wmsOrder.venderNo).businessName;
2023-11-21 19:18:23 +08:00
wmsOrder.operater = operId;
2023-05-23 16:13:17 +08:00
return wmsOrder.Add();
}
2023-09-04 22:41:19 +08:00
/// <summary
2023-05-23 16:13:17 +08:00
/// 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;
}
internal DataTable getDetail(string orderNo)
{
return getWmsOrderRequest.getDetail(orderNo);
}
internal int addDetail( enumOrderType orderType,Wcf.WcfWmsOrderDetail[] wcfDetails)
{
/*
enumWhType whType = enumWhType., toWhType = enumWhType.;
if (wcfDetails.Length > 0)
{
switch (orderType)
{
case enumOrderType.:
whType = enumWhType.;
toWhType = enumWhType.;
break;
case enumOrderType.:
whType = enumWhType.;
toWhType = enumWhType.;
break;
}
}
*/
foreach (WcfWmsOrderDetail wd in wcfDetails)
{
// wd.whtype = (int)whType;
// wd.toWhType =(int) toWhType;
2023-12-03 22:13:49 +08:00
2023-05-23 16:13:17 +08:00
wd.state = 0;
2023-11-21 19:18:23 +08:00
int id= wd.getDbObject().Add();
log.Debug("add orderDetail " + wd.getDbObject());
log.Debug("add orderDetail2 " + new WmsOutDetail(id));
}
2023-05-23 16:13:17 +08:00
return wcfDetails.Length;
}
internal int deleteOrder(string orderNo)
{
int rt = 0;
WmsOrderRequest order = new WmsOrderRequest(orderNo);
2023-11-21 19:18:23 +08:00
if( order.state ==(int)enumOrderStatus.)
2023-05-23 16:13:17 +08:00
rt= getWmsOrderRequest.DeleteOrder(orderNo);
return rt;
}
internal int approveOrder(string orderNo,int operId)
{
int rt = 0;
2023-11-21 19:18:23 +08:00
WmsOrderRequest order = new WmsOrderRequest(orderNo);
DataTable dt= order.getDetail(order.orderNo);
2023-05-23 16:13:17 +08:00
// to create tasks.
using (TransactionScope scope = new TransactionScope())
{
order.state = (int)enumOrderStatus.;
2023-11-21 19:18:23 +08:00
order.approvedBy = this.operId;
2023-05-23 16:13:17 +08:00
order.approveDate = order.getDateTime();
order.Update();
2023-11-21 19:18:23 +08:00
if (order.orderType == (int)enumOrderType.) //无单入库则生成入库通知单
{
Erp_purch purch = new Erp_purch();
purch.pur_order = orderNo;
purch.orderType = order.orderType;
purch.order_typeName = ((enumOrderType)order.orderType).ToString();
purch.vender = order.requestBy + "";
purch.venderName = WmsConstants.CURRENT_USER_ORG;
purch.orgid= WmsConstants.CURRENT_USER_ORGID;
purch.entid= WmsConstants.CURRENT_USER_ORGID;
int i = 0;
foreach (DataRow dr in dt.Rows)
{
WmsOrderDetail od = new WmsOrderDetail(dr);
Erp_purch_d pd = new Erp_purch_d();
pd.pur_order = orderNo;
pd.pur_order_sn = ++i;
pd.goods_id = od.goodsId;
pd.count = od.count;
pd.add_date = pd.getDateTime();
pd.entid = WmsConstants.CURRENT_USER_ORGID;
pd.Add();
}
purch.Add();
scope.Complete();
return rt;
}
enumOutStoreType outStoreType =Util.getOutStoreTypeByOrderType( order.orderType);
2023-05-23 16:13:17 +08:00
enumStockRecordType recType = Util.getStockRecordType((int)outStoreType);
WmsWave ww = new WmsWave();
ww.waveNo = Util.getOrderNo(enumCreateOrderType.waveOrder, _obj.getNextSeq(enumCreateOrderType.waveOrder)); ;
ww.operater = this.operId;
2023-11-21 19:18:23 +08:00
ww.type = (int)recType;
2023-05-23 16:13:17 +08:00
ww.Add();
2023-11-21 19:18:23 +08:00
string locId = "";
string taskId = Util.getOrderNo(enumCreateOrderType.pickJobNo, _obj.getNextSeq(enumCreateOrderType.pickJobNo));
2023-05-23 16:13:17 +08:00
foreach (DataRow dr in dt.Rows)
{
WmsOrderDetail od = new WmsOrderDetail(dr);
WmsLocation loc = new WmsLocation(od.locationId);
2023-12-03 22:13:49 +08:00
if (order.orderType == (int)enumOrderType.) //无单货位下架,执行时直接减库存 countOut += count 有单移库下架,则走正常拣货流程
{
loc.state = (int)enumStockLocationStatus.;
loc.Update();
}
WmsStock stk = new WmsStock(od.locationId, od.skuId, od.goodsId);
2023-05-23 16:13:17 +08:00
stk.countOuting += od.count;
2023-12-03 22:13:49 +08:00
stk.Update();
2023-11-21 19:18:23 +08:00
// stk.state = (int)enumStockLocationStatus.不可用;
// loc.state = (int)enumStockLocationStatus.不可用;
2023-12-03 22:13:49 +08:00
2023-11-21 19:18:23 +08:00
// loc.Update();
2023-05-23 16:13:17 +08:00
WmsStockRecord sr = new WmsStockRecord(dr);
sr.rectype =(int)recType;
sr.orderDetailId = od.ID;
sr.countOuting = od.count;
sr.count = 0;
2023-11-21 19:18:23 +08:00
sr.description = "";
2023-05-23 16:13:17 +08:00
sr.Add();
WmsOutPickPort wp = new WmsOutPickPort(dr);
2023-11-21 19:18:23 +08:00
wp.jobNo = taskId;
2023-05-23 16:13:17 +08:00
wp.pickOrderNo = order.orderNo;
wp.waveOrder = ww.waveNo;
wp.volType = loc.volType;
wp.tranArea = order.toWhType;
wp.recordId = sr.ID;
wp.recType = (int)recType;
2023-11-21 19:18:23 +08:00
wp.pickDetailId = od.ID;
wp.Add();
2023-05-23 16:13:17 +08:00
2023-11-21 19:18:23 +08:00
locId = od.locationId;
}
2023-05-23 16:13:17 +08:00
2023-11-21 19:18:23 +08:00
WmsFlow wf = new WmsFlow();
wf.orderNo = order.orderNo;// ww.waveNo;
wf.task = taskId;
wf.type = (int)Util.getTaskType((int)recType); ;
wf.typeName = recType.ToString();
wf.taskCnt = dt.Rows.Count;
wf.taskPartion = new WmsLocation(locId).partion;
wf.Add();
2023-05-23 16:13:17 +08:00
scope.Complete();
}
return rt;
}
}
}