public Contribuinte_Header_Struct Contribuinte_Header(int _codigo, bool _principal = false)
        {
            string _nome = "", _inscricao = "", _endereco = "", _complemento = "", _bairro = "", _cidade = "", _uf = "", _cep = "", _quadra = "", _lote = "";
            string _endereco_entrega = "", _complemento_entrega = "", _bairro_entrega = "", _cidade_entrega = "", _uf_entrega = "", _cep_entrega = "";
            string _cpf_cnpj = "", _atividade = "", _rg = "", _endereco_abreviado = "", _endereco_entrega_abreviado = "";
            int    _numero = 0, _numero_entrega = 0;

            GTI_Models.modelCore.TipoEndereco _tipo_end = GTI_Models.modelCore.TipoEndereco.Local;
            bool         _ativo = false;
            TipoCadastro _tipo_cadastro;

            _tipo_cadastro = _codigo < 100000 ? TipoCadastro.Imovel : (_codigo >= 100000 && _codigo < 500000) ? TipoCadastro.Empresa : TipoCadastro.Cidadao;

            if (_tipo_cadastro == TipoCadastro.Imovel)
            {
                Imovel_Data  imovel_Class = new Imovel_Data(_connection);
                ImovelStruct _imovel      = imovel_Class.Dados_Imovel(_codigo);
                List <ProprietarioStruct> _proprietario = imovel_Class.Lista_Proprietario(_codigo, _principal);
                _nome               = _proprietario[0].Nome;
                _cpf_cnpj           = _proprietario[0].CPF;
                _rg                 = _proprietario[0].RG;
                _inscricao          = _imovel.Inscricao;
                _endereco           = _imovel.NomeLogradouro;
                _endereco_abreviado = _imovel.NomeLogradouroAbreviado;
                _numero             = (int)_imovel.Numero;
                _complemento        = _imovel.Complemento;
                _bairro             = _imovel.NomeBairro;
                _cidade             = "JABOTICABAL";
                _uf                 = "SP";
                _ativo              = (bool)_imovel.Inativo ? false : true;
                _lote               = _imovel.LoteOriginal;
                _quadra             = _imovel.QuadraOriginal;
                Endereco_Data endereco_Class = new Endereco_Data(_connection);
                _cep = endereco_Class.RetornaCep((int)_imovel.CodigoLogradouro, (short)_imovel.Numero).ToString();
                //Carrega Endereço de Entrega do imóvel
                _tipo_end = _imovel.EE_TipoEndereco == 0 ? GTI_Models.modelCore.TipoEndereco.Local : _imovel.EE_TipoEndereco == 1 ? GTI_Models.modelCore.TipoEndereco.Proprietario : GTI_Models.modelCore.TipoEndereco.Entrega;
                EnderecoStruct regEntrega = imovel_Class.Dados_Endereco(_codigo, _tipo_end);
                if (regEntrega != null)
                {
                    _endereco_entrega           = regEntrega.Endereco ?? "";
                    _endereco_entrega_abreviado = regEntrega.Endereco_Abreviado ?? "";
                    _numero_entrega             = (int)regEntrega.Numero;
                    _complemento_entrega        = regEntrega.Complemento ?? "";
                    _uf_entrega     = regEntrega.UF.ToString();
                    _cidade_entrega = regEntrega.NomeCidade.ToString();
                    _bairro_entrega = regEntrega.NomeBairro ?? "";
                    _cep_entrega    = regEntrega.Cep == null ? "00000-000" : Convert.ToInt32(regEntrega.Cep.ToString()).ToString("00000-000");
                }
            }
            else
            {
                if (_tipo_cadastro == TipoCadastro.Empresa)
                {
                    Empresa_Data  empresa_Class = new Empresa_Data(_connection);
                    EmpresaStruct _empresa      = empresa_Class.Retorna_Empresa(_codigo);
                    _nome               = _empresa.Razao_social;
                    _inscricao          = _codigo.ToString();
                    _rg                 = string.IsNullOrWhiteSpace(_empresa.Inscricao_estadual)?_empresa.Rg:_empresa.Inscricao_estadual;
                    _cpf_cnpj           = _empresa.Cpf_cnpj;
                    _endereco           = _empresa.Endereco_nome;
                    _endereco_abreviado = _empresa.Endereco_nome_abreviado;
                    _numero             = _empresa.Numero == null?0:(int)_empresa.Numero;
                    _complemento        = _empresa.Complemento;
                    _bairro             = _empresa.Bairro_nome;
                    _cidade             = _empresa.Cidade_nome;
                    _uf                 = _empresa.UF;
                    _cep                = _empresa.Cep;
                    _ativo              = _empresa.Data_Encerramento == null ? true : false;
                    _atividade          = _empresa.Atividade_extenso;

                    //Carrega Endereço de Entrega da Empresa
                    mobiliarioendentrega regEntrega = empresa_Class.Empresa_Endereco_entrega(_codigo);
                    if (regEntrega.Nomelogradouro == null)
                    {
                        _endereco_entrega    = _endereco;
                        _numero_entrega      = _numero;
                        _complemento_entrega = _complemento;
                        _uf_entrega          = _uf;
                        _cidade_entrega      = _cidade;
                        _bairro_entrega      = _bairro;
                        _cep_entrega         = _cep;
                    }
                    else
                    {
                        _endereco_entrega    = regEntrega.Nomelogradouro ?? "";
                        _numero_entrega      = (int)regEntrega.Numimovel;
                        _complemento_entrega = regEntrega.Complemento ?? "";
                        _uf_entrega          = regEntrega.Uf ?? "";
                        _cidade_entrega      = regEntrega.Desccidade;
                        _bairro_entrega      = regEntrega.Descbairro;
                        _cep_entrega         = regEntrega.Cep == null ? "00000-000" : Convert.ToInt32(dalCore.RetornaNumero(regEntrega.Cep).ToString()).ToString("00000-000");
                    }
                }
                else
                {
                    Cidadao_Data  cidadao_Class = new Cidadao_Data(_connection);
                    CidadaoStruct _cidadao      = cidadao_Class.Dados_Cidadao(_codigo);
                    _nome      = _cidadao.Nome;
                    _inscricao = _codigo.ToString();
                    _cpf_cnpj  = _cidadao.Cpf;
                    _rg        = _cidadao.Rg;
                    _ativo     = true;
                    if (_cidadao.EtiquetaC == "S")
                    {
                        if (_cidadao.CodigoCidadeC == 413)
                        {
                            _endereco = _cidadao.EnderecoC.ToString();
                            Endereco_Data endereco_Class = new Endereco_Data(_connection);
                            if (_cidadao.NumeroC == null || _cidadao.NumeroC == 0 || _cidadao.CodigoLogradouroC == null || _cidadao.CodigoLogradouroC == 0)
                            {
                                _cep = "14870000";
                            }
                            else
                            {
                                _cep = endereco_Class.RetornaCep((int)_cidadao.CodigoLogradouroC, Convert.ToInt16(_cidadao.NumeroC)).ToString("00000000");
                            }
                        }
                        else
                        {
                            _endereco = _cidadao.CodigoCidadeC.ToString();
                            _cep      = _cidadao.CepC.ToString();
                        }
                        _numero      = (int)_cidadao.NumeroC;
                        _complemento = _cidadao.ComplementoC;
                        _bairro      = _cidadao.NomeBairroC;
                        _cidade      = _cidadao.NomeCidadeC;
                        _uf          = _cidadao.UfC;
                    }
                    else
                    {
                        if (_cidadao.CodigoCidadeR == 413)
                        {
                            _endereco = _cidadao.EnderecoR ?? "";
                            Endereco_Data endereco_Class = new Endereco_Data(_connection);
                            if (_cidadao.NumeroR == null || _cidadao.NumeroR == 0 || _cidadao.CodigoLogradouroR == null || _cidadao.CodigoLogradouroR == 0)
                            {
                                _cep = "14870000";
                            }
                            else
                            {
                                _cep = endereco_Class.RetornaCep((int)_cidadao.CodigoLogradouroR, Convert.ToInt16(_cidadao.NumeroR)).ToString("00000000");
                            }
                        }
                        else
                        {
                            _endereco = _cidadao.CodigoCidadeR.ToString();
                            _cep      = _cidadao.CepR.ToString();
                        }
                        _numero      = _cidadao.NumeroR == null?0: (int)_cidadao.NumeroR;
                        _complemento = _cidadao.ComplementoR;
                        _bairro      = _cidadao.NomeBairroR;
                        _cidade      = _cidadao.NomeCidadeR;
                        _uf          = _cidadao.UfR;
                    }
                    _endereco_abreviado  = _endereco;
                    _endereco_entrega    = _endereco;
                    _numero_entrega      = _numero;
                    _complemento_entrega = _complemento;
                    _uf_entrega          = _uf;
                    _cidade_entrega      = _cidade;
                    _bairro_entrega      = _bairro;
                    _cep_entrega         = _cep;
                }
            }

            Contribuinte_Header_Struct reg = new Contribuinte_Header_Struct {
                Codigo                     = _codigo,
                Tipo                       = _tipo_cadastro,
                TipoEndereco               = _tipo_end,
                Nome                       = _nome,
                Inscricao                  = _inscricao,
                Inscricao_Estadual         = _inscricao,
                Cpf_cnpj                   = _cpf_cnpj,
                Endereco                   = _endereco,
                Endereco_abreviado         = _endereco_abreviado,
                Endereco_entrega           = _endereco_entrega,
                Endereco_entrega_abreviado = _endereco_entrega_abreviado,
                Numero                     = (short)_numero,
                Numero_entrega             = (short)_numero_entrega,
                Complemento                = _complemento,
                Complemento_entrega        = _complemento_entrega,
                Nome_bairro                = _bairro,
                Nome_bairro_entrega        = _bairro_entrega,
                Nome_cidade                = _cidade,
                Nome_cidade_entrega        = _cidade_entrega,
                Nome_uf                    = _uf,
                Nome_uf_entrega            = _uf_entrega,
                Cep             = _cep,
                Cep_entrega     = _cep_entrega,
                Ativo           = _ativo,
                Lote_original   = _lote,
                Quadra_original = _quadra,
                Atividade       = _atividade
            };

            return(reg);
        }
        /// <summary>
        /// Retorna os dados de um imóvel
        /// </summary>
        /// <param name="nCodigo"></param>
        /// <returns></returns>
        public ImovelStruct Dados_Imovel(int nCodigo)
        {
            Imovel_Data obj = new Imovel_Data(_connection);

            return(obj.Dados_Imovel(nCodigo));
        }