Ir para o conteúdo principal

[SOLAR] Estudo para verificar o funcionamento da isenção de taxa dentro do SOLAR

Data de elaboração 10/01/2023.
Responsável pelo estudo
  1. Lucas Tavares
  2. João Vitor Paulino
  3. Milton Daniel Yama
Equipe do estudo TURING
Alvo Sistema de Outorga e Licenciamento Ambiental de Rondônia (SOLAR)
Origem
  • Objetivo Estratégico: Verificar como a isenção funciona dentro do SOLAR
Objetivo

Estudo com o objetivo de avaliar quais as opçoes de isenção de taxa dentro do sistema SOLAR.

Documentação correlata
Observações

1. Objetivo

Estudo com o objetivo de avaliar quais as opções de isenção de taxa dentro do sistema SOLAR.

2. Introdução

Algumas solicitações no SOLAR exigem que uma taxa denominada DARE seja paga pelo solicitante para que seja criado o processo desta solicitação, entretanto em alguns casos existe a isenção desta taxa para algumas atividades específicas com a quantidade de UPF(unidade padrão fiscal) igual a zero ou caso seja uma atividade de piscicultura que se encaixe na Lei 3437 ART. 18, e também no caso de o solicitante ser uma entidade pública.

3. Desenvolvimento

3.1 Isenção automática:

O SOLAR contem uma classe chamada VerificarSeEmpreendimentoEstaIsentoDeTaxa que verifica se o empreendimento possui uma atividade onde a mesma possua a quantidade de UPF(unidade padrão fiscal) igual a zero reais, caso seja uma atividade de piscicultura da Lei 3437, ou se o empreendimento é entidade publica. Esta isenção valida automaticamente sem informar o usuário ou seja o mesmo apenas faz a solicitação e ao final o sistema gera ou não a DARE caso o mesmo seja isento ou não.

var ehEmpreendimentoDeEntidadePublica = empreendimento.Empreendedor.TipoDoEmpreendedor == nameof(Dominio.CadastroContexto.EntidadePublica);

            if (ehEmpreendimentoDeEntidadePublica)
                return (ehAtividadeDePiscicultura: false, ehIsento: true);

Verificando se empreendimento é entidade publica

var ehAtividadeDePiscicultura = false;

            foreach (var atividadeDoEmpreendimento in empreendimento.AtividadesDoEmpreendimento)
            {
                var atividadeDePiscicultura = atividadeDoEmpreendimento.AtividadeDaLei.ReferenciaNaLei == Lei3437Art18;

                if (atividadeDePiscicultura)
                {
                    ehAtividadeDePiscicultura = true;

                    if (AtividadeDePisciculturaEIsento(atividadeDoEmpreendimento))
                        return (ehAtividadeDePiscicultura: true, ehIsento: true);
                }
              ...

private bool AtividadeDePisciculturaEIsento(AtividadeDoEmpreendimento atividadeDoEmpreendimento)
        {
            var possuiItemDaLei89_3 = atividadeDoEmpreendimento.AtividadeDaLei.ItemDaLei == ItemDaLei893;
            var possuiItemDaLei89_4 = atividadeDoEmpreendimento.AtividadeDaLei.ItemDaLei == ItemDaLei894;
            var tamanhoDaAtividade = atividadeDoEmpreendimento.TamanhoDaAtividade;

            if (possuiItemDaLei89_3 || possuiItemDaLei89_4)
            {
                tamanhoDaAtividade = ObterMmc(atividadeDoEmpreendimento);
            }

            var atividadeEhIsentaDeTaxa = tamanhoDaAtividade <= TamanhoMaximoPraSerIsentoDeTaxa;
            return atividadeEhIsentaDeTaxa;
        }

Verificando se empreendimento possui atividade de piscicultura

 foreach (var atividadeDoEmpreendimento in empreendimento.AtividadesDoEmpreendimento)
            {
                ...
                else
                {
                    var atividadeIsenta = await AtividadeEhIsento(atividadeDoEmpreendimento, servicoSolicitado);
                    return !atividadeIsenta ? (ehAtividadeDePiscicultura: false, ehIsento: false) : (ehAtividadeDePiscicultura: false, ehIsento: true);
                }
            }

            return await Task.FromResult((ehAtividadeDePiscicultura: ehAtividadeDePiscicultura, ehIsento: false));
        }

private async Task<bool> AtividadeEhIsento(AtividadeDoEmpreendimento atividadeDoEmpreendimento, ServicoSolicitado servicoSolicitado)
        {
            if (servicoSolicitado.TipoDeSolicitacao == null)
                return false;
            
            var tipoDeSolicitacao = servicoSolicitado.TipoDeSolicitacao.ToString();
            var remocaoDePrefixo = tipoDeSolicitacao?.Replace("RenovacaoDe", "");
            bool atividadeEhIsento;
                
            if (tipoDeSolicitacao != null && tipoDeSolicitacao.Contains("Licenca"))
            {
                var upfParaLicenca = await contexto.UnidadesPadraoFiscal
                    .AsNoTracking()
                    .FirstOrDefaultAsync(x =>
                        x.PorteDaAtividade == atividadeDoEmpreendimento.Porte &&
                        x.PotencialPoluidorDaAtividade == atividadeDoEmpreendimento.AtividadeDaLei.PotencialPoluidor.ToString() &&
                        x.ReferenciaNaLei == atividadeDoEmpreendimento.AtividadeDaLei.ReferenciaNaLei &&
                        x.TipoDeLicenca == Enum.Parse<TipoDeLicenca>(remocaoDePrefixo));

                atividadeEhIsento = upfParaLicenca is { QuantidadeDeUpf: TaxaDeIsencaoDeAtividadeComum };
                return atividadeEhIsento;
            }

            var upf = await contexto.UnidadesPadraoFiscal
                .AsNoTracking()
                .FirstOrDefaultAsync(x =>
                    x.PorteDaAtividade == atividadeDoEmpreendimento.Porte &&
                    x.PotencialPoluidorDaAtividade == atividadeDoEmpreendimento.AtividadeDaLei.PotencialPoluidor.ToString() &&
                    x.ReferenciaNaLei == atividadeDoEmpreendimento.AtividadeDaLei.ReferenciaNaLei);

            atividadeEhIsento = upf is { QuantidadeDeUpf: TaxaDeIsencaoDeAtividadeComum };

            return atividadeEhIsento;
        }

Verificando se atividade do empreendimento é isento caso a quantidade de UPF seja igual a zero

3.2 Isenção por escolha do usuário:

O SOLAR também possui um método que ao ser chamado, isenta a solicitação atual, este método é acionado por uma action denominada DeclararIsencaoDeTaxa, onde a mesma é acionada assim que o usuário selecionar o checkbox de declarar isenção, onde aparecerá opções de isenção que o mesmo pode selecionar, no caso de possuir atividade de piscicultura presente no Art. 18 da Lei 3.437 onde sistema valida tal situação por meio da classe VerificarSeEmpreendimentoEstaIsentoDeTaxa, se a atividade abrange a isenção por meio da piscicultura, se não o sistema da duas opções, caso o empreendimento seja uma entidade publica conforme na Lei 3686/2015 Art. 37, IncI, ou caso se enquadre como agricultura familiar conforme na Lei 3686/2015, Art. 37, incII.

@if (Model.TipoDeSolicitacao != nameof(SolicitacaoDeOutorga))
                {
                    <div class="form-group">
                        <input type="checkbox" id="isencao" name="isencaoDeTaxa" value="estaIsento" />
                        <label for="isencao">Declarar isenção</label>
                    </div>
                }

Checkbox para selecionar a declaração de isenção que leva para a "modal-solicitar-isencao-de-taxa", e pode selecionar entre as possíveis formas de isenção

