/*
$funcao:Certidão para Validar Responsável Técnico$
$descricao:Certidão para Validar Responsável Técnico$
$contexto:NET.PROTOCOLOCERTIDAO$
$autor:Júnior Barros$
$data:2019-10-9$
*/
create proc sp_regra_net_certidao_responsavel_tecnico
@Retorno int OUTPUT, @Mensagem varchar(8000) OUTPUT, @IdInscricao int, @TipoDocumento int,
@Assunto int, @EntradaDocumento bit, @CodArt int
as
set @Retorno = 0
if @EntradaDocumento = 0 and @Assunto in (900000001) begin
----------------------- INICIO VALIDAÇÃO RT Está Inscrito -----------------------------------------
if not exists(
SELECT DISTINCT
Entidade.Codigo AS "Empresa"
FROM Entidade
LEFT JOIN Entidade AS Entidade_1 ON Entidade.Codigo = Entidade_1.Codigo
LEFT JOIN TipoEntidade ON Entidade_1.TipoEntidade = TipoEntidade.Codigo
LEFT JOIN Registro ON Entidade.Codigo = Registro.Entidade
LEFT JOIN Situacao ON Registro.Situacao = Situacao.Codigo
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_2 ON Trabalha.[Empregador] = Entidade_2.[Codigo]
WHERE
(
(Situacao.Ativo = 1) AND
(TipoEntidade.[Pessoa Juridica] = 1) AND
(Entidade.Codigo in (
SELECT DISTINCT
Entidade.Codigo AS "Empresa"
FROM Entidade
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_1 ON Trabalha.[Empregado] = Entidade_1.[Codigo]
LEFT JOIN Trabalha AS Trabalha_1 ON Entidade_1.[Codigo] = Trabalha_1.[Empregado]
LEFT JOIN TrabalhaTemDado ON Trabalha_1.[Codigo] = TrabalhaTemDado.[Trabalha]
LEFT JOIN Dado ON TrabalhaTemDado.[Dado] = Dado.[Codigo]
LEFT JOIN TipoDado ON Dado.[TipoDado] = TipoDado.[Codigo]
WHERE
((Trabalha_1.[ResponsavelTecnico] = 1) AND
(Trabalha_1.[Empregado] IN(
SELECT DISTINCT
Entidade.Codigo AS "ID da Entidade"
FROM Entidade
LEFT JOIN Registro ON Entidade.Codigo =
Registro.Entidade
LEFT JOIN Situacao ON Registro.Situacao =
Situacao.Codigo
WHERE ((Situacao.Inscrito = 1))))
)
)) AND
(Registro.Codigo = @IdInscricao)
)
)begin
set @Retorno = 1
set @Mensagem = 'Não é possível emitir Certidão pois o Responsável Técnico não possui Inscrição ou
ainda não está Ativo.'
end
----------------------- FIM VALIDAÇÃO RT Está Inscrito -----------------------------------------
----------------------- INICIO VALIDAÇÃO Débitos RT --------------------------------------
if not exists(
SELECT DISTINCT
Entidade.Codigo AS "Empresa"
FROM Entidade
LEFT JOIN Entidade AS Entidade_1 ON Entidade.Codigo = Entidade_1.Codigo
LEFT JOIN TipoEntidade ON Entidade_1.TipoEntidade = TipoEntidade.Codigo
LEFT JOIN Registro ON Entidade.Codigo = Registro.Entidade
LEFT JOIN Situacao ON Registro.Situacao = Situacao.Codigo
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_2 ON Trabalha.[Empregador] = Entidade_2.[Codigo]
WHERE
(
(Situacao.Ativo = 1) AND
(TipoEntidade.[Pessoa Juridica] = 1) AND
(Entidade.Codigo in (
SELECT DISTINCT
Entidade.Codigo AS "Empresa"
FROM Entidade
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_1 ON Trabalha.[Empregado] = Entidade_1.[Codigo]
LEFT JOIN Trabalha AS Trabalha_1 ON Entidade_1.[Codigo] = Trabalha_1.[Empregado]
LEFT JOIN TrabalhaTemDado ON Trabalha_1.[Codigo] = TrabalhaTemDado.[Trabalha]
LEFT JOIN Dado ON TrabalhaTemDado.[Dado] = Dado.[Codigo]
LEFT JOIN TipoDado ON Dado.[TipoDado] = TipoDado.[Codigo]
WHERE
((Trabalha_1.[ResponsavelTecnico] = 1) AND
(Trabalha.[Empregado] NOT IN (
SELECT DISTINCT
Entidade.Codigo
FROM Registro
LEFT JOIN Debito ON Registro.[Codigo] = Debito.
[Registro]
LEFT JOIN Taxa ON Debito.[Codigo] = Taxa.[Debito]
LEFT JOIN TipoTaxa ON Taxa.[TipoTaxa] = TipoTaxa.
[Codigo]
LEFT JOIN Entidade ON Registro.Entidade =
Entidade.Codigo
WHERE
((((~ Debito.[DebitoConfirmado]) &~ Debito.
[DebitoCancelado] &~ (Debito.[Baixado] | Debito.[ParcelamentoLiquidado])) = 1) AND
(Debito.[ParcelamentoConfirmado] = 0) AND
(CAST(CASE WHEN (Debito.[Vencimento] < (cast(floor
(cast(GetDate() as float)) as datetime))) THEN 1 ELSE 0 END AS BIT) = 1) AND
(TipoTaxa.[Codigo] <> 13 OR
TipoTaxa.[Codigo] IS NULL)) OR
((TipoTaxa.[Codigo] <> 13) AND
(((~ Debito.[DebitoConfirmado]) &~ Debito.
[DebitoCancelado] &~ (Debito.[Baixado] | Debito.[ParcelamentoLiquidado])) = 1))
))
)
)) AND
(Registro.Codigo = @IdInscricao)
)
)begin
set @Retorno = 1
set @Mensagem = 'Não é possível emitir Certidão pois constam débitos para o Responsável Técnico.'
end
----------------------- FIM VALIDAÇÃO Débitos RT --------------------------------------
----------------------- INICIO VALIDAÇÃO DADO ADICIONAL ANOTAÇÃO RT --------------------------------------
if not exists(
SELECT DISTINCT
Registro.Codigo
FROM Entidade
LEFT JOIN Entidade AS Entidade_1 ON Entidade.Codigo = Entidade_1.Codigo
LEFT JOIN TipoEntidade ON Entidade_1.TipoEntidade = TipoEntidade.Codigo
LEFT JOIN Registro ON Entidade.Codigo = Registro.Entidade
LEFT JOIN Situacao ON Registro.Situacao = Situacao.Codigo
WHERE
((TipoEntidade.[Pessoa Juridica] = 1) AND
(Situacao.Ativo = 1) AND
(Entidade.Codigo in (
SELECT DISTINCT
Entidade.Codigo AS "Empregador"
FROM Entidade
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_1 ON Trabalha.[Empregado] = Entidade_1.[Codigo]
LEFT JOIN TipoEntidade ON Entidade_1.[TipoEntidade] = TipoEntidade.[Codigo]
LEFT JOIN Registro ON Entidade_1.[Codigo] = Registro.[Entidade]
LEFT JOIN TrabalhaTemDado ON Trabalha.[Codigo] = TrabalhaTemDado.[Trabalha]
LEFT JOIN Dado ON TrabalhaTemDado.[Dado] = Dado.[Codigo]
LEFT JOIN TipoDado ON Dado.[TipoDado] = TipoDado.[Codigo]
WHERE
((Entidade_1.[Nome] IS NOT NULL) AND
(Trabalha.[VinculoEmpregaticio] IN (5)) AND
(TipoDado.[Codigo] = 10008) AND
(Dado.[Codigo] > 0))
)) AND
(Registro.Codigo = @IdInscricao))
)begin
set @Retorno = 1
set @Mensagem = 'Não é possível emitir Certidão pois o Responsável Técnico está sem ANOTAÇÃO RT'
end
----------------------- FIM VALIDAÇÃO DADO ADICIONAL ANOTAÇÃO RT --------------------------------------
-------------------------- INICIO VALIDAÇÃO DATA DEMISSÃO -----------------------------------
if not exists(
SELECT DISTINCT
Entidade.Codigo AS "Empresa"
FROM Entidade
LEFT JOIN Entidade AS Entidade_1 ON Entidade.Codigo = Entidade_1.Codigo
LEFT JOIN TipoEntidade ON Entidade_1.TipoEntidade = TipoEntidade.Codigo
LEFT JOIN Registro ON Entidade.Codigo = Registro.Entidade
LEFT JOIN Situacao ON Registro.Situacao = Situacao.Codigo
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_2 ON Trabalha.[Empregador] = Entidade_2.[Codigo]
WHERE
(
(Situacao.Ativo = 1) AND
(TipoEntidade.[Pessoa Juridica] = 1) AND
(Entidade.Codigo in (
SELECT DISTINCT
Entidade.Codigo AS "Empresa"
FROM Entidade
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_1 ON Trabalha.[Empregado] = Entidade_1.[Codigo]
LEFT JOIN Trabalha AS Trabalha_1 ON Entidade_1.[Codigo] = Trabalha_1.[Empregado]
LEFT JOIN TrabalhaTemDado ON Trabalha_1.[Codigo] = TrabalhaTemDado.[Trabalha]
LEFT JOIN Dado ON TrabalhaTemDado.[Dado] = Dado.[Codigo]
LEFT JOIN TipoDado ON Dado.[TipoDado] = TipoDado.[Codigo]
WHERE
((Trabalha_1.[ResponsavelTecnico] = 1) AND
(Trabalha.[DataDemissao] IS NULL)
)
)) AND
(Registro.Codigo = @IdInscricao)
)
)begin
set @Retorno = 1
set @Mensagem = 'Não é possível emitir Certidão pois o RT possui Data de Demissão'
end
-------------------------- FIM VALIDAÇÃO DATA DEMISSÃO -----------------------------------
if not exists(
SELECT DISTINCT
Entidade.Codigo AS "Empresa"
FROM Entidade
LEFT JOIN Entidade AS Entidade_1 ON Entidade.Codigo = Entidade_1.Codigo
LEFT JOIN TipoEntidade ON Entidade_1.TipoEntidade = TipoEntidade.Codigo
LEFT JOIN Registro ON Entidade.Codigo = Registro.Entidade
LEFT JOIN Situacao ON Registro.Situacao = Situacao.Codigo
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_2 ON Trabalha.[Empregador] = Entidade_2.[Codigo]
WHERE
(
(Situacao.Ativo = 1) AND
(TipoEntidade.[Pessoa Juridica] = 1) AND
(Entidade.Codigo in (
SELECT DISTINCT
Entidade.Codigo AS "Empresa"
FROM Entidade
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_1 ON Trabalha.[Empregado] = Entidade_1.[Codigo]
LEFT JOIN Trabalha AS Trabalha_1 ON Entidade_1.[Codigo] = Trabalha_1.[Empregado]
LEFT JOIN TrabalhaTemDado ON Trabalha_1.[Codigo] = TrabalhaTemDado.[Trabalha]
LEFT JOIN Dado ON TrabalhaTemDado.[Dado] = Dado.[Codigo]
LEFT JOIN TipoDado ON Dado.[TipoDado] = TipoDado.[Codigo]
WHERE
((Trabalha_1.[ResponsavelTecnico] = 1) AND
(Trabalha.[DataAdmissao] IS NOT NULL)
)
)) AND
(Registro.Codigo = @IdInscricao)
)
)begin
set @Retorno = 1
set @Mensagem = 'Não é possível emitir Certidão pois o RT não possui Data de Admissão'
end
-------------------------- FIM VALIDAÇÃO DATA ADMISSAO -----------------------------------
-------------------------- INICIO VALIDAÇÃO HORARIO DO RT -----------------------------------
if not exists(
SELECT DISTINCT
Registro.Codigo
FROM Entidade
LEFT JOIN Entidade AS Entidade_1 ON Entidade.Codigo = Entidade_1.Codigo
LEFT JOIN TipoEntidade ON Entidade_1.TipoEntidade = TipoEntidade.Codigo
LEFT JOIN Registro ON Entidade.Codigo = Registro.Entidade
LEFT JOIN Situacao ON Registro.Situacao = Situacao.Codigo
WHERE
((TipoEntidade.[Pessoa Juridica] = 1) AND
(Situacao.Ativo = 1) AND
(Entidade.Codigo in (
SELECT DISTINCT
Entidade.Codigo
FROM Entidade
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_1 ON Trabalha.[Empregado] = Entidade_1.
[Codigo]
LEFT JOIN TipoEntidade ON Entidade_1.[TipoEntidade] = TipoEntidade.
[Codigo]
LEFT JOIN Registro ON Entidade_1.[Codigo] = Registro.[Entidade]
WHERE
((Trabalha.[VinculoEmpregaticio] IN (5)) AND
(len(Trabalha.[Horario]) > 0))
)) AND
(Registro.Codigo = @IdInscricao))
)begin
set @Retorno = 1
set @Mensagem = 'Não é possível emitir Certidão pois não foi informado o horário de trabalho do
Responsável Técnico.'
end
-------------------------- FIM VALIDAÇÃO HORARIO DO RT -----------------------------------
-------------------------- INICIO VALIDAÇÃO PROCESSO INFRACAO DO RT -----------------------------------
if exists(
SELECT DISTINCT
Entidade.Codigo
FROM Entidade
LEFT JOIN Entidade AS Entidade_1 ON Entidade.Codigo = Entidade_1.Codigo
LEFT JOIN TipoEntidade ON Entidade_1.TipoEntidade = TipoEntidade.Codigo
LEFT JOIN Registro ON Entidade.Codigo = Registro.Entidade
WHERE
((Entidade.Codigo in (
SELECT DISTINCT
Entidade.Codigo AS "ID da Entidade"
FROM Entidade
LEFT JOIN Trabalha ON Entidade.Codigo = Trabalha.[Empregador]
LEFT JOIN Entidade AS Entidade_1 ON Trabalha.[Empregado] = Entidade_1.[Codigo]
LEFT JOIN PessoaFisica ON Entidade_1.[Codigo] = PessoaFisica.[Entidade]
LEFT JOIN Registro ON Entidade_1.[Codigo] = Registro.[Entidade]
LEFT JOIN ProcessoInfracao ON Registro.[Codigo] = ProcessoInfracao.[Registro]
LEFT JOIN HistoricoFiscal ON ProcessoInfracao.[HistoricoFiscal] = HistoricoFiscal.[Codigo]
LEFT JOIN TipoProcessoInfracao ON ProcessoInfracao.[TipoProcessoInfracao] = TipoProcessoInfracao.
[Codigo]
WHERE
((Trabalha.[DataDemissao] IS NULL) AND
(ProcessoInfracao.[Codigo] > 0))
)) AND
(TipoEntidade.[Pessoa Juridica] = 1) AND
(Registro.Codigo = @IdInscricao))
)begin
set @Retorno = 1
set @Mensagem = 'Não é possível emitir Certidão pois o Responsável Técnico possui Processo de Infração.'
end
-------------------------- FIM VALIDAÇÃO PROCESSO INFRACAO DO RT -----------------------------------
end