public usrMaintenanceDetail(DataContext context, int maintenanceId, bool readonlyScreen) { this.Cursor = Cursors.WaitCursor; _Readonly = readonlyScreen; try { _DataContext = context; _Maintenance = _DataContext.MaintenanceSet .Include(a => a.Supplier) .Include(a => a.Requisition) .Include(a => a.BuildingMaintenanceConfiguration) .Include(a => a.DetailItems) .Single(a => a.id == maintenanceId); _requisition = _DataContext.tblRequisitions.Single(a => a.id == _Maintenance.RequisitionId); _Documents = _DataContext.MaintenanceDocumentSet .Where(a => a.MaintenanceId == maintenanceId) .Select(a => new SupportingDocument { Id = a.id, FileName = a.FileName }).ToList(); SetupControl(); } finally { this.Cursor = Cursors.Default; } }
public frmMaintenanceDetail(DataContext context, tblRequisition item, BuildingMaintenanceConfiguration config, bool ignoreInvoiceNumber = false) { DialogResult = DialogResult.Cancel; try { InitializeComponent(); _MaintenanceDetailControl = new usrMaintenanceDetail(context, item, config, ignoreInvoiceNumber); _MaintenanceDetailControl.Dock = DockStyle.Fill; pnlContents.Controls.Add(_MaintenanceDetailControl); _MaintenanceDetailControl.SaveResultEvent += _MaintenanceDetailControl_SaveResultEvent; } catch (MaintenanceException e) { Controller.HandleError(e.Message); } catch (Exception ex) { throw ex; } }
private void btnSave_Click(object sender, EventArgs e) { if (_SupplierBuildingList == null) { return; } if (_Supplier == null) { return; } if (trnDatePicker.Value.Date <= _minDate) { Controller.HandleError("Please select a tranasction date", "Validation Error"); return; } var requisitionsToSave = _SupplierBuildingList.Where(a => a.Amount > 0).ToList(); var x = requisitionsToSave.Where(a => a.IsValid == false).Count(); if (x > 0) { Controller.HandleError("There are " + x.ToString() + " invalid requisitions.\n Please check that all items\n" + "To ignore a building clear the Amount column"); return; } if (_AttachmentRequired) { int c = requisitionsToSave.Where(a => a.FileLoaded == false).Count(); if (c > 0) { Controller.HandleError("There are " + c.ToString() + " missing invoices.\n Please check that all invoices are loaded"); return; } } this.Cursor = Cursors.WaitCursor; try { using (var context = SqlDataHandler.GetDataContext()) { //validate duplicates foreach (var requisition in requisitionsToSave) { var q = (from r in context.tblRequisitions where r.SupplierId == _Supplier.id && r.InvoiceNumber == requisition.InvoiceNumber && r.amount == requisition.Amount select r); if (q.Count() > 0) { Controller.HandleError("Duplicate requisition detected.\n" + requisition.BuildingName + "\n" + requisition.InvoiceNumber + " invoice has already been processed", "Validation Error"); this.Cursor = Cursors.Arrow; return; } } //Now save all the new requisitions foreach (var requisition in requisitionsToSave) { var item = new tblRequisition(); context.tblRequisitions.Add(item); if (!requisition.BankAlreadyLinked) { requisition.SupplierBank = _BankList.Where(a => a.id == requisition.BankId).Single().Name; } item.trnDate = trnDatePicker.Value.Date; item.account = requisition.OwnTrustAccount; item.reference = requisition.BuildingAbreviatio + (requisition.OwnTrustAccount == "TRUST" ? " (" + requisition.BuildingTrustAccount + ")" : ""); item.ledger = requisition.AccountNumberToDisplay; item.amount = requisition.Amount.Value; item.payreference = requisition.SupplierReference; item.userID = Controller.user.id; item.building = requisition.BuildingId; item.SupplierId = _Supplier.id; item.InvoiceNumber = requisition.InvoiceNumber; item.InvoiceDate = requisition.InvoiceDate; item.BankName = requisition.SupplierBank; item.BranchCode = requisition.BranchCode; item.BranchName = requisition.BranchName; item.AccountNumber = requisition.SupplierBankAccount; item.processed = false; if (!String.IsNullOrWhiteSpace(requisition.AttachmentFileName)) { context.RequisitionDocumentSet.Add(new RequisitionDocument() { Requisition = item, FileData = File.ReadAllBytes(requisition.AttachmentFileName), FileName = requisition.AttachmentFileName, IsInvoice = true }); } if (!requisition.BankAlreadyLinked) { //link the bank to the supplier var supBank = new SupplierBuilding() { BuildingId = requisition.BuildingId, AccountNumber = requisition.SupplierBankAccount, BankId = requisition.BankId.Value, BranceCode = requisition.BranchCode, BranchName = requisition.BranchName, SupplierId = _Supplier.id, Building = requisition.Building }; context.SupplierBuildingSet.Add(supBank); LoadBuildingAudit(supBank, context); } } context.SaveChanges(); Controller.ShowMessage("Saved " + requisitionsToSave.Count().ToString() + " requisitions"); ClearSupplier(); } } finally { this.Cursor = Cursors.Default; } }
public usrMaintenanceDetail(DataContext context, tblRequisition requisition, BuildingMaintenanceConfiguration config, bool ignoreInvoiceNumber = false) { this.Cursor = Cursors.WaitCursor; try { _DataContext = context; _requisition = requisition; if (!ignoreInvoiceNumber) { if (string.IsNullOrEmpty(requisition.InvoiceNumber)) { throw new MaintenanceException("No Invoice Number found."); } if (!requisition.InvoiceDate.HasValue) { throw new MaintenanceException("No Invoice Date found."); } } if (requisition.SupplierId == null) { throw new MaintenanceException("No Supplier found."); } else if (requisition.Supplier == null) { requisition.Supplier = _DataContext.SupplierSet.Single(a => a.id == requisition.SupplierId); } _Maintenance = _DataContext.MaintenanceSet.Include(a => a.DetailItems).SingleOrDefault(a => a.RequisitionId == requisition.id); if (_Maintenance == null) { _Maintenance = new Data.MaintenanceData.Maintenance() { DateLogged = DateTime.Now, BuildingMaintenanceConfiguration = config, Requisition = requisition, Supplier = requisition.Supplier, InvoiceNumber = requisition.InvoiceNumber, InvoiceDate = requisition.InvoiceDate == null ? requisition.trnDate : requisition.InvoiceDate.Value, TotalAmount = requisition.amount, WarrentyExpires = requisition.InvoiceDate == null ? requisition.trnDate : requisition.InvoiceDate.Value, DetailItems = new List <MaintenanceDetailItem>() }; _DataContext.MaintenanceSet.Add(_Maintenance); _Documents = new List <SupportingDocument>(); } else { _Documents = _DataContext.MaintenanceDocumentSet.Where(a => a.MaintenanceId == _Maintenance.id) .Select(d => new SupportingDocument() { Id = d.id, FileName = d.FileName }).ToList(); } SetupControl(); } finally { this.Cursor = Cursors.Default; } }
private void btnSave_Click(object sender, EventArgs e) { if (dtInvoiceDate.Value <= _minDate) { Controller.HandleError("Invoice Date required for Maintenance. Please select a date.", "Validation Error"); return; } if (String.IsNullOrWhiteSpace(txtInvoiceNumber.Text)) { Controller.HandleError("Invoice Number required for Maintenance. Please supply an invoice number.", "Validation Error"); return; } if (_Documents.Count == 0) { Controller.HandleError("Invoice attachment required, please upload Invoice PDF", "Validation Error"); return; } if (_Supplier == null) { Controller.HandleError("Supplier not selected, please select a supplier.", "Validation Error"); return; } using (var context = SqlDataHandler.GetDataContext()) { var building = cmbBuilding.SelectedItem as Building; var buildingId = building.ID; var bankDetails = context.SupplierBuildingSet .Include(a => a.Bank) .SingleOrDefault(a => a.BuildingId == buildingId && a.SupplierId == _Supplier.id); if (bankDetails == null) { Controller.HandleError("Supplier banking details for this building is not configured.\n" + "Please capture bank details for this building on the suppier detail screen.", "Validation Error"); return; } var item = new tblRequisition() { trnDate = _Item.TransactionDate, PastelLedgerAutoNumber = _Item.AutoNumber, PastelDataPath = _Item.DataPath, account = _Item.AccountType, reference = building.Abbr + " (" + _Item.Account + ")", ledger = _Item.AccountDesc, amount = _Item.Amount, payreference = txtPaymentRef.Text, userID = Controller.user.id, building = buildingId, SupplierId = _Supplier == null ? (int?)null : _Supplier.id, InvoiceNumber = txtInvoiceNumber.Text, InvoiceDate = dtInvoiceDate.Value, BankName = _Supplier == null ? (string)null : bankDetails.Bank.Name, BranchCode = _Supplier == null ? (string)null : bankDetails.BranceCode, BranchName = _Supplier == null ? (string)null : bankDetails.BranchName, AccountNumber = _Supplier == null ? (string)null : bankDetails.AccountNumber, processed = true }; context.tblRequisitions.Add(item); foreach (var key in _Documents.Keys) { context.RequisitionDocumentSet.Add(new RequisitionDocument() { Requisition = item, FileData = _Documents[key], FileName = Path.GetFileName(key), IsInvoice = true }); } var config = (from c in context.BuildingMaintenanceConfigurationSet.Include(a => a.Building) where c.BuildingId == item.building && c.PastelAccountNumber == _Item.Account select c).SingleOrDefault(); if (config != null) { if (item.SupplierId == null) { Controller.HandleError("Supplier required for Maintenance. Please select a supplier.", "Validation Error"); return; } //capture the maintenance as part of the same unit of work var frmMaintenance = new frmMaintenanceDetail(context, item, config); var dialogResult = frmMaintenance.ShowDialog(); if (dialogResult == DialogResult.OK) { context.SaveChanges(); } } else { context.SaveChanges(); } _Data.Remove(_Item); ClearItem(); BindDataGrid(); } }