public async Task <GetGoodsReceivedNoteDto> CreateGoodsReceivedNoteAsync(CreateGoodsReceivedNoteDto goodsReceivedNoteDto) { //verify PO allowed to create GRN var order = await CheckPurchaseOrder(goodsReceivedNoteDto.PurchaseOrderId); CheckPurchaseOrderAllowedToCreateGRN(order); var currentUser = Helper.GetCurrentUser(_userAccessor); var goodsReceivedNote = _mapper.Map <GoodsReceivedNote>(goodsReceivedNoteDto); goodsReceivedNote.CreatedBy = currentUser.UserId; goodsReceivedNote.CreatedDate = DateTime.Now; goodsReceivedNote.ApprovalStatus = Status.Pending; goodsReceivedNote = await _goodReceivedNote.AddGoodsReceivedNoteAsync(goodsReceivedNote); var items = await _purchaseOrderItem.GetPurchaseOrderItemsAsync(e => e.PurchaseOrderId == goodsReceivedNoteDto.PurchaseOrderId); foreach (var item in items) { var grnItem = new GoodsReceivedNoteItem { GoodsReceivedNoteId = goodsReceivedNote.Id, ItemId = item.ItemId, ItemUnitPrice = item.ItemUnitPrice, Quantity = item.Quantity }; await _goodsReceivedNoteItem.AddGoodsReceivedNoteItemAsync(grnItem); } return(_mapper.Map <GetGoodsReceivedNoteDto>(goodsReceivedNote)); }