Example #1
0
        private void TbCodigoSubGrupoPessoa_Leave(object sender, EventArgs e)
        {
            if (!int.TryParse(tbCodigoSubGrupoPessoa.Text, out int codigo))
            {
                tbCodigoSubGrupoPessoa.Clear();
            }

            if (gruporecebido == null)
            {
                tbNomeSubGrupoPessoa.Text = "Escolha o Grupo";
            }
            else
            {
                if (tbCodigoSubGrupoPessoa.Text.Length > 0)
                {
                    subgrupoPessoa = subgrupoPessoaDAO.BuscarByID(int.Parse(tbCodigoSubGrupoPessoa.Text), gruporecebido.GrupoPessoaID);
                    PreencheCamposSubGrupoPessoa(subgrupoPessoa);
                }
                else
                {
                    subgrupoPessoa = null;
                    tbNomeSubGrupoPessoa.Clear();
                }
            }
        }
Example #2
0
        private GrupoPessoa LeDadosReader(List <Dictionary <string, object> > data)
        {
            if (data.Count == 0)
            {
                return(null);
            }

            var grupoPessoa = new GrupoPessoa();

            grupoPessoa.GrupoPessoaID = Convert.ToInt32(data[0]["grupopessoaID"]);
            grupoPessoa.Nome          = (string)data[0]["nomegrupopessoa"];
            var listaSubGrupoPessoa = new List <SubGrupoPessoa>();

            foreach (var d in data)
            {
                if (d["subgrupopessoaID"] != null)
                {
                    var subGrupoPessoa = new SubGrupoPessoa();
                    subGrupoPessoa.SubGrupoPessoaID = Convert.ToInt32(d["subgrupopessoaID"]);
                    subGrupoPessoa.Codigo           = Convert.ToInt32(d["codigo"]);
                    subGrupoPessoa.Nome             = (string)d["subgrupopessoanome"];
                    subGrupoPessoa.GrupoPessoa      = grupoPessoa;

                    listaSubGrupoPessoa.Add(subGrupoPessoa);
                }
            }
            grupoPessoa.SubGrupoPessoas = listaSubGrupoPessoa;

            return(grupoPessoa);
        }
Example #3
0
        public int InserirSubGrupo(SubGrupoPessoa subGrupo)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.beginTransaction();
                sql.Query = @"INSERT INTO subgrupopessoa (idsubgrupopessoa, nome, idgrupopessoa, codigo)
                            VALUES
                            (@idsubgrupopessoa, @nome, @idgrupopessoa, @codigo)
                            ON DUPLICATE KEY UPDATE
                            nome = @nome, idgrupopessoa = @idgrupopessoa, codigo = @codigo";
                sql.addParam("@idsubgrupopessoa", subGrupo.SubGrupoPessoaID);
                sql.addParam("@nome", subGrupo.Nome);
                sql.addParam("@idgrupopessoa", subGrupo.GrupoPessoa.GrupoPessoaID);
                sql.addParam("@codigo", subGrupo.Codigo);
                retorno = sql.insertQuery();

                if (retorno > 0)
                {
                    sql.Query = "SELECT LAST_INSERT_ID() AS idsubgrupopessoa;";
                    var data = sql.selectQueryForSingleRecord();
                    subGrupo.SubGrupoPessoaID = Convert.ToInt32(data["idsubgrupopessoa"]);
                }
                sql.Commit();
            }
            return(retorno);
        }
Example #4
0
        //CLICK
        private void DgvSubGrupoPessoa_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int             selectedRowIndex = dgvSubGrupoPessoa.SelectedCells[0].RowIndex;
            DataGridViewRow selectedRow      = dgvSubGrupoPessoa.Rows[selectedRowIndex];

            subgrupopessoaSelecionado = listasubgrupopessoa.Find(g => g.Codigo == Convert.ToInt32(selectedRow.Cells[0].Value)); // FAZ UMA BUSCA NA LISTA ONDE A CONDIÇÃO É ACEITA
            this.Close();
        }
