diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index 4d30257f..04fda4d8 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -46,7 +46,6 @@ namespace WMS.Web.Api.Controllers [Route("hj")] public async Task TestHJ() { - await _outStockTaskService.Sync(null); //var t=await _outStockTaskRepositories.Get(1); // t.Details[0].Remark = "sdf"; // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb"; diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 27d01216..14727762 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -3983,15 +3983,10 @@ - 盘点前数量(wms系统数量) + 系统库存 - - 盘点实际数量(实际仓库数量) - - - 盘点数量 @@ -4053,17 +4048,17 @@ - 盘点前数量(wms系统数量) + 系统库存 - 盘点实际数量(实际仓库数量) + 盘点数量 - 盘点后数量 + 盈亏数量 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 1862daa5..ba136800 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1481,23 +1481,23 @@ - 盘点前数量(wms系统数量) + 系统库存 - 盘点实际数量(实际仓库数量) + 盘点数量 - 盘点数量 + 盈亏数量 盘点结果类型:1为盘盈,2位盘亏 - 实际仓库数量-WMS系统数量 大于0为盘盈 小于0为盘亏 + 盘点数量-系统库存 大于0为盘盈 小于0为盘亏 diff --git a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs index 1220bd07..8ae1cd76 100644 --- a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs +++ b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs @@ -35,20 +35,15 @@ namespace WMS.Web.Core.Dto.TakeStock /// public int Erp_SubStockId { get; set; } /// - /// 盘点前数量(wms系统数量) + /// 系统库存 /// - [Required(ErrorMessage = "盘点前数量不能为空")] + [Required(ErrorMessage = "系统库存不能为空")] public decimal BeforeQty { get; set; } /// - /// 盘点实际数量(实际仓库数量) - /// - [Required(ErrorMessage = "盘点实际数量不能为空")] - public decimal AfterQty { get; set; } - /// /// 盘点数量 /// - [Required(ErrorMessage = "盘点数量不能为空")] - public decimal FinalQty { get; set; } + [Required(ErrorMessage = "盘点数量数量不能为空")] + public decimal AfterQty { get; set; } /// /// 备注 /// diff --git a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs index 8c98879f..2b56174a 100644 --- a/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs +++ b/src/WMS.Web.Core/Dto/TakeStock/TakeStockQueryInfoResponse.cs @@ -55,19 +55,19 @@ namespace WMS.Web.Core.Dto.TakeStock [Column("子仓库")] public string Erp_SubStock { get; set; } /// - /// 盘点前数量(wms系统数量) + /// 系统库存 /// - [Column("WMS系统数量")] + [Column("系统库存")] public decimal BeforeQty { get; set; } /// - /// 盘点实际数量(实际仓库数量) + /// 盘点数量 /// - [Column("实际仓库数量")] + [Column("盘点数量")] public decimal AfterQty { get; set; } /// - /// 盘点后数量 + /// 盈亏数量 /// - [Column("此次盘点数量")] + [Column("盈亏数量")] public decimal FinalQty { get; set; } /// /// 盘点结果类型:1为盘盈,2位盘亏 diff --git a/src/WMS.Web.Domain/Entitys/OutStock.cs b/src/WMS.Web.Domain/Entitys/OutStock.cs index 445afe7b..a8af87ed 100644 --- a/src/WMS.Web.Domain/Entitys/OutStock.cs +++ b/src/WMS.Web.Domain/Entitys/OutStock.cs @@ -97,8 +97,16 @@ namespace WMS.Web.Domain.Entitys this.ReceiptCustomerId = task.ReceiptCustomerId; this.CreatorId = creatorId; this.CreateTime = DateTime.Now; - this.SuccessSync = false; - this.SuccessSyncFail = this.Details.SelectMany(s => s.ErpDetails).GroupBy(g => g.SourceBillNo).Select(s=>s.Key).ToList(); + if (task.Type == OutStockType.Sal) + { + //只有销售出库才需要同步金蝶 + this.SuccessSync = false; + this.SuccessSyncFail = this.Details.SelectMany(s => s.ErpDetails).GroupBy(g => g.SourceBillNo).Select(s => s.Key).ToList(); + }else + { + this.SuccessSync = true; + this.SuccessSyncFail = new List(); + } } /// /// 同步金蝶(成功) diff --git a/src/WMS.Web.Domain/Entitys/TakeStock.cs b/src/WMS.Web.Domain/Entitys/TakeStock.cs index 41fdc352..911f0022 100644 --- a/src/WMS.Web.Domain/Entitys/TakeStock.cs +++ b/src/WMS.Web.Domain/Entitys/TakeStock.cs @@ -66,23 +66,23 @@ namespace WMS.Web.Domain.Entitys [Column("Erp_SubStockId")] public int Erp_SubStockId { get; set; } /// - /// 盘点前数量(wms系统数量) + /// 系统库存 /// [Column("BeforeQty")] public decimal BeforeQty { get; set; } /// - /// 盘点实际数量(实际仓库数量) + /// 盘点数量 /// [Column("AfterQty")] public decimal AfterQty { get; set; } /// - /// 盘点数量 + /// 盈亏数量 /// [Column("FinalQty")] public decimal FinalQty { get; set; } /// /// 盘点结果类型:1为盘盈,2位盘亏 - /// 实际仓库数量-WMS系统数量 大于0为盘盈 小于0为盘亏 + /// 盘点数量-系统库存 大于0为盘盈 小于0为盘亏 /// [Column("ResultType")] public TakeStockType ResultType { get; set; } = TakeStockType.Profit; diff --git a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs index f8b928e6..79c4343a 100644 --- a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs @@ -13,9 +13,11 @@ namespace WMS.Web.Domain.Mappers public TakeStockMapper() { CreateMap() - .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) >0? TakeStockType.Profit: TakeStockType.Loss)); + .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) >0? TakeStockType.Profit: TakeStockType.Loss)) + .ForMember(x => x.FinalQty, ops => ops.MapFrom(x => Math.Abs(x.AfterQty - x.BeforeQty))); CreateMap() - .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss)); + .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss)) + .ForMember(x => x.FinalQty, ops => ops.MapFrom(x => Math.Abs(x.AfterQty - x.BeforeQty))); } } } diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index 7839c036..e271a6b6 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using WMS.Web.Core.Dto; using WMS.Web.Core.Dto.Erp; using WMS.Web.Core.Dto.Erp.TakeStock; +using WMS.Web.Core.Dto.Inventory; using WMS.Web.Core.Dto.Login; using WMS.Web.Core.Dto.TakeStock; using WMS.Web.Core.Internal.Results; @@ -36,10 +37,12 @@ namespace WMS.Web.Domain.Services private readonly ISingleDataService _singleDataService; private readonly IErpService _erpService; private readonly ILogger _logger; + private readonly IBoxInventoryService _boxInventoryService; public TakeStockService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, ITakeStockRepositories takeStockRepositories, ILoginRepositories loginRepositories, - ISingleDataService singleDataService, IErpService erpService, ILogger logger) + ISingleDataService singleDataService, IErpService erpService, ILogger logger, + IBoxInventoryService boxInventoryService) { _mapper = mapper; _loginService = loginService; @@ -49,6 +52,7 @@ namespace WMS.Web.Domain.Services _singleDataService = singleDataService; _erpService = erpService; _logger = logger; + _boxInventoryService = boxInventoryService; } /// /// 保存 @@ -62,17 +66,45 @@ namespace WMS.Web.Domain.Services foreach (var entity in list) entity.Create(loginInfo.UserInfo.StaffId); - //需要填写序列号 - //需要修改库存 + #region 组装库存dto + List inventoryList = new List(); + foreach (var entity in list) + { + var inventoryDetail = new List() + { + new BoxInventoryGenerateDetailsDto() + { + MaterialId=entity.MaterialId, + Qty=entity.FinalQty + } + }; + BoxInventoryGenerateDto inventory = new BoxInventoryGenerateDto() + { + BoxId = entity.BoxId, + InventoryInOutMethod = 2,//盘点单按产品修改库存 + InventoryInOutType = entity.ResultType == TakeStockType.Profit ? 1 : 2, + StockCode = entity.StockCode, + SubStockId = entity.SubStockId, + Details = inventoryDetail + }; + inventoryList.Add(inventory); + } + #endregion IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); - bool isRollback = false; + Result res_Rollback = Result.ReSuccess(); bool isSuccess = true; - isSuccess = await _takeStockRepositories.AddRange(list, false); - if (!isSuccess) isRollback = true; + var res_Inventory = await _boxInventoryService.HandlBoxInventory(inventoryList, false); + if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory; + if (res_Rollback.IsSuccess) + { + isSuccess = await _takeStockRepositories.AddRange(list, false); + if (!isSuccess) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError); + } //提交事务 - isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + isSuccess = _transactionRepositories.CommitTransaction(res_Rollback.IsSuccess ? false : true, _transaction); + if (!res_Rollback.IsSuccess) return res_Rollback; if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);