//  2. Existing Invoice Product Initialize
 public InvoiceProductNewOrEdit(int invoiceProductId)
 {
     InitializeComponent();
     this.existingInvoiceProduct = SqliteDAInvoiceProduct.GetInvoiceProductById(invoiceProductId);
     //  Required to display the product information on the form when editing an invoice product.
     this.product           = SqliteDAProduct.GetProductById(this.existingInvoiceProduct.ProductId);
     this.invoiceId         = this.existingInvoiceProduct.InvoiceId;
     formTitleLabel.Text    = "Edit Invoice Product";
     saveButton.Text        = "Edit";
     this.newInvoiceProduct = false;
 }
Example #2
0
        //********************************************************************************************//
        //  SAVE MODELS - BARCODE PANEL CONTROLS
        //********************************************************************************************//
        //  SAVE MODELS - BARCODE PRESS ENTER IN TEXT BOX EVENT
        //  Add invoice products to the invoice by either searching for the product by barcode,
        //  or by using the product search form.
        private void barcodeTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                ProductModel product = new ProductModel();
                //1. Does the user have a barcode to scan or type in?
                //1.1 NO - Press Enter on empty text box
                if (barcodeTextBox.Text == "")
                {
                    //Get back a product from the product search form.
                    //If product search form is closed without selecting a product, e.g. closing the form
                    //Then exit process and wait for the user to type/scan a barcode or try to search again.
                    product = searchForProduct();
                }
                //1.2 YES - Enter barcode and press enter to search for product
                else
                {
                    //Search for product with barcode provided by the user
                    product = SqliteDAProduct.GetProductByBarcode(barcodeTextBox.Text);

                    //2. Did the search return a product that matches the barcode?
                    //NO?
                    if (product == null)
                    {
                        DialogResult result = MessageBox.Show("Barcode not found.\nAdd it to a new or existing product.", "Barcode Not Found", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        if (result == DialogResult.OK)
                        {
                            product = searchForProduct();
                        }
                    }
                }
                //Find Full Product Details with product Id
                //Check whether the user selected a product in the product search form
                if (product.Id != 0)
                {
                    product = SqliteDAProduct.GetProductById(product.Id);
                    //Add Invoice Product Details
                    InvoiceProductNewOrEdit invoiceProductForm = new InvoiceProductNewOrEdit(product, Convert.ToInt32(invoiceNumberStripStatusLabel.Text));
                    invoiceProductForm.ShowDialog();
                    mainDataGridView.DataSource = SqliteDAInvoiceProduct.GetAllInvoiceProductsByInvoiceId(Convert.ToInt32(invoiceNumberStripStatusLabel.Text));
                    mainDataGridView.AutoResizeColumns();
                    mainDataGridView.ClearSelection();
                    barCodeSearchPanel.Visible = true;
                    mainDataGridView.Columns["ProductId"].Visible = false;
                    mainDataGridView.Columns["InvoiceId"].Visible = false;
                    calculateInvoiceTotals(SqliteDAInvoice.GetInvoiceById(Convert.ToInt32(invoiceNumberStripStatusLabel.Text)));
                    barcodeTextBox.ResetText();
                    this.ActiveControl = barcodeTextBox;
                }
            }
        }
Example #3
0
 //  Set default parameters when you a new invoice
 private void SetDefaultLoadParametersForInvoiceBarcodeMode(InvoiceModel invoice)
 {
     toggleAllButtons(false);
     barCodeSearchPanel.Visible = true;
     calculateInvoiceTotals(invoice);
     this.ActiveControl = barcodeTextBox;
     invoiceNumberStripStatusLabel.Text = invoice.Id.ToString();
     mainDataGridView.DataSource        = SqliteDAInvoiceProduct.GetAllInvoiceProductsByInvoiceId(invoice.Id);
     mainDataGridView.AutoResizeColumns();
     mainDataGridView.ClearSelection();
     mainDataGridView.Columns["ProductId"].Visible = false;
     mainDataGridView.Columns["InvoiceId"].Visible = false;
     mainDataGridView.Columns["TotalPrice"].DefaultCellStyle.Format = "0.00##";
     modeStripStatusLabel.Text = "INVOICE PRODUCT MODE";
 }
