Advertisement
Guest User

Part of my system

a guest
May 7th, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.77 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using MySql.Data.MySqlClient;
  10.  
  11. namespace Projeto_TCC
  12. {
  13.     public partial class FormCaixa : Form
  14.     {
  15.         #region Campos
  16.         // const string CONNECTION_STRING = "server=localhost;uid=root;pwd=root;database=Projeto_TCC";
  17.         private string mensagemDeSaida = "finalizar da aplicação";
  18.         private int item = 0;
  19.         private double totalVenda = 0.0;
  20.         #endregion
  21.  
  22.         #region Método construtor
  23.         public FormCaixa()
  24.         {
  25.             InitializeComponent();
  26.         }
  27.         #endregion
  28.  
  29.         #region Evento Click do ToolStrip Encerrar sessão
  30.         private void encerrarSessãoToolStripMenuItem_Click(object sender, EventArgs e)
  31.         {
  32.             DialogResult = DialogResult.Yes;
  33.             mensagemDeSaida = "encerrar esta sessão";
  34.             this.Close();
  35.         }
  36.         #endregion
  37.  
  38.         #region Evento Click do ToolStrip Sair
  39.         private void sairToolStripMenuItem_Click(object sender, EventArgs e)
  40.         {
  41.             Application.Exit();
  42.         }
  43.         #endregion
  44.  
  45.         #region Evento Click do ToolStrip Sobre
  46.         private void sobreToolStripMenuItem_Click(object sender, EventArgs e)
  47.         {
  48.             new AboutBoxProjeto().ShowDialog(); // Isso é uma boa prática?
  49.         }
  50.         #endregion
  51.  
  52.         #region Evento FormClosing do FormCaixa
  53.         private void FormCaixa_FormClosing(object sender, FormClosingEventArgs e)
  54.         {
  55.             if (MessageBox.Show("Deseja " + mensagemDeSaida + "?", "Caixa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  56.                 e.Cancel = true;
  57.  
  58.             mensagemDeSaida = "finalizar da aplicação";
  59.         }
  60.         #endregion
  61.  
  62.         #region Evento Click do Button Adicionar
  63.         private void buttonAdicionar_Click(object sender, EventArgs e)
  64.         {
  65.             // Prepara a conexão com o DB
  66.             MySqlConnection con = new MySqlConnection(Properties.Settings.Default.ConnectionString);
  67.  
  68.             // Objetos utilizado para a realização de alguns processos
  69.             MySqlDataAdapter da = new MySqlDataAdapter();
  70.             DataTable dt = new DataTable();
  71.  
  72.             // Prepara o comando em SQL que retorná os dados sobre o item a ser adicionado à lista
  73.             MySqlCommand cmd = new MySqlCommand("SELECT codigo, descricao, unidMedida, vlUnitario FROM tabEstoque WHERE codBar = @codBar;", con);
  74.             cmd.Parameters.Add("@codBar", MySqlDbType.VarChar).Value = textBoxCodBarras.Text;
  75.  
  76.             try
  77.             {
  78.                 // Abre a conexão e executa o comando em SQL
  79.                 con.Open();
  80.                 da.SelectCommand = cmd;
  81.                 da.SelectCommand.ExecuteNonQuery();
  82.                 da.Fill(dt);
  83.  
  84.                 // Caso haja alguma linha no DataSet ds então existe um produto com o codigo de barra procurado no banco de dados
  85.                 if (dt.Rows.Count == 1)
  86.                 {
  87.                     bool itemIgual = false;
  88.                     int rowIndex = 0;
  89.  
  90.                     // Passa por todas as linhas da lista de compras para verificar se existe outro item igual
  91.                     foreach (DataGridViewRow dgvListaRow in dataGridViewLista.Rows)
  92.                     {
  93.                         // Verifica se o produto da linha da lista de compra é o mesmo do código de barras
  94.                         if (dgvListaRow.Cells[1].FormattedValue.ToString() == dt.Rows[0][0].ToString())
  95.                         {
  96.                             // Verifica se estão tentando vender uma certa quantidade de um produto que esteja acima da quantidade do mesmo no estoque
  97.                             if (!this.VerificarSeExcede(Convert.ToInt32(dgvListaRow.Cells[1].FormattedValue), Convert.ToInt32(dgvListaRow.Cells[3].FormattedValue) + 1))
  98.                             {
  99.                                 // Adiciona mais um na quantidade do item na lista de compra
  100.                                 dgvListaRow.Cells[3].Value = Convert.ToInt32(dgvListaRow.Cells[3].FormattedValue) + 1;
  101.                                 // Multiplica o VL. ITEM. pela nova quantidade e armazena o resultado em VL. ITEM
  102.                                 dgvListaRow.Cells[6].Value = String.Format("{0:f}",
  103.                                     (Convert.ToDouble(dgvListaRow.Cells[3].Value) * Convert.ToDouble(dgvListaRow.Cells[5].Value)));
  104.  
  105.                                 // Adiciona o valor do produto ao valor total da venda
  106.                                 totalVenda += Convert.ToDouble(dgvListaRow.Cells[5].Value);
  107.                             }
  108.                             else
  109.                             {
  110.                                 MessageBox.Show("Ocorreu a tentativa de vender uma certa quantidade deste produto que excede a quantidade do mesmo no estoque.", "Caixa", MessageBoxButtons.OK, MessageBoxIcon.Error);
  111.                             }
  112.  
  113.                             itemIgual = true; // Evita que o if abaixo seja executado
  114.                             break; // Sai do loop para econimizar tempo no processamento
  115.                         }
  116.  
  117.                         rowIndex++;
  118.                     }
  119.  
  120.                     // Caso o item não seja igual a nenhum outro na lista ele é adicionado à lista
  121.                     if (!itemIgual)
  122.                     {
  123.                         // Verifica se estão tentando vender uma certa quantidade de um produto que esteja acima da quantidade do mesmo no estoque
  124.                         if (!this.VerificarSeExcede(Convert.ToInt32(dt.Rows[0][0].ToString()), 1))
  125.                         {
  126.                             dataGridViewLista.Rows.Add(
  127.                                 ++item,                     // ITEM
  128.                                 dt.Rows[0][0],    // CÓDIGO
  129.                                 dt.Rows[0][1],    // DESCRIÇÃO
  130.                                 1,                          // QTD.
  131.                                 dt.Rows[0][2],    // UN.
  132.                                 dt.Rows[0][3],    // VL. UNIT.
  133.                                 dt.Rows[0][3]);   // VL. ITEM.
  134.  
  135.                             // Adiciona o valor do produto ao valor total da venda
  136.                             totalVenda += Convert.ToDouble(dt.Rows[0][3].ToString());
  137.                         }
  138.                         else
  139.                         {
  140.                             MessageBox.Show("Ocorreu a tentativa de vender uma certa quantidade deste produto que excede a quantidade do mesmo no estoque.", "Caixa", MessageBoxButtons.OK, MessageBoxIcon.Error);
  141.                         }
  142.                     }
  143.  
  144.                     // Atualiza a label que o exibe o total da venda
  145.                     labelTotal.Text = String.Format("Total: {0:c}", totalVenda);
  146.                 }
  147.                 else // Mensagem exibida caso a cosulta nao retorne alguma coisa
  148.                 {
  149.                     MessageBox.Show("Este item não consta no banco de dados.", "Caixa", MessageBoxButtons.OK, MessageBoxIcon.Error);
  150.                 }
  151.             }
  152.             catch (MySqlException ex)
  153.             {
  154.                 MessageBox.Show("Ocorreu um erro durante a comunicação com o banco de dados.\n\n" + ex.Message, "Caixa", MessageBoxButtons.OK, MessageBoxIcon.Error);
  155.             }
  156.             finally
  157.             {
  158.                 con.Close(); // Fecha a conexão
  159.                 // Liberam os recursos/espaços ocupados na memória
  160.                 da.Dispose();
  161.                 dt.Dispose();
  162.                 cmd.Dispose();
  163.             }
  164.             //textBoxCodBarras.Clear();
  165.             //textBoxCodBarras.Focus();
  166.         }
  167.         #endregion
  168.  
  169.         private bool VerificarSeExcede(int codProd, int quantItem)
  170.         {
  171.             MySqlConnection con = new MySqlConnection(Properties.Settings.Default.ConnectionString);
  172.             MySqlCommand cmd = new MySqlCommand("SELECT codigo, quantidade FROM tabestoque WHERE codigo = @codProd", con);
  173.             cmd.Parameters.Add("@codProd", MySqlDbType.Int32).Value = codProd;
  174.             MySqlDataAdapter da = new MySqlDataAdapter(cmd);
  175.             DataTable dt = new DataTable();
  176.            
  177.             con.Open();
  178.             da.SelectCommand.ExecuteNonQuery();
  179.             da.Fill(dt);
  180.             int quantDB = Convert.ToInt32(dt.Rows[0][1]);
  181.  
  182.             con.Close();
  183.             cmd.Dispose();
  184.             da.Dispose();
  185.             dt.Dispose();
  186.  
  187.             // Verifica se a quantidade do produto no banco de dados é >= que a quantidade do item na lista
  188.             if (quantDB >= quantItem)
  189.                 return false;
  190.             else
  191.                 return true;
  192.         }
  193.     }
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement