示例#1
0
        private Certidao_isencao Valida_Dados(int Numero, int Ano, int Codigo)
        {
            Tributario_bll   tributario_Class = new Tributario_bll("GTIconnection");
            Certidao_isencao dados            = tributario_Class.Retorna_Certidao_Isencao(Ano, Numero, Codigo);

            return(dados);
        }
示例#2
0
        private void Exibe_Certidao_Isencao(Certidao_isencao dados)
        {
            lblMsg.Text = "";
            string sComplemento = dados.Li_compl == null?"":" " + dados.Li_compl;
            string sQuadras     = string.IsNullOrWhiteSpace(dados.Li_quadras) ? "" : " Quadra: " + dados.Li_quadras.ToString().Trim();
            string sLotes       = string.IsNullOrWhiteSpace(dados.Li_lotes) ? "" : " Lote: " + dados.Li_lotes.ToString().Trim();

            sComplemento += sQuadras + sLotes;
            string sEndereco = dados.Logradouro + ", " + dados.Numero.ToString() + sComplemento;

            Imovel_bll imovel_Class = new Imovel_bll("GTIconnection");
            decimal    nPerc        = (decimal)dados.Percisencao;

            if (nPerc == 0)
            {
                nPerc = 100;
            }
            string sProc = "";

            if (dados.Numero > 0)
            {
                List <IsencaoStruct> ListaIsencao = null;
                ListaIsencao = imovel_Class.Lista_Imovel_Isencao(dados.Codigo, DateTime.Now.Year);
                sProc        = ListaIsencao[0].Numprocesso + " de " + Convert.ToDateTime(ListaIsencao[0].dataprocesso).ToString("dd/MM/yyyy");
            }

            ReportDocument crystalReport = new ReportDocument();

            crystalReport.Load(Server.MapPath("~/Report/CertidaoIsencaoValida.rpt"));
            crystalReport.SetParameterValue("NUMCERTIDAO", dados.Numero.ToString("00000") + "/" + dados.Ano.ToString("0000"));
            crystalReport.SetParameterValue("DATAEMISSAO", dados.Data.ToString("dd/MM/yyyy") + " às " + dados.Data.ToString("HH:mm:ss"));
            crystalReport.SetParameterValue("CONTROLE", dados.Numero.ToString("00000") + dados.Ano.ToString("0000") + "/" + dados.Codigo.ToString() + "-CI");
            crystalReport.SetParameterValue("ENDERECO", sEndereco);
            crystalReport.SetParameterValue("CADASTRO", dados.Codigo.ToString("000000"));
            crystalReport.SetParameterValue("NOME", dados.Nomecidadao);
            crystalReport.SetParameterValue("INSCRICAO", dados.Inscricao);
            crystalReport.SetParameterValue("BAIRRO", dados.Descbairro);
            crystalReport.SetParameterValue("PERC", nPerc);
            crystalReport.SetParameterValue("PROCESSO", sProc);

            HttpContext.Current.Response.Buffer = false;
            HttpContext.Current.Response.ClearContent();
            HttpContext.Current.Response.ClearHeaders();

            try {
                crystalReport.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, "comp" + dados.Numero.ToString() + dados.Ano.ToString());
            } catch {
            } finally {
                crystalReport.Close();
                crystalReport.Dispose();
            }
        }
示例#3
0
        private void ImprimirButton_Click(object sender, EventArgs e)
        {
            if (Nome.Text == "")
            {
                MessageBox.Show("Carregue os dados de um contribuinte para poder imprimir a certidão.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            Tributario_bll tributario_Class = new Tributario_bll(_connection);
            int            _userId = gtiCore.UserId;
            int            _ano_certidao = DateTime.Now.Year, _numero_certidao = 0, _codigo = Convert.ToInt32(Codigo.Text), _ano_isencao = DateTime.Now.Year;
            decimal        _percisencao = 0, SomaArea = 0;
            DateTime?      _data_processo_isencao = null;
            Report_Data    _dados = null;
            string         _nomeReport = "", _controle = "", _numero_processo = "";

            if (_tipo_certidao == TipoCertidao.Endereco)
            {
                _nomeReport      = "CertidaoEndereco";
                _numero_certidao = tributario_Class.Retorna_Codigo_Certidao(modelCore.TipoCertidao.Endereco);
                _controle        = _numero_certidao.ToString("00000") + _ano_certidao.ToString("0000") + "/" + _codigo.ToString() + "-EA";
                Certidao_endereco cert = new Certidao_endereco {
                    Codigo      = Convert.ToInt32(_codigo),
                    Ano         = _ano_certidao,
                    Numero      = _numero_certidao,
                    Data        = DateTime.Now,
                    Inscricao   = Inscricao.Text,
                    Nomecidadao = Nome.Text,
                    Logradouro  = Endereco.Text,
                    descbairro  = Bairro.Text,
                    Li_quadras  = Quadra.Text,
                    Li_lotes    = Lote.Text
                };
                Exception ex = tributario_Class.Insert_Certidao_Endereco(cert);
                if (ex != null)
                {
                    throw ex;
                }
            }
            else
            {
                if (_tipo_certidao == TipoCertidao.Isencao)
                {
                    Imovel_bll imovel_Class = new Imovel_bll(_connection);
                    bool       bImune       = imovel_Class.Verifica_Imunidade(_codigo);
                    _numero_certidao = tributario_Class.Retorna_Codigo_Certidao(modelCore.TipoCertidao.Isencao);
                    _controle        = _numero_certidao.ToString("00000") + _ano_certidao.ToString("0000") + "/" + _codigo.ToString() + "-CI";

                    if (bImune)
                    {
                        _percisencao = 100;
                        _nomeReport  = "CertidaoImunidade";
                    }
                    else
                    {
                        bool bIsentoProcesso = false;
                        List <IsencaoStruct> ListaIsencao = null;
                        ListaIsencao = imovel_Class.Lista_Imovel_Isencao(_codigo, DateTime.Now.Year);
                        if (ListaIsencao.Count > 0)
                        {
                            bIsentoProcesso = true;
                        }
                        if (bIsentoProcesso)
                        {
                            _nomeReport            = "CertidaoIsencaoProcesso";
                            _percisencao           = (decimal)ListaIsencao[0].Percisencao;
                            _numero_processo       = ListaIsencao[0].Numprocesso;
                            _data_processo_isencao = Convert.ToDateTime(ListaIsencao[0].dataprocesso);
                        }
                        else
                        {
                            SomaArea = imovel_Class.Soma_Area(_codigo);
                            if (SomaArea < 65)
                            {
                                //Se tiver área < 65m² mas tiver mais de 1 imóvel, perde a isenção.
                                int nQtdeImovel = imovel_Class.Qtde_Imovel_Cidadao(_codigo);
                                if (nQtdeImovel > 1)
                                {
                                    MessageBox.Show("Este imóvel não esta isento da cobrança de IPTU no ano atual.", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    return;
                                }
                                _nomeReport = "CertidaoIsencao65";
                            }
                        }
                    }

                    Certidao_isencao cert = new Certidao_isencao {
                        Codigo       = _codigo,
                        Ano          = _ano_certidao,
                        Numero       = _numero_certidao,
                        Data         = DateTime.Now,
                        Inscricao    = Inscricao.Text,
                        Nomecidadao  = Nome.Text,
                        Logradouro   = Endereco.Text,
                        Descbairro   = Bairro.Text,
                        Li_quadras   = Quadra.Text,
                        Li_lotes     = Lote.Text,
                        Area         = SomaArea,
                        Percisencao  = _percisencao,
                        Numprocesso  = _numero_processo,
                        Dataprocesso = _data_processo_isencao
                    };
                    Exception ex = tributario_Class.Insert_Certidao_Isencao(cert);
                    if (ex != null)
                    {
                        throw ex;
                    }
                }
                else
                {
                    if (_tipo_certidao == TipoCertidao.ValorVenal)
                    {
                        _nomeReport      = "CertidaoValorVenal";
                        _numero_certidao = tributario_Class.Retorna_Codigo_Certidao(modelCore.TipoCertidao.ValorVenal);
                        _controle        = _numero_certidao.ToString("00000") + _ano_certidao.ToString("0000") + "/" + _codigo.ToString() + "-VV";
                        Certidao_valor_venal cert = new Certidao_valor_venal {
                            Codigo      = Convert.ToInt32(_codigo),
                            Ano         = _ano_certidao,
                            Numero      = _numero_certidao,
                            Data        = DateTime.Now,
                            Inscricao   = Inscricao.Text,
                            Nomecidadao = Nome.Text,
                            Logradouro  = Endereco.Text,
                            Descbairro  = Bairro.Text,
                            Li_quadras  = Quadra.Text,
                            Li_lotes    = Lote.Text
                        };
                        Exception ex = tributario_Class.Insert_Certidao_ValorVenal(cert);
                        if (ex != null)
                        {
                            throw ex;
                        }
                    }
                    else
                    {
                        if (_tipo_certidao == TipoCertidao.Debito)
                        {
                            //***Verifica débito
                            Certidao_debito_detalhe dadosCertidao = tributario_Class.Certidao_Debito(_codigo);
                            if (dadosCertidao.Tipo_Retorno == RetornoCertidaoDebito.Negativa)
                            {
                                sTipoCertidao = "NEGATIVA";
                                sNao          = "não ";
                                nRet          = 3;
                                sSufixo       = "CN";
                                if (_tipo_cadastro == TipoCadastro.Imovel)
                                {
                                    _nomeReport = "CertidaoDebitoImovel";
                                }
                                else
                                {
                                    if (_tipo_cadastro == TipoCadastro.Empresa)
                                    {
                                        _nomeReport = "CertidaoDebitoEmpresa";
                                    }
                                }
                            }
                            else
                            {
                                if (dadosCertidao.Tipo_Retorno == RetornoCertidaoDebito.Positiva)
                                {
                                    sTipoCertidao = "POSITIVA";
                                    nRet          = 4;
                                    sSufixo       = "CP";
                                    if (_tipo_cadastro == TipoCadastro.Imovel)
                                    {
                                        _nomeReport = "CertidaoDebitoImovel";
                                    }
                                    else
                                    {
                                        if (_tipo_cadastro == TipoCadastro.Empresa)
                                        {
                                            _nomeReport = "CertidaoDebitoEmpresa";
                                        }
                                    }
                                }
                                else
                                {
                                    if (dadosCertidao.Tipo_Retorno == RetornoCertidaoDebito.NegativaPositiva)
                                    {
                                        sTipoCertidao = "POSITIVA COM EFEITO NEGATIVA";
                                        nRet          = 5;
                                        sSufixo       = "PN";
                                        if (_tipo_cadastro == TipoCadastro.Imovel)
                                        {
                                            _nomeReport = "CertidaoDebitoImovelPN";
                                        }
                                        else
                                        {
                                            if (_tipo_cadastro == TipoCadastro.Empresa)
                                            {
                                                _nomeReport = "CertidaoDebitoEmpresaPN";
                                            }
                                        }
                                    }
                                }
                            }
                            sTributo = dadosCertidao.Descricao_Lancamentos;

                            _numero_certidao = tributario_Class.Retorna_Codigo_Certidao(modelCore.TipoCertidao.Debito);
                            _controle        = _numero_certidao.ToString("00000") + _ano_certidao.ToString("0000") + "/" + _codigo.ToString() + "-" + sSufixo;
                            Certidao_debito cert = new Certidao_debito {
                                Codigo       = Convert.ToInt32(_codigo),
                                Ano          = (short)_ano_certidao,
                                Ret          = nRet,
                                Numero       = _numero_certidao,
                                Datagravada  = DateTime.Now,
                                Inscricao    = Inscricao.Text,
                                Nome         = Nome.Text,
                                Logradouro   = Endereco.Text,
                                Bairro       = Bairro.Text,
                                Cidade       = Cidade.Text,
                                Processo     = Processo.Text,
                                Dataprocesso = _data_processo,
                                Atendente    = gtiCore.LastUser,
                                Cpf          = sCPF,
                                Cnpj         = sCNPJ,
                                Atividade    = Atividade.Text,
                                Lancamento   = dadosCertidao.Descricao_Lancamentos
                            };
                            Exception ex = tributario_Class.Insert_Certidao_Debito(cert);
                            if (ex != null)
                            {
                                throw ex;
                            }
                        }
                    }
                }

                if (_numero_certidao > 0)
                {
                    _dados = new Report_Data()
                    {
                        Codigo                = Convert.ToInt32(Codigo.Text),
                        Inscricao             = Inscricao.Text,
                        Nome                  = Nome.Text,
                        Cpf_cnpj              = Doc.Text,
                        Endereco              = Endereco.Text,
                        Nome_bairro           = Bairro.Text,
                        Quadra_original       = Quadra.Text,
                        Lote_original         = Lote.Text,
                        Nome_cidade           = Cidade.Text,
                        Cep                   = Cep.Text,
                        Numero_Certidao       = _numero_certidao.ToString("000000") + "/" + _ano_certidao.ToString(),
                        Controle              = _controle,
                        Assinatura_Hide       = Assinatura.Checked,
                        Processo              = Processo.Text,
                        Data_Processo         = _data_processo,
                        UserId                = _userId,
                        Perc_Isencao          = _percisencao,
                        Data_Processo_Isencao = _data_processo_isencao,
                        Processo_Isencao      = _numero_processo,
                        AnoIsencao            = _ano_isencao,
                        Area                  = SomaArea,
                        Nao                   = sNao,
                        TipoCertidao          = sTipoCertidao,
                        Tributos              = sTributo,
                        Atividade             = sAtividade
                    };
                    //ReportCR fRpt = new ReportCR(_nomeReport, _dados,null);
                    //fRpt.ShowDialog();
                    ClearFields();
                }
            }
        }
示例#4
0
        public IActionResult Validate_CS(CertidaoViewModel model)
        {
            int    _codigo, _ano, _numero;
            string _chave = model.Chave;

            if (model.Chave != null)
            {
                Certidao        reg          = new Certidao();
                List <Certidao> certidao     = new List <Certidao>();
                chaveStruct     _chaveStruct = tributarioRepository.Valida_Certidao(_chave);
                if (!_chaveStruct.Valido)
                {
                    ViewBag.Result = "Chave de autenticação da certidão inválida.";
                    return(View("Certidao_Isencao", model));
                }
                else
                {
                    _codigo = _chaveStruct.Codigo;
                    _numero = _chaveStruct.Numero;
                    _ano    = _chaveStruct.Ano;

                    Certidao_isencao certidaoGerada = tributarioRepository.Retorna_Certidao_Isencao(_ano, _numero, _codigo);
                    if (certidaoGerada != null)
                    {
                        reg.Codigo               = _codigo;
                        reg.Ano                  = _ano;
                        reg.Numero               = _numero;
                        reg.Endereco             = certidaoGerada.Logradouro;
                        reg.Endereco_Numero      = certidaoGerada.Li_num;
                        reg.Endereco_Complemento = certidaoGerada.Li_compl ?? "";
                        reg.Bairro               = certidaoGerada.Descbairro;
                        reg.Nome_Requerente      = certidaoGerada.Nomecidadao;
                        reg.Data_Geracao         = certidaoGerada.Data;
                        reg.Inscricao            = certidaoGerada.Inscricao;
                        reg.Percentual_Isencao   = (decimal)certidaoGerada.Percisencao;
                        reg.Numero_Processo      = certidaoGerada.Numprocesso ?? "";
                        if (certidaoGerada.Dataprocesso != null)
                        {
                            reg.Data_Processo = (DateTime)certidaoGerada.Dataprocesso;
                        }
                        reg.Area       = (decimal)certidaoGerada.Area;
                        reg.Numero_Ano = reg.Numero.ToString("00000") + "/" + reg.Ano;
                    }
                    else
                    {
                        ViewBag.Result = "Ocorreu um erro ao processar as informações.";
                        return(View("Certidao_Endereco", model));
                    }
                };

                certidao.Add(reg);

                ReportDocument rd = new ReportDocument();
                rd.Load(hostingEnvironment.ContentRootPath + "\\Reports\\Certidao_Isencao_Valida.rpt");

                try {
                    rd.SetDataSource(certidao);
                    Stream stream = rd.ExportToStream(ExportFormatType.PortableDocFormat);
                    return(File(stream, "application/pdf", "Certidao_Isencao.pdf"));
                } catch {
                    throw;
                }
            }
            else
            {
                ViewBag.Result = "Chave de validação inválida.";
                return(View("Certidao_Isencao", model));
            }
        }
示例#5
0
        public IActionResult Certidao_Isencao(CertidaoViewModel model)
        {
            int               _codigo           = 0;
            int               _numero           = tributarioRepository.Retorna_Codigo_Certidao(Functions.TipoCertidao.Isencao);
            bool              _existeCod        = false;
            string            _numero_processo  = "";
            CertidaoViewModel certidaoViewModel = new CertidaoViewModel();

            ViewBag.Result = "";

            if (model.Inscricao != null)
            {
                _codigo = Convert.ToInt32(model.Inscricao);
                if (_codigo < 100000)
                {
                    _existeCod = _imovelRepository.Existe_Imovel(_codigo);
                }
            }

            if (!Captcha.ValidateCaptchaCode(model.CaptchaCode, HttpContext))
            {
                ViewBag.Result = "Código de verificação inválido.";
                return(View(certidaoViewModel));
            }

            if (!_existeCod)
            {
                ViewBag.Result = "Imóvel não cadastrado.";
                return(View(certidaoViewModel));
            }

            decimal SomaArea = _imovelRepository.Soma_Area(_codigo);

            bool bImune          = _imovelRepository.Verifica_Imunidade(_codigo);
            bool bIsentoProcesso = false;
            List <IsencaoStruct> ListaIsencao = null;

            if (!bImune)
            {
                ListaIsencao = _imovelRepository.Lista_Imovel_Isencao(_codigo, DateTime.Now.Year);
                if (ListaIsencao.Count > 0)
                {
                    bIsentoProcesso  = true;
                    _numero_processo = ListaIsencao[0].Numprocesso ?? "";
                }
            }

            List <ProprietarioStruct> listaProp = _imovelRepository.Lista_Proprietario(_codigo, true);
            ImovelStruct _dados = _imovelRepository.Dados_Imovel(_codigo);
            Certidao     reg    = new Certidao()
            {
                Codigo               = _dados.Codigo,
                Inscricao            = _dados.Inscricao,
                Endereco             = _dados.NomeLogradouro,
                Endereco_Numero      = (int)_dados.Numero,
                Endereco_Complemento = _dados.Complemento,
                Bairro               = _dados.NomeBairro ?? "",
                Nome_Requerente      = listaProp[0].Nome,
                Ano             = DateTime.Now.Year,
                Numero          = _numero,
                Quadra_Original = _dados.QuadraOriginal ?? "",
                Lote_Original   = _dados.LoteOriginal ?? "",
                Controle        = _numero.ToString("00000") + DateTime.Now.Year.ToString("0000") + "/" + _codigo.ToString() + "-CI",
                Numero_Processo = _numero_processo,
                Area            = SomaArea
            };

            if (ListaIsencao.Count > 0)
            {
                reg.Percentual_Isencao = (decimal)ListaIsencao[0].Percisencao;
                reg.Data_Processo      = (DateTime)ListaIsencao[0].dataprocesso;
            }

            decimal nPerc;
            string  reportName;

            if (bImune)
            {
                reportName = "Certidao_Imunidade.rpt";
                nPerc      = 100;
            }
            else
            {
                if (bIsentoProcesso)
                {
                    reportName = "Certidao_Isencao_Processo.rpt";
                    nPerc      = (decimal)ListaIsencao[0].Percisencao;
                }
                else
                {
                    if (SomaArea <= 65)
                    {
                        //Se tiver área < 65m² mas tiver mais de 1 imóvel, perde a isenção.
                        int nQtdeImovel = _imovelRepository.Qtde_Imovel_Cidadao(_codigo);
                        if (nQtdeImovel > 1)
                        {
                            ViewBag.Result = "Este imóvel não esta isento da cobrança de IPTU no ano atual.";
                            return(View(certidaoViewModel));
                        }
                        nPerc      = 100;
                        reportName = "Certidao_Isencao_65metros.rpt";
                    }
                    else
                    {
                        ViewBag.Result = "Este imóvel não esta isento da cobrança de IPTU no ano atual.";
                        return(View(certidaoViewModel));
                    }
                }
            }

            List <Certidao> certidao = new List <Certidao>();

            Models.Certidao_isencao regCert = new Certidao_isencao()
            {
                Ano          = reg.Ano,
                Codigo       = reg.Codigo,
                Data         = DateTime.Now,
                Descbairro   = reg.Bairro,
                Inscricao    = reg.Inscricao,
                Logradouro   = reg.Endereco,
                Nomecidadao  = reg.Nome_Requerente,
                Li_lotes     = reg.Lote_Original,
                Li_compl     = reg.Endereco_Complemento,
                Li_num       = reg.Endereco_Numero,
                Li_quadras   = reg.Quadra_Original,
                Numero       = reg.Numero,
                Area         = SomaArea,
                Numprocesso  = reg.Numero_Processo ?? "",
                Dataprocesso = reg.Data_Processo,
                Percisencao  = nPerc
            };
            reg.Numero_Ano = reg.Numero.ToString("00000") + "/" + reg.Ano;
            certidao.Add(reg);
            Exception ex = tributarioRepository.Insert_Certidao_Isencao(regCert);

            if (ex != null)
            {
                ViewBag.Result = "Ocorreu um erro no processamento das informações.";
                return(View(certidaoViewModel));
            }

            ReportDocument rd = new ReportDocument();

            rd.Load(hostingEnvironment.ContentRootPath + "\\Reports\\" + reportName);

            try {
                rd.SetDataSource(certidao);
                Stream stream = rd.ExportToStream(ExportFormatType.PortableDocFormat);
                return(File(stream, "application/pdf", "Certidao_Isencao.pdf"));
            } catch {
                throw;
            }
        }
示例#6
0
        protected void ValidarButton_Click(object sender, EventArgs e)
        {
            string sCod  = Codigo.Text;
            string sTipo = "";

            lblMsg.Text = "";
            int nPos = 0, nPos2 = 0, nCodigo = 0, nAno = 0, nNumero = 0;

            if (sCod.Trim().Length < 8)
            {
                lblMsg.Text = "Código de validação inválido.";
            }
            else
            {
                nPos = sCod.IndexOf("-");
                if (nPos < 6)
                {
                    lblMsg.Text = "Código de validação inválido.";
                }
                else
                {
                    nPos2 = sCod.IndexOf("/");
                    if (nPos2 < 5 || nPos - nPos2 < 2)
                    {
                        lblMsg.Text = "Código de validação inválido.";
                    }
                    else
                    {
                        nCodigo = Convert.ToInt32(sCod.Substring(nPos2 + 1, nPos - nPos2 - 1));
                        nAno    = Convert.ToInt32(sCod.Substring(nPos2 - 4, 4));
                        nNumero = Convert.ToInt32(sCod.Substring(0, 5));
                        if (nAno < 2010 || nAno > DateTime.Now.Year + 1)
                        {
                            lblMsg.Text = "Código de validação inválido.";
                        }
                        else
                        {
                            sTipo = sCod.Substring(sCod.Length - 2, 2);
                            if (sTipo == "CI")
                            {
                                Imovel_bll   imovel_Class = new Imovel_bll("GTIconnection");
                                ImovelStruct _dadosImovel = imovel_Class.Dados_Imovel(Convert.ToInt32(sCod));

                                Certidao_isencao dados = Valida_Dados(nNumero, nAno, nCodigo);
                                if (dados != null)
                                {
                                    Exibe_Certidao_Isencao(dados);
                                }
                                else
                                {
                                    lblMsg.Text = "Certidão não cadastrada.";
                                }
                            }
                            else
                            {
                                lblMsg.Text = "Código de validação inválido.";
                            }
                        }
                    }
                }
            }
        }
示例#7
0
        private void PrintReport(int Codigo)
        {
            Imovel_bll imovel_Class = new Imovel_bll("GTIconnection");
            decimal    SomaArea     = imovel_Class.Soma_Area(Codigo);

            ImovelStruct Reg          = imovel_Class.Dados_Imovel(Codigo);
            string       sComplemento = string.IsNullOrWhiteSpace(Reg.Complemento) ? "" : " " + Reg.Complemento.ToString().Trim();
            string       sQuadras     = string.IsNullOrWhiteSpace(Reg.QuadraOriginal) ? "" : " Quadra: " + Reg.QuadraOriginal.ToString().Trim();
            string       sLotes       = string.IsNullOrWhiteSpace(Reg.LoteOriginal) ? "" : " Lote: " + Reg.LoteOriginal.ToString().Trim();

            sComplemento += sQuadras + sLotes;
            string sEndereco  = Reg.NomeLogradouro + ", " + Reg.Numero.ToString() + sComplemento;
            string sBairro    = Reg.NomeBairro;
            string sInscricao = Reg.Distrito.ToString() + "." + Reg.Setor.ToString("00") + "." + Reg.Quadra.ToString("0000") + "." + Reg.Lote.ToString("00000") + "." +
                                Reg.Seq.ToString("00") + "." + Reg.Unidade.ToString("00") + "." + Reg.SubUnidade.ToString("000");
            List <ProprietarioStruct> Lista = imovel_Class.Lista_Proprietario(Codigo, true);
            string sNome = Lista[0].Nome;
            string sNumeroProcesso = "", sDataProcesso = "";


            ReportDocument crystalReport = new ReportDocument();

            bool bImune          = imovel_Class.Verifica_Imunidade(Codigo);
            bool bIsentoProcesso = false;
            List <IsencaoStruct> ListaIsencao = null;

            if (!bImune)
            {
                ListaIsencao = imovel_Class.Lista_Imovel_Isencao(Codigo, DateTime.Now.Year);
                if (ListaIsencao.Count > 0)
                {
                    bIsentoProcesso = true;
                }
            }

            decimal nPerc = 0;

            if (bImune)
            {
                crystalReport.Load(Server.MapPath("~/Report/CertidaoImunidade.rpt"));
                nPerc = 100;
                crystalReport.SetParameterValue("PERC", nPerc.ToString() + "%");
                crystalReport.SetParameterValue("DATAPROCESSO", sDataProcesso);
            }
            else
            {
                if (bIsentoProcesso)
                {
                    crystalReport.Load(Server.MapPath("~/Report/CertidaoIsencaoProcesso.rpt"));
                    nPerc           = (decimal)ListaIsencao[0].Percisencao;
                    sNumeroProcesso = ListaIsencao[0].Numprocesso;
                    crystalReport.SetParameterValue("PERC", nPerc);
                    crystalReport.SetParameterValue("DATAPROCESSO", ListaIsencao[0].dataprocesso);
                }
                else
                {
                    if (SomaArea <= 65)
                    {
                        //Se tiver área < 65m² mas tiver mais de 1 imóvel, perde a isenção.
                        int nQtdeImovel = imovel_Class.Qtde_Imovel_Cidadao(Codigo);
                        if (nQtdeImovel > 1)
                        {
                            lblMsg.Text = "Este imóvel não esta isento da cobrança de IPTU no ano atual.";
                            return;
                        }
                        crystalReport.Load(Server.MapPath("~/Report/CertidaoIsencao65.rpt"));
                        crystalReport.SetParameterValue("PERC", nPerc.ToString() + "%");
                        crystalReport.SetParameterValue("DATAPROCESSO", sDataProcesso);
                    }
                    else
                    {
                        lblMsg.Text = "Este imóvel não esta isento da cobrança de IPTU no ano atual.";
                        return;
                    }
                }
            }
            Tributario_bll tributario_Class = new Tributario_bll("GTIconnection");
            int            _numero_certidao = tributario_Class.Retorna_Codigo_Certidao(modelCore.TipoCertidao.Isencao);
            int            _ano_certidao    = DateTime.Now.Year;

            Certidao_isencao cert = new Certidao_isencao();

            cert.Codigo      = Codigo;
            cert.Ano         = _ano_certidao;
            cert.Numero      = _numero_certidao;
            cert.Data        = DateTime.Now;
            cert.Inscricao   = sInscricao;
            cert.Nomecidadao = sNome;
            cert.Logradouro  = Reg.NomeLogradouro;
            cert.Li_num      = Convert.ToInt32(Reg.Numero);
            cert.Li_compl    = Reg.Complemento;
            cert.Descbairro  = sBairro;
            cert.Li_quadras  = Reg.QuadraOriginal;
            cert.Li_lotes    = Reg.LoteOriginal;
            cert.Area        = SomaArea;
            cert.Percisencao = nPerc;

            Exception ex = tributario_Class.Insert_Certidao_Isencao(cert);

            if (ex != null)
            {
                throw ex;
            }
            else
            {
                crystalReport.SetParameterValue("NUMCERTIDAO", _numero_certidao.ToString("00000") + "/" + _ano_certidao.ToString("0000"));
                crystalReport.SetParameterValue("DATAEMISSAO", DateTime.Now.ToString("dd/MM/yyyy") + " às " + DateTime.Now.ToString("HH:mm:ss"));
                crystalReport.SetParameterValue("CONTROLE", _numero_certidao.ToString("00000") + _ano_certidao.ToString("0000") + "/" + Codigo.ToString() + "-CI");
                crystalReport.SetParameterValue("ENDERECO", sEndereco);
                crystalReport.SetParameterValue("CADASTRO", Codigo.ToString("000000"));
                crystalReport.SetParameterValue("NOME", sNome);
                crystalReport.SetParameterValue("INSCRICAO", sInscricao);
                crystalReport.SetParameterValue("BAIRRO", sBairro);
                crystalReport.SetParameterValue("ANO", DateTime.Now.Year.ToString());
                crystalReport.SetParameterValue("AREA", string.Format(CultureInfo.GetCultureInfo("pt-BR"), "{0:#,###.##}m²", SomaArea));
                crystalReport.SetParameterValue("NUMPROCESSO", sNumeroProcesso);

                HttpContext.Current.Response.Buffer = false;
                HttpContext.Current.Response.ClearContent();
                HttpContext.Current.Response.ClearHeaders();

                try {
                    crystalReport.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, "certidao" + _numero_certidao.ToString() + _ano_certidao.ToString());
                } catch {
                } finally {
                    crystalReport.Close();
                    crystalReport.Dispose();
                }
            }
        }