Example #4
0
        //  Display the captured invoice total and also calculate the sum of the total price for
        //  all invoice products
        private void calculateInvoiceTotals(InvoiceModel invoiceModel)
        {
            capturedInvoiceTotalAmountLabel.Text = string.Format("${0:#,0.00}", invoiceModel.InvoiceAmount);
            InvoiceProductModel invoiceProduct = new InvoiceProductModel();

            invoiceProduct = SqliteDAInvoiceProduct.GetInvoiceTotalById(Convert.ToInt32(invoiceModel.Id));
            sumOfProductPricesAmountLabel.Text = string.Format("${0:#,0.00}", invoiceProduct.TotalPrice);
            //Show save button if captured invoice total and sum of invoice products are equal
            if (invoiceModel.InvoiceAmount == invoiceProduct.TotalPrice)
            {
                saveInvoiceButton.Enabled = true;
            }
            else
            {
                saveInvoiceButton.Enabled = false;
            }
        }
 //  Commit to databse - existing invoice product
 private void saveExistingInvoiceProductInformationToDb()
 {
     if (SqliteDAInvoiceProduct.UpdateInvoiceProductById(invoiceProduct))
     {
         DialogResult dialogResult = MessageBox.Show("Invoice product updated successfully", "Edit Invoice Product",
                                                     MessageBoxButtons.OK, MessageBoxIcon.Information);
         if (dialogResult == DialogResult.OK)
         {
             this.Close();
         }
     }
     else
     {
         MessageBox.Show("Something went wrong. Invoice product update could not be saved." +
                         "\nCheck the error log for more information.", "Edit Invoice Product Error",
                         MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Example #6
0
        //********************************************************************************************//
        //  DELETE MODELS - CLICK DELETE BUTTON EVENT
        //********************************************************************************************//
        private void deleteButton_Click(object sender, EventArgs e)
        {
            //1. Category
            if (modeStripStatusLabel.Text == "CATEGORY MODE")
            {
                DialogResult dialogResult = MessageBox.Show(string.Format("Are you sure you want to delete this category?" +
                                                                          "\nCategory Name: {0}\nMain Category: {1}", row.Cells["Name"].Value.ToString(), row.Cells["MainCategory"].Value.ToString()),
                                                            "Delete Category", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
                if (dialogResult == DialogResult.Yes)
                {
                    bool result = SqliteDACategory.DeleteCategoryById(Convert.ToInt32(row.Cells["Id"].Value));
                    if (result == true)
                    {
                        DialogResult dialog = MessageBox.Show("Category was successfully deleted.", "Delete Category", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mainDataGridView.DataSource = SqliteDACategory.GetAllCategories();
                        mainDataGridView.AutoResizeColumns();
                        toggleClickFirstButtons(false);
                    }
                    else
                    {
                        DialogResult dialog = MessageBox.Show("Something went wrong. Category could not be deleted.", "Delete Category Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (dialogResult == DialogResult.No)
                {
                    toggleClickFirstButtons(false);
                }
            }
            //2. Store
            else if (modeStripStatusLabel.Text == "STORE MODE")
            {
                DialogResult dialogResult = MessageBox.Show(string.Format("Are you sure you want to delete this store?" +
                                                                          "\nStore Name: {0}\nLocation: {1}", row.Cells["Name"].Value.ToString(), row.Cells["Location"].Value.ToString()),
                                                            "Delete Store", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
                if (dialogResult == DialogResult.Yes)
                {
                    bool result = SqliteDAStore.DeleteStoreById(Convert.ToInt32(row.Cells["Id"].Value));
                    if (result == true)
                    {
                        DialogResult dialog = MessageBox.Show("Store was successfully deleted.", "Delete Store", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mainDataGridView.DataSource = SqliteDAStore.GetAllStores();
                        mainDataGridView.AutoResizeColumns();
                        toggleClickFirstButtons(false);
                    }
                    else
                    {
                        DialogResult dialog = MessageBox.Show("Something went wrong. Store could not be deleted.", "Delete Store Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (dialogResult == DialogResult.No)
                {
                    toggleClickFirstButtons(false);
                }
            }
            //3. Product Link
            else if (modeStripStatusLabel.Text == "PRODUCT LINK MODE")
            {
                DialogResult dialogResult = MessageBox.Show(string.Format("Are you sure you want to delete this product link?" +
                                                                          "\nProduct Link Name: {0}\nCategory Name: {1}", row.Cells["Name"].Value.ToString(), row.Cells["CategoryName"].Value.ToString()),
                                                            "Delete Product Link", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
                if (dialogResult == DialogResult.Yes)
                {
                    bool result = SqliteDAProductLink.DeleteProductLinkById(Convert.ToInt32(row.Cells["Id"].Value));
                    if (result == true)
                    {
                        DialogResult dialog = MessageBox.Show("Product Link was successfully deleted.", "Delete Product Link", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mainDataGridView.DataSource = SqliteDAProductLink.GetAllProductLinks();
                        mainDataGridView.AutoResizeColumns();
                        toggleClickFirstButtons(false);
                    }
                    else
                    {
                        DialogResult dialog = MessageBox.Show("Something went wrong. Product Link could not be deleted.", "Delete Product Link Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (dialogResult == DialogResult.No)
                {
                    toggleClickFirstButtons(false);
                }
            }
            //4. Product
            else if (modeStripStatusLabel.Text == "PRODUCT MODE")
            {
                DialogResult dialogResult = MessageBox.Show(string.Format("Are you sure you want to delete this product?" +
                                                                          "\nBrand Name: {0}\nProduct Description: {1}", row.Cells["BrandName"].Value.ToString(), row.Cells["Description"].Value.ToString()),
                                                            "Delete Product", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
                if (dialogResult == DialogResult.Yes)
                {
                    bool result = SqliteDAProduct.DeleteProductById(Convert.ToInt32(row.Cells["Id"].Value));
                    if (result == true)
                    {
                        DialogResult dialog = MessageBox.Show("Product was successfully deleted.", "Delete Product", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mainDataGridView.DataSource = SqliteDAProduct.GetAllProducts();
                        mainDataGridView.AutoResizeColumns();
                        toggleClickFirstButtons(false);
                    }
                    else
                    {
                        DialogResult dialog = MessageBox.Show("Something went wrong. Product could not be deleted.", "Delete Product Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (dialogResult == DialogResult.No)
                {
                    toggleClickFirstButtons(false);
                }
            }
            //5. Invoice
            else if (modeStripStatusLabel.Text == "INVOICE MODE")
            {
                DialogResult dialogResult = MessageBox.Show(string.Format("Are you sure you want to delete this invoice?" +
                                                                          "\nInvoice Date: {0}\nInvoice Number: {1}", row.Cells["Date"].Value.ToString(), row.Cells["InvoiceNumber"].Value.ToString()),
                                                            "Delete Invoice", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
                if (dialogResult == DialogResult.Yes)
                {
                    bool result = false;
                    if (row.Cells["Saved"].Value.ToString() == "Open")
                    {
                        //Invoices marked as open will be permanently deleted from the database
                        result = SqliteDAInvoice.DeleteOpenInvoiceById(Convert.ToInt32(row.Cells["Id"].Value));
                    }
                    else if (row.Cells["Saved"].Value.ToString() == "Saved")
                    {
                        //Invoices marked as saved will be archived (marked as deleted, but still kept in the database).
                        result = SqliteDAInvoice.DeleteSavedInvoiceById(Convert.ToInt32(row.Cells["Id"].Value));
                    }

                    if (result == true)
                    {
                        DialogResult dialog = MessageBox.Show("Invoice was successfully deleted.", "Delete Invoice", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mainDataGridView.DataSource = SqliteDAInvoice.GetAllInvoices();
                        mainDataGridView.AutoResizeColumns();
                        toggleClickFirstButtons(false);
                    }
                    else
                    {
                        DialogResult dialog = MessageBox.Show("Something went wrong. Invoice could not be deleted.", "Delete Invoice Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (dialogResult == DialogResult.No)
                {
                    toggleClickFirstButtons(false);
                }
            }
            //6. Invoice Product
            else if (modeStripStatusLabel.Text == "INVOICE PRODUCT MODE")
            {
                DialogResult dialogResult = MessageBox.Show(string.Format("Are you sure you want to delete this product from the invoice?" +
                                                                          "\nProduct Name: {0}", row.Cells["ProductName"].Value.ToString()),
                                                            "Delete Invoice Product", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
                if (dialogResult == DialogResult.Yes)
                {
                    bool result = SqliteDAInvoiceProduct.DeleteInvoiceProductById(Convert.ToInt32(row.Cells["Id"].Value));
                    if (result == true)
                    {
                        DialogResult dialog = MessageBox.Show("Product was successfully deleted from invoice.", "Delete Invoice Product", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        mainDataGridView.DataSource = SqliteDAInvoiceProduct.GetAllInvoiceProductsByInvoiceId(Convert.ToInt32(invoiceNumberStripStatusLabel.Text));
                        mainDataGridView.AutoResizeColumns();
                        mainDataGridView.Columns["ProductId"].Visible = false;
                        mainDataGridView.Columns["InvoiceId"].Visible = false;
                        toggleClickFirstButtons(false);
                    }
                    else
                    {
                        DialogResult dialog = MessageBox.Show("Something went wrong. Product could not be deleted from invoice.", "Delete Invoice Product Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (dialogResult == DialogResult.No)
                {
                    toggleClickFirstButtons(false);
                }
            }
        }
Example #7
0
        //********************************************************************************************//
        //  EDIT MODELS - CLICK EDIT BUTTON EVENT
        //********************************************************************************************//
        private void editButton_Click(object sender, EventArgs e)
        {
            //  The user first has to select an item from the data grid view, click the edit button and
            //  then the edit form for the respective object should open.
            //  All the object properties are collected from the selected datagridview row and sent to
            //  the edit form. There the user will edit the object properties and update the database.
            //  The datagridview reloads and gets all objects and turns off the view/edit/delete buttons.
            //  1. Category
            if (modeStripStatusLabel.Text == "CATEGORY MODE")
            {
                //Create object
                int categoryId = Convert.ToInt32(row.Cells["Id"].Value);
                //Send to edit form
                CategoryNewOrEdit categoryForm = new CategoryNewOrEdit(categoryId);
                categoryForm.ShowDialog();
                //Reload data grid view
                mainDataGridView.DataSource = SqliteDACategory.GetAllCategories();
                SetDefaultLoadParameters();
            }
            //  2. Store
            else if (modeStripStatusLabel.Text == "STORE MODE")
            {
                int            storeId   = Convert.ToInt32(row.Cells["Id"].Value);
                StoreNewOrEdit storeForm = new StoreNewOrEdit(storeId);
                storeForm.ShowDialog();
                mainDataGridView.DataSource = SqliteDAStore.GetAllStores();
                SetDefaultLoadParameters();
            }
            //  3. Product Link
            else if (modeStripStatusLabel.Text == "PRODUCT LINK MODE")
            {
                int productLinkId = Convert.ToInt32(row.Cells["Id"].Value);
                ProductLinkNewOrEdit productLinkForm = new ProductLinkNewOrEdit(productLinkId);
                productLinkForm.ShowDialog();
                mainDataGridView.DataSource = SqliteDAProductLink.GetAllProductLinks();
                SetDefaultLoadParameters();
            }
            //  4. Product
            else if (modeStripStatusLabel.Text == "PRODUCT MODE")
            {
                int productId = Convert.ToInt32(row.Cells["Id"].Value);
                ProductNewOrEdit productForm = new ProductNewOrEdit(productId);
                productForm.ShowDialog();
                mainDataGridView.DataSource = SqliteDAProduct.GetAllProducts();
                SetDefaultLoadParameters();
            }
            //  5. Invoice
            else if (modeStripStatusLabel.Text == "INVOICE MODE")
            {
                int invoiceId = Convert.ToInt32(row.Cells["Id"].Value);
                InvoiceNewOrEdit invoiceForm = new InvoiceNewOrEdit(invoiceId);
                invoiceForm.ShowDialog();
                SetDefaultLoadParametersForInvoiceBarcodeMode(invoiceForm.invoice);
            }
            //  6. Invoice Product
            else if (modeStripStatusLabel.Text == "INVOICE PRODUCT MODE")
            {
                int invoiceProductId = Convert.ToInt32(row.Cells["Id"].Value);
                InvoiceProductNewOrEdit invoiceProductForm = new InvoiceProductNewOrEdit(invoiceProductId);
                invoiceProductForm.ShowDialog();
                barCodeSearchPanel.Visible  = true;
                this.ActiveControl          = barcodeTextBox;
                mainDataGridView.DataSource = SqliteDAInvoiceProduct.GetAllInvoiceProductsByInvoiceId(Convert.ToInt32(invoiceNumberStripStatusLabel.Text));
                mainDataGridView.AutoResizeColumns();
                mainDataGridView.ClearSelection();
                mainDataGridView.Columns["ProductId"].Visible = false;
                mainDataGridView.Columns["InvoiceId"].Visible = false;
                mainDataGridView.Columns["TotalPrice"].DefaultCellStyle.Format = "0.00##";

                calculateInvoiceTotals(SqliteDAInvoice.GetInvoiceById(Convert.ToInt32(invoiceNumberStripStatusLabel.Text)));
            }
        }
Example #8
0
        //********************************************************************************************//
        //  LOAD MODELS - CLICK VIEW BUTTON EVENT
        //********************************************************************************************//
        private void viewButton_Click(object sender, EventArgs e)
        {
            //1. Category
            if (modeStripStatusLabel.Text == "CATEGORY MODE")
            {
                //TODO: Add View Function for categories - FREE VERSION V1.1
                MessageBox.Show("Function will be available in a future release version.", "Future Version", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            //2. Store
            else if (modeStripStatusLabel.Text == "STORE MODE")
            {
                //TODO: Add View Function for stores - FREE VERSION V1.1
                MessageBox.Show("Function will be available in a future release version.", "Future Version", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            //3. Product Link
            else if (modeStripStatusLabel.Text == "PRODUCT LINK MODE")
            {
                //TODO: Add View Function for product links - FREE VERSION V1.1
                MessageBox.Show("Function will be available in a future release version.", "Future Version", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            //4. Product
            else if (modeStripStatusLabel.Text == "PRODUCT MODE")
            {
                //TODO: Add View Function for products - FREE VERSION V1.1
                MessageBox.Show("Function will be available in a future release version.", "Future Version", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            //5. Invoice
            else if (modeStripStatusLabel.Text == "INVOICE MODE")
            {
                //************************************************************************************************************************************
                //Load all invoice products by invoice id from the database to the main data grid view.
                //There is no invoice product icon to double click on.
                //If the user wants to get all invoice products, the user will have to run a report from the reports function.
                //Exception handling - if the user doesn't select a cell before clicking view, an argument error is thrown.
                //Error is logged and message shown. Invoice are reloaded again, because if the user clicks on the current data grid view and then on
                //the view button, the error message is thrown again.
                //************************************************************************************************************************************

                modeStripStatusLabel.Text = "INVOICE PRODUCT MODE";
                try
                {
                    invoiceNumberStripStatusLabel.Text = row.Cells["Id"].Value.ToString();
                    mainDataGridView.DataSource        = SqliteDAInvoiceProduct.GetAllInvoiceProductsByInvoiceId(Convert.ToInt32(row.Cells["Id"].Value));
                    mainDataGridView.AutoResizeColumns();
                    mainDataGridView.Columns["InvoiceId"].Visible = false;
                    mainDataGridView.Columns["ProductId"].Visible = false;
                    mainDataGridView.Columns["TotalPrice"].DefaultCellStyle.Format = "0.00##";
                    toggleClickFirstButtons(false);
                }
                catch (ArgumentException aex)
                {
                    MessageBox.Show("Please select a cell before clicking view", "Invoice Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    General.LogError(aex);
                    mainDataGridView.DataSource = SqliteDAInvoice.GetAllInvoices();
                    mainDataGridView.AutoResizeColumns();
                }
                catch (Exception ex)
                {
                    General.LogError(ex);
                }
                mainDataGridView.AutoResizeColumns();
            }
            //6. Invoice Product
            else if (modeStripStatusLabel.Text == "INVOICE PRODUCT MODE")
            {
                //TODO: Add View Function for invoice products - FREE VERSION V1.1
                MessageBox.Show("Function will be available in a future release version.", "Future Version", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }