private void btSalvar_Click(object sender, EventArgs e)
        {
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao);

            cx.IniciarTransacao();

            try
            {
                ModeloCompra modelocompra = new ModeloCompra();
                //modeloVenda.VenCod = Convert.ToInt32(txtCod.Text);
                modelocompra.ComNFiscal   = 1;
                modelocompra.ForCod       = 1;
                modelocompra.ComNParcelas = 1;
                modelocompra.ComStatus    = 1;
                modelocompra.ComTotal     = this.totalCompra;
                modelocompra.TpaCod       = 1;



                BLLCompra         bll    = new BLLCompra(cx);
                ModeloItensCompra mitens = new ModeloItensCompra();
                BLLItensCompra    bitens = new BLLItensCompra(cx);

                if (this.operacao == "inserir")
                {
                    bll.Incluir(modelocompra);
                    for (int i = 0; i < dgvItens.RowCount; i++)
                    {
                        mitens.itcCod         = i + 1;
                        mitens.VenCod         = modelocompra.ComCod;
                        mitens.ProCod         = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                        mitens.ProDesc        = dgvItens.Rows[i].Cells[1].Value.ToString();
                        mitens.itcQtde        = Math.Round(Convert.ToDouble(dgvItens.Rows[i].Cells[2].Value), 2);
                        mitens.itcValorCompra = Math.Round(Convert.ToDouble(dgvItens.Rows[i].Cells[3].Value), 2);
                        mitens.itcValor       = Math.Round(Convert.ToDouble(dgvItens.Rows[i].Cells[4].Value), 2);
                        DALConexao    cxp     = new DALConexao(DadosDaConexao.StringDeConexao);
                        BLLProduto    bllp    = new BLLProduto(cx);
                        ModeloProduto modelop = bllp.CarregaModeloProduto(Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value));
                        modelop.ProQtde       = modelop.ProQtde + mitens.itcQtde;
                        modelop.ProValorVenda = mitens.itcValor;
                        modelop.ProValorPago  = mitens.itcValorCompra;
                        bllp.Alterar(modelop);
                        bitens.Incluir(mitens);
                    }
                }
                MessageBox.Show("Entrada de Mercadoria", "Informação da entrada", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.LimpaTela();
                this.alteraBotoes(1);
                cx.TerminarTransacao();
                cx.Desconectar();
            }


            catch (Exception erro)
            {
                MessageBox.Show(erro.Message);
                cx.CancelarTransacao();
                cx.Desconectar();
            }
        }
        private void btExcluir_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult d = MessageBox.Show("Deseja excluir o Registro?", "Aviso", MessageBoxButtons.YesNo);
                if (d.ToString() == "Yes")
                {
                    int codigo = Convert.ToInt32(txtCodCom.Text);
                    int qtde   = Convert.ToInt32(cbNParcelas.Text);

                    //conexao e bll da compra
                    DALConexao cx   = new DALConexao(DadosDaConexao.StringDeConexao);
                    BLLCompra  bllc = new BLLCompra(cx);
                    qtde -= bllc.QuantidadeParcelasNaoPagas(codigo);
                    if (qtde == 0)//nao paguei nenhuma parcela
                    {
                        cx.Conectar();
                        cx.IniciarTransacao();
                        try
                        {
                            //excluir as parcelas da compra
                            BLLParcelaCompra bllp = new BLLParcelaCompra(cx);
                            bllp.ExcluirTodasAsParcelas(codigo);

                            //excluir os itens da compra
                            BLLItensCompra blli = new BLLItensCompra(cx);
                            blli.ExcluirTodosOsItens(codigo);

                            //excluir a compra
                            bllc.Excluir(codigo);
                            cx.TerminarTransacao();
                            cx.Desconectar();

                            this.LimpaTela();
                            this.alteraBotoes(1);
                        }
                        catch (Exception erro)
                        {
                            MessageBox.Show(erro.Message);
                            cx.CancelaTransacao();
                            cx.Desconectar();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Impossivel excluir o registro. \n O registro possui parcelas pagas");
                    }
                }
            }
            catch
            {
                MessageBox.Show("Impossivel excluir o registro. \n O registro esta sendo usado em outro local");
                this.alteraBotoes(3);
            }
        }
        //=============================================================================================================
        private void frmMovimentacaoCompra_Load(object sender, EventArgs e)
        {
            //-----------------------------------------------------------------------------------------------------------------------
            //CONEXAO:
            //-----------------------------------------------------------------------------------------------------------------------
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao);//Recebe a string da conexão da classe DadosDaConexão

            try
            {
                // ajustar o tamanho do form ao iniciar 590; 575
                //this.Size = 590 , 575;

                //indicar qual botão inicia ativo ou desativo:
                this.alteraBotoes(1);

                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: INCIAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                cx.Conectar();         //CONECTAR NO BANCO - para poder usar a transação, tem que ser usado aénas uma conexao, antes cada tabela teinha seu conetar
                cx.IniciarTransacao(); //inicia transação no banco SQL - Feito para acoes que envolvem mais de uma tabela https://youtu.be/fA_T1ywEXqw

                BLLTipoPagamento bll = new BLLTipoPagamento(cx);

                //carregar o combobox: DataSource indica a origem dos dados
                cbTPagto.DataSource    = bll.Localizar(""); //retornar um datatable com todas as catagorias
                cbTPagto.DisplayMember = "tpa_nome";        //qual campo sera monstrado, (Fica Visivel)
                cbTPagto.ValueMember   = "tpa_cod";         // indicar qual campo vai ser guardado como codigo...este que vai ser gravado no BD

                //auto completar combobox: https://youtu.be/duG7x9KR4jA?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=340
                cbTPagto.AutoCompleteMode   = AutoCompleteMode.Suggest;
                cbTPagto.AutoCompleteSource = AutoCompleteSource.ListItems;

                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: TERMINAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //so vai gravar, se for nas tres tabelas
                cx.TerminarTransacao(); //Efetua um comit, confirmar as alterações no banco
                cx.Desconectar();       //desconetar do banco

                //ajusta o tamanho:
                this.Size = new Size(595, 600);
                //this.StartPosition = FormStartPosition.CenterScreen;
                pnFinalizaCompra.Location = new Point(12, 12);
            }
            catch (Exception erro)                                                     // caso der algum erro...(não limpa a tela)
            {
                MessageBox.Show("Erro ao gravar dados da Compra : \n" + erro.Message); //retorna mensagem do sistema, melhorar mensagem para o usuario
                cx.CancelarTransacao();                                                //caso de erro desfaz todas as ações
                cx.Desconectar();                                                      //desconetar do banco
            }
        }
        private void btSalvarParcelas_Click(object sender, EventArgs e)
        {
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao);

            cx.Conectar();
            cx.IniciarTransacao();

            try
            {
                ModeloCompra modeloCompra = new ModeloCompra();
                modeloCompra.ComData      = dtDataCompra.Value;
                modeloCompra.ComNFiscal   = Convert.ToInt32(txtNFiscal.Text);
                modeloCompra.ComNParcelas = Convert.ToInt32(cbNParcelas.Text);
                modeloCompra.ComStatus    = "ativo";
                modeloCompra.ComTotal     = this.totalCompra;
                modeloCompra.ForCod       = Convert.ToInt32(txtForCod.Text);
                modeloCompra.TpaCod       = Convert.ToInt32(cbTPagto.SelectedValue);

                BLLCompra bll = new BLLCompra(cx);

                ModeloItensCompra mitens = new ModeloItensCompra();
                BLLItensCompra    bitens = new BLLItensCompra(cx);

                ModeloParcelaCompra mparcelas = new ModeloParcelaCompra();
                BLLParcelaCompra    bparcelas = new BLLParcelaCompra(cx);

                if (this.operacao == "inserir")
                {
                    //cadastrar compra
                    bll.Incluir(modeloCompra);

                    //cadastrar itens das compras
                    for (int i = 0; i < dgvItens.RowCount; i++)
                    {
                        mitens.ItcCod   = i + 1;
                        mitens.ComCod   = modeloCompra.ComCod;
                        mitens.ProCod   = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                        mitens.ItcQtde  = Convert.ToInt32(dgvItens.Rows[i].Cells[2].Value);
                        mitens.ItcValor = Convert.ToDouble(dgvItens.Rows[i].Cells[3].Value);
                        bitens.Incluir(mitens);
                        //trigger para alterar estoque foi feito no sqlserver
                    }

                    //inserir os itens na tabela parcelascompra
                    for (int i = 0; i < dgvParcelas.RowCount; i++)
                    {
                        mparcelas.ComCod       = modeloCompra.ComCod;
                        mparcelas.PcoCod       = Convert.ToInt32(dgvParcelas.Rows[i].Cells[0].Value);
                        mparcelas.PcoValor     = Convert.ToDouble(dgvParcelas.Rows[i].Cells[1].Value);
                        mparcelas.PcoDataVecto = Convert.ToDateTime(dgvParcelas.Rows[i].Cells[2].Value);
                        bparcelas.Incluir(mparcelas);
                    }
                    //cadastrar parcelas da compra
                    MessageBox.Show("Compra efetuada: Código " + modeloCompra.ComCod.ToString());
                }
                else
                {
                    //alterar
                    modeloCompra.ComCod = Convert.ToInt32(txtCodCom.Text);
                    bll.Alterar(modeloCompra);

                    bitens.ExcluirTodosOsItens(modeloCompra.ComCod);
                    //cadastrar itens das compras
                    for (int i = 0; i < dgvParcelas.RowCount; i++)
                    {
                        mparcelas.ComCod       = modeloCompra.ComCod;
                        mparcelas.PcoCod       = Convert.ToInt32(dgvParcelas.Rows[i].Cells[0].Value);
                        mparcelas.PcoValor     = Convert.ToDouble(dgvParcelas.Rows[i].Cells[1].Value);
                        mparcelas.PcoDataVecto = Convert.ToDateTime(dgvParcelas.Rows[i].Cells[2].Value);
                        bparcelas.Incluir(mparcelas);
                    }

                    bparcelas.ExcluirTodasAsParcelas(modeloCompra.ComCod);
                    //inserir os itens na tabela parcelascompra
                    for (int i = 0; i < dgvParcelas.RowCount; i++)
                    {
                        mparcelas.ComCod       = modeloCompra.ComCod;
                        mparcelas.PcoCod       = Convert.ToInt32(dgvParcelas.Rows[i].Cells[0].Value);
                        mparcelas.PcoValor     = Convert.ToDouble(dgvParcelas.Rows[i].Cells[1].Value);
                        mparcelas.PcoDataVecto = Convert.ToDateTime(dgvParcelas.Rows[i].Cells[2].Value);
                        bparcelas.Incluir(mparcelas);
                    }
                    MessageBox.Show("Cadastro alterado! ");
                }
                this.LimpaTela();
                pnFinalizaCompra.Visible = false;
                this.alteraBotoes(1);
                cx.TerminarTransacao();
                cx.Desconectar();
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message);
                cx.CancelaTransacao();
                cx.Desconectar();
            }
        }