Example #5
0
        private Pessoa LeDadosReader(Dictionary <string, object> data)
        {
            var grupopessoa = new GrupoPessoa();

            grupopessoa.GrupoPessoaID = Convert.ToInt32(data["idgrupopessoa"]);
            grupopessoa.Nome          = (string)data["nomegrupopessoa"];

            var subgrupopessoa = new SubGrupoPessoa();

            subgrupopessoa.SubGrupoPessoaID = Convert.ToInt32(data["idsubgrupopessoa"]);
            subgrupopessoa.Nome             = (string)data["nomesubgrupopessoa"];
            subgrupopessoa.GrupoPessoa      = grupopessoa;


            var estado = new Estado();

            estado.EstadoID = Convert.ToInt32(data["idestado"]);
            estado.Nome     = (string)data["nomeestado"];
            estado.Uf       = (string)data["uf"];


            var cidade = new Cidade();

            cidade.CidadeID = Convert.ToInt32(data["idcidade"]);
            cidade.Nome     = (string)data["nomecidade"];
            cidade.Estado   = estado;

            var banco = new Banco();

            banco.BancoID = Convert.ToInt32(data["idbanco"]);
            banco.Codigo  = (string)data["b_codigo"];
            banco.Nome    = (string)data["b_nome"];

            var pessoa = new Pessoa();

            pessoa.PessoaID          = Convert.ToInt32(data["idpessoa"]);
            pessoa.Nome              = (string)data["nomepessoa"];
            pessoa.Fantasia          = (string)data["fantasia"];
            pessoa.TipoPessoa        = (string)data["tipo_pessoa"];
            pessoa.Rua               = (string)data["rua"];
            pessoa.Numero            = (string)data["numero"];
            pessoa.Bairro            = (string)data["bairro"];
            pessoa.Cep               = (string)data["cep"];
            pessoa.Complemento       = (string)data["complemento"];
            pessoa.Cidade            = cidade;
            pessoa.Telefone          = (string)data["telefone"];
            pessoa.Email             = (string)data["email"];
            pessoa.SubGrupoPessoa    = subgrupopessoa;
            pessoa.Atuacao           = (string)data["atuacao"];
            pessoa.Situacao          = (string)data["situacao"];
            pessoa.Banco             = banco;
            pessoa.Agencia           = (string)data["agencia"];
            pessoa.ContaBancaria     = (string)data["conta"];
            pessoa.TipoContaBancaria = (string)data["tipoconta"];
            pessoa.CpfCnpj           = pessoa.TipoPessoa == "F" ? (string)data["cpf"] : (string)data["cnpj"];

            return(pessoa);
        }
Example #6
0
        public void Limpa(bool limpagrupo = true)
        {
            this.subgrupoPessoa = null;

            if (limpagrupo)
            {
                this.gruporecebido = null;
            }

            tbCodigoSubGrupoPessoa.Clear();
            tbNomeSubGrupoPessoa.Clear();
        }
Example #7
0
 private void DgvSubGruposPessoas_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
     if (dgvSubGruposPessoas.SelectedRows.Count > 0)
     {
         int             selectedRowIndex = dgvSubGruposPessoas.SelectedCells[0].RowIndex;
         DataGridViewRow selectedRow      = dgvSubGruposPessoas.Rows[selectedRowIndex];
         subgrupopessoaSelecionado = grupoPessoa.SubGrupoPessoas.Find(p => p.Codigo == Convert.ToInt32(selectedRow.Cells[0].Value));
         PreencheCamposSubGrupo(subgrupopessoaSelecionado);
         btSalvar.Enabled     = true;
         btRemoverSub.Enabled = true;
     }
 }
Example #8
0
        public int RemoverSubGrupo(SubGrupoPessoa subGrupo)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = @"DELETE FROM subgrupopessoa WHERE idsubgrupopessoa = @idsubgrupopessoa";
                sql.addParam("@idsubgrupopessoa", subGrupo.SubGrupoPessoaID);
                retorno = sql.deleteQuery();
            }
            return(retorno);
        }
