Ejemplo 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);
        }
Ejemplo n.º 2
0
 private void AssignPrices(PendingInvoiceItem pendingItem, QuoteItem quoteItem)
 {
     if (_companyDetailsRepository.ApplyAllPrices())
     {
         pendingItem.CalibrationPrice   = quoteItem.Calibration;
         pendingItem.RepairPrice        = quoteItem.Labour;
         pendingItem.PartsPrice         = quoteItem.Parts;
         pendingItem.CarriagePrice      = quoteItem.Carriage;
         pendingItem.InvestigationPrice = quoteItem.Investigation;
         return;
     }
     if (quoteItem.Status.Type == ListItemType.StatusQuoteAccepted)
     {
         pendingItem.CalibrationPrice   = quoteItem.Calibration;
         pendingItem.RepairPrice        = quoteItem.Labour;
         pendingItem.PartsPrice         = quoteItem.Parts;
         pendingItem.CarriagePrice      = quoteItem.Carriage;
         pendingItem.InvestigationPrice = 0;
     }
     else
     {
         pendingItem.CalibrationPrice   = 0;
         pendingItem.RepairPrice        = 0;
         pendingItem.PartsPrice         = 0;
         pendingItem.CarriagePrice      = 0;
         pendingItem.InvestigationPrice = quoteItem.Investigation;
     }
 }
Ejemplo n.º 3
0
 private void CreatePending(Guid id, Guid jobItemId)
 {
     try
     {
         _savedPendingItem = _invoiceItemService.CreatePending(id, jobItemId);
     }
     catch (DomainValidationException dex)
     {
         _domainValidationException = dex;
     }
 }
Ejemplo n.º 4
0
 public void CreatePendingItem(PendingInvoiceItem pendingItem)
 {
     CurrentSession.Save(pendingItem);
 }
Ejemplo n.º 5
0
        public void Setup()
        {
            _savedPendingItem          = null;
            _domainValidationException = null;
            _userContext =
                TestUserContext.Create("*****@*****.**", "Graham Robertson", "Operations Manager", UserRole.Manager | UserRole.Member);
            var customer = new Customer {
                Id = Guid.NewGuid(), Name = "Gael Ltd"
            };

            _jobItemForCreatePendingId = Guid.NewGuid();
            _jobItemForCreatePending   = new JobItem
            {
                Id          = _jobItemForCreatePendingId,
                ItemNo      = 1,
                SerialNo    = "12345",
                CalPeriod   = 12,
                CreatedUser = _userContext.GetCurrentUser(),
                Created     = DateTime.Now,
                Field       = new ListItem {
                    Id = Guid.NewGuid(), Name = "Electrical", Type = ListItemType.CategoryElectrical, Category = new ListItemCategory {
                        Id = Guid.NewGuid(), Name = "Job Item Category", Type = ListItemCategoryType.JobItemCategory
                    }
                },
                InitialStatus = new ListItem {
                    Id = Guid.NewGuid(), Name = "House Calibration", Type = ListItemType.InitialStatusHouseCalibration, Category = new ListItemCategory {
                        Id = Guid.NewGuid(), Name = "Initial Status", Type = ListItemCategoryType.JobItemInitialStatus
                    }
                },
                Status = new ListItem {
                    Id = Guid.NewGuid(), Name = "House Calibration", Type = ListItemType.InitialStatusHouseCalibration, Category = new ListItemCategory {
                        Id = Guid.NewGuid(), Name = "Initial Status", Type = ListItemCategoryType.JobItemInitialStatus
                    }
                },
                //Instrument = new Instrument { Id = Guid.NewGuid(), Manufacturer = "Druck", ModelNo = "DPI601IS", Range = "Not specified", Description = "Digital Pressure Gauge" },
                Job = new Job {
                    Id = Guid.NewGuid(), JobNo = "JR2000", IsPending = false, Customer = customer
                },
                Instrument = new Instrument
                {
                    Id           = Guid.NewGuid(),
                    Manufacturer = "Druck",
                    ModelNo      = "DPI601IS",
                    Range        = "Not Specified",
                    Description  = "Digital Pressure Gauge"
                }
            };
            _quoteItemForCreatePending = new QuoteItem
            {
                Id            = Guid.NewGuid(),
                ItemNo        = 1,
                Calibration   = 20,
                Labour        = 25,
                Carriage      = 65,
                Investigation = 75,
                Parts         = 55,
                JobItem       = _jobItemForCreatePending,
                Quote         = new Quote {
                    Id = Guid.NewGuid(), QuoteNumber = "QR2000", CreatedBy = _userContext.GetCurrentUser(), Customer = customer, OrderNumber = "ORD12345"
                },
                DateAccepted = DateTime.Now,
                Report       = "item passed cal",
                Status       = new ListItem {
                    Id = Guid.NewGuid(), Name = "Quote Prepared", Type = ListItemType.StatusQuoteAccepted, Category = new ListItemCategory {
                        Id = Guid.NewGuid(), Type = ListItemCategoryType.JobItemStatus
                    }
                },
                Days = 20
            };
            _jobItemForCreateFromPendingId = Guid.NewGuid();
            _jobItemForCreateFromPending   = new JobItem
            {
                Id          = _jobItemForCreateFromPendingId,
                ItemNo      = 1,
                SerialNo    = "12345",
                CreatedUser = _userContext.GetCurrentUser(),
                Created     = DateTime.Now
            };
            _invoiceForCreateFromPendingId = Guid.NewGuid();
            _invoiceForCreateFromPending   = new Invoice
            {
                Id            = _invoiceForCreateFromPendingId,
                InvoiceNumber = "IR2000",
                Customer      = customer,
                DateCreated   = DateTime.Now,
            };
        }