Beispiel #1
0
        private void Recarrega()
        {
            if (editando)
            {
                if (MessageBox.Show("Tem certeza que deseja perder os dados alterados?",
                                    "Aviso de alteração",
                                    MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Warning) == DialogResult.No)
                {
                    return;
                }
            }

            if (notaFiscalPropria != null)
            {
                notaFiscalPropria        = notaFiscalPropriaDAO.BuscaByID(notaFiscalPropria.NotaFiscalPropriaID);
                notaFiscalPropria.Pessoa = pessoaDAO.BuscaByID(notaFiscalPropria.Pessoa.PessoaID);
                if (notaFiscalPropria.Vendedor?.PessoaID > 0)
                {
                    notaFiscalPropria.Vendedor = pessoaDAO.BuscaByID(notaFiscalPropria.Vendedor.PessoaID);
                }
                PreencheCampos(notaFiscalPropria);
                if (editando)
                {
                    Editando(false);
                }
            }
            else
            {
                ignoracheckevent = true;
                Limpa(true, true);
                ignoracheckevent = false;
                Editando(false);
            }
        }
Beispiel #2
0
        private void Proximo()
        {
            if (editando)
            {
                if (MessageBox.Show("Tem certeza que deseja perder os dados alterados?",
                                    "Aviso de alteração",
                                    MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Warning) == DialogResult.No)
                {
                    return;
                }
            }


            if (tbCodigo.Text.Length > 0)
            {
                var newnotafiscal = notaFiscalPropriaDAO.Proximo(int.Parse(tbCodigo.Text));
                if (newnotafiscal != null)
                {
                    notaFiscalPropria        = newnotafiscal;
                    notaFiscalPropria.Pessoa = pessoaDAO.BuscaByID(notaFiscalPropria.Pessoa.PessoaID);
                    if (notaFiscalPropria.Vendedor?.PessoaID > 0)
                    {
                        notaFiscalPropria.Vendedor = pessoaDAO.BuscaByID(notaFiscalPropria.Vendedor.PessoaID);
                    }

                    itens = notaFiscalPropria.NotaFiscalPropriaItem.ToList();
                    PreencheCampos(notaFiscalPropria);
                    if (editando)
                    {
                        Editando(false);
                    }
                }
            }
        }
Beispiel #3
0
 private void PreencheCampos(Orcamento orcamento)
 {
     ignoracheckevent = true;
     LimpaCampos(false);
     tbCodigo.Text = orcamento.OrcamentoID.ToString();
     buscaPessoa.PreencheCampos(orcamento.Pessoa);
     dtpCadastro.Value           = orcamento.DataCadastro;
     dtpVencimento.Value         = orcamento.DataValidade.HasValue ? (DateTime)orcamento.DataValidade : DateTime.Now;
     cbVencimento.Checked        = orcamento.DataValidade.HasValue ? true : false;
     dbValorTotalItens.Valor     = orcamento.ValorTotalItens;
     dbDescontoTotalItens.Valor  = orcamento.DescontoTotalItens;
     dbDescontoOrcamento.Valor   = orcamento.DescontoOrcamento;
     dbValorTotalOrcamento.Valor = orcamento.ValorTotalOrcamento;
     listaorcamentoitens         = orcamento.OrcamentoItem.ToList();
     PreencheGridItens(orcamento.OrcamentoItem.ToList());
     btInserirItem.Text = "Inserir";
     if (orcamento.NotaFiscal != null)
     {
         btNotaGerar.Enabled    = false;
         tbNotaNumero.Text      = orcamento.NotaFiscal.NotaFiscalPropriaID.ToString();
         tbNotaDataEmissao.Text = orcamento.NotaFiscal.DataEmissao.ToShortDateString();
     }
     else
     {
         btNotaGerar.Enabled = true;
         tbNotaNumero.Clear();
         tbNotaDataEmissao.Clear();
     }
     notafiscal       = orcamento.NotaFiscal;
     ignoracheckevent = false;
 }
Beispiel #4
0
        private void PreencheCampos(NotaFiscalPropria notafiscal)
        {
            ignoracheckevent = true;
            Limpa(false);
            tbCodigo.Text    = notafiscal.NotaFiscalPropriaID.ToString();
            tbDescricao.Text = notafiscal.Descricao;
            buscaPessoa.PreencheCampos(notafiscal.Pessoa);
            if (notafiscal.Vendedor.PessoaID > 0)
            {
                bpVendedor.PreencheCampos(notafiscal.Vendedor);
            }

            notafiscal.ContaReceber = contaReceberDAO.BuscaById(notafiscal.ContaReceber.ContaReceberID);

            if (notafiscal.ContaReceber != null)
            {
                buscaOperacao.BuscaPreenche(notafiscal.ContaReceber.Operacao.OperacaoID);
            }

            dtpEmissao.Value            = notafiscal.DataEmissao;
            dtpSaida.Value              = notafiscal.DataEntradaSaida;
            dbValorTotalItens.Valor     = notafiscal.ValorTotalItens;
            dbDescontoTotalItens.Valor  = notafiscal.DescontoTotalItens;
            dbDescontoDocumento.Valor   = notafiscal.DescontoDocumento;
            dbValorTotalDocumento.Valor = notafiscal.ValorTotalDocumento;
            itens = notafiscal.NotaFiscalPropriaItem.ToList();
            PreencheGridItens();
            btInserirItem.Text = "Inserir";
            ignoracheckevent   = false;
        }
Beispiel #5
0
 private void LimpaCampos(bool limpaCod)
 {
     if (limpaCod)
     {
         tbCodigo.Clear();
         orcamento  = null;
         notafiscal = null;
     }
     buscaPessoa.Limpa();
     dtpCadastro.Value           = DateTime.Now;
     dtpVencimento.Value         = DateTime.Now;
     dtpVencimento.Enabled       = false;
     cbVencimento.Checked        = false;
     dbValorTotItem.Valor        = 0.00m;
     dbDescontoTotalItens.Valor  = 0.00m;
     dbDescontoOrcamento.Valor   = 0.00m;
     dbValorTotalOrcamento.Valor = 0.00m;
     tbAjuda.Text = "";
     dgvItens.Rows.Clear();
     dgvItens.Refresh();
     btNotaGerar.Enabled = false;
     tbNotaNumero.Clear();
     tbNotaDataEmissao.Clear();
     LimpaCamposItem(limpaCod);
     orcamento = null;
     listaorcamentoitens.Clear();
     codigo = 0;
 }