Example #9
0
 public void PreencheCampos(SubGrupoPessoa subgrupoPessoa)
 {
     if (subgrupoPessoa != null)
     {
         this.subgrupoPessoa         = subgrupoPessoa;
         tbCodigoSubGrupoPessoa.Text = subgrupoPessoa.SubGrupoPessoaID.ToString();
         tbNomeSubGrupoPessoa.Text   = subgrupoPessoa.Nome;
     }
     else
     {
         Limpa();
     }
 }
Example #10
0
        private SubGrupoPessoa LeDadosReader(Dictionary <string, object> data)
        {
            var grupoPessoa = new GrupoPessoa();

            grupoPessoa.GrupoPessoaID = Convert.ToInt32(data["idgrupopessoa"]);

            var subGrupoPessoa = new SubGrupoPessoa();

            subGrupoPessoa.SubGrupoPessoaID = Convert.ToInt32(data["idsubgrupopessoa"]);
            subGrupoPessoa.Nome             = (string)data["nome"];
            subGrupoPessoa.GrupoPessoa      = grupoPessoa;
            subGrupoPessoa.Codigo           = Convert.ToInt32(data["codigo"]);
            return(subGrupoPessoa);
        }
Example #11
0
 private void PreencheCamposSubGrupoPessoa(SubGrupoPessoa subgrupoPessoa)
 {
     if (subgrupoPessoa != null)
     {
         tbCodigoSubGrupoPessoa.Text = subgrupoPessoa.Codigo.ToString();
         tbNomeSubGrupoPessoa.Text   = subgrupoPessoa.Nome;
     }
     else
     {
         MessageBox.Show("Sub-Grupo de pessoas não encontrado no banco de dados",
                         "Sub-Grupo de pessoas não encontrado",
                         MessageBoxButtons.OK,
                         MessageBoxIcon.Warning);
         Limpa(false);
     }
 }
Example #12
0
        public bool SubGrupoUsado(SubGrupoPessoa subGrupo)
        {
            var usado = true;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = "SELECT * FROM pessoa WHERE idsubgrupopessoa = @idsubgrupopessoa LIMIT 1;";
                sql.addParam("@idsubgrupopessoa", subGrupo.SubGrupoPessoaID);
                var data = sql.selectQueryForSingleRecord();
                if (data == null)
                {
                    usado = false;
                }
            }
            return(usado);
        }
Example #13
0
 private void AbreTelaBuscaSubGrupoPessoa()
 {
     if (gruporecebido == null)
     {
         MessageBox.Show("Escolha o Grupo antes!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
     else
     {
         var buscaSubGrupoPessoa = new fmBuscaSubGrupoPessoa(gruporecebido.GrupoPessoaID);
         buscaSubGrupoPessoa.ShowDialog();
         if (buscaSubGrupoPessoa.subgrupopessoaSelecionado != null)
         {
             subgrupoPessoa = buscaSubGrupoPessoa.subgrupopessoaSelecionado;
             PreencheCamposSubGrupoPessoa(subgrupoPessoa);
         }
     }
 }
Example #14
0
        public int AtualizarSubGrupo(SubGrupoPessoa subGrupo)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = @"UPDATE subgrupopessoa SET nome = @nome
                              WHERE idgrupopessoa = @idgrupopessoa
                              AND codigo = @codigo                  
                                ";
                sql.addParam("@nome", subGrupo.Nome);
                sql.addParam("@idgrupopessoa", subGrupo.GrupoPessoa.GrupoPessoaID);
                sql.addParam("@codigo", subGrupo.Codigo);
                retorno = sql.updateQuery();
            }

            return(retorno);
        }
Example #15
0
        public int SalvaOuAtualiza(SubGrupoPessoa subgrupoipessoa)
        {
            int retorno = 0;

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = @"INSERT INTO subgrupopessoa 
                            (idsubgrupopessoa, nome, idgrupopessoa) 
                            VALUES
                            (@idsubgrupopessoa, @nome, @idgrupopessoa)
                            ON DUPLICATE KEY UPDATE
                            nome = @nome, idgrupopessoa = @idgrupopessoa";
                sql.addParam("@idsubgrupopessoa", subgrupoipessoa.SubGrupoPessoaID);
                sql.addParam("@nome", subgrupoipessoa.Nome);
                sql.addParam("@idgrupopessoa", subgrupoipessoa.GrupoPessoa.GrupoPessoaID);
                retorno = sql.insertQuery();
            }
            return(retorno);
        }