Exemple #5
0
        private void btSalvarFinal_Click(object sender, EventArgs e)
        {
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao);

            cx.Conectar();
            cx.IniciarTransacao();

            try
            {
                //leitura dos dados
                ModeloVenda modeloVenda = new ModeloVenda();
                modeloVenda.VenData      = dtDataVenda.Value;
                modeloVenda.VenNFiscal   = Convert.ToInt32(txtNFiscal.Text);
                modeloVenda.VenNParcelas = Convert.ToInt32(cbNParcela.Text);
                modeloVenda.VenStatus    = "ativa";
                modeloVenda.VenTotal     = this.totalVenda;
                modeloVenda.CliCod       = Convert.ToInt32(txtCliCodigo.Text);
                modeloVenda.TpaCod       = Convert.ToInt32(cbTpagto.SelectedValue);
                if (cbxVendaAVista.Checked == true)
                {
                    modeloVenda.VenAvista = 1;
                }
                else
                {
                    modeloVenda.VenAvista = 0;
                }

                //obj para gravar os dados no banco
                BLLVenda bllVenda = new BLLVenda(cx);

                ModeloItensVenda mitens = new ModeloItensVenda();
                BLLItensVenda    bitens = new BLLItensVenda(cx);

                ModeloParcelasVenda mparcelas = new ModeloParcelasVenda();
                BLLParcelasVenda    bparcelas = new BLLParcelasVenda(cx);

                if (this.operacao == "inserir")
                {
                    //cadastrar uma compra ok
                    bllVenda.Incluir(modeloVenda);

                    //cadastrar os itens da venda

                    for (int i = 0; i < dgvItens.RowCount; i++)
                    {
                        mitens.ItvCod   = i + 1;
                        mitens.VenCod   = modeloVenda.VenCod;
                        mitens.ProCod   = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                        mitens.ItvQtde  = Convert.ToDouble(dgvItens.Rows[i].Cells[2].Value);
                        mitens.ItvValor = Convert.ToDouble(dgvItens.Rows[i].Cells[3].Value);
                        bitens.Incluir(mitens);
                        //alterar a quantidade de produtos vendidos na tabela de produtos
                        //Trigger
                    }

                    // inserir os itens na tabela parcelas venda
                    for (int i = 0; i < dgvParcelas.RowCount; i++)
                    {
                        mparcelas.VenCod       = modeloVenda.VenCod;
                        mparcelas.PveCod       = Convert.ToInt32(dgvParcelas.Rows[i].Cells[0].Value);
                        mparcelas.PveValor     = Convert.ToDouble(dgvParcelas.Rows[i].Cells[1].Value);
                        mparcelas.PveDataVecto = Convert.ToDateTime(dgvParcelas.Rows[i].Cells[2].Value);
                        bparcelas.Incluir(mparcelas);
                    }
                    MessageBox.Show("Venda efetuada: Código " + modeloVenda.VenCod.ToString());
                }

                //this.LimpaTela();
                pnFinalizaCompra.Visible = false;
                this.alteraBotoes(1);
                cx.TerminarTransacao();
                cx.Desconectar();
                this.LimpaTela();
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message);
                cx.CancelarTransacao();
                cx.Desconectar();
            }
        }
        private void btFinalizar_Click(object sender, EventArgs e)
        {
            DialogResult resultado = MessageBox.Show("DESEJA FINALIZAR A ORDEM DE SERVICO?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (resultado == DialogResult.Yes)
            {
                txtDataFinal.Text = System.DateTime.Now.ToShortDateString() + " - " + System.DateTime.Now.ToShortTimeString();
                txtSituacao.Text  = "FINALIZADO";

                DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao);
                cx.Conectar();
                cx.IniciarTransacao();

                try
                {
                    //Inserindo Dados da Tabela OS
                    ModelOrdemServico modeloOS = new ModelOrdemServico();
                    modeloOS.DataInicial = txtDataInicial.Text;
                    modeloOS.DataFinal   = txtDataFinal.Text;
                    modeloOS.Situacao    = txtSituacao.Text;
                    modeloOS.Observacao  = txtObservacao.Text;
                    modeloOS.IdCliente   = Convert.ToInt32(txtCodCliente.Text);
                    BLLOrdemServico bllOS = new BLLOrdemServico(cx);

                    //Inserindo dados da Tabela OSItens
                    ModelOrdemServicoItens modeloOSItens = new ModelOrdemServicoItens();
                    BLLOrdemServicoItens   bllOSItens    = new BLLOrdemServicoItens(cx);


                    if (txtCodigo.Text != "")
                    {
                        //Alterar
                        modeloOS.IdOS = Int32.Parse(txtCodigo.Text);
                        bllOS.Alterar(modeloOS);
                        bllOSItens.ExcluirTodosOsItens(modeloOS.IdOS);

                        //cadastrar itens da OS
                        for (int i = 0; i < dgvItens.RowCount; i++)
                        {
                            modeloOSItens.IdOSItens = i + 1;
                            modeloOSItens.IdOS      = modeloOS.IdOS;
                            modeloOSItens.IdServico = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                            modeloOSItens.Detalhes  = dgvItens.Rows[i].Cells[2].Value.ToString();
                            bllOSItens.Incluir(modeloOSItens);
                        }
                        MessageBox.Show("Ordem de serviço finalizado com sucesso!!!");
                    }
                    else
                    {
                        MessageBox.Show("Campo código da OS esta vazia por favor verifique!!!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    this.LimpaTela();
                    cx.TerminarTransacao();
                    cx.Desconectar();
                    this.Close();
                }
                catch (Exception erro)
                {
                    MessageBox.Show(erro.Message);
                    cx.CancelaTransacao();
                    cx.Desconectar();
                }
            }
            else
            {
                return;
            }
        }
        private void BtnGravar_Click(object sender, EventArgs e)
        {
            DALConexao    cx = new DALConexao(DadosDaConexao.StringDeConexao);
            frmConsultaOS f  = new frmConsultaOS();

            cx.Conectar();
            cx.IniciarTransacao();

            try
            {
                //Inserindo Dados da Tabela OS
                ModelOrdemServico modeloOS = new ModelOrdemServico();
                modeloOS.DataInicial = txtDataInicial.Text;
                modeloOS.DataFinal   = txtDataFinal.Text;
                modeloOS.Situacao    = txtSituacao.Text;
                modeloOS.Observacao  = txtObservacao.Text;
                modeloOS.IdCliente   = Convert.ToInt32(txtCodCliente.Text);
                BLLOrdemServico bllOS = new BLLOrdemServico(cx);

                //Inserindo dados da Tabela OSItens
                ModelOrdemServicoItens modeloOSItens = new ModelOrdemServicoItens();
                BLLOrdemServicoItens   bllOSItens    = new BLLOrdemServicoItens(cx);

                //Inserir ou alterar
                if (txtCodigo.Text == "")
                {
                    //inclui dados da tabela OS
                    bllOS.Incluir(modeloOS);

                    //Percorre o grid com itens e insere na tabela OSItens
                    for (int i = 0; i < dgvItens.RowCount; i++)
                    {
                        modeloOSItens.IdOSItens = i + 1;
                        modeloOSItens.IdOS      = modeloOS.IdOS;
                        modeloOSItens.IdServico = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                        modeloOSItens.Detalhes  = dgvItens.Rows[i].Cells[2].Value.ToString();
                        bllOSItens.Incluir(modeloOSItens);
                    }
                    MessageBox.Show("Ordem de serviço salva com sucesso: Código " + modeloOS.IdOS.ToString());
                }
                else
                {
                    //Alterar
                    modeloOS.IdOS = Int32.Parse(txtCodigo.Text);
                    bllOS.Alterar(modeloOS);
                    bllOSItens.ExcluirTodosOsItens(modeloOS.IdOS);

                    //cadastrar itens da OS
                    for (int i = 0; i < dgvItens.RowCount; i++)
                    {
                        modeloOSItens.IdOSItens = i + 1;
                        modeloOSItens.IdOS      = modeloOS.IdOS;
                        modeloOSItens.IdServico = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                        modeloOSItens.Detalhes  = dgvItens.Rows[i].Cells[2].Value.ToString();
                        bllOSItens.Incluir(modeloOSItens);
                    }
                    MessageBox.Show("Cadastro Alterado com sucesso!!!");
                    this.Close();
                }
                this.LimpaTela();
                cx.TerminarTransacao();
                cx.Desconectar();
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message);
                cx.CancelaTransacao();
                cx.Desconectar();
            }
        }
        //Salvar compra:
        //Vai movimentar dados nas 4 tabelas:
        //select* from compra
        //select* from itenscompra
        //select* from parcelascompra
        //select* from produto -- atualiza Qtd. através de um tigger
        private void btSalvarCompra_Click(object sender, EventArgs e)
        {
            //-----------------------------------------------------------------------------------------------------------------------
            //CONEXAO:
            //-----------------------------------------------------------------------------------------------------------------------
            //Conexão - obj para gravar os dados no banco
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao); //Recebe a string da conexão da classe DadosDaConexão

            try                                                             // conexao:
            {
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: INCIAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                cx.Conectar();         //CONECTAR NO BANCO - para poder usar a transação, tem que ser usado aénas uma conexao, antes cada tabela teinha seu conetar
                cx.IniciarTransacao(); //inicia transação no banco SQL - Feito para acoes que envolvem mais de uma tabela https://youtu.be/fA_T1ywEXqw

                //-----------------------------------------------------------------------------------------------------------------------
                //SALVAMENTO PROCESSO DA COMPRA:
                //-----------------------------------------------------------------------------------------------------------------------
                try //tratamento de erro
                {
                    //------------------------------------------------------------------------------------------------------------
                    //01 - COMPRA:
                    //------------------------------------------------------------------------------------------------------------
                    //criar o modelo compra:
                    ModeloCompra modeloCompra = new ModeloCompra();//cria uma objeto que representa os dados da tabela catagoria
                    //Criar um BLL DA COMPRA
                    BLLCompra bll = new BLLCompra(cx);
                    //Carregar os campos da compra:
                    modeloCompra.ComData       = dtDataCompra.Value;
                    modeloCompra.ComNfiscal    = Convert.ToInt32(txtNFiscal.Text);
                    modeloCompra.ComNparcelas  = Convert.ToInt32(cbNParcela.Text);
                    modeloCompra.ComStatus     = "ativa";//pode controlar como pedito, e ainda nao finalizou a compra.. ver!!
                    modeloCompra.ComValorTotal = Convert.ToDouble(txtTotalCompra.Text);
                    modeloCompra.ForCod        = Convert.ToInt32(txtForCod.Text);
                    modeloCompra.TpaCod        = Convert.ToInt32(cbTPagto.SelectedValue);

                    //------------------------------------------------------------------------------------------------------------
                    // 02 - ITENS DA COMPRA:
                    //------------------------------------------------------------------------------------------------------------
                    //criar o modelo itens compra:
                    ModeloItensCompra ModItens = new ModeloItensCompra();
                    //Criar um BLL Itens
                    BLLItensCompra bllItensc = new BLLItensCompra(cx);

                    //------------------------------------------------------------------------------------------------------------
                    // 03 - PARCELAS COMPRA:
                    //------------------------------------------------------------------------------------------------------------
                    //criar o modelo itens compra: https://youtu.be/oP5-jHpOhwE?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=255
                    ModeloParcelasCompra ModParcelas = new ModeloParcelasCompra();
                    //Criar um BLL Itens
                    BLLParcelasCompra bllParcelas = new BLLParcelasCompra(cx);

                    //------------------------------------------------------------------------------------------------------------
                    //verificar qual o tipo de operação que vai executar ao gravar
                    if (this.operacao == "inserir")//valida se é um inserção, verificar o valor da variavel operação
                    {
                        //------------------------------------------------------------------------------------------------------------
                        //01 - cadastrar onformações da Compra - ok
                        //------------------------------------------------------------------------------------------------------------
                        bll.Incluir(modeloCompra);//passa o nome para o metodo incluir // https://youtu.be/C6qCveils_o?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=1078

                        //------------------------------------------------------------------------------------------------------------
                        //02 - cadastrar os intens da compra
                        //------------------------------------------------------------------------------------------------------------
                        for (int i = 0; i < dgvItens.RowCount; i++)//pelo numero de linhas de itens //https://youtu.be/TJ_jhtk1yN8?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=395
                        {
                            //Carregar os campos dos iten compra  https://youtu.be/NStzTZnp4nU?t=168
                            ModItens.ItcCod   = i + 1;
                            ModItens.ComCod   = modeloCompra.ComCod;//retorna do Dall
                            ModItens.ProCod   = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                            ModItens.ItcQtde  = Convert.ToDouble(dgvItens.Rows[i].Cells[2].Value);
                            ModItens.ItcValor = Convert.ToDouble(dgvItens.Rows[i].Cells[3].Value);
                            //incluir itens da compra:
                            bllItensc.Incluir(ModItens);

                            //atualizar a qtd de produtos na tabela de produtos VIA SQL // https://youtu.be/NStzTZnp4nU  +  https://youtu.be/yhWGaBku24U?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=405
                            //trigger:gatilho no Banco, tabela itenscompra Nome: tgiIncrementarEstoqueProduto
                        }

                        //------------------------------------------------------------------------------------------------------------
                        //03 - cadastrar as parcelas da compra https://youtu.be/oP5-jHpOhwE?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=264
                        //------------------------------------------------------------------------------------------------------------
                        for (int i = 0; i < dgvParcelas.RowCount; i++)//pelo numero de linhas das parcelas
                        {
                            //Carregar os campos da parcelas
                            ModParcelas.ComCod       = modeloCompra.ComCod;
                            ModParcelas.PcoCod       = Convert.ToInt32(dgvParcelas.Rows[i].Cells[0].Value);
                            ModParcelas.PcoValor     = Convert.ToDouble(dgvParcelas.Rows[i].Cells[1].Value);
                            ModParcelas.PcoDatavecto = Convert.ToDateTime(dgvParcelas.Rows[i].Cells[2].Value);
                            //incluir parcelas:
                            bllParcelas.Incluir(ModParcelas);
                        }

                        //MENSAGEM DE SUCESSO:
                        MessageBox.Show("Compra efetuada: Código " + modeloCompra.ComCod.ToString());//retorna a mensagem como o codigo do item que foi gerado
                    }
                    else //alterar uma Compra
                    {
                        //------------------------------------------------------------------------------------------------------------
                        //Alterar compra
                        //------------------------------------------------------------------------------------------------------------
                        modeloCompra.ComCod = Convert.ToInt32(txtComCod.Text); //alterar a Compra correspondente ao codigo exixtente na tela
                        bll.Alterar(modeloCompra);                             //alterar conforme codigo da compra na tela

                        //------------------------------------------------------------------------------------------------------------
                        //Alterar os intens da compa
                        //------------------------------------------------------------------------------------------------------------
                        bllItensc.ExcluirTodosOsItens(modeloCompra.ComCod); //excluir todos os itens
                        for (int i = 0; i < dgvItens.RowCount; i++)         //cadastra novamente as parcelas
                        {
                            //inserir os itens da compra na tabela  https://youtu.be/NStzTZnp4nU?t=168
                            ModItens.ItcCod   = i + 1;
                            ModItens.ComCod   = modeloCompra.ComCod;//retorna do Dall
                            ModItens.ProCod   = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                            ModItens.ItcQtde  = Convert.ToDouble(dgvItens.Rows[i].Cells[2].Value);
                            ModItens.ItcValor = Convert.ToDouble(dgvItens.Rows[i].Cells[3].Value);
                            //incluir dados:
                            bllItensc.Incluir(ModItens);

                            //atualizar a qtd de produtos na tabela de produtos VIA SQL // https://youtu.be/NStzTZnp4nU  +  https://youtu.be/yhWGaBku24U?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=405
                            //trigger:gatilho no Banco, tabela itenscompra Nome: tgiIncrementarEstoqueProduto
                        }

                        //------------------------------------------------------------------------------------------------------------
                        //Alterar as parcelas da compra https://youtu.be/oP5-jHpOhwE?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=264
                        //------------------------------------------------------------------------------------------------------------
                        bllParcelas.ExcluirTodasAsParcelas(modeloCompra.ComCod); //excluir todos as parcelas
                        for (int i = 0; i < dgvParcelas.RowCount; i++)           //cadastra novamente as parcelas
                        {
                            ModParcelas.ComCod       = modeloCompra.ComCod;
                            ModParcelas.PcoCod       = Convert.ToInt32(dgvParcelas.Rows[i].Cells[0].Value);
                            ModParcelas.PcoValor     = Convert.ToDouble(dgvParcelas.Rows[i].Cells[1].Value);
                            ModParcelas.PcoDatavecto = Convert.ToDateTime(dgvParcelas.Rows[i].Cells[2].Value);
                            //incluir:
                            bllParcelas.Incluir(ModParcelas);
                        }
                        MessageBox.Show("Cadastro alterado");//mostrar mensagem de confirmação
                    }

                    // limpar a tela
                    this.LimpaTela();

                    //ocultar o painel de finalização:
                    pnFinalizaCompra.Visible = false;

                    //Mostrar dados da compra:
                    pnDados.Visible = true;

                    //Mostrar botoes:
                    pnBotoes.Visible = true;

                    this.alteraBotoes(1);//volta os botoes para o estado padrão

                    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    //CONEXAO: TERMINAR TRANSAÇÃO
                    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                    //so vai gravar, se for nas tres tabelas
                    cx.TerminarTransacao();                                                //Efetua um comit, confirmar as alterações no banco
                    cx.Desconectar();                                                      //desconetar do banco
                }
                catch (Exception erro)                                                     // caso der algum erro...(não limpa a tela)
                {
                    MessageBox.Show("Erro ao gravar dados da Compra : \n" + erro.Message); //retorna mensagem do sistema, melhorar mensagem para o usuario
                    cx.Desconectar();                                                      //desconetar do banco
                }
            }
            catch (Exception erro)                                                    // casa der algum erro na conexao
            {
                MessageBox.Show("Erro ao conectar no Banco SQL : \n" + erro.Message); //retorna mensagem do sistema, melhorar mensagem para o usuario
                cx.CancelarTransacao();                                               //caso de erro desfaz todas as ações
                cx.Desconectar();                                                     //desconetar do banco se der erro
            }
        }
        //=============================================================================================================
        private void btExcluir_Click(object sender, EventArgs e) // https://youtu.be/U_JhTWIVRro?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA
        {
            //tem que excluir os itens relacionados em todas as tabelas em um sequencia logica:
            //tem que excluir na sequencia inversa em que se gravou a compra

            //-----------------------------------------------------------------------------------------------------------------------
            //CONEXAO:
            //-----------------------------------------------------------------------------------------------------------------------
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao); //Recebe a string da conexão da classe DadosDaConexão

            try                                                             //CONEXAO:
            {
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: INCIAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                cx.Conectar();         //CONECTAR NO BANCO - para poder usar a transação, tem que ser usado aénas uma conexao, antes cada tabela teinha seu conetar
                cx.IniciarTransacao(); //inicia transação no banco SQL - Feito para acoes que envolvem mais de uma tabela https://youtu.be/fA_T1ywEXqw

                //Validar, excluir compra se ja tiver sido efetuado alguma pagamento:
                try
                {
                    DialogResult d = MessageBox.Show("Deseja excluir o registro?", "Aviso", MessageBoxButtons.YesNo);//confirmar antes de excluir
                    //caso responder sim...
                    if (d.ToString() == "Yes")
                    {
                        //pega o codigo da compra:
                        int CodigoCompra = Convert.ToInt32(txtComCod.Text);

                        //criar objetos BLL:
                        BLLParcelasCompra bllPar  = new BLLParcelasCompra(cx);
                        BLLItensCompra    bllITen = new BLLItensCompra(cx);
                        BLLCompra         bllCP   = new BLLCompra(cx); //passa a string de conexao

                        //verificar se tem parcelas pagas:
                        int Qtde = bllCP.QuantidadeParcePagas(CodigoCompra);

                        if (Qtde > 0)                                                                                                                                      //se tiver parcelas pagas
                        {
                            DialogResult g = MessageBox.Show("Esta Compra possui Parcelas Pagas Deseja! \n Deseja excluir o registro?", "Aviso", MessageBoxButtons.YesNo); //confirmar antes de excluir
                            //caso responder sim...
                            if (g.ToString() == "No")
                            {
                                //cancela esta ação:
                                cx.TerminarTransacao(); //Efetua um comit, confirmar as alterações no banco
                                cx.Desconectar();       //desconetar do banco
                                return;
                            }
                        }

                        //---------------------------------------------------------------------------------------------------------------------------
                        //03 - Excluir as parcelas da compra:
                        //---------------------------------------------------------------------------------------------------------------------------
                        bllPar.ExcluirTodasAsParcelas(CodigoCompra);

                        //---------------------------------------------------------------------------------------------------------------------------
                        //02 - Excluir itens da compra:
                        //---------------------------------------------------------------------------------------------------------------------------
                        bllITen.ExcluirTodosOsItens(CodigoCompra);

                        //---------------------------------------------------------------------------------------------------------------------------
                        //01 - Excluir compra:
                        //---------------------------------------------------------------------------------------------------------------------------
                        bllCP.Excluir(Convert.ToInt32(txtComCod.Text));//retorna erro se este codigo ja estiver sendo utilizado como chave em outra tabela

                        //Mensagem de sucesso:
                        MessageBox.Show("Cadastro excluido com sucesso!");
                    }
                }
                catch // sem o Exception, qualquer tipo de erro
                {
                    MessageBox.Show("Impossível excluir o registro. \n O registro esta sendo utilizado em outro local.");
                    this.alteraBotoes(3);
                    cx.CancelarTransacao(); //caso de erro desfaz todas as ações
                    cx.Desconectar();       //desconetar do banco
                }

                this.LimpaTela();
                this.alteraBotoes(1);

                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: TERMINAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //so vai gravar, se for nas tres tabelas
                cx.TerminarTransacao();                                                //Efetua um comit, confirmar as alterações no banco
                cx.Desconectar();                                                      //desconetar do banco
            }
            catch (Exception erro)                                                     // caso der algum erro...(não limpa a tela)
            {
                MessageBox.Show("Erro ao gravar dados da Compra : \n" + erro.Message); //retorna mensagem do sistema, melhorar mensagem para o usuario
                cx.CancelarTransacao();                                                //caso de erro desfaz todas as ações
                cx.Desconectar();                                                      //desconetar do banco
            }
        }
        //=============================================================================================================
        private void btAlterar_Click(object sender, EventArgs e) //https://youtu.be/NRKmeODwsB4?list=PLfvOpw8k80Wqj1a66Qsjh8jj4hlkzKSjA&t=277
        {
            //-----------------------------------------------------------------------------------------------------------------------
            //CONEXAO:
            //-----------------------------------------------------------------------------------------------------------------------
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao); //Recebe a string da conexão da classe DadosDaConexão

            try                                                             //CONEXAO:
            {
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: INCIAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                cx.Conectar();         //CONECTAR NO BANCO - para poder usar a transação, tem que ser usado aénas uma conexao, antes cada tabela teinha seu conetar
                cx.IniciarTransacao(); //inicia transação no banco SQL - Feito para acoes que envolvem mais de uma tabela https://youtu.be/fA_T1ywEXqw

                //nao deixar alterar compra se ja tiver sido efetuado alguma pagamento:
                try
                {
                    //pega o codigo da compra:
                    int CodigoCompra = Convert.ToInt32(txtComCod.Text);

                    //criar objetos BLL:
                    BLLCompra bllCP = new BLLCompra(cx); //passa a string de conexao

                    //Validar se tem parcelas pagas:
                    int Qtde = bllCP.QuantidadeParcePagas(CodigoCompra);
                    //se tiver parcelas pagas
                    if (Qtde > 0)
                    {
                        DialogResult g = MessageBox.Show("Esta Compra possui Parcelas Pagas! \n Deseja alterar o registro?", "Aviso", MessageBoxButtons.YesNo);//confirmar antes de excluir
                        //caso responder sim...
                        if (g.ToString() == "No")
                        {
                            cx.TerminarTransacao(); //Efetua um comit, confirmar as alterações no banco
                            cx.Desconectar();       //desconetar do banco
                            return;
                        }
                    }
                }
                catch // sem o Exception, qualquer tipo de erro
                {
                    MessageBox.Show("Impossível excluir o registro. \n O registro esta sendo utilizado em outro local.");
                    this.alteraBotoes(3);
                }

                //Liberar alterar
                this.operacao = "alterar";
                this.alteraBotoes(2);

                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //CONEXAO: TERMINAR TRANSAÇÃO
                //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                //so vai gravar, se for nas tres tabelas
                cx.TerminarTransacao();                                                //Efetua um comit, confirmar as alterações no banco
                cx.Desconectar();                                                      //desconetar do banco
            }
            catch (Exception erro)                                                     // caso der algum erro...(não limpa a tela)
            {
                MessageBox.Show("Erro ao gravar dados da Compra : \n" + erro.Message); //retorna mensagem do sistema, melhorar mensagem para o usuario
                cx.CancelarTransacao();                                                //caso de erro desfaz todas as ações
                cx.Desconectar();                                                      //desconetar do banco
            }
        }
        private void btSalvarParcelas_Click(object sender, EventArgs e)
        {
            DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao);

            cx.Conectar();
            cx.IniciarTransacao();

            try
            {
                ModeloVenda modeloVenda = new ModeloVenda();
                modeloVenda.VenData      = dtDataCompra.Value;
                modeloVenda.VenNfiscal   = Convert.ToInt32(txtNFiscal.Text);
                modeloVenda.VenNparcelas = Convert.ToInt32(cbNParcelas.Text);
                modeloVenda.VenStatus    = "ativo";
                modeloVenda.VenTotal     = this.totalVenda;
                modeloVenda.CliCod       = Convert.ToInt32(txtCliCod.Text);
                modeloVenda.TpaCod       = Convert.ToInt32(cbTPagto.SelectedValue);
                if (cbxAvista.Checked == true)
                {
                    modeloVenda.VenAvista = 1;
                }
                else
                {
                    modeloVenda.VenAvista = 0;
                }

                BLLVenda bll = new BLLVenda(cx);

                ModeloItensVenda mitens = new ModeloItensVenda();
                BLLItensVenda    bitens = new BLLItensVenda(cx);

                ModeloParcelaVenda mparcelas = new ModeloParcelaVenda();
                BLLParcelaVenda    bparcelas = new BLLParcelaVenda(cx);

                if (this.operacao == "inserir")
                {
                    //cadastrar venda
                    bll.Incluir(modeloVenda);

                    //cadastrar itens da venda
                    for (int i = 0; i < dgvItens.RowCount; i++)
                    {
                        mitens.ItvCod   = i + 1;
                        mitens.VenCod   = modeloVenda.VenCod;
                        mitens.ProCod   = Convert.ToInt32(dgvItens.Rows[i].Cells[0].Value);
                        mitens.ItvQtde  = Convert.ToInt32(dgvItens.Rows[i].Cells[2].Value);
                        mitens.ItvValor = Convert.ToDouble(dgvItens.Rows[i].Cells[3].Value);
                        bitens.Incluir(mitens);
                        //trigger para alterar estoque foi feito no sqlserver
                    }

                    //inserir os itens na tabela parcelasvenda
                    for (int i = 0; i < dgvParcelas.RowCount; i++)
                    {
                        mparcelas.VenCod       = modeloVenda.VenCod;
                        mparcelas.PveCod       = Convert.ToInt32(dgvParcelas.Rows[i].Cells[0].Value);
                        mparcelas.PveValor     = Convert.ToDouble(dgvParcelas.Rows[i].Cells[1].Value);
                        mparcelas.PveDataVecto = Convert.ToDateTime(dgvParcelas.Rows[i].Cells[2].Value);
                        bparcelas.Incluir(mparcelas);
                    }
                    MessageBox.Show("Compra efetuada: Código " + modeloVenda.VenCod.ToString());
                }
                else
                {
                    //Nao utilizamos o editar na venda
                }
                this.LimpaTela();
                pnFinalizaVenda.Visible = false;
                this.alteraBotoes(1);
                cx.TerminarTransacao();
                cx.Desconectar();
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message);
                cx.CancelaTransacao();
                cx.Desconectar();
            }
        }