public PendingInvoiceItem CreatePending(Guid id, Guid jobItemId) { if (_invoiceItemRepository.JobItemHasPendingInvoiceItem(jobItemId)) { throw new DomainValidationException(Messages.JobItemHasPendingItem, "JobItemId"); } if (id == Guid.Empty) { throw new ArgumentException("A value must be supplied for the ID"); } if (!CurrentUser.HasRole(UserRole.Manager)) { throw new DomainValidationException(Messages.InsufficientSecurityClearance); } var jobItem = GetJobItem(jobItemId); var quoteItem = GetQuoteItem(jobItemId); var pendingItem = new PendingInvoiceItem(); pendingItem.Id = id; pendingItem.Description = jobItem.Instrument.ToString(); pendingItem.JobItem = jobItem; pendingItem.OrderNo = GetOrderNo(quoteItem); AssignPrices(pendingItem, quoteItem); _invoiceItemRepository.CreatePendingItem(pendingItem); jobItem.IsMarkedForInvoicing = true; _jobItemRepository.Update(jobItem); return(pendingItem); }