ldj/WcfService1/BLL/lWmsOrderRequest.cs

358 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/// <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;
case enumOrderType.:
type = enumCreateOrderType.selfPickOrder;
break;
case enumOrderType.:
type = enumCreateOrderType.stockInWithNoOrder;
break;
case enumOrderType.:
type = enumCreateOrderType.stockLocationDown;
break;
}
wmsOrder.orderNo = Util.getOrderNo(type, new WmsOrderRequest().getNextSeq(type));
// wmsOrder.venderNo
wmsOrder.orderTypeName = ((enumOrderType)wmsOrder.orderType).ToString();
wmsOrder.venderName = new Erp_bussinessDoc(wmsOrder.venderNo).businessName;
wmsOrder.operater = operId;
return wmsOrder.Add();
}
/// <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;
}
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;
wd.state = 0;
int id= wd.getDbObject().Add();
log.Debug("add orderDetail " + wd.getDbObject());
log.Debug("add orderDetail2 " + new WmsOutDetail(id));
}
return wcfDetails.Length;
}
internal int deleteOrder(string orderNo)
{
int rt = 0;
WmsOrderRequest order = new WmsOrderRequest(orderNo);
if( order.state ==(int)enumOrderStatus.)
rt= getWmsOrderRequest.DeleteOrder(orderNo);
return rt;
}
internal int approveOrder(string orderNo,int operId)
{
int rt = 0;
WmsOrderRequest order = new WmsOrderRequest(orderNo);
DataTable dt= order.getDetail(order.orderNo);
// to create tasks.
using (TransactionScope scope = new TransactionScope())
{
order.state = (int)enumOrderStatus.;
order.approvedBy = this.operId;
order.approveDate = order.getDateTime();
order.Update();
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);
enumStockRecordType recType = Util.getStockRecordType((int)outStoreType);
WmsWave ww = new WmsWave();
ww.waveNo = Util.getOrderNo(enumCreateOrderType.waveOrder, _obj.getNextSeq(enumCreateOrderType.waveOrder)); ;
ww.operater = this.operId;
ww.type = (int)recType;
ww.Add();
string locId = "";
string taskId = Util.getOrderNo(enumCreateOrderType.pickJobNo, _obj.getNextSeq(enumCreateOrderType.pickJobNo));
foreach (DataRow dr in dt.Rows)
{
WmsOrderDetail od = new WmsOrderDetail(dr);
WmsLocation loc = new WmsLocation(od.locationId);
if (order.orderType == (int)enumOrderType.) //无单货位下架,执行时直接减库存 countOut += count 有单移库下架,则走正常拣货流程
{
loc.state = (int)enumStockLocationStatus.;
loc.Update();
}
WmsStock stk = new WmsStock(od.locationId, od.skuId, od.goodsId);
stk.countOuting += od.count;
stk.Update();
// stk.state = (int)enumStockLocationStatus.不可用;
// loc.state = (int)enumStockLocationStatus.不可用;
// loc.Update();
WmsStockRecord sr = new WmsStockRecord(dr);
sr.rectype =(int)recType;
sr.orderDetailId = od.ID;
sr.countOuting = od.count;
sr.count = 0;
sr.description = "";
sr.Add();
WmsOutPickPort wp = new WmsOutPickPort(dr);
wp.jobNo = taskId;
wp.pickOrderNo = order.orderNo;
wp.waveOrder = ww.waveNo;
wp.volType = loc.volType;
wp.tranArea = order.toWhType;
wp.recordId = sr.ID;
wp.recType = (int)recType;
wp.pickDetailId = od.ID;
wp.Add();
locId = od.locationId;
}
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();
scope.Complete();
}
return rt;
}
}
}