private void LimparCampos()
        {
            buttonConfirmar.Enabled = false;
            groupBoxItem.Enabled    = false;

            labelValorCod.Text           = string.Format("{0:000000}", 0);
            textBoxFornecedorCod.Enabled = true;
            textBoxFornecedorCod.Clear();
            textBoxFornecedorCod.Select();
            labelFornecedorDescricao.Text  = "";
            buttonAddFornecedor.Enabled    = true;
            buttonBuscarFornecedor.Enabled = true;
            buttonInicializar.Enabled      = false;
            buttonFechar.Text = "&Ferchar";
            LimparProduto();
            textBoxProdutoCod.Clear();
            Cancelar = false;

            produtoInfo = new ProdutoInfo();
            gridLancarEstoqueColecao = new GridLancarEstoqueColecao();
            dataGridViewLancarEstoqueDetalhes.DataSource = null;
            serializarNegocios.ExcluirArquivo(FileName);
            labelValorTotal.Text      = string.Format("{0:C}", 0);
            labelValorTotalQuant.Text = string.Format("{0:0000}", 0);
        }
        private void AddNovoItem()
        {
            if (produtoInfo != null)
            {
                decimal quant = Convert.ToDecimal(textBoxQuant.Text);

                GridLancarEstoqueInfo gridLancarEstoqueInfo = new GridLancarEstoqueInfo
                {
                    descricao  = produtoInfo.prodetalhes,
                    id         = estoqueLancamentoInfo.estoquelancamentoid,
                    idproduto  = produtoInfo.proId,
                    idestoque  = produtoInfo.prodestoqueid,
                    quant      = quant,
                    valorTotal = quant * produtoInfo.proValorCompra,
                    valorUnit  = produtoInfo.proValorCompra
                };

                if (gridLancarEstoqueColecao.Count > 0)
                {
                    for (int i = 0; i < gridLancarEstoqueColecao.Count; i++)
                    {
                        if (gridLancarEstoqueColecao[i].idproduto == gridLancarEstoqueInfo.idproduto)
                        {
                            gridLancarEstoqueInfo.quant     += gridLancarEstoqueColecao[i].quant;
                            gridLancarEstoqueInfo.valorTotal = gridLancarEstoqueInfo.quant * gridLancarEstoqueInfo.valorUnit;
                            gridLancarEstoqueColecao.RemoveAt(i);
                        }
                    }
                }

                GridLancarEstoqueColecao novo = new GridLancarEstoqueColecao();
                novo.Add(gridLancarEstoqueInfo);

                for (int i = 0; i < gridLancarEstoqueColecao.Count; i++)
                {
                    novo.Add(gridLancarEstoqueColecao[i]);
                }

                gridLancarEstoqueColecao = novo;
            }

            PreencherGrid();
            textBoxProdutoCod.Clear();
            textBoxProdutoCod.Select();
            LimparProduto();
            buttonConfirmar.Enabled = true;
            buttonRemover.Enabled   = true;
            buttonAddItem.Enabled   = false;
            labelRemover.ForeColor  = Color.Red;
        }
        private void FormProdEstoque_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < dataGridViewLancarEstoqueDetalhes.ColumnCount; i++)
            {
                dataGridViewLancarEstoqueDetalhes.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet;
            }

            if (serializarNegocios.ArquivoExiste(FileName))
            {
                gridLancarEstoqueColecao = (serializarNegocios.DesserializarObjeto(FileName) as GridLancarEstoqueColecao);

                if (gridLancarEstoqueColecao != null)
                {
                    negocioEstoque        = new EstoqueNegocios(Form1.Empresa.empconexao, Form1.Unidade.uniassistencia);
                    estoqueLancamentoInfo = negocioEstoque.ConsultarEstoqueLancamento(gridLancarEstoqueColecao[0].id);

                    if (estoqueLancamentoInfo != null && estoqueLancamentoInfo.estoquelancamentoidunid == Form1.Unidade.uniid)
                    {
                        labelValorCod.Text             = string.Format("{0:000000}", estoqueLancamentoInfo.estoquelancamentoid);
                        labelValorData.Text            = estoqueLancamentoInfo.estoquelancamentodatahora.ToLongDateString() + " " + estoqueLancamentoInfo.estoquelancamentodatahora.ToShortTimeString();
                        textBoxFornecedorCod.Text      = string.Format("{0:000}", 0);
                        labelFornecedorDescricao.Text  = "*FORNECEDORES DIVERSOS*";
                        textBoxFornecedorCod.Enabled   = false;
                        buttonAddFornecedor.Enabled    = false;
                        buttonBuscarFornecedor.Enabled = false;
                        Cancelar          = true;
                        buttonFechar.Text = "Cancel.";

                        groupBoxItem.Enabled      = true;
                        buttonRemover.Enabled     = true;
                        buttonInicializar.Enabled = false;
                        PreencherGrid();
                        textBoxProdutoCod.Select();
                    }
                }
            }

            textBoxFornecedorCod.Select();
        }
        private void LimparForm()
        {
            textBoxQuant.Text          = "1";
            labelProdutoDescricao.Text = "";
            labelValorUnit.Text        = "";
            labelQuantEstoque.Text     = "";

            if (!ProdContagem)
            {
                textBoxValorCod.Enabled = true;
            }

            textBoxValorCod.Text     = "";
            labelValorData.Text      = "";
            gridLancarEstoqueColecao = new GridLancarEstoqueColecao();
            dataGridViewLancarEstoqueDetalhes.DataSource = null;
            buttonInicializar.Enabled = true;
            groupBoxItem.Enabled      = false;
            buttonInicializar.Select();
            Cancelar                  = false;
            buttonFechar.Text         = "&Fechar";
            labelValorTotal.Text      = "";
            labelValorTotalQuant.Text = "";
        }
        private void buttonInicializar_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBoxValorCod.Text))
            {
                if (FormMessage.ShowMessegeQuestion("Deseja realizar uma nova contagem do estoque?") == DialogResult.Yes)
                {
                    estoqueContarInfo = new EstoqueContarInfo
                    {
                        estoquecontardata      = DateTime.Now,
                        estoquecontaridfunc    = Form1.User.useidfuncionario,
                        estoquecontaridunidade = Form1.Unidade.uniid
                    };

                    int cod = negocioEstoque.InsertEstoqueContar(estoqueContarInfo);

                    if (cod > 0)
                    {
                        estoqueContarInfo.estoquecontarid = cod;
                        PreencherFormEstoque(estoqueContarInfo);
                        PreencherGrid();
                    }
                    else
                    {
                        FormMessage.ShowMessegeWarning("Falha ao tentar salvar!");
                    }
                }
            }
            else
            {
                if (int.TryParse(textBoxValorCod.Text, out int cod))
                {
                    estoqueContarInfo = negocioEstoque.ConstularEstoqueContarId(cod);

                    if (estoqueContarInfo != null)
                    {
                        if (estoqueContarInfo.estoquecontarconfirmado != 1)
                        {
                            PreencherFormEstoque(estoqueContarInfo);

                            EstoqueContarDetalhesColecao contar = negocioEstoque.ConsultarEstoqueContarDetalhesIdContar(estoqueContarInfo.estoquecontarid);

                            if (contar != null)
                            {
                                gridLancarEstoqueColecao = new GridLancarEstoqueColecao();
                                foreach (EstoqueContarDetalhesInfo item in contar)
                                {
                                    ProdutoInfo           prod = negocioEstoque.ConsultarProdutosId(item.estoquecontardetalhesidproduto);
                                    GridLancarEstoqueInfo grid = new GridLancarEstoqueInfo
                                    {
                                        descricao  = prod.proCodBarras + " - " + prod.proDescricao,
                                        id         = item.estoquecontardetalhesid,
                                        idestoque  = estoqueContarInfo.estoquecontarid,
                                        idproduto  = item.estoquecontardetalhesidproduto,
                                        quant      = item.estoquecontardetalhesquant,
                                        valorTotal = item.estoquecontardetalhesvalor * item.estoquecontardetalhesquant,
                                        valorUnit  = item.estoquecontardetalhesvalor
                                    };

                                    gridLancarEstoqueColecao.Add(grid);
                                }
                            }

                            PreencherGridDataSource();
                        }
                        else
                        {
                            FormMessage.ShowMessegeWarning("Esta contagem já foi encerrada!");
                        }
                    }
                    else
                    {
                        FormMessage.ShowMessegeWarning("Estoque não encontrado!");
                        textBoxValorCod.Select();
                    }
                }
                else
                {
                    FormMessage.ShowMessegeWarning("Insira um valor válido!");
                    textBoxValorCod.Clear();
                    textBoxValorCod.Select();
                }
            }
        }
        private void PreencherGrid()
        {
            if (produtoInfo != null)
            {
                int quant = Convert.ToInt32(textBoxQuant.Text);

                GridLancarEstoqueInfo gridLancarEstoqueInfo = new GridLancarEstoqueInfo
                {
                    descricao  = string.IsNullOrEmpty(produtoInfo.proCodBarras)? produtoInfo.prodetalhes : produtoInfo.proCodBarras + " - " + produtoInfo.prodetalhes,
                    idestoque  = estoqueContarInfo.estoquecontarid,
                    idproduto  = produtoInfo.proId,
                    quant      = quant,
                    valorTotal = quant * produtoInfo.proValorCompra,
                    valorUnit  = produtoInfo.proValorCompra,
                };

                if (gridLancarEstoqueColecao.Count > 0)
                {
                    for (int i = 0; i < gridLancarEstoqueColecao.Count; i++)
                    {
                        if (gridLancarEstoqueColecao[i].idproduto == gridLancarEstoqueInfo.idproduto)
                        {
                            gridLancarEstoqueInfo.quant     += gridLancarEstoqueColecao[i].quant;
                            gridLancarEstoqueInfo.valorTotal = gridLancarEstoqueInfo.quant * gridLancarEstoqueInfo.valorUnit;
                            gridLancarEstoqueColecao.RemoveAt(i);
                        }
                    }
                }

                EstoqueContarDetalhesInfo estoquecontar = new EstoqueContarDetalhesInfo
                {
                    estoquecontardetalhesid        = gridLancarEstoqueInfo.id,
                    estoquecontardetalhesidcontar  = gridLancarEstoqueInfo.idestoque,
                    estoquecontardetalhesidproduto = gridLancarEstoqueInfo.idproduto,
                    estoquecontardetalhesquant     = gridLancarEstoqueInfo.quant,
                    estoquecontardetalhesvalor     = gridLancarEstoqueInfo.valorUnit
                };

                EstoqueContarDetalhesInfo contar = negocioEstoque.ConsultarEstoqueContarDetalhesIdProd(gridLancarEstoqueInfo.idproduto, gridLancarEstoqueInfo.id);

                if (contar != null)
                {
                    estoquecontar.estoquecontardetalhesid = contar.estoquecontardetalhesid;
                    negocioEstoque.UpdateEstoqueContarDetalhes(estoquecontar);
                }
                else
                {
                    negocioEstoque.InsertEstoqueContarDetalhes(estoquecontar);
                }

                GridLancarEstoqueColecao novo = new GridLancarEstoqueColecao
                {
                    gridLancarEstoqueInfo
                };

                for (int i = 0; i < gridLancarEstoqueColecao.Count; i++)
                {
                    novo.Add(gridLancarEstoqueColecao[i]);
                }

                gridLancarEstoqueColecao = novo;
            }

            PreencherGridDataSource();
        }