调整物料和仓位编码
This commit is contained in:
Binary file not shown.
@@ -33,10 +33,14 @@ namespace WMS.Web.Core.Dto.Erp.OutStock
|
||||
/// 对应金蝶单据明细id(销售出库同步金蝶下推使用)
|
||||
/// </summary>
|
||||
public int Erp_DetailId { get; set; } = 0;
|
||||
///// <summary>
|
||||
///// 物料Id
|
||||
/////</summary>
|
||||
//public int MaterialId { get; set; }
|
||||
/// <summary>
|
||||
/// 物料Id
|
||||
/// 物料编码
|
||||
///</summary>
|
||||
public int MaterialId { get; set; }
|
||||
public string MaterialNumber { get; set; }
|
||||
/// <summary>
|
||||
/// 仓库ID
|
||||
///</summary>
|
||||
|
||||
@@ -172,7 +172,7 @@ namespace WMS.Web.Domain.Entitys
|
||||
foreach (var d in detailClone)
|
||||
{
|
||||
//如果箱信息存在 箱库存不存在 删除箱信息数据
|
||||
var inventoryDetail = inventory.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId);
|
||||
var inventoryDetail = inventory.Details.FirstOrDefault(f => f.MaterialNumber == d.MaterialNumber);
|
||||
if (inventoryDetail == null)
|
||||
{
|
||||
var boxDetail = this.Details.FirstOrDefault(f => f.Id == d.Id);
|
||||
@@ -182,9 +182,9 @@ namespace WMS.Web.Domain.Entitys
|
||||
//箱库存存在 箱信息不存在 添加
|
||||
foreach (var d in inventory.Details)
|
||||
{
|
||||
var md = this.Details.FirstOrDefault(w => w.MaterialId == d.MaterialId);
|
||||
var md = this.Details.FirstOrDefault(w => w.MaterialNumber == d.MaterialNumber);
|
||||
if (md == null)
|
||||
this.Details.Add(new BoxDetails() { MaterialId = d.MaterialId, Qty = d.Qty });
|
||||
this.Details.Add(new BoxDetails() { MaterialNumber = d.MaterialNumber, Qty = d.Qty });
|
||||
else
|
||||
md.Qty = d.Qty;
|
||||
}
|
||||
|
||||
@@ -89,14 +89,14 @@ namespace WMS.Web.Domain.Entitys
|
||||
/// 创建
|
||||
/// </summary>
|
||||
/// <param name="creatorId"></param>
|
||||
public void Create(MoveBoxType type, int boxId,decimal qty, string orgCode, string stockCode, int subStockId, int creatorId,string subStockCode)
|
||||
public void Create(MoveBoxType type, int boxId,decimal qty, string orgCode, string stockCode, int creatorId,string subStockCode)
|
||||
{
|
||||
this.BoxId = boxId;
|
||||
this.Type = type;
|
||||
this.OrgCode = orgCode;
|
||||
this.StockCode = stockCode;
|
||||
SrcSubStockId = type == MoveBoxType.Up ? 0 : subStockId;//上架 原仓位是0 目标仓位有值
|
||||
DestSubStockId = type == MoveBoxType.Up ? subStockId : 0; //下架 原仓位有值 目标仓位是0
|
||||
//SrcSubStockId = type == MoveBoxType.Up ? 0 : subStockId;//上架 原仓位是0 目标仓位有值
|
||||
//DestSubStockId = type == MoveBoxType.Up ? subStockId : 0; //下架 原仓位有值 目标仓位是0
|
||||
SrcSubStockCode = type == MoveBoxType.Up ? "" : subStockCode;//上架 原仓位是0 目标仓位有值
|
||||
DestSubStockCode = type == MoveBoxType.Up ? subStockCode : ""; //下架 原仓位有值 目标仓位是0
|
||||
this.Qty = qty;
|
||||
|
||||
@@ -99,17 +99,17 @@ namespace WMS.Web.Domain.Entitys
|
||||
/// <summary>
|
||||
/// 出库 反写 任务单(返回 这个物料下面的来源单号出了多少数量)
|
||||
/// </summary>
|
||||
/// <param name="materialId"></param>
|
||||
/// <param name="materialNumber"></param>
|
||||
/// <param name="qty"></param>
|
||||
/// <returns></returns>
|
||||
public Result<List<(int erpDetailId, decimal qty)>> OutStock(int materialId, decimal qty, int outStockId)
|
||||
public Result<List<(int erpDetailId, decimal qty)>> OutStock(string materialNumber, decimal qty, int outStockId)
|
||||
{
|
||||
if (this.Status == OutStockStatus.Already)
|
||||
return Result<List<(int erpDetailId, decimal qty)>>.ReFailure(ResultCodes.OutStockTaskAlready);
|
||||
if (this.Status == OutStockStatus.Repeal)
|
||||
return Result<List<(int erpDetailId, decimal qty)>>.ReFailure(ResultCodes.OutStockTaskRepeal);
|
||||
|
||||
var detail = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
|
||||
var detail = this.Details.FirstOrDefault(f => f.MaterialNumber == materialNumber);
|
||||
if (detail == null) return Result<List<(int erpDetailId, decimal qty)>>.ReFailure(ResultCodes.OrderNoData);
|
||||
if ((detail.AccruedQty - detail.RealityQty) < qty)
|
||||
return Result<List<(int erpDetailId, decimal qty)>>.ReFailure(ResultCodes.OutStockQtyError);
|
||||
@@ -221,7 +221,7 @@ namespace WMS.Web.Domain.Entitys
|
||||
{
|
||||
d.Id = 0;
|
||||
d.Fid = 0;
|
||||
var detail_new = details_new.FirstOrDefault(f => f.MaterialId == d.MaterialId);
|
||||
var detail_new = details_new.FirstOrDefault(f => f.MaterialNumber == d.MaterialNumber);
|
||||
if (detail_new != null)
|
||||
{
|
||||
detail_new.AccruedQty += d.AccruedQty;//应出数量累加
|
||||
|
||||
@@ -59,6 +59,13 @@ namespace WMS.Web.Domain.IService.Public
|
||||
/// <returns></returns>
|
||||
string GetMaterialUnitName(List<ErpMaterialDto> erpMaterials, int materialId);
|
||||
|
||||
/// <summary>
|
||||
/// 获取物料基本单位名称
|
||||
/// </summary>
|
||||
/// <param name="erpMaterials"></param>
|
||||
/// <param name="materialNumber"></param>
|
||||
/// <returns></returns>
|
||||
string GetMaterialUnitName(List<ErpMaterialDto> erpMaterials, string materialNumber);
|
||||
/// <summary>
|
||||
/// 获取物料的条码
|
||||
/// </summary>
|
||||
@@ -89,6 +96,14 @@ namespace WMS.Web.Domain.IService.Public
|
||||
/// <param name="materialId"></param>
|
||||
/// <returns></returns>
|
||||
string GetMaterialUnitNumber(List<ErpMaterialDto> erpMaterials, int materialId);
|
||||
|
||||
/// <summary>
|
||||
/// 获取物料基本单位编码
|
||||
/// </summary>
|
||||
/// <param name="erpMaterials"></param>
|
||||
/// <param name="materialNumber"></param>
|
||||
/// <returns></returns>
|
||||
string GetMaterialUnitNumber(List<ErpMaterialDto> erpMaterials, string materialNumber);
|
||||
/// <summary>
|
||||
/// 获取组织名称
|
||||
/// </summary>
|
||||
|
||||
@@ -172,7 +172,7 @@ namespace WMS.Web.Domain.Services
|
||||
entity.SrcSubStockCode = subStock_s?.Code ?? "";
|
||||
if (subStock != null)
|
||||
{
|
||||
entity.DestSubStockId = dt.SubStockId;
|
||||
//entity.DestSubStockId = dt.SubStockId;
|
||||
entity.DestBoxOrgCode = subStock.ErpOrgCode;
|
||||
entity.DestStockCode = subStock.StockCode;
|
||||
entity.DestSubStockCode = subStock.Code;
|
||||
@@ -278,9 +278,9 @@ namespace WMS.Web.Domain.Services
|
||||
List<MoveBoxRecord> entityList = new List<MoveBoxRecord>();
|
||||
foreach (var d in dto)
|
||||
{
|
||||
var subStock = await _basbicsRepositories.GetSubUcStockAsync(d.SubStockId, loginInfo.UserInfo.CompanyId);
|
||||
var subStock = await _basbicsRepositories.GetSubUcStockAsync(d.SubStockCode, loginInfo.UserInfo.CompanyId);
|
||||
var entity = new MoveBoxRecord();
|
||||
entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.Qty, subStock?.ErpOrgCode, subStock?.StockCode, d.SubStockId, loginInfo.UserInfo.StaffId, subStock?.Code);
|
||||
entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.Qty, subStock?.ErpOrgCode, d.SubStockCode, loginInfo.UserInfo.StaffId, subStock?.Code);
|
||||
entity.Details = d.Details.Select(s => new MoveBoxRecordDetails()
|
||||
{
|
||||
MaterialNumber = s.MaterialNumber,
|
||||
|
||||
@@ -134,7 +134,7 @@ namespace WMS.Web.Domain.Services
|
||||
foreach (var b in boxInventoryDetails)
|
||||
{
|
||||
var num = boxInventoryDetails.Where(w => w.MaterialId == b.MaterialId).Sum(s => s.Qty);
|
||||
var taskDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == b.MaterialId);
|
||||
var taskDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == b.MaterialNumber);
|
||||
if (taskDetail == null) return Result.ReFailure(ResultCodes.BoxOutStockTaskMaterialError);
|
||||
//箱子里该物料的总数量大于出库单(应出库数量-已出库数量) 不能出库
|
||||
if (num > (taskDetail.AccruedQty - taskDetail.RealityQty))
|
||||
@@ -144,7 +144,7 @@ namespace WMS.Web.Domain.Services
|
||||
if (box == null) return Result.ReFailure(ResultCodes.BoxNoData);
|
||||
var dtod = _mapper.Map<SaveOutStockDetailsRequest>(b);
|
||||
dtod.BoxId = box.BoxId;
|
||||
dtod.SubStockId = box.SubStockId;
|
||||
dtod.SubStockCode = box.SubStockCode;
|
||||
dto.Details.Add(dtod);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ namespace WMS.Web.Domain.Services
|
||||
foreach (var erp in erps)
|
||||
{
|
||||
//仓库不同 拆分成不同的
|
||||
var detail = outStockTask.Details.FirstOrDefault(w => w.MaterialId == erp.MaterialId);
|
||||
var detail = outStockTask.Details.FirstOrDefault(w => w.MaterialNumber == erp.MaterialNumber);
|
||||
if (detail == null)
|
||||
{
|
||||
//添加一条物料明细
|
||||
@@ -167,11 +167,11 @@ namespace WMS.Web.Domain.Services
|
||||
entity.Create((OutStockType)e.Type, e.StockCode, e.OrgCode, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime);
|
||||
|
||||
//找到当前对应来源单据编号的集合数据
|
||||
var mIds = eList.GroupBy(g => g.MaterialId).Select(s => s.Key).ToList();
|
||||
var mIds = eList.GroupBy(g => g.MaterialNumber).Select(s => s.Key).ToList();
|
||||
//给到dto的实体明细中
|
||||
foreach (var mid in mIds)
|
||||
{
|
||||
var emList = eList.Where(w => w.MaterialId == mid).ToList();
|
||||
var emList = eList.Where(w => w.MaterialNumber == mid).ToList();
|
||||
var detail = _mapper.Map<OutStockTaskDetails>(emList.First());
|
||||
var erpDetail = _mapper.Map<List<OutStockTaskErpDetails>>(emList);
|
||||
detail.ErpDetails.AddRange(erpDetail);
|
||||
@@ -205,7 +205,7 @@ namespace WMS.Web.Domain.Services
|
||||
var erp_o = erp_list.Where(w => w.SourceBillNo == ed.SourceBillNo).ToList();
|
||||
if (erp_o.Count() == 0) continue;
|
||||
|
||||
var erp_d = erp_list.Where(w => w.MaterialId == d.MaterialId && ed.Erp_DetailId == w.Erp_DetailId).ToList();
|
||||
var erp_d = erp_list.Where(w => w.MaterialNumber == d.MaterialNumber && ed.Erp_DetailId == w.Erp_DetailId).ToList();
|
||||
if (erp_d.Count() == 0)
|
||||
{
|
||||
//金蝶删除明细数据后 wms对应数据修改为0
|
||||
|
||||
@@ -161,7 +161,20 @@ namespace WMS.Web.Domain.Services.Public
|
||||
}
|
||||
return mat.BaseUnitName;
|
||||
}
|
||||
|
||||
public string GetMaterialUnitName(List<ErpMaterialDto> erpMaterials, string materialNumber)
|
||||
{
|
||||
if (erpMaterials == null || erpMaterials.Count == 0)
|
||||
return "";
|
||||
var mat = erpMaterials.Where(x => x.MaterialNumber == materialNumber).FirstOrDefault();
|
||||
if (mat == null)
|
||||
{
|
||||
var result = _erpService.BillQueryForMaterial(materialNumber).GetAwaiter().GetResult();
|
||||
if (!result.IsSuccess)
|
||||
return "";
|
||||
return result.Data == null ? "" : result.Data.BaseUnitName;
|
||||
}
|
||||
return mat.BaseUnitName;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取物料的条码
|
||||
/// </summary>
|
||||
@@ -244,7 +257,26 @@ namespace WMS.Web.Domain.Services.Public
|
||||
}
|
||||
return mat.BaseUnitNumber;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取物料基本单位编码
|
||||
/// </summary>
|
||||
/// <param name="erpMaterials"></param>
|
||||
/// <param name="materialNumber"></param>
|
||||
/// <returns></returns>
|
||||
public string GetMaterialUnitNumber(List<ErpMaterialDto> erpMaterials, string materialNumber)
|
||||
{
|
||||
if (erpMaterials == null || erpMaterials.Count == 0)
|
||||
return "";
|
||||
var mat = erpMaterials.Where(x => x.MaterialNumber == materialNumber).FirstOrDefault();
|
||||
if (mat == null)
|
||||
{
|
||||
var result = _erpService.BillQueryForMaterial(materialNumber).GetAwaiter().GetResult();
|
||||
if (!result.IsSuccess)
|
||||
return "";
|
||||
return result.Data == null ? "" : result.Data.BaseUnitNumber;
|
||||
}
|
||||
return mat.BaseUnitNumber;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取组织名称
|
||||
/// </summary>
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace WMS.Web.Domain.Services
|
||||
//记录序列号操作日志
|
||||
SerialNumberOperate op = new SerialNumberOperate()
|
||||
{
|
||||
MaterialId = entity.MaterialId,
|
||||
MaterialNumber = entity.MaterialNumber,
|
||||
SerialNumber = entity.SerialNumber,
|
||||
OrgId = box.OrgId,
|
||||
SupplierId = box.SupplierId,
|
||||
@@ -134,7 +134,7 @@ namespace WMS.Web.Domain.Services
|
||||
//记录序列号操作日志
|
||||
SerialNumberOperate op = new SerialNumberOperate()
|
||||
{
|
||||
MaterialId = entity.MaterialId,
|
||||
MaterialNumber = entity.MaterialNumber,
|
||||
SerialNumber = entity.SerialNumber,
|
||||
OrgId = box.OrgId,
|
||||
SupplierId = box.SupplierId,
|
||||
@@ -192,15 +192,15 @@ namespace WMS.Web.Domain.Services
|
||||
foreach (var entity in entityList)
|
||||
{
|
||||
var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId);
|
||||
var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
|
||||
var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber);
|
||||
if (outstockDetail == null) continue;
|
||||
//修改序列号和箱绑定关系
|
||||
entity.OutStock(outStock, entity.MaterialId);
|
||||
entity.OutStock(outStock, entity.MaterialNumber);
|
||||
|
||||
//记录序列号操作日志
|
||||
SerialNumberOperate op = new SerialNumberOperate()
|
||||
{
|
||||
MaterialId = entity.MaterialId,
|
||||
MaterialNumber = entity.MaterialNumber,
|
||||
SerialNumber = entity.SerialNumber,
|
||||
OrgId = box.OrgId,
|
||||
SupplierId = box.SupplierId,
|
||||
@@ -211,7 +211,7 @@ namespace WMS.Web.Domain.Services
|
||||
};
|
||||
if (outStock.Type == OutStockType.Sal)
|
||||
{
|
||||
var detail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
|
||||
var detail = outStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber);
|
||||
var res_c = await _erpService.BillQueryForCustomer();
|
||||
var customer = res_c.Data.FirstOrDefault(f => f.Id == outStock.ReceiptCustomerId);
|
||||
op.Remark += "\r\n" + "销售订单号:" + string.Join(",", detail.ErpDetails.Select(s => s.SaleBillNo));
|
||||
@@ -321,7 +321,7 @@ namespace WMS.Web.Domain.Services
|
||||
{
|
||||
var boxId = inStock.Details.FirstOrDefault(s => s.SerialNumbers.Contains(entity.SerialNumber))?.BoxId ?? 0;
|
||||
var box = boxList.FirstOrDefault(f => f.Id == boxId);
|
||||
var instockDetail = inStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
|
||||
var instockDetail = inStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber);
|
||||
var subStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, inStock.SubStockId);
|
||||
//修改序列号和箱绑定关系
|
||||
entity.InStock(instockDetail.SourceBillNo, inStock.Type);
|
||||
@@ -330,7 +330,7 @@ namespace WMS.Web.Domain.Services
|
||||
//记录序列号操作日志
|
||||
SerialNumberOperate op = new SerialNumberOperate()
|
||||
{
|
||||
MaterialId = entity.MaterialId,
|
||||
MaterialNumber = entity.MaterialNumber,
|
||||
SerialNumber = entity.SerialNumber,
|
||||
OrgId = box?.OrgId ?? 0,
|
||||
SupplierId = box?.SupplierId ?? 0,
|
||||
@@ -397,7 +397,7 @@ namespace WMS.Web.Domain.Services
|
||||
//记录序列号操作日志
|
||||
SerialNumberOperate op = new SerialNumberOperate()
|
||||
{
|
||||
MaterialId = entity.MaterialId,
|
||||
MaterialNumber = entity.MaterialNumber,
|
||||
SerialNumber = entity.SerialNumber,
|
||||
OrgId = box.OrgId,
|
||||
SupplierId = box.SupplierId,
|
||||
@@ -457,17 +457,17 @@ namespace WMS.Web.Domain.Services
|
||||
if (takeStockDetail == null) continue;
|
||||
var box = boxList.FirstOrDefault(f => f.Id == takeStockDetail.BoxId);
|
||||
var s_entity = entityList.FirstOrDefault(f => f.SerialNumber.Equals(s));
|
||||
if (box != null && box.Details.FirstOrDefault(f => f.MaterialId == takeStockDetail.MaterialId) == null)
|
||||
if (box != null && box.Details.FirstOrDefault(f => f.MaterialNumber == takeStockDetail.MaterialNumber) == null)
|
||||
{
|
||||
//如果这个物料不存在箱箱信息 添加进去
|
||||
box.TakeStock(takeStockDetail.MaterialId, takeStockDetail.AfterQty);
|
||||
box.TakeStock(takeStockDetail.MaterialNumber, takeStockDetail.AfterQty);
|
||||
box_New_List.Add(box);
|
||||
}
|
||||
|
||||
if (s_entity == null)
|
||||
{
|
||||
//序列号
|
||||
SerialNumbers s_new = new SerialNumbers(s, takeStockDetail.MaterialId, takeStockDetail.Id, 0, "", DateTime.Now, DateTime.Now);
|
||||
SerialNumbers s_new = new SerialNumbers(s, takeStockDetail.MaterialNumber, takeStockDetail.Id, 0, "", DateTime.Now, DateTime.Now);
|
||||
sList.Add(s_new);
|
||||
}
|
||||
else
|
||||
@@ -479,7 +479,7 @@ namespace WMS.Web.Domain.Services
|
||||
//记录序列号操作日志
|
||||
SerialNumberOperate op = new SerialNumberOperate()
|
||||
{
|
||||
MaterialId = takeStockDetail.MaterialId,
|
||||
MaterialNumber = takeStockDetail.MaterialNumber,
|
||||
SerialNumber = s,
|
||||
OrgId = box.OrgId,
|
||||
SupplierId = box.SupplierId,
|
||||
|
||||
@@ -243,7 +243,7 @@ namespace WMS.Web.Domain.Services
|
||||
var erpInventory = res_s.Data.FirstOrDefault(f => f.MaterialNumber == number && f.StockCode == d.StockCode
|
||||
&& f.OrgCode == d.OrgCode && f.Erp_SubStockId == subStockId);
|
||||
decimal qty = erpInventory?.Qty ?? 0;
|
||||
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId);
|
||||
var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialNumber);
|
||||
detils.Add(new ErpTakeStockDetailsSaveDto()
|
||||
{
|
||||
FOwnerid = new ErpNumberDto(d.OrgCode),
|
||||
|
||||
@@ -198,7 +198,7 @@ namespace WMS.Web.Repositories
|
||||
MaterialNumber = s.detail.MaterialNumber,
|
||||
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialNumber),
|
||||
Qty = s.detail.Qty,
|
||||
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialId),
|
||||
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialNumber),
|
||||
Remark = s.order.Remark
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -257,7 +257,7 @@ namespace WMS.Web.Repositories
|
||||
#region dto组装
|
||||
Id = s.order.Id,
|
||||
BillNo = s.order.BillNo,
|
||||
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialId),
|
||||
Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialNumber),
|
||||
Stock = _singleDataService.GetSingleData(SingleAction.StocksJoinOrgCode, companyId, s.detail.StockCode + s.detail.OrgCode),
|
||||
SubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, companyId, s.detail.SubStockId),
|
||||
Erp_SubStock = _erpBasicDataExtendService.GetSubStockName(subStocks, s.detail.Erp_SubStockCode),
|
||||
|
||||
Reference in New Issue
Block a user