Example #16
0
        public SubGrupoPessoa BuscarByID(int Codigo, int grupopessoaID)
        {
            var subGrupoPessoa = new SubGrupoPessoa();

            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = @"SELECT *
                            FROM subgrupopessoa 
                            WHERE codigo = @codigo
                            AND idgrupopessoa = @idgrupopessoa";
                sql.addParam("@codigo", Codigo);
                sql.addParam("@idgrupopessoa", grupopessoaID);

                var data = sql.selectQueryForSingleRecord();
                if (data == null)
                {
                    return(null);
                }
                subGrupoPessoa = LeDadosReader(data);
            }
            return(subGrupoPessoa);
        }
Example #17
0
        private void SalvaSubGrupo()
        {
            if (tbCodigoSubGrupo.Text.Length <= 0 || grupoPessoa == null)
            {
                return;
            }

            SubGrupoPessoa subGrupo = null;

            if (subgrupopessoaSelecionado != null)
            {
                subGrupo = subgrupopessoaSelecionado;
                grupoPessoa.SubGrupoPessoas.Remove(subGrupo);
                subGrupo.Nome = tbNomeSubGrupo.Text;

                int resultado = grupopessoaDAO.AtualizarSubGrupo(subGrupo);
                if (resultado > 0)
                {
                    tbAjuda.Text = "Sub-grupo atualizado com sucesso";
                    grupoPessoa.SubGrupoPessoas.Add(subGrupo);
                    btNovoSubGrupo.Enabled = true;
                }
                else
                {
                    MessageBox.Show("Problema ao atualizar o registro",
                                    "Problema ao atualizar",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Warning);
                    return;
                }
            }
            else
            {
                subGrupo             = new SubGrupoPessoa();
                subGrupo.Nome        = tbNomeSubGrupo.Text;
                subGrupo.Codigo      = int.Parse(tbCodigoSubGrupo.Text);
                subGrupo.GrupoPessoa = grupoPessoa;

                int resultado = grupopessoaDAO.InserirSubGrupo(subGrupo);
                if (resultado == 0)
                {
                    MessageBox.Show("Problema ao salvar o registro",
                                    "Problema ao salvar",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Warning);
                    return;
                }
                else if (resultado == 1)
                {
                    tbAjuda.Text = "Sub-grupo salvo com sucesso";

                    grupoPessoa.SubGrupoPessoas.Add(subGrupo);
                    btNovoSubGrupo.Enabled = true;
                }
                else if (resultado == 2)
                {
                    tbAjuda.Text = "Sub-grupo atualizado com sucesso";
                    grupoPessoa.SubGrupoPessoas.Add(subGrupo);
                    btNovoSubGrupo.Enabled = true;
                }
            }
            LimpaCamposSubPessoas();
            PreencheGridSubGrupoPessoas();
        }
Example #18
0
 private void PreencheCamposSubGrupo(SubGrupoPessoa subGrupoPessoa)
 {
     tbCodigoSubGrupo.Text = subGrupoPessoa.Codigo.ToString();
     tbNomeSubGrupo.Text   = subGrupoPessoa.Nome;
 }
Example #19
0
 private void LimpaCamposSubPessoas()
 {
     tbCodigoSubGrupo.Clear();
     tbNomeSubGrupo.Clear();
     subgrupopessoaSelecionado = null;
 }
