コード例 #1
0
        /// <summary>
        /// Insere um novo produto ou atualiza caso ele já exista.
        /// </summary>
        /// <param name="product">Produto a ser inserido ou atualizado</param>
        public void InsertUpdateProduct(Product product)
        {
            try
            {
                using (this.productDataAccess = new ProductDataAccess())
                {
                    if (product.Id > 0)
                    {
                        this.productDataAccess.UpdateProduct(product.Id, product.BarCode, product.Name, 
                                                             product.Description, product.MeasurementUnit, product.Status);
                    }
                    else
                    {
                        this.productDataAccess.InsertProduct(product.BarCode, product.Name, product.Description,
                                                             product.MeasurementUnit, product.StockQuantity, product.Status);
                    }

                    this.productDataAccess.InsertPrice(this.productDataAccess.GetId(product.BarCode), DateTime.Now, 
                                                       product.CostPrice, product.SalePrice);
                }
            }
            catch (Exception ex)
            {
                Logging.Error(BusinessConstants.ProjectName,
                              MethodBase.GetCurrentMethod().DeclaringType.Name,
                              MethodBase.GetCurrentMethod().Name,
                              ex.Message);

                throw ex;
            }
        }
コード例 #2
0
        /// <summary>
        /// Lança evento para adicionar produto.
        /// </summary>
        /// <param name="product">Produto que será adicionado</param>
        public void ThrowAddProduct(Product product)
        {
            AddProductEventHandler handler = AddProduct;

            if (handler != null)
            {
                AddProduct(product);
            }
        }
コード例 #3
0
        /// <summary>
        /// Atualiza a quantidade em estoque de um produto.
        /// </summary>
        /// <param name="product">Produto a ser atualizado</param>
        public void UpdateProductStockQuantity(Product product)
        {
            try
            {
                using (this.productDataAccess = new ProductDataAccess())
                {
                    this.productDataAccess.UpdateProductStockQuantity(product.BarCode, product.StockQuantity);
                }
            }
            catch (Exception ex)
            {
                Logging.Error(BusinessConstants.ProjectName,
                              MethodBase.GetCurrentMethod().DeclaringType.Name,
                              MethodBase.GetCurrentMethod().Name,
                              ex.Message);

                throw ex;
            }
        }
