jrbarros81
1/25/2020 - 4:32 PM

(Regra - INCORPWARE) Não emitir Certidão com Processo Valida Fases

Usada nos Conselhos: COREN-GO

/*
$funcao:Protocolo de Certidão Valida Fase$
$descricao:Protocolo com o mesmo tipo/assunto que ainda não foi resolvido$
$contexto:IW.PROTOCOLO.SALVAR$
$autor:Junior Barros$
$data:2020-1-24$
*/
create proc sp_regra_iw_protocolo_certidao_com_processo
@Retorno int OUTPUT,
@IdInscricao int, @TipoDocumento int, @Assunto int, @EntradaDocumento bit
as
set @Retorno = 0

/*
assunto-831 :   1 - CERTIDÃO DE REGULARIDADE
*/
if @Assunto in (831) Begin 

if exists(
SELECT DISTINCT
   Registro.Codigo AS "ID da Inscrição",
   ProcessoInfracao.[Codigo] AS "Processo ID do Processo",
   Fase.[Encerramento] AS "Processo Fase de Encerramento?",
   EstaFase.[MaisRecente] AS "processo fase Mais Recente"
FROM Registro
LEFT JOIN ProcessoInfracao ON Registro.Codigo = ProcessoInfracao.[Registro]
LEFT JOIN TipoProcessoInfracao ON ProcessoInfracao.[TipoProcessoInfracao] = TipoProcessoInfracao.
[Codigo]
LEFT JOIN EstaFase ON ProcessoInfracao.[Codigo] = EstaFase.[ProcessoInfracao]
LEFT JOIN Fase ON EstaFase.[Fase] = Fase.[Codigo]
WHERE
   ((TipoProcessoInfracao.[Codigo] = 1) AND 
   (Fase.[Encerramento] = 0) AND 
   (EstaFase.[MaisRecente] = 1) AND EstaFase.[Fase] in (300,296,298) AND
   (Registro.Codigo = @IdInscricao))
) begin
   set @Retorno = 1
end
end

/*
assunto-? :   2 - positiva com efeitos negativos
*/

if @Assunto in (831) Begin 

if exists(
SELECT DISTINCT
   Registro.Codigo AS "ID da Inscrição",
   ProcessoInfracao.[Codigo] AS "Processo ID do Processo",
   Fase.[Encerramento] AS "Processo Fase de Encerramento?",
   EstaFase.[MaisRecente] AS "processo fase Mais Recente"
FROM Registro
LEFT JOIN ProcessoInfracao ON Registro.Codigo = ProcessoInfracao.[Registro]
LEFT JOIN TipoProcessoInfracao ON ProcessoInfracao.[TipoProcessoInfracao] = TipoProcessoInfracao.
[Codigo]
LEFT JOIN EstaFase ON ProcessoInfracao.[Codigo] = EstaFase.[ProcessoInfracao]
LEFT JOIN Fase ON EstaFase.[Fase] = Fase.[Codigo]
WHERE
   ((TipoProcessoInfracao.[Codigo] = 1) AND 
   (Fase.[Encerramento] = 0) AND 
   (EstaFase.[MaisRecente] = 1) AND EstaFase.[Fase] in (436) AND
   (Registro.Codigo = @IdInscricao))
) begin
   set @Retorno = 1
end
end
/*
assunto-? :   3 - positiva
*/

if @Assunto in (831) Begin 

if exists(
SELECT DISTINCT
   Registro.Codigo AS "ID da Inscrição",
   ProcessoInfracao.[Codigo] AS "Processo ID do Processo",
   Fase.[Encerramento] AS "Processo Fase de Encerramento?",
   EstaFase.[MaisRecente] AS "processo fase Mais Recente"
FROM Registro
LEFT JOIN ProcessoInfracao ON Registro.Codigo = ProcessoInfracao.[Registro]
LEFT JOIN TipoProcessoInfracao ON ProcessoInfracao.[TipoProcessoInfracao] = TipoProcessoInfracao.
[Codigo]
LEFT JOIN EstaFase ON ProcessoInfracao.[Codigo] = EstaFase.[ProcessoInfracao]
LEFT JOIN Fase ON EstaFase.[Fase] = Fase.[Codigo]
WHERE
   ((TipoProcessoInfracao.[Codigo] = 1) AND 
   (Fase.[Encerramento] = 0) AND 
   (EstaFase.[MaisRecente] = 1) AND EstaFase.[Fase] in (437) AND
   (Registro.Codigo = @IdInscricao))
) begin
   set @Retorno = 1
end
end