public async Task <AjaxResult> Add([FromBody] OutboundReceiptInputDto dto) { return(await AjaxResult.Business(async result => { Check.NotNull(dto, nameof(dto)); dto.Id = Guid.NewGuid(); if (!ModelState.IsValid) { result.Error("提交信息验证失败"); return; } if (dto.Items == null || dto.Items.Length <= 0) { result.Error("出库单至少需要一个采购项"); return; } if (String.IsNullOrWhiteSpace(dto.Operator)) { dto.Operator = User.Identity.Name; } dto.DateTime = DateTime.Now; foreach (var item in dto.Items) { item.Id = Guid.NewGuid(); item.OutboundReceiptId = dto.Id; } var isSuccess = await _outboundReceiptContract.AddOutboundReceiptAsync(dto, ServiceProvider); result.Type = isSuccess? AjaxResultType.Success:AjaxResultType.Error; })); }
public async Task <AjaxResult> Update([FromBody] OutboundReceiptInputDto dto) { return(await AjaxResult.Business(async result => { Check.NotNull(dto, nameof(dto)); if (!ModelState.IsValid) { result.Error("提交信息验证失败"); return; } if (String.IsNullOrWhiteSpace(dto.Operator)) { dto.Operator = User.Identity.Name; } dto.DateTime = DateTime.Now; foreach (var item in dto.Items) { item.OutboundReceiptId = dto.Id; } await _outboundReceiptContract.UpdateOutboundReceiptAsync(dto); result.Type = AjaxResultType.Success; if (dto == null) { result.Error("找不到指定的出库单信息"); } else { result.Success(dto); } })); }
public async Task <bool> UpdateOutboundReceiptAsync(OutboundReceiptInputDto dto) { var outboundReceipt = dto.MapTo <OutboundReceipt>(); await _outboundReceiptRepo.UpdateAsync(outboundReceipt); var items = dto.Items.Select(d => d.MapTo <OutboundReceiptItem>()).ToArray(); await _outboundReceiptItemRepo.UpdateAsync(items); return(true); }
public async Task <bool> AddOutboundReceiptAsync(OutboundReceiptInputDto dto, IServiceProvider serviceProvider) { if (dto.Items == null || dto.Items.Length <= 0) { return(false); } var outboundReceipt = dto.MapTo <OutboundReceipt>(); var items = dto.Items.Select(d => d.MapTo <OutboundReceiptItem>()).ToArray(); var inventoryRepo = serviceProvider.GetService <IRepository <Inventory, Guid> >(); var warehouseRepo = serviceProvider.GetService <IRepository <Kira.LaconicInvoicing.Warehouse.Entities.Warehouse, Guid> >(); var warehouse = await warehouseRepo.GetFirstAsync(w => w.Number == dto.WarehouseNumber); var inventories = inventoryRepo.Query().Where(iv => iv.WarehouseId == warehouse.Id); var updateInventories = new List <Inventory>(); var addInventories = new List <Inventory>(); var dt = DateTime.Now; foreach (var item in items) { if (inventories.Any(iv => iv.Number == item.Number)) { var inventory = await inventories.FirstOrDefaultAsync(iv => iv.Number == item.Number); inventory.Amount -= item.Amount; inventory.DateTime = dt; if (inventory.Amount < 0) { throw new BussinessException("库存数不能少于0"); } updateInventories.Add(inventory); } else { var inventory = new Inventory() { Id = Guid.NewGuid(), WarehouseId = warehouse.Id, GoodsCategory = item.GoodsCategory, Number = item.Number, Amount = item.Amount, DateTime = dt }; addInventories.Add(inventory); } } await _outboundReceiptRepo.InsertAsync(outboundReceipt); await _outboundReceiptItemRepo.InsertAsync(items); if (updateInventories.Count > 0) { await inventoryRepo.UpdateAsync(updateInventories.ToArray()); } if (addInventories.Count > 0) { await inventoryRepo.InsertAsync(addInventories.ToArray()); } return(true); }