Exemplo n.º 1
0
        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);
        }