コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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();
            }
        }