Beispiel #6
0
        public int CancelarNota(NotaFiscalPropria notafiscal)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.beginTransaction();


                sql.clearParams();
                sql.addParam("@idnotafiscal", notafiscal.NotaFiscalPropriaID);
                sql.addParam("@idconta_receber", notafiscal.ContaReceber.ContaReceberID);

                sql.Query = @"UPDATE notafiscal SET situacao = 'Cancelado' WHERE idnotafiscal = @idnotafiscal";
                sql.updateQuery();

                sql.Query = @"UPDATE conta_receber SET situacao = 'Cancelado' WHERE idconta_receber = @idconta_receber";
                sql.updateQuery();

                foreach (var p in notafiscal.ContaReceber.Parcelas)
                {
                    sql.clearParams();
                    sql.addParam("@idparcela_conta_receber", p.ParcelaContaReceberID);
                    sql.Query = @"UPDATE parcela_conta_receber SET situacao = 'Cancelado' WHERE idparcela_conta_receber = @idparcela_conta_receber";
                    retorno   = sql.updateQuery();
                }

                sql.Commit();
            }
            return(retorno);
        }
Beispiel #7
0
        private void Limpa(bool limpaCod, bool limpaNotaFiscalPropria = false)
        {
            if (limpaCod)
            {
                tbCodigo.Clear();
            }
            buscaPessoa.Limpa();
            bpVendedor.Limpa();
            buscaOperacao.Limpa();
            tbDescricao.Clear();
            dtpEmissao.Value            = DateTime.Now;
            dtpSaida.Value              = DateTime.Now;
            dbValorTotalItens.Valor     = 0.00m;
            dbDescontoTotalItens.Valor  = 0.00m;
            dbDescontoDocumento.Valor   = 0.00m;
            dbValorTotalDocumento.Valor = 0.00m;
            itens.Clear();
            tbAjuda.Text = "";
            dgvItens.Rows.Clear();
            dgvItens.Refresh();
            LimpaCamposItem(limpaCod);

            if (limpaNotaFiscalPropria)
            {
                notaFiscalPropria = null;
            }

            codigo = 0;
        }
Beispiel #8
0
        public int SalvaOuAtualiza(NotaFiscalPropria notafiscal)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.beginTransaction();
                sql.Query = @"INSERT INTO notafiscal
                         (idnotafiscal, data_emissao, data_entradasaida, tiponf, valor_total_itens, valor_documento, desconto_total_itens, desconto_documento, idpessoa, descricao, idpessoa_vendedor)
                          VALUES
                         (@idnotafiscal, @data_emissao, @data_entradasaida, @tiponf, @valor_total_itens, @valor_documento, @desconto_total_itens, @desconto_documento, @idpessoa, @descricao, @idpessoa_vendedor)
                          ON DUPLICATE KEY UPDATE
                          data_emissao = @data_emissao, data_entradasaida = @data_entradasaida, valor_total_itens = @valor_total_itens,
                          valor_documento = @valor_documento, desconto_total_itens = @desconto_total_itens, desconto_documento = @desconto_documento,
                          idpessoa = @idpessoa, descricao = @descricao, idpessoa_vendedor = @idpessoa_vendedor";

                sql.addParam("@idnotafiscal", notafiscal.NotaFiscalPropriaID);
                sql.addParam("@data_emissao", notafiscal.DataEmissao);
                sql.addParam("@data_entradasaida", notafiscal.DataEntradaSaida);
                sql.addParam("@tiponf", "S");
                sql.addParam("@valor_total_itens", notafiscal.ValorTotalItens);
                sql.addParam("@valor_documento", notafiscal.ValorTotalDocumento);
                sql.addParam("@desconto_total_itens", notafiscal.DescontoTotalItens);
                sql.addParam("@desconto_documento", notafiscal.DescontoDocumento);
                sql.addParam("@idpessoa", notafiscal.Pessoa?.PessoaID ?? null);
                sql.addParam("@descricao", notafiscal.Descricao);
                if (notafiscal.Vendedor?.PessoaID > 0)
                {
                    sql.addParam("@idpessoa_vendedor", notafiscal.Vendedor.PessoaID);
                }
                else
                {
                    sql.addParam("@idpessoa_vendedor", null);
                }
                retorno = sql.insertQuery();
                if (retorno > 0)
                {
                    sql.Query = @"DELETE FROM notafiscal_has_item WHERE idnotafiscal = @idnotafiscal";
                    sql.deleteQuery();
                    sql.Query = @"INSERT INTO notafiscal_has_item (idnotafiscal, iditem, quantidade, valor_unitario, valor_total, desconto_porc, desconto)
                                            VALUES
                                            (@idnotafiscal, @iditem, @quantidade, @valor_unitario, @valor_total, @desconto_porc, @desconto)";
                    foreach (var i in notafiscal.NotaFiscalPropriaItem)
                    {
                        sql.clearParams();
                        sql.addParam("@idnotafiscal", notafiscal.NotaFiscalPropriaID);
                        sql.addParam("@iditem", i.Item.ItemID);
                        sql.addParam("@quantidade", i.Quantidade);
                        sql.addParam("@valor_unitario", i.ValorUnitario);
                        sql.addParam("@valor_total", i.ValorTotal);
                        sql.addParam("@desconto_porc", i.DescontoPorc);
                        sql.addParam("@desconto", i.Desconto);
                        sql.insertQuery();
                    }
                }
                sql.Commit();
            }
            return(retorno);
        }
Beispiel #9
0
 private void BtNotaGerar_Click(object sender, EventArgs e)
 {
     if (orcamento.NotaFiscal == null)
     {
         notafiscal = nfa.GerarNotaFiscal(orcamento);
         PreencheCamposNotaFiscal(notafiscal);
     }
 }
Beispiel #10
0
        private void CarregaDados()
        {
            int c = 0;

            if (!int.TryParse(tbCodigo.Text, out c))
            {
                tbCodigo.Clear();
            }
            else
            {
                if (c != codigo)
                {
                    if (editando)
                    {
                        if (MessageBox.Show("Tem certeza que deseja perder os dados alterados?", "Aviso de alteração",
                                            MessageBoxButtons.YesNo,
                                            MessageBoxIcon.Warning) == DialogResult.No)
                        {
                            return;
                        }
                    }
                    codigo = c;
                }
            }
            if (notaFiscalPropria?.NotaFiscalPropriaID == codigo)
            {
                return;
            }


            if (tbCodigo.Text.Length == 0)
            {
                Limpa(true, true);
                Editando(false);
                return;
            }

            var newNotaFiscalPropria = notaFiscalPropriaDAO.BuscaByID(codigo);

            if (newNotaFiscalPropria != null)
            {
                newNotaFiscalPropria.Pessoa = pessoaDAO.BuscaByID(newNotaFiscalPropria.Pessoa.PessoaID);
                if (newNotaFiscalPropria.Vendedor?.PessoaID > 0)
                {
                    newNotaFiscalPropria.Vendedor = pessoaDAO.BuscaByID(newNotaFiscalPropria.Vendedor.PessoaID);
                }
                notaFiscalPropria = newNotaFiscalPropria;
                PreencheCampos(notaFiscalPropria);
                Editando(false);
                btCancelarNota.Enabled = true;
            }
            else
            {
                btCancelarNota.Enabled = false;
                Editando(true);
                Limpa(false, true);
            }
        }
Beispiel #11
0
        public int VincularNotaAoOrcamento(Orcamento orcamento, NotaFiscalPropria notafiscal)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = @"UPDATE orcamento SET idnotafiscal = @idnotafiscal WHERE idorcamento = @idorcamento";
                sql.addParam("@idorcamento", orcamento.OrcamentoID);
                sql.addParam("@idnotafiscal", notafiscal.NotaFiscalPropriaID);
                retorno = sql.updateQuery();
            }
            return(retorno);
        }
Beispiel #12
0
 public void LimpaRegistrosEstoque(NotaFiscalPropria nota)
 {
     using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
     {
         sql.Query = @"DELETE FROM registro_estoque 
                     WHERE documento = @documento
                     AND idpessoa = @idpessoa
                     AND tipomovimentacao = 'S'";
         sql.addParam("@documento", nota.NotaFiscalPropriaID.ToString());
         sql.addParam("@idpessoa", nota.Pessoa?.PessoaID ?? null);
         sql.deleteQuery();
     }
 }
Beispiel #13
0
        private void Selecionar()
        {
            if (dgvNotas.SelectedRows.Count <= 0)
            {
                return;
            }

            var selectedRowIndex = dgvNotas.SelectedCells[0].RowIndex;
            var selectedRow      = dgvNotas.Rows[selectedRowIndex];

            notaFiscalPropriaSelecionada = notaFiscalPropriasDAO.BuscaByID(Convert.ToInt32(selectedRow.Cells[0].Value));
            this.Close();
        }
Beispiel #14
0
        private void Novo()
        {
            if (editando)
            {
                return;
            }

            ignoracheckevent = true;
            Limpa(false, true);
            tbCodigo.Text     = notaFiscalPropriaDAO.BuscaProxCodigoDisponivel().ToString();
            notaFiscalPropria = null;
            tbDescricao.Focus();
            ignoracheckevent = false;
            Editando(true);
        }
Beispiel #15
0
        public NotaFiscalPropria GerarNotaFiscal(Orcamento orcamento)
        {
            NotaFiscalPropria notafiscal = new NotaFiscalPropria();

            notafiscal.NotaFiscalPropriaID = notaFiscalDAO.BuscaProxCodigoDisponivel();

            notafiscal.Pessoa              = orcamento.Pessoa;
            notafiscal.DataEmissao         = DateTime.Now;
            notafiscal.DataEntradaSaida    = DateTime.Now;
            notafiscal.ValorTotalItens     = orcamento.ValorTotalItens;
            notafiscal.ValorTotalDocumento = orcamento.ValorTotalOrcamento;
            notafiscal.DescontoTotalItens  = orcamento.DescontoTotalItens;
            notafiscal.DescontoDocumento   = orcamento.DescontoOrcamento;

            foreach (OrcamentoItem oi in orcamento.OrcamentoItem)
            {
                NotaFiscalPropriaItem nfi = new NotaFiscalPropriaItem();
                nfi.Item          = oi.Item;
                nfi.NotaFiscal    = notafiscal;
                nfi.Quantidade    = oi.Quantidade;
                nfi.ValorUnitario = oi.ValorUnitario;
                nfi.ValorTotal    = oi.ValorTotal;
                nfi.DescontoPorc  = oi.DescontoPorc;
                nfi.Desconto      = oi.Desconto;
                notafiscal.NotaFiscalPropriaItem.Add(nfi);
            }

            int resultado = notaFiscalDAO.SalvaOuAtualiza(notafiscal);

            if (resultado == 1)
            {
                notaFiscalDAO.MovimentaEstoque(notafiscal);
            }
            if (resultado == 2)
            {
                notaFiscalDAO.LimpaRegistrosEstoque(notafiscal);
                notaFiscalDAO.MovimentaEstoque(notafiscal);
            }
            if (resultado > 0)
            {
                resultado = orcamentoDAO.VincularNotaAoOrcamento(orcamento, notafiscal);
            }
            return(resultado > 0 ? notafiscal : null);
        }
Beispiel #16
0
        public int VinculaContaReceber(NotaFiscalPropria notafiscal, ContaReceber contareceber)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.beginTransaction();

                sql.Query = @"UPDATE notafiscal SET idconta_receber = @idconta_receber
                                  WHERE idnotafiscal = @idnota_fiscal";

                sql.clearParams();
                sql.addParam("@idnota_fiscal", notafiscal.NotaFiscalPropriaID);
                sql.addParam("@idconta_receber", contareceber.ContaReceberID);
                retorno = sql.updateQuery();

                sql.Commit();
            }
            return(retorno);
        }
Beispiel #17
0
        private void Busca()
        {
            if (editando)
            {
                return;
            }
            var buscaNotaFiscalPropria = new fmSaiBuscaNotaFiscalPropria();

            buscaNotaFiscalPropria.ShowDialog();
            if (buscaNotaFiscalPropria.notaFiscalPropriaSelecionada != null)
            {
                notaFiscalPropria        = buscaNotaFiscalPropria.notaFiscalPropriaSelecionada;
                notaFiscalPropria.Pessoa = pessoaDAO.BuscaByID(notaFiscalPropria.Pessoa.PessoaID);
                if (notaFiscalPropria.Vendedor?.PessoaID > 0)
                {
                    notaFiscalPropria.Vendedor = pessoaDAO.BuscaByID(notaFiscalPropria.Vendedor.PessoaID);
                }
                PreencheCampos(notaFiscalPropria);
            }
        }
Beispiel #18
0
        public NotaFiscalPropria Anterior(int Codigo)
        {
            var notaFiscalPropria = new NotaFiscalPropria();

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = @"SELECT *, nfhi.quantidade AS quantidadenfhi
                            FROM notafiscal nf
                            LEFT JOIN notafiscal_has_item nfhi
                            ON nf.idnotafiscal = nfhi.idnotafiscal
                            INNER JOIN item i ON i.iditem = nfhi.iditem
                            WHERE nf.idnotafiscal = (SELECT max(idnotafiscal) FROM notafiscal WHERE idnotafiscal < @idnotafiscal)";
                sql.addParam("@idnotafiscal", Codigo);
                var data = sql.selectQuery();
                if (data == null)
                {
                    return(null);
                }
                notaFiscalPropria = LeDadosReader(data);
            }
            return(notaFiscalPropria);
        }
Beispiel #19
0
        private CaixaLancamento LeDadosReaderComPlanos(Dictionary <string, object> data)
        {
            var planoConta = new PlanoConta();

            planoConta.PlanoContaID   = Convert.ToInt32(data["idcaixa_plano_contas"]);
            planoConta.Codigo         = Convert.ToInt32(data["cpc_codigo"]);
            planoConta.Level          = Convert.ToInt32(data["level"]);
            planoConta.PaiID          = Convert.ToInt32(data["paiid"]);
            planoConta.Descricao      = (string)data["descricao"];
            planoConta.CodigoCompleto = (string)data["codigo_completo"];

            var caixa = new Caixa();

            caixa.CaixaID = Convert.ToInt32(data["idcaixa"]);
            caixa.Codigo  = Convert.ToInt32(data["caixa_codigo"]);
            caixa.Nome    = (string)data["nome"];

            var parcelaCAR          = new ParcelaContaReceber();
            var parcelaCAP          = new ParcelaContaPagar();
            var notafiscalpropria   = new NotaFiscalPropria();
            var notafiscalterceiros = new NotaFiscalTerceiros();

            var caixaLancamento = new CaixaLancamento();

            caixaLancamento.PlanoConta        = planoConta;
            caixaLancamento.Caixa             = caixa;
            caixaLancamento.CaixaLancamentoID = Convert.ToInt32(data["idcaixa_lancamento"]);
            caixaLancamento.Data          = (DateTime)data["data"];
            caixaLancamento.Valor         = (decimal)data["valor"];
            caixaLancamento.TipoMovimento = Convert.ToInt32(data["tipomovimento"]);
            caixaLancamento.TipoDocumento = Convert.ToInt32(data["tipodocumento"]);
            caixaLancamento.Lancamento    = Convert.ToInt32(data["lancamento"]);
            caixaLancamento.Documento     = (string)data["documento"];


            return(caixaLancamento);
        }
Beispiel #20
0
        public int MovimentaEstoque(NotaFiscalPropria nota)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.beginTransaction();
                foreach (var i in nota.NotaFiscalPropriaItem)
                {
                    sql.Query = @"INSERT INTO registro_estoque 
                            (tipomovimentacao, data, documento, iditem, quantidade, idpessoa)
                            VALUES
                            (@tipomovimentacao, @data, @documento, @iditem, @quantidade, @idpessoa)";
                    sql.clearParams();
                    sql.addParam("@tipomovimentacao", "S");
                    sql.addParam("@data", nota.DataEntradaSaida);
                    sql.addParam("@documento", nota.NotaFiscalPropriaID.ToString());
                    sql.addParam("@iditem", i.Item.ItemID);
                    sql.addParam("@quantidade", i.Quantidade);
                    sql.addParam("@idpessoa", nota.Pessoa?.PessoaID ?? null);
                    retorno = sql.insertQuery();

                    sql.clearParams();

                    sql.Query = @"UPDATE item SET quantidade = 
                                (SELECT COALESCE(SUM(quantidade), 0) FROM registro_estoque WHERE iditem = @iditem AND tipomovimentacao = 'E')
                                -
                                (SELECT COALESCE(SUM(quantidade), 0) FROM registro_estoque WHERE iditem = @iditem AND tipomovimentacao = 'S')
                                WHERE iditem = @iditem";
                    sql.addParam("@quantidade_atualizada", i.Item.Quantidade - i.Quantidade);
                    sql.addParam("@iditem", i.Item.ItemID);
                    sql.updateQuery();
                }
                sql.Commit();
            }
            return(retorno);
        }