コード例 #4
0
        /// <summary>
        /// Adiciona um produto na lista de produtos da mesa selecionada.
        /// </summary>
        /// <param name="tableIndex">Índice da mesa</param>
        private void AddProduct(int tableIndex)
        {
            int productIndex;

            try
            {
                this.currentProduct = this.productBusiness.GetProductSale(long.Parse(this.textBoxBarCode.Text));

                if (this.currentProduct != null)
                {
                    this.currentProduct.Quantity = int.Parse(textBoxQuantity.Text);

                    // Se a quantidade a ser vendida for maior que a quantidade em estoque, exibe um alerta.
                    if (this.currentProduct.Quantity + GetProductQuantity(this.currentProduct) <= this.currentProduct.StockQuantity)
                    {
                        // Busca o índice deste produto na lista de produtos.
                        productIndex = GetProductIndex(tableIndex, this.currentProduct);

                        // Se o índice do produto for maior que 0 ele já está na lista, caso contrário ele será adicionado.
                        if (productIndex > -1)
                        {
                            this.currentProduct.Quantity += this.lstTables[tableIndex].LstProducts[productIndex].Quantity;

                            this.lstTables[tableIndex].LstProducts[productIndex] = this.currentProduct;
                            this.listBoxProducts.Items[productIndex + 1] = this.currentProduct;
                            this.listBoxProducts.SelectedIndex = productIndex + 1;
                        }
                        else
                        {
                            this.lstTables[tableIndex].LstProducts.Add(this.currentProduct);
                            this.listBoxProducts.Items.Add(this.currentProduct);
                            this.listBoxProducts.SelectedIndex = this.listBoxProducts.Items.Count - 1;
                        }
                    }
                    else
                    {
                        MessageBox.Show(this, Resources.StockProductNotEnough, Resources.Warning,
                                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                else
                {
                    MessageBox.Show(this, Resources.ProductNotExists, Resources.Warning,
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }

                UpdateTablesStatus();
            }
            catch (Exception ex)
            {
                Logging.Error(ViewConstants.ProjectName,
                              MethodBase.GetCurrentMethod().DeclaringType.Name,
                              MethodBase.GetCurrentMethod().Name,
                              ex.Message);
            }
        }
コード例 #5
0
        /// <summary>
        /// Busca a quantidade de um produto em todas em mesas.
        /// </summary>
        /// <param name="prod">Produto a ser buscado</param>
        /// <returns>Retorna a quantidade do produto em todas as mesas</returns>
        private int GetProductQuantity(Product prod)
        {
            int count = 0;

            try
            {
                foreach (Table table in this.lstTables)
                {
                    foreach (Product product in table.LstProducts)
                    {
                        if (product.Id == prod.Id)
                        {
                            count += product.Quantity;
                        }
                    }
                }

                return count;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #6
0
        /// <summary>
        /// Busca o índice de um produto na lista de produtos de determinada mesa.
        /// </summary>
        /// <param name="tableIndex">Índice da mesa</param>
        /// <param name="product">Produto a ser buscado</param>
        /// <returns>Retorna o índice do produto na lista de produtos da mesa selecionada</returns>
        private int GetProductIndex(int tableIndex, Product product)
        {
            try
            {
                for (int i = 0; i < this.lstTables[tableIndex].LstProducts.Count; i++)
                {
                    if (this.lstTables[tableIndex].LstProducts[i].Id == product.Id)
                    {
                        return i;
                    }
                }

                return -1;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #7
0
        private void frmAddProduct_AddProduct(Product product)
        {
            this.textBoxBarCode.Text = product.BarCode.ToString();

            AddProduct(this.currentTable.Number - 1);
            CountItemsAndCalculateSubtotal(this.currentTable.Number - 1);

            this.textBoxBarCode.Text = string.Empty;
            this.textBoxBarCode.Focus();
        }
コード例 #8
0
        /// <summary>
        /// Adiciona um produto na lista de produtos a serem vendidos.
        /// </summary>
        private void AddProduct()
        {
            int productIndex;

            try
            {
                // Busca o produto a ser adicionado.
                this.currentProduct = this.productBusiness.GetProductSale(long.Parse(this.textBoxBarCode.Text));

                if (this.currentProduct != null)
                {
                    this.currentProduct.Quantity = int.Parse(textBoxQuantity.Text);

                    // Se a quantidade a ser vendida for maior que a quantidade em estoque, exibe um alerta.
                    if (this.currentProduct.Quantity + GetProductQuantity(this.currentProduct) <= this.currentProduct.StockQuantity)
                    {
                        // Busca o índice deste produto na lista de produtos.
                        productIndex = GetProductIndex(this.currentProduct);

                        // Se o índice do produto for maior que 0 ele já está na lista, caso contrário ele será adicionado.
                        if (productIndex > -1)
                        {
                            this.currentProduct.Quantity += this.lstProduct[productIndex].Quantity;

                            this.lstProduct[productIndex] = this.currentProduct;
                            // Associa o produto no listbox.
                            this.listBoxProducts.Items[productIndex + 1] = this.currentProduct;
                            // Seleciona o item do listbox.
                            this.listBoxProducts.SelectedIndex = productIndex + 1;
                        }
                        else
                        {
                            this.lstProduct.Add(this.currentProduct);
                            this.listBoxProducts.Items.Add(this.currentProduct);
                            this.listBoxProducts.SelectedIndex = this.listBoxProducts.Items.Count - 1;
                        }

                        // Informa nome, preço e subtotal deste produto.
                        this.textBoxName.Text = this.currentProduct.Name;
                        this.textBoxPrice.Text = this.currentProduct.SalePrice.ToString("0.00");
                        this.textBoxSubtotal.Text = this.currentProduct.CalculateSubtotal().ToString("0.00");
                    }
                    else
                    {
                        MessageBox.Show(this, Resources.StockProductNotEnough, Resources.Warning,
                                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                else
                {
                    MessageBox.Show(this, Resources.ProductNotExists, Resources.Warning,
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception ex)
            {
                Logging.Error(ViewConstants.ProjectName,
                              MethodBase.GetCurrentMethod().DeclaringType.Name,
                              MethodBase.GetCurrentMethod().Name,
                              ex.Message);
            }
        }
コード例 #9
0
        /// <summary>
        /// Busca a quantidade de um produto na lista de produtos.
        /// </summary>
        /// <param name="prod">Produto a ser buscado</param>
        /// <returns>Retorna a quantidade do produto na lista</returns>
        private int GetProductQuantity(Product prod)
        {
            try
            {
                foreach(Product product in this.lstProduct)
                {
                    if (product.Id == prod.Id)
                    {
                        return product.Quantity;
                    }
                }

                return 0;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #10
0
        /// <summary>
        /// Busca o índice de um produto na lista de produtos.
        /// </summary>
        /// <param name="product">Produto a ser buscado</param>
        /// <returns>Retorna o índice do produto na lista</returns>
        private int GetProductIndex(Product product)
        {
            try
            {
                for (int i = 0; i < this.lstProduct.Count; i++)
                {
                    if (this.lstProduct[i].Id == product.Id)
                    {
                        return i;
                    }
                }

                return -1;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #11
0
        private void buttonAddProduct_Click(object sender, EventArgs e)
        {
            // Verifica se algum produto foi selecionado.
            if (this.dataGridViewProducts.SelectedRows.Count > 0)
            {
                Product product = new Product();
                product.Id = int.Parse(this.dataGridViewProducts.SelectedRows[0].Cells[0].Value.ToString());
                product.BarCode = long.Parse(this.dataGridViewProducts.SelectedRows[0].Cells[1].Value.ToString());
                product.Name = this.dataGridViewProducts.SelectedRows[0].Cells[2].Value.ToString();
                product.Description = this.dataGridViewProducts.SelectedRows[0].Cells[3].Value.ToString();
                product.MeasurementUnit = this.dataGridViewProducts.SelectedRows[0].Cells[4].Value.ToString();
                product.CostPrice = float.Parse(this.dataGridViewProducts.SelectedRows[0].Cells[5].Value.ToString());
                product.SalePrice = float.Parse(this.dataGridViewProducts.SelectedRows[0].Cells[6].Value.ToString());

                // Lança evento para ser capturado no FormSale ou no FormTables.
                ThrowAddProduct(product);

                this.Close();
            }
            else
            {
                // MessageBox.
            }
        }
コード例 #12
0
        /// <summary>
        /// Salva os dados do produto.
        /// </summary>
        private void SaveProduct()
        {
            try
            {
                // Verifica se os campos do formulário não estão vazios.
                if (string.IsNullOrWhiteSpace(this.textBoxBarCode.Text) ||
                    string.IsNullOrWhiteSpace(this.textBoxName.Text) ||
                    string.IsNullOrWhiteSpace(this.textBoxDescription.Text) ||
                    string.IsNullOrWhiteSpace(this.comboBoxMeasurementUnity.SelectedItem.ToString()) ||
                    string.IsNullOrWhiteSpace(this.textBoxCostPrice.Text) ||
                    string.IsNullOrWhiteSpace(this.textBoxSalePrice.Text))
                {
                    MessageBox.Show(this, Resources.ProductSaveEmptyFields, Resources.Warning, 
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);

                    return;
                }

                Product product = new Product();

                if (this.dataGridViewProducts.SelectedRows.Count == 1)
                {
                    product.Id = int.Parse(this.dataGridViewProducts.SelectedRows[0].Cells[0].Value.ToString());
                }
                product.BarCode = long.Parse(this.textBoxBarCode.Text);
                product.Name = this.textBoxName.Text;
                product.Description = this.textBoxDescription.Text;
                product.MeasurementUnit = this.comboBoxMeasurementUnity.SelectedItem.ToString();
                product.StockQuantity = 0;
                product.Status = this.radioButtonActive.Checked ? 1 : 0;
                product.CostPrice = float.Parse(this.textBoxCostPrice.Text);
                product.SalePrice = float.Parse(this.textBoxSalePrice.Text);

                this.productBusiness.InsertUpdateProduct(product);

                MessageBox.Show(this, Resources.ProductSaveSuccess, Resources.Success, 
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                Logging.Error(ViewConstants.ProjectName,
                              MethodBase.GetCurrentMethod().DeclaringType.Name,
                              MethodBase.GetCurrentMethod().Name,
                              ex.Message);

                MessageBox.Show(this, Resources.ProductSaveError, Resources.Error, 
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #13
0
        /// <summary>
        /// Salva a alterações realizadas nas quantidades dos produtos em estoque.
        /// </summary>
        private void SaveStock()
        {
            int currentQuantity;
            int additionalQuantity;

            try
            {
                Cursor.Current = Cursors.WaitCursor;

                Thread.Sleep(1000);

                if (this.dataGridViewProducts.SelectedRows.Count == 1)
                {
                    // Quantidade atual do produto em estoque.
                    currentQuantity = int.Parse(this.dataGridViewProducts.SelectedRows[0].Cells[4].Value.ToString());
                    
                    // Quantidade a ser adicionar ou retirada do estoque.
                    additionalQuantity = int.Parse(textBoxQuantity.Text);

                    Product product = new Product();
                    product.Id = int.Parse(this.dataGridViewProducts.SelectedRows[0].Cells[0].Value.ToString());
                    product.BarCode = long.Parse(this.textBoxBarCode.Text);
                    product.Name = this.textBoxName.Text;
                    product.Description = this.textBoxDescription.Text;

                    if (this.radioButtonProductIn.Checked)
                    {
                        product.StockQuantity = currentQuantity + additionalQuantity;
                    }
                    else
                    {
                        // Se a quantidade a ser retirada for maior que a quantidade em estoque, exibe um alerta.
                        if (additionalQuantity > currentQuantity)
                        {
                            MessageBox.Show(this, Resources.StockProductNotEnough, Resources.Warning,
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);

                            return;
                        }
                        else
                        {
                            product.StockQuantity = currentQuantity - additionalQuantity;
                        }
                    }

                    this.productBusiness.UpdateProductStockQuantity(product);

                    MessageBox.Show(this, Resources.StockSaveSucess, Resources.Success, 
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show(this, Resources.StockProductNotSelected, Resources.Warning, 
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception ex)
            {
                Logging.Error(ViewConstants.ProjectName,
                              MethodBase.GetCurrentMethod().DeclaringType.Name,
                              MethodBase.GetCurrentMethod().Name,
                              ex.Message);

                MessageBox.Show(this, Resources.StockSaveError, Resources.Error,
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
コード例 #14
0
        /// <summary>
        /// Busca produto a ser adicionado na venda pelo código de barras.
        /// </summary>
        /// <param name="barCode">Código de barras do produto</param>
        /// <returns>Retorna o produto</returns>
        public Product GetProductSale(long barCode)
        {
            DataTable dtProduct;
            Product product = null;

            try
            {
                using (this.productDataAccess = new ProductDataAccess())
                {
                    dtProduct = this.productDataAccess.GetProductSale(barCode);
                }

                if (dtProduct != null && dtProduct.Rows.Count == 1)
                {
                    product = new Product();
                    product.Id = (int)dtProduct.Rows[0][DatabaseConstants.ProductIdColumn];
                    product.BarCode = (long)dtProduct.Rows[0][DatabaseConstants.ProductBarCodeColumn];
                    product.Name = (string)dtProduct.Rows[0][DatabaseConstants.ProductNameColumn];
                    product.Description = (string)dtProduct.Rows[0][DatabaseConstants.ProductDescriptionColumn];
                    product.MeasurementUnit = (string)dtProduct.Rows[0][DatabaseConstants.ProductMeasurementUnitColumn];
                    product.StockQuantity = (double)dtProduct.Rows[0][DatabaseConstants.ProductStockQuantityColumn];
                    product.CostPrice = float.Parse(dtProduct.Rows[0][DatabaseConstants.PriceCostPriceColumn].ToString());
                    product.SalePrice = float.Parse(dtProduct.Rows[0][DatabaseConstants.PriceSalePriceColumn].ToString());
                }

                return product;
            }
            catch (Exception ex)
            {
                Logging.Error(BusinessConstants.ProjectName,
                              MethodBase.GetCurrentMethod().DeclaringType.Name,
                              MethodBase.GetCurrentMethod().Name,
                              ex.Message);

                throw ex;
            }
        }