Example #20
0
        public List <Pessoa> Busca(string nome, string cpfCnpj, int idcidade, int atuacao)
        {
            List <Pessoa> pessoas      = new List <Pessoa>();
            string        conCodPessoa = nome.Length > 0 ? "AND p.nome LIKE @nome" : "";
            string        conCpfCnpj   = cpfCnpj.Length > 0 ? "AND (cpf LIKE @cpfcnpj OR cnpj LIKE @cpfcnpj)" : "";
            string        conCidade    = idcidade > 0 ? "AND c.idcidade = @idcidade" : "";
            string        conAtuacao   = atuacao > 0 ? "AND p.atuacao LIKE @atuacao" : "";


            using (MySQLConn sql = new MySQLConn(Configuracao.Conecta))
            {
                sql.Query = $@"SELECT g.idgrupopessoa, g.nome AS nomegrupopessoa, s.idsubgrupopessoa, s.nome AS nomesubgrupopessoa,
                                             e.idestado, e.nome AS nomeestado, uf, c.idcidade, c.nome AS nomecidade,
                                             p.idpessoa, p.nome AS nomepessoa, fantasia, tipo_pessoa, rua, numero, bairro, complemento, 
                                             telefone, email, p.cpf, p.cnpj, p.atuacao, p.situacao, p.cep
                                             FROM pessoa p
                                             INNER JOIN subgrupopessoa s ON s.idsubgrupopessoa = p.idsubgrupopessoa
                                             INNER JOIN grupopessoa g ON g.idgrupopessoa = s.idgrupopessoa
                                             INNER JOIN cidade c ON p.idcidade = c.idcidade
                                             INNER JOIN estado e ON e.idestado = c.idestado
                                             WHERE 1=1 
                                             { conCodPessoa } 
                                             { conCpfCnpj } 
                                             { conCidade } 
                                             { conAtuacao } 
                                             ORDER BY p.idpessoa";
                if (conCodPessoa.Length > 0)
                {
                    sql.addParam("@nome", "%" + nome + "%");
                }
                if (conCpfCnpj.Length > 0)
                {
                    sql.addParam("@cpfcnpj", "%" + cpfCnpj + "%");
                }
                if (conCidade.Length > 0)
                {
                    sql.addParam("@idcidade", idcidade);
                }
                switch (atuacao)
                {
                case 1:
                    sql.addParam("@atuacao", "%C%");
                    break;

                case 2:
                    sql.addParam("@atuacao", "%F%");
                    break;

                case 3:
                    sql.addParam("@atuacao", "%V%");
                    break;
                }
                var data = sql.selectQuery();
                foreach (var d in data)
                {
                    var grupopessoa = new GrupoPessoa
                    {
                        GrupoPessoaID = Convert.ToInt32(d["idgrupopessoa"]),
                        Nome          = (string)d["nomegrupopessoa"]
                    };
                    var subgrupopessoa = new SubGrupoPessoa
                    {
                        SubGrupoPessoaID = Convert.ToInt32(d["idsubgrupopessoa"]),
                        Nome             = (string)d["nomesubgrupopessoa"],
                        GrupoPessoa      = grupopessoa
                    };
                    var estado = new Estado
                    {
                        EstadoID = Convert.ToInt32(d["idestado"]),
                        Nome     = (string)d["nomeestado"],
                        Uf       = (string)d["uf"]
                    };

                    var cidade = new Cidade
                    {
                        CidadeID = Convert.ToInt32(d["idcidade"]),
                        Nome     = (string)d["nomecidade"],
                        Estado   = estado
                    };

                    var pessoa = new Pessoa
                    {
                        PessoaID       = Convert.ToInt32(d["idpessoa"]),
                        Nome           = (string)d["nomepessoa"],
                        Fantasia       = (string)d["fantasia"],
                        TipoPessoa     = (string)d["tipo_pessoa"],
                        Rua            = (string)d["rua"],
                        Numero         = (string)d["numero"],
                        Bairro         = (string)d["bairro"],
                        Cep            = (string)d["cep"],
                        Complemento    = (string)d["complemento"],
                        Cidade         = cidade,
                        Telefone       = (string)d["telefone"],
                        Email          = (string)d["email"],
                        SubGrupoPessoa = subgrupopessoa,
                        Atuacao        = (string)d["atuacao"],
                        Situacao       = (string)d["situacao"]
                    };
                    pessoa.CpfCnpj = pessoa.TipoPessoa == "F" ? (string)d["cpf"] : (string)d["cnpj"];
                    pessoas.Add(pessoa);
                }
                return(pessoas);
            }
        }
Example #21
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);
        }