Beispiel #21
0
        //public void LimpaRegistrosCaixaSaida(NotaFiscalPropria nota)
        //{
        //    using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
        //    {
        //        sql.addParam("@documento", nota.NotaFiscalPropriaID.ToString());

        //        sql.Query = @"DELETE FROM caixa_lancamento_sai
        //                      WHERE idnotafiscal = @documento";
        //        sql.deleteQuery();

        //        sql.Query = @"DELETE FROM caixa_lancamento
        //                    WHERE documento = @documento";
        //        sql.deleteQuery();
        //    }
        //}

        //public int MovimentaCaixaEntradaDeDinheiro(NotaFiscalPropria nota)
        //{
        //    int retorno = 0;

        //    using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
        //    {

        //        sql.beginTransaction();
        //        sql.Query = @"INSERT INTO caixa_lancamento
        //                    (data, valor, tipomovimento, tipodocumento, lancamento, documento, idcaixa, idcaixa_plano_contas)
        //                    VALUES
        //                    (@data, @valor, @tipomovimento, @tipodocumento, @lancamento, @documento, @idcaixa, @idcaixa_plano_contas)";
        //        sql.addParam("@data", nota.DataEntradaSaida);
        //        sql.addParam("@valor", nota.ValorTotalDocumento);
        //        sql.addParam("@tipomovimento", 0);
        //        sql.addParam("@tipodocumento", 2);
        //        sql.addParam("@lancamento", 1);
        //        sql.addParam("@documento", nota.NotaFiscalPropriaID);
        //        //sql.addParam("@idcaixa", nota.Caixa.CaixaID);
        //        //sql.addParam("@idcaixa_plano_contas", nota.PlanoDeConta.PlanoContaID);
        //        retorno = sql.insertQuery();


        //        if (retorno > 0)
        //        {
        //            sql.Query = "SELECT LAST_INSERT_ID() AS idcaixalancamento;";
        //            var data = sql.selectQueryForSingleRecord();
        //            int idcaixalancamento = Convert.ToInt32(data["idcaixalancamento"]);

        //            sql.Query = @"DELETE FROM caixa_lancamento_sai
        //                          WHERE idnotafiscal = @idnotafiscal
        //                          AND idcaixa_lancamento = @idcaixa_lancamento";

        //            sql.clearParams();
        //            sql.addParam("@idcaixa_lancamento", idcaixalancamento);
        //            sql.addParam("@idnotafiscal", nota.NotaFiscalPropriaID);

        //            sql.deleteQuery();

        //            sql.Query = @"INSERT INTO caixa_lancamento_sai (idcaixa_lancamento, idnotafiscal)
        //                        VALUES
        //                        (@idcaixa_lancamento, @idnotafiscal)";

        //            sql.clearParams();
        //            sql.addParam("@idcaixa_lancamento", idcaixalancamento);
        //            sql.addParam("@idnotafiscal", nota.NotaFiscalPropriaID);
        //            sql.insertQuery();

        //        }

        //        sql.Commit();
        //    }

        //    return retorno;
        //}

        private NotaFiscalPropria LeDadosReader(List <Dictionary <string, object> > data)
        {
            if (data.Count == 0)
            {
                return(null);
            }
            var notaFiscalItens = new List <NotaFiscalPropriaItem>();

            var notaFiscalPropria = new NotaFiscalPropria();

            notaFiscalPropria.NotaFiscalPropriaID = Convert.ToInt32(data[0]["idnotafiscal"]);
            notaFiscalPropria.Descricao           = (string)data[0]["descricao"];
            notaFiscalPropria.DataEmissao         = (DateTime)data[0]["data_emissao"];
            notaFiscalPropria.DataEntradaSaida    = (DateTime)data[0]["data_entradasaida"];
            notaFiscalPropria.ValorTotalItens     = (decimal)data[0]["valor_total_itens"];
            notaFiscalPropria.ValorTotalDocumento = (decimal)data[0]["valor_documento"];
            notaFiscalPropria.DescontoTotalItens  = (decimal)data[0]["desconto_total_itens"];
            notaFiscalPropria.DescontoDocumento   = (decimal)data[0]["desconto_documento"];
            var contareceber = new ContaReceber();

            contareceber.ContaReceberID    = Convert.ToInt32(data[0]["idconta_receber"]);
            notaFiscalPropria.ContaReceber = contareceber;
            var pessoa = new Pessoa();

            pessoa.PessoaID = Convert.ToInt32(data[0]["idpessoa"]);
            var vendedor = new Pessoa();

            vendedor.PessoaID          = Convert.ToInt32(data[0]["idpessoa_vendedor"]);
            notaFiscalPropria.Pessoa   = pessoa;
            notaFiscalPropria.Vendedor = vendedor;


            foreach (var d in data)
            {
                var item = new Item();
                item.ItemID            = Convert.ToInt32(d["iditem"]);
                item.CodigoInterno     = (string)d["codigointerno"];
                item.Descricao         = (string)d["descitem"];
                item.DescCompra        = (string)d["denominacaocompra"];
                item.TipoItem          = (string)d["tipo"];
                item.Referencia        = (string)d["referencia"];
                item.ValorEntrada      = (decimal)d["valorentrada"];
                item.ValorUnitario     = (decimal)d["valorsaida"];
                item.Estoquenecessario = (decimal)d["estoquenecessario"];
                item.Quantidade        = (decimal)d["quantidade"];
                item.Custo             = (decimal)d["custo"];


                var nfi = new NotaFiscalPropriaItem();
                nfi.Quantidade    = (decimal)d["quantidadenfhi"];
                nfi.ValorUnitario = (decimal)d["valor_unitario"];
                nfi.ValorTotal    = (decimal)d["valor_total"];
                nfi.DescontoPorc  = (decimal)d["desconto_porc"];
                nfi.Desconto      = (decimal)d["desconto"];
                nfi.Item          = item;
                notaFiscalItens.Add(nfi);
            }
            notaFiscalPropria.NotaFiscalPropriaItem = notaFiscalItens;

            return(notaFiscalPropria);
        }
Beispiel #22
0
 private void PreencheCamposNotaFiscal(NotaFiscalPropria notafiscal)
 {
     tbNotaDataEmissao.Text = notafiscal.DataEmissao.ToShortDateString();
     tbNotaNumero.Text      = notafiscal.NotaFiscalPropriaID.ToString();
     btNotaGerar.Enabled    = false;
 }
Beispiel #23
0
        public IEnumerable <NotaFiscalPropria> Busca(fmSaiBuscaNotaFiscalPropria.Filtros f)
        {
            var    notasFiscaisProprias = new List <NotaFiscalPropria>();
            var    wherePessoa          = f.Pessoa != null ? "AND p.idpessoa = @idpessoa" : "";
            var    whereCidade          = f.Cidade != null ? "AND p.idcidade = @idcidade" : "";
            string whereValorTotal      = f.usarvalorTotalFiltro ? "AND nf.valor_documento BETWEEN @valor_documento_inicial AND @valor_documento_final" : "";
            string whereDataEmissao     = f.usardataEmissaoFiltro ? "AND nf.data_emissao BETWEEN @data_emissao_inicial AND @data_emissao_final" : "";
            string whereDataEntrada     = f.usardataSaidaFiltro ? "AND nf.data_entradasaida BETWEEN @data_entradasaida_inicial AND @data_entradasaida_final" : "";

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = $@"SELECT nf.idnotafiscal, p.idpessoa, p.nome, nf.data_emissao, nf.data_entradasaida, nf.valor_documento
                            FROM
                            notafiscal nf
                            LEFT JOIN pessoa p ON nf.idpessoa = p.idpessoa
                            WHERE 1=1 
                            {wherePessoa} 
                            {whereCidade} 
                            {whereValorTotal} 
                            {whereDataEmissao} 
                            {whereDataEntrada} 
                            GROUP BY nf.idnotafiscal";

                if (f.Pessoa != null)
                {
                    sql.addParam("@idpessoa", f.Pessoa.PessoaID);
                }
                if (f.Cidade != null)
                {
                    sql.addParam("@idcidade", f.Cidade.CidadeID);
                }
                if (f.usarvalorTotalFiltro)
                {
                    sql.addParam("@valor_documento_inicial", f.ValorInicial);
                    sql.addParam("@valor_documento_final", f.ValorFinal);
                }
                if (f.usardataEmissaoFiltro)
                {
                    sql.addParam("@data_emissao_inicial", f.DataEmissaoInicial);
                    sql.addParam("@data_emissao_final", f.DataEmissaoFinal);
                }
                if (f.usardataSaidaFiltro)
                {
                    sql.addParam("@data_entradasaida_inicial", f.DataEntradaInicial);
                    sql.addParam("@data_entradasaida_final", f.DataEntradaFinal);
                }
                var data = sql.selectQuery();

                foreach (var d in data)
                {
                    var pessoa = new Pessoa();
                    pessoa.PessoaID = Convert.ToInt32(d["idpessoa"]);
                    pessoa.Nome     = (string)d["nome"];

                    var notaProria = new NotaFiscalPropria();
                    notaProria.NotaFiscalPropriaID = Convert.ToInt32(d["idnotafiscal"]);
                    notaProria.DataEmissao         = (DateTime)d["data_emissao"];
                    notaProria.DataEntradaSaida    = (DateTime)d["data_entradasaida"];
                    notaProria.ValorTotalDocumento = (decimal)d["valor_documento"];
                    notaProria.Pessoa = pessoa;
                    notasFiscaisProprias.Add(notaProria);
                }
            }
            return(notasFiscaisProprias);
        }
