using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using WMS.Model.Stock;
using WMS.IData;
using WMS.Common;
using WMS.Model.Base;
namespace WMS.Business.Stock
{
public class BussAdjustList : IBussFactory
{
#region 查询库存调整单信息
///
/// 查询库存调整单
///
///
/// 实体集合
public List GetAdjustList(AdjustListModel model)
{
DataTable dt = DataProvider.Instance.AdjustList.GetAdjustList(model);
List list = ConvertHelper.ConvertToList(dt);
return list;
}
#endregion
#region 新增或修改
///
/// 新增或修改
///
/// mode 实体
/// 工作标志 flg 0 新增,1 修改
public string ExecInsertUpdate(AdjustListModel mode, int flg)
{
Transaction = DataProvider.Instance.TranOracle;
if (flg == 0)
{
DataProvider.Instance.AdjustList.ExecListAdd(mode);
}
else
{
DataProvider.Instance.AdjustList.ExecListUpdate(mode);
}
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
#endregion
#region 新增或修改(主表明细表同一个事务)
///
/// 新增或修改
///
/// 主表
/// 明细实体集合
/// 操作标志 0 新增,1 修改
///
public string InsertUpdate(AdjustListModel mode, List list, int flg,ref string listId)
{
if (flg == 0)//新增
{
#region 盘点单Status改成已调整
//获取流水号
if (mode.List_reason == "0" && !string.IsNullOrEmpty(mode.Count_id))
{
CountingModel countModel = new CountingModel();
countModel.COUNT_ID = mode.Count_id;
countModel.COUNT_STATUS = "5";
DataProvider.Instance.Counting.Update(countModel);
}
#endregion
Transaction = DataProvider.Instance.TranOracle;
// DataProvider.Instance.Message.Add(messModel);
foreach (AdjustListInfoModel model in list)
{
model.LIST_ID = listId;
DataProvider.Instance.AdjustListInfo.ExecListAdd(model);
}
}
else//修改
{
//先删除之前的表
AdjustListInfoModel mode_info = new AdjustListInfoModel();
mode_info.LIST_ID = mode.List_id;
DataProvider.Instance.AdjustListInfo.DelList(mode_info);
Transaction = DataProvider.Instance.TranOracle;
//修改主表和插入新的明细
DataProvider.Instance.AdjustList.ExecListUpdate(mode);
foreach (AdjustListInfoModel model in list)
{
DataProvider.Instance.AdjustListInfo.ExecListAdd(model);
}
}
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
#endregion
#region 库存调整单审核
///
/// 库存调整单审核
///
///
///
///
public string Check(AdjustListModel adListmodel, string userID)
{
Transaction = DataProvider.Instance.TranOracle;
DateTime dt_now = System.DateTime.Now.Date;
#region 修改库存调整单状态
adListmodel.Status = "2";
adListmodel.List_checkdate = dt_now;
adListmodel.List_checkper = userID;
DataProvider.Instance.AdjustList.Check(adListmodel);
#endregion
//查出调整单明细
AdjustListInfoModel adinfo_model = new AdjustListInfoModel();
adinfo_model.LIST_ID = adListmodel.List_id;
List adinfo_list = ConvertHelper.ConvertToList(DataProvider.Instance.AdjustListInfo.GetAdjustList(adinfo_model));
//库存实体、库位实体、商品实体
MIStockModel stoc = new MIStockModel();
StorageAreaLocationModel stoc_loc = new StorageAreaLocationModel();
GoodsInfoModel goods = new GoodsInfoModel();
foreach (AdjustListInfoModel _ad_info in adinfo_list)
{
//调整数量为0 的过滤
if (_ad_info.LIST_INFO_COUNT == 0)
{
continue;
}
#region 修改库存
stoc = new MIStockModel();
stoc.STORAGE_ID = _ad_info.Storage_id;
stoc.AREA_ID = _ad_info.Area_id;
stoc.LOCATION_ID = _ad_info.LOC_ID;
stoc.GOODS_ID = _ad_info.LIST_INFO_GOODSID;
stoc.PROVIDER_NAME = _ad_info.PUTIN_ID;
//查询库存实体
DataTable dt_Stock = DataProvider.Instance.MIStock.GetMIStockDT(stoc);
stoc = ConvertHelper.ConvertToList(dt_Stock)[0];
//修改库存数量
stoc.SHELVES_NUM = _ad_info.NEWCOUNT;
DataProvider.Instance.MIStock.UpdateMIStock(stoc);
#endregion
#region 插入库存日志
MIStockBackModel back_model = new MIStockBackModel();
back_model.ID = DataProvider.Instance.MIStockBack.GetSerialNum();
back_model.STOCK_ID = stoc.STOCK_ID;
back_model.STORAGE_ID = _ad_info.Storage_id;
back_model.AREA_ID = _ad_info.Area_id;
back_model.LOCATION_ID = _ad_info.LOC_ID;
back_model.GOODS_TYPEID = _ad_info.Goods_typeid;
back_model.GOODS_ID = _ad_info.LIST_INFO_GOODSID;
back_model.ORI_NUM = _ad_info.Oldcount;
back_model.CHANGE_NUM = _ad_info.NEWCOUNT;//改变后数量
back_model.GOODS_NUM = _ad_info.LIST_INFO_COUNT;
back_model.OPERATOR_DATE = dt_now;
back_model.OPERATOR_MAN = userID;
back_model.PRODUCTION_DATE = _ad_info.Production_date;
back_model.OPERATOR_TYPE = "2";//库存调整
back_model.REMARK = "库存调整";
DataProvider.Instance.MIStockBack.AddBMiStockack(back_model);
#endregion
#region 修改库位占用面积
//查询商品单位体积
Decimal goods_Volume = Convert.ToDecimal(DataProvider.Instance.Goods.GetGoodsDataTable(_ad_info.LIST_INFO_GOODSID, "", "", "").Rows[0]["GVOLUME"].ToString());
stoc_loc = new StorageAreaLocationModel();
stoc_loc.STORAGE_ID = back_model.STORAGE_ID;
stoc_loc.STORAGE_AREA_ID = back_model.AREA_ID;
stoc_loc.LOCATION_ID = back_model.LOCATION_ID;
stoc_loc.HASVOLUME = back_model.CHANGE_NUM * goods_Volume;
DataProvider.Instance.StorageAreaLocation.UpdateLocHasVolume(stoc_loc);
#endregion
}
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
#endregion
#region 删除库存调整单
///
/// 删除库存调整单(明细一起删除掉)
///
/// model 实体
/// 影响行数
public string DelList(AdjustListModel model)
{
Transaction = DataProvider.Instance.TranOracle;
DataProvider.Instance.AdjustList.DelList(model);
//删除明细
AdjustListInfoModel info_model = new AdjustListInfoModel();
info_model.LIST_ID = model.List_id;
//主表
DataProvider.Instance.AdjustListInfo.DelList(info_model);
logList.Add(DataProvider.Instance.logData);
TaCmtOrRak();
return this.ErrText;
}
#endregion
}
}