<form asp-controller="Solicitacao" asp-action="DeclararIsencaoDeTaxa" method="post">
                    <div class="modal-body">
                        <input type="hidden" name="empreendimentoId" value="@Model.EmpreendimentoId" />
                        <input type="hidden" name="solicitacaoId" value="@Model.Id" />
                        @if (Model.EhAtividadeDePiscicultura)
                        {
                            <div class="my-3">
                                <h5>Declaro que me enquadro no Art. 18 da Lei 3.437 de 9 de setembro de 2014 onde estão isentos do pagamento das Taxas de Licenciamento Ambiental.</h5>
                            </div>
                        }
                        else
                        {
                            <div class="my-3">
                                <input type="radio" id="isencaoAgriculturaFamiliar" name="motivoDaIsencao" value="Agricultura familiar: Lei 3686/2015, Art. 37, inc, II" />
                                <label for="isencaoAgriculturaFamiliar">
                                    <h5>
                                        Declaro que para isenção de taxa, empreendimento enquadrado na lei 3686/2015, Art. 37, inc, II - atividades agropecuárias e agrossilvopastoris exercidas por agricultor familiar e empreendedor familiar rural, assim considerado aquele que pratica atividades no meio rural, atendendo, simultaneamente, aos requisitos do inciso.
                                    </h5>
                                </label>
                            </div>
                            <div class="my-3">
                                <input type="radio" id="isencaoEntidadePublica" name="motivoDaIsencao" value="Entidade Publica: Lei 3686/2015, Art. 37, inc, I" />
                                <label for="isencaoEntidadePublica">
                                    <h5>
                                        Declaro que me enquadro na Lei 3686/2015 que "Dispõe sobre o Sistema de Licenciamento Ambiental do Estado de Rondônia e dá outras providências", Art. 37, Inc. I que isenta de pagamento das Taxas de Licenciamento Ambiental: as obras e atividades executadas diretamente por órgão da Administração Pública Direta ou Indireta dos municípios integrantes do Estado de Rondônia;
                                    </h5>
                                </label>
                            </div>
                        }
                    </div>

Possibilidades de isenção ao selecionar o checkbox de isenção (piscicultura, agricultura familiar, entidade publica), cada um de acordo com a sua respectiva lei.

Na condição "@if (Model.EhAtividadeDePiscicultura)", a propriedade "EhAtividadeDePiscicultura", recebe da classe VerificarSeEmpreendimentoEstaIsentoDeTaxa conforme citado acima(o código foi demonstrado acima em "Verificando se empreendimento possui atividade de piscicultura"), ou seja, mesmo utilizando a isenção por meio do checkbox ainda há ligação com a isenção automatica.

image.png

modal ao selecionar o checkbox e os tipos de isenção para selecionar

3.2 Vantagens e Desvantagens das isenções:

Na isenção por meio do checkbox o sistema o usuário ciente do por qual motivo o mesmo terá solicitação isenta de taxa, entretanto caso o usuário que possua atividade isenta mas não selecione a opção do checkbox, ao finalizar o sistema não terá o suporte para isenção de taxa tendo que pagar uma taxa desnecessária.

Na isenção automática, o sistema valida todos os tipos de isenção diminuindo o erro por meio da ação do usuário no sistema, erro que é uma desvantagem da isenção por checkbox, entretanto o usuário não consegue saber qual o motivo da sua solicitação está isenta.

4. Conclusão

Como verificado nos tópicos anteriores, temos duas formas de se verificar a isenção, por meio de um checkbox e selecionando a opção exata de isenção que o usuário se enquadra e a isenção feita de forma automática por meio de uma classe que abrange todos os tipos de isenção.

Conclui-se que a melhor decisão a ser tomada é separar as responsabilidades dessas duas formas de isenção, separar as isenções redundantes, aplicar apenas a isenção por meio do checkbox, mas manter a classe de VerificarSeEmpreendimentoEstaIsentoDeTaxa, que ainda valida mesmo por meio da isenção por checkbox, se o usuário pode ser isento por ter atividade de piscicultura.