public async Task <AjaxResult> Add([FromBody] InboundReceiptInputDto 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.InboundReceiptId = dto.Id; } await _inboundReceiptContract.AddInboundReceiptAsync(dto, ServiceProvider); result.Type = AjaxResultType.Success; })); }
public async Task <AjaxResult> Update([FromBody] InboundReceiptInputDto 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.InboundReceiptId = dto.Id; } await _inboundReceiptContract.UpdateInboundReceiptAsync(dto); result.Type = AjaxResultType.Success; if (dto == null) { result.Error("找不到指定的入库单信息"); } else { result.Success(dto); } })); }
public async Task <bool> UpdateInboundReceiptAsync(InboundReceiptInputDto dto) { var inboundReceipt = dto.MapTo <InboundReceipt>(); await _inboundReceiptRepo.UpdateAsync(inboundReceipt); var items = dto.Items.Select(d => d.MapTo <InboundReceiptItem>()).ToArray(); await _inboundReceiptItemRepo.UpdateAsync(items); return(true); }
public async Task <bool> AddInboundReceiptAsync(InboundReceiptInputDto dto, IServiceProvider serviceProvider) { if (dto.Items == null || dto.Items.Length <= 0) { return(false); } var inboundReceipt = dto.MapTo <InboundReceipt>(); var items = dto.Items.Select(d => d.MapTo <InboundReceiptItem>()).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; updateInventories.Add(inventory); } else { var inventory = new Inventory() { Id = Guid.NewGuid(), WarehouseId = warehouse.Id, GoodsCategory = item.GoodsCategory, Name = item.Name, Number = item.Number, Amount = item.Amount, DateTime = dt }; addInventories.Add(inventory); } } await _inboundReceiptRepo.InsertAsync(inboundReceipt); await _inboundReceiptItemRepo.InsertAsync(items); if (updateInventories.Count > 0) { await inventoryRepo.UpdateAsync(updateInventories.ToArray()); } if (addInventories.Count > 0) { await inventoryRepo.InsertAsync(addInventories.ToArray()); } return(true); }