private void PopulateStockEventSuggestions(BatchReportEntry batchReportEntry) { if (batchReportEntry.Available?.IsNotPositive ?? true) { return; } Func <IStockEventType, Amount, BatchStockEventSuggestion> addSuggestion = (type, amount) => { var manipulationAmount = m_amountProcessor.ToSmallestUnit(amount); var sug = new BatchStockEventSuggestion() { BatchNumber = batchReportEntry.BatchNumber, Amount = manipulationAmount.Value, EventTypeId = type.Id, MaterialId = batchReportEntry.MaterialId, MaterialName = batchReportEntry.MaterialName, UnitSymbol = manipulationAmount.Unit.Symbol, Title = $"{type.Name} {StringUtil.FormatDecimal(amount.Value)} {amount.Unit.Symbol}" }; batchReportEntry.EventSuggestions.Add(sug); return(sug); }; foreach (var eventType in m_stockEventRepository.GetAllEventTypes()) { if (batchReportEntry.Available.Unit.IntegerOnly) { addSuggestion(eventType, new Amount(1m, batchReportEntry.Available.Unit)); } addSuggestion(eventType, batchReportEntry.Available); } }