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); }
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; } }
private void CreatePending(Guid id, Guid jobItemId) { try { _savedPendingItem = _invoiceItemService.CreatePending(id, jobItemId); } catch (DomainValidationException dex) { _domainValidationException = dex; } }
public void CreatePendingItem(PendingInvoiceItem pendingItem) { CurrentSession.Save(pendingItem); }
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, }; }