Beispiel #24
0
        public IEnumerable <NotaFiscalPropria> BuscaParaRelatorio(fmRltNotasSaida.Filtros f)
        {
            var notaFiscalProprias = new List <NotaFiscalPropria>();
            var wherePessoa        = f.usaFiltroClientes ? " AND nf.idpessoa BETWEEN @idpessoa_inicial AND @idpessoa_final" : "";
            var whereCidade        = f.usaFiltroCidades ? " AND p.idcidade BETWEEN @idcidade_inicial AND @idcidade_final" : "";
            var whereDataEmissao   = f.usaFiltroDataEmissao ? " AND nf.data_emissao BETWEEN @data_emissao_inicial AND @data_emissao_final" : "";
            var whereDataSaida     = f.usaFiltroDataSaida ? " AND nf.data_entradasaida BETWEEN @data_saida_inicial AND @data_saida_final" : "";
            var whereValor         = f.usaFiltroValor ? " AND nf.valor_documento BETWEEN @valor_inicial AND @valor_final" : "";

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = $@"SELECT 
                            nf.idnotafiscal AS nf_idnotafiscal, nf.data_emissao AS nf_data_emissao, nf.data_entradasaida AS nf_entradasaida, nf.tiponf AS nf_tiponf, nf.valor_total_itens AS nf_valor_total_itens, nf.valor_documento AS nf_valor_documento,  nf.desconto_total_itens AS nf_desconto_total_itens, nf.desconto_documento AS nf_desconto_documento, 
                            p.idpessoa AS p_idpessoa, p.nome AS p_nome, p.fantasia AS p_fantasia, p.tipo_pessoa, p.atuacao, p.situacao, p.rua AS p_rua, p.numero AS p_numero, p.bairro AS p_bairro, p.complemento AS p_complemento, p.cpf AS p_cpf, p.cnpj AS p_cnpj, p.endereco AS p_endereco, p.telefone AS p_telefone, p.email AS p_email, p.cep AS p_cep
                            c.idcidade AS c_idcidade, c.nome AS c_nome,
                            sbp.idsubgrupopessoa AS sbp_idsubgrupopessoa, sbp.nome AS sbp_nome,
                            gp.idgrupopessoa AS gp_idgrupopessoa, gp.nome AS gp_nome,
                            nfhi.quantidade AS nfhi_quantidade, nfhi.valor_unitario AS nfhi_valorunitario, nfhi.valor_total AS nfhi_valortotal, nfhi.desconto_porc AS nfhi_descontoporc, nfhi.desconto AS nfhi_desconto,
                            i.iditem AS i_iditem, i.descitem AS i_desc, i.denominacaocompra AS i_desccompra, i.tipo AS i_tipo, i.referencia AS i_referencia, i.valorentrada AS i_valorentrada, i.valorsaida AS i_valorsaida, i.estoquenecessario AS i_estoquenecessario, i.quantidade AS i_quantidade,
                            uni.idunimedida AS uni_idunimedida, uni.sigla AS uni_sigla, uni.descricao AS uni_descricao,
                            sbi.idsubgrupoitem AS sbi_idsubgrupoitem, sbi.codigo AS sbi_codigo, sbi.nome AS sbi_nome,
                            gi.idgrupoitem AS gi_idgrupoitem, gi.nome AS gi_nome
                            FROM
                            notafiscal nf 
                            LEFT JOIN pessoa p
	                            ON nf.idpessoa = p.idpessoa
                            LEFT JOIN cidade c
	                            ON p.idcidade = c.idcidade
                            LEFT JOIN subgrupopessoa sbp
	                            ON sbp.idsubgrupopessoa = p.idsubgrupopessoa
                            LEFT JOIN grupopessoa gp
	                            ON gp.idgrupopessoa = sbp.idgrupopessoa
                            LEFT JOIN notafiscal_has_item nfhi
	                            ON nfhi.idnotafiscal = nf.idnotafiscal
                            LEFT JOIN item i
	                            ON nfhi.iditem = i.iditem
                            LEFT JOIN unimedida uni
	                            ON i.idunimedida = uni.idunimedida
                            LEFT JOIN subgrupoitem sbi
	                            ON  i.idsubgrupoitem = sbi.idsubgrupoitem
                            LEFT JOIN grupoitem gi
	                            ON sbi.idgrupoitem = gi.idgrupoitem
                            WHERE 1 = 1 
                            {wherePessoa}
                            {whereCidade}
                            {whereDataEmissao}
                            {whereDataSaida}
                            {whereValor}
                            ORDER BY nf.idnotafiscal";
                if (f.usaFiltroClientes)
                {
                    sql.addParam("@idpessoa_inicial", f.pessoaInicial.PessoaID);
                    sql.addParam("@idpessoa_final", f.pessoaFinal.PessoaID);
                }
                if (f.usaFiltroCidades)
                {
                    sql.addParam("@idcidade_inicial", f.cidadeInicial.CidadeID);
                    sql.addParam("@idcidade_final", f.cidadeFinal.CidadeID);
                }
                if (f.usaFiltroDataEmissao)
                {
                    sql.addParam("@data_emissao_inicial", f.dataEmissaoInicial);
                    sql.addParam("@data_emissao_final", f.dataEmissaoFinal);
                }
                if (f.usaFiltroDataSaida)
                {
                    sql.addParam("@data_saida_inicial", f.dataSaidaInicial);
                    sql.addParam("@data_saida_final", f.dataSaidaFinal);
                }
                if (f.usaFiltroValor)
                {
                    sql.addParam("@valor_inicial", f.valorInicial);
                    sql.addParam("@valor_final", f.valorFinal);
                }
                var data = sql.selectQuery();
                var i    = 0;
                NotaFiscalPropria notaFiscalPropria = null;
                foreach (var d in data)
                {
                    var grupoItem = new GrupoItem();
                    grupoItem.GrupoItemID = Convert.ToInt32(d["gi_idgrupoitem"]);
                    grupoItem.Nome        = (string)d["gi_nome"];

                    var subGrupoItem = new SubGrupoItem();
                    subGrupoItem.SubGrupoItemID = Convert.ToInt32(d["sbi_idsubgrupoitem"]);
                    subGrupoItem.Nome           = (string)d["sbi_nome"];
                    subGrupoItem.Codigo         = Convert.ToInt32(d["sbi_codigo"]);
                    subGrupoItem.GrupoItem      = grupoItem;

                    var uniMedida = new Unimedida();
                    uniMedida.UnimedidaID = Convert.ToInt32(d["uni_idunimedida"]);
                    uniMedida.Sigla       = (string)d["uni_sigla"];
                    uniMedida.Descricao   = (string)d["uni_descricao"];

                    var item = new Item();
                    item.ItemID            = Convert.ToInt32(d["i_iditem"]);
                    item.Descricao         = (string)d["i_desc"];
                    item.DescCompra        = (string)d["i_desccompra"];
                    item.TipoItem          = (string)d["i_tipo"];
                    item.Referencia        = (string)d["i_referencia"];
                    item.ValorEntrada      = (decimal)d["i_valorentrada"];
                    item.ValorUnitario     = (decimal)d["i_valorsaida"];
                    item.Estoquenecessario = (decimal)d["i_estoquenecessario"];
                    item.Unimedida         = uniMedida;
                    item.SubGrupoItem      = subGrupoItem;
                    item.Quantidade        = (decimal)d["i_quantidade"];

                    var nfi = new NotaFiscalPropriaItem();
                    nfi.NotaFiscal    = notaFiscalPropria;
                    nfi.Item          = item;
                    nfi.Quantidade    = (decimal)d["nfhi_quantidade"];
                    nfi.ValorUnitario = (decimal)d["nfhi_valorunitario"];
                    nfi.ValorTotal    = (decimal)d["nfhi_valortotal"];
                    nfi.DescontoPorc  = (decimal)d["nfhi_descontoporc"];
                    nfi.Desconto      = (decimal)d["nfhi_desconto"];

                    if (Convert.ToInt32(d["nf_idnotafiscal"]) != i)
                    {
                        notaFiscalProprias.Add(notaFiscalPropria);
                        i = Convert.ToInt32(d["nf_idnotafiscal"]);


                        var grupoPessoa = new GrupoPessoa();
                        grupoPessoa.GrupoPessoaID = Convert.ToInt32(d["gp_idgrupopessoa"]);
                        grupoPessoa.Nome          = (string)d["gp_nome"];

                        var subGrupoPessoa = new SubGrupoPessoa();
                        subGrupoPessoa.SubGrupoPessoaID = Convert.ToInt32(d["sbp_idsubgrupopessoa"]);
                        subGrupoPessoa.Nome             = (string)d["sbp_nome"];
                        subGrupoPessoa.GrupoPessoa      = grupoPessoa;

                        var cidade = new Cidade();
                        cidade.CidadeID = Convert.ToInt32(d["c_idcidade"]);
                        cidade.Nome     = (string)d["c_nome"];

                        var pessoa = new Pessoa();
                        pessoa.PessoaID    = Convert.ToInt32(d["p_idpessoa"]);
                        pessoa.Nome        = (string)d["p_nome"];
                        pessoa.Fantasia    = (string)d["p_fantasia"];
                        pessoa.TipoPessoa  = (string)d["tipo_pessoa"];
                        pessoa.Atuacao     = (string)d["atuacao"];
                        pessoa.Situacao    = (string)d["situacao"];
                        pessoa.Rua         = (string)d["p_rua"];
                        pessoa.Numero      = (string)d["p_numero"];
                        pessoa.Bairro      = (string)d["p_bairro"];
                        pessoa.Cep         = (string)d["p_cep"];
                        pessoa.Complemento = (string)d["p_complemento"];
                        pessoa.Cidade      = cidade;

                        if (pessoa.TipoPessoa == "J")
                        {
                            pessoa.CpfCnpj = (string)d["p_cnpj"];
                        }
                        else
                        {
                            pessoa.CpfCnpj = (string)d["p_cpf"];
                        }

                        pessoa.Telefone       = (string)d["p_endereco"];
                        pessoa.Email          = (string)d["p_telefone"];
                        pessoa.SubGrupoPessoa = subGrupoPessoa;


                        notaFiscalPropria = new NotaFiscalPropria();
                        notaFiscalPropria.NotaFiscalPropriaID = Convert.ToInt32(d["nf_idnotafiscal"]);
                        notaFiscalPropria.DataEmissao         = (DateTime)d["nf_data_emissao"];
                        notaFiscalPropria.DataEntradaSaida    = (DateTime)d["nf_entradasaida"];
                        notaFiscalPropria.TipoNf              = (string)d["nf_tiponf"];
                        notaFiscalPropria.ValorTotalItens     = (decimal)d["nf_valor_total_itens"];
                        notaFiscalPropria.ValorTotalDocumento = (decimal)d["nf_valor_documento"];
                        notaFiscalPropria.DescontoTotalItens  = (decimal)d["nf_desconto_total_itens"];
                        notaFiscalPropria.DescontoDocumento   = (decimal)d["nf_desconto_documento"];
                        notaFiscalPropria.Pessoa              = pessoa;
                    }
                    notaFiscalPropria.NotaFiscalPropriaItem.Add(nfi);
                }
                notaFiscalProprias.Add(notaFiscalPropria);
            }
            notaFiscalProprias.RemoveAt(0);
            return(notaFiscalProprias);
        }
Beispiel #25
0
        private void Salva()
        {
            var controls = (ControlCollection)this.Controls;

            if (!editando)
            {
                return;
            }
            var ok = false;

            if (itens.Count <= 0)
            {
                MessageBox.Show("Uma nota não pode ser salva sem itens!",
                                "Problema ao salvar",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }

            if (buscaOperacao.operacao == null)
            {
                MessageBox.Show("Escolha uma operação!",
                                "Problema ao salvar",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }

            if (tbCodigo.Text.Length <= 0)
            {
                if (MessageBox.Show("Número da nota em branco, deseja gerar um numero automaticamente?",
                                    "Aviso",
                                    MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Information) == DialogResult.No)
                {
                    return;
                }
                tbCodigo.Text = notaFiscalPropriaDAO.BuscaProxCodigoDisponivel().ToString();
                ok            = false;
            }

            notaFiscalPropriaNova = new NotaFiscalPropria();

            notaFiscalPropriaNova.NotaFiscalPropriaID = int.Parse(tbCodigo.Text);
            notaFiscalPropriaNova.Descricao           = tbDescricao.Text;
            notaFiscalPropriaNova.Pessoa                = buscaPessoa.pessoa;
            notaFiscalPropriaNova.DataEmissao           = dtpEmissao.Value;
            notaFiscalPropriaNova.DataEntradaSaida      = dtpSaida.Value;
            notaFiscalPropriaNova.ValorTotalItens       = dbValorTotalItens.Valor;
            notaFiscalPropriaNova.DescontoTotalItens    = dbDescontoTotalItens.Valor;
            notaFiscalPropriaNova.DescontoDocumento     = dbDescontoDocumento.Valor;
            notaFiscalPropriaNova.ValorTotalDocumento   = dbValorTotalDocumento.Valor;
            notaFiscalPropriaNova.Vendedor              = bpVendedor.pessoa;
            notaFiscalPropriaNova.NotaFiscalPropriaItem = itens;



            ok = validacao.ValidarEntidade(notaFiscalPropriaNova, controls);



            if (ok)
            {
                int resultado = notaFiscalPropriaDAO.SalvaOuAtualiza(notaFiscalPropriaNova);

                // resultado 0 = nada foi inserido (houve algum erro)
                // resultado 1 = foi inserido com sucesso
                // resultado 2 = foi atualizado com sucesso
                if (resultado == 0)
                {
                    MessageBox.Show("Problema ao salvar o registro",
                                    "Problema ao salvar",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Warning);
                    return;
                }
                else if (resultado == 1)
                {
                    tbAjuda.Text = "Dados salvos com sucesso";
                    notaFiscalPropriaDAO.MovimentaEstoque(notaFiscalPropriaNova);
                    GerarContaReceber();
                    Editando(false);
                    Recarrega();
                }
                else if (resultado == 2)
                {
                    notaFiscalPropriaDAO.LimpaRegistrosEstoque(notaFiscalPropria);
                    notaFiscalPropriaDAO.MovimentaEstoque(notaFiscalPropriaNova);
                    GerarContaReceber();

                    tbAjuda.Text = "Dados atualizados com sucesso";
                    Editando(false);
                    Recarrega();
                }
                notaFiscalPropria = notaFiscalPropriaNova;
            }
        }
Beispiel #26
0
 public impNotaSaida(DataTable dados, NotaFiscalPropria notaFiscalPropria)
 {
     InitializeComponent();
     _dados             = fa.DeepCopy(dados);
     _notaFiscalPropria = notaFiscalPropria;
 }
Beispiel #27
0
        private Orcamento LeDadosReader(List <Dictionary <string, object> > data)
        {
            if (data.Count == 0)
            {
                return(null);
            }

            var orcamentoItens = new List <OrcamentoItem>();

            Pessoa pessoa = null;

            if (data[0]["idpessoa"] != null)
            {
                var estado = new Estado();
                estado.EstadoID = Convert.ToInt32(data[0]["idestado"]);
                estado.Nome     = (string)data[0]["estado_nome"];
                estado.Uf       = (string)data[0]["uf"];

                var cidade = new Cidade();
                cidade.CidadeID = Convert.ToInt32(data[0]["idcidade"]);
                cidade.Nome     = (string)data[0]["cidade_nome"];
                cidade.Estado   = estado;

                pessoa             = new Pessoa();
                pessoa.PessoaID    = Convert.ToInt32(data[0]["idpessoa"]);
                pessoa.Nome        = (string)data[0]["nome"];
                pessoa.Fantasia    = (string)data[0]["fantasia"];
                pessoa.TipoPessoa  = (string)data[0]["tipo_pessoa"];
                pessoa.Rua         = (string)data[0]["rua"];
                pessoa.Numero      = (string)data[0]["numero"];
                pessoa.Bairro      = (string)data[0]["bairro"];
                pessoa.Cep         = (string)data[0]["cep"];
                pessoa.Complemento = (string)data[0]["complemento"];
                pessoa.Cidade      = cidade;
                pessoa.Telefone    = (string)data[0]["telefone"];
                pessoa.Email       = (string)data[0]["email"];
                pessoa.CpfCnpj     = (string)data[0]["cpf"] ?? (string)data[0]["cnpj"];
            }


            NotaFiscalPropria notafiscal = null;

            if (data[0]["idnotafiscal"] != null)
            {
                notafiscal = new NotaFiscalPropria();
                notafiscal.NotaFiscalPropriaID = Convert.ToInt32(data[0]["idnotafiscal"]);
                notafiscal.DataEmissao         = (DateTime)data[0]["data_emissao"];
                notafiscal.DataEntradaSaida    = (DateTime)data[0]["data_entradasaida"];
                notafiscal.ValorTotalItens     = (decimal)data[0]["valortotalitensnota"];
                notafiscal.ValorTotalDocumento = (decimal)data[0]["valor_documento"];
                notafiscal.DescontoTotalItens  = (decimal)data[0]["descontototalitensnota"];
                notafiscal.DescontoDocumento   = (decimal)data[0]["desconto_documento"];
                notafiscal.Pessoa = pessoa;
            }

            var orcamento = new Orcamento();

            orcamento.OrcamentoID         = Convert.ToInt32(data[0]["idorcamento"]);
            orcamento.DataCadastro        = (DateTime)data[0]["data_cadastro"];
            orcamento.DataValidade        = (DateTime?)data[0]["data_validade"];
            orcamento.ValorTotalItens     = (decimal)data[0]["valortotalitensorcamento"];
            orcamento.ValorTotalOrcamento = (decimal)data[0]["valor_orcamento"];
            orcamento.DescontoTotalItens  = (decimal)data[0]["descontototalitensorcamento"];
            orcamento.DescontoOrcamento   = (decimal)data[0]["desconto_orcamento"];
            orcamento.Pessoa     = pessoa;
            orcamento.NotaFiscal = notafiscal;

            foreach (var d in data)
            {
                var u = new Unimedida();
                u.UnimedidaID = Convert.ToInt32(d["idunimedida"]);

                var i = new Item();
                i.ItemID            = Convert.ToInt32(d["iditem"]);
                i.Descricao         = (string)d["descitem"];
                i.DescCompra        = (string)d["denominacaocompra"];
                i.TipoItem          = (string)d["tipo"];
                i.Referencia        = (string)d["referencia"];
                i.ValorEntrada      = (decimal)d["valorentrada"];
                i.ValorUnitario     = (decimal)d["valorsaida"];
                i.Estoquenecessario = (decimal)d["estoquenecessario"];
                i.Unimedida         = u;


                var oi = new OrcamentoItem();
                oi.Quantidade    = (decimal)d["quantidade"];
                oi.ValorUnitario = (decimal)d["valor_unitario"];
                oi.ValorTotal    = (decimal)d["valor_total"];
                oi.DescontoPorc  = (decimal)d["desconto_porc"];
                oi.Desconto      = (decimal)d["desconto"];
                oi.Item          = i;

                orcamentoItens.Add(oi);
            }
            orcamento.OrcamentoItem = orcamentoItens;
            return(orcamento);
        }