Skip to content

Commit

Permalink
feat(extract): Add new SQL script for entity categorization
Browse files Browse the repository at this point in the history
- Adds a new SQL script `2.entidades_enicas_eitarweb_categorizadas_para_DW_dados_RFB.sql` that extracts and categorizes entity data from the RFB and SitarWeb databases
- Includes columns for entity type, status, email, and other relevant details
  • Loading branch information
ronaldokun committed Jan 9, 2025
1 parent 3dde8af commit 41c7678
Showing 1 changed file with 192 additions and 0 deletions.
192 changes: 192 additions & 0 deletions sql/2.entidades_enicas_eitarweb_categorizadas_para_DW_dados_RFB.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
SELECT
DISTINCT SRF.NumCNPJCPF AS 'CPF/CNPJ',
CASE WHEN SRF.CodNaturezaJuridica IS NOT NULL THEN 'Pessoa Jurídica' ELSE 'Pessoa Física' END AS 'Tipo RFB',
SRF.NomeEntidade AS 'Nome da Entidade RFB',
CASE WHEN SRF.CodNaturezaJuridica IS NOT NULL THEN Situ.DescSituacaoCadastralCNPJ ELSE situ.DescSituacaoCadastralCPF END AS 'Situação Cadastral RFB',
CASE WHEN SRF.CodNaturezaJuridica IS NOT NULL THEN SRF.DataSituacaoCadastral ELSE PF.DataAtualizacaoReceita END AS 'Data Alteração Situação Cadastral RFB',
CASE WHEN CNPJ.IndMatriz = 1 THEN 'Sim' ELSE NULL END AS 'Sede RFB',
CASE WHEN SRF.CodNaturezaJuridica IS NULL
AND PF.IndSexo = 1 THEN ' Masculino' WHEN SRF.CodNaturezaJuridica IS NULL
AND PF.IndSexo = 2 THEN ' Feminino' ELSE NULL END AS 'Sexo RFB',
LOWER(CNPJ.Email) AS 'E-Mail RFB',
SRF.EndLogradouro AS 'Logradouro RFB',
SRF.EndNumero AS 'Número RFB',
SRF.EndComplemento AS 'Complemento RFB',
SRF.EndBairro AS 'Bairro RFB',
SRF.EndCEP AS 'CEP RFB',
Cidade.NO_MUNICIPIO AS 'Município RFB',
SRF.SiglaUF AS 'UF RFB',
CASE WHEN SRF.CodPais = ' ' THEN 'Brasil' ELSE CNPJ.NomePaisCidadeExterior END AS 'País RFB',
CASE WHEN SRF.CodNaturezaJuridica IS NOT NULL THEN CNPJ.NumCpfResponsavel ELSE NULL END AS 'CPF do Responsável Legal RFB',
CASE WHEN SRF.CodNaturezaJuridica IS NOT NULL THEN CNPJ.NomeResponsavel ELSE NULL END AS 'Nome do Responsável Legal RFB',
SRF.DataCarga AS 'Data Registro Anatel RFB' --TIPO SERVICO
,
CASE WHEN tipo_entidade.out_telecom IS NOT NULL THEN 'Outorgada Telecomunicações' WHEN tipo_entidade.out_telecom IS NULL
AND tipo_entidade.out_radiodifusao IS NOT NULL THEN 'Outorgada Radiodifusão' WHEN tipo_entidade.out_telecom IS NULL
AND EnCer.IC_SITUACAO IS NOT NULL THEN 'Certificação' WHEN tipo_entidade.out_telecom_temp IS NOT NULL THEN 'Outorgada Telecomunicações Temporário' WHEN tipo_entidade.out_prestador_disp_out IS NOT NULL THEN 'Prestador de Telecomunicações Dispensado de Outorga' WHEN Hab.IdtEntidade IS NULL
AND Ent.NumCnpjCpf NOT IN (
SELECT
DISTINCT NU_CPF_CNPJ COLLATE Latin1_General_CI_AI AS NumCPFCNPJ
FROM
[DB_TELECOM].SC_CORPORATIVO.TB_ENTIDADE_NACIONAL
) THEN 'Não Outorgada' ELSE 'Não definido' END AS 'Tipo Entidade' --ATIVA/INATIVA
,
CASE WHEN EnCer.IC_SITUACAO <> 1
AND EnCer.IC_SITUACAO IS NOT NULL THEN 'Cert Inativa' WHEN EnCer.IC_SITUACAO = 1 THEN 'Cert Ativa' WHEN EXISTS (
SELECT
ent.NumCnpjCpf,
COUNT(hab.DataExclusao) AS Exclusao,
-- Alterado ORLE
COUNT(hab.DataInclusao) AS Inclusao -- Alterado ORLE
FROM
SITARWEB.DBO.entidade AS ent
LEFT JOIN SITARWEB.DBO.habilitacao AS hab ON ent.idtentidade = hab.idtentidade --RIGHT JOIN SITARWEB.DBO.contrato AS Cont ON Cont.idthabilitacao = Hab.idthabilitacao -- Excluído ORLE
WHERE
ent.NumCnpjCpf COLLATE Latin1_General_CI_AI = SRF.NumCNPJCPF
GROUP BY
ent.NumCnpjCpf
HAVING
COUNT(hab.DataExclusao) = COUNT(hab.DataInclusao)
) THEN 'Inativa' WHEN EXISTS (
SELECT
ent.NumCnpjCpf
FROM
SITARWEB.DBO.entidade AS ent
LEFT JOIN SITARWEB.DBO.habilitacao AS hab ON ent.idtentidade = hab.idtentidade --RIGHT JOIN SITARWEB.DBO.contrato AS Cont ON Cont.idthabilitacao = Hab.idthabilitacao -- Excluído ORLE
WHERE
ent.NumCnpjCpf COLLATE Latin1_General_CI_AI = SRF.NumCNPJCPF
) THEN 'Ativa' WHEN Hab.IdtEntidade IS NULL
AND Ent.NumCnpjCpf NOT IN (
SELECT
DISTINCT NU_CPF_CNPJ COLLATE Latin1_General_CI_AI AS NumCPFCNPJ
FROM
[DB_TELECOM].SC_CORPORATIVO.TB_ENTIDADE_NACIONAL
) THEN 'Não Outorgada' ELSE 'Não Definido' END AS 'Situação Entidade na Anatel',
LOWER(Ent.EndEletronico) AS 'E-mail SitarWeb'
FROM
CORPORATIVO.dbo.CadastroSRF AS SRF
LEFT JOIN CORPORATIVO.dbo.CadastroSRFComplementoPJ AS CNPJ ON SRF.NumCNPJCPF = CNPJ.NumCNPJ
LEFT JOIN CORPORATIVO.dbo.CadastroSRFComplementoPF AS PF ON SRF.NumCNPJCPF = PF.NumCPF
LEFT JOIN CORPORATIVO.dbo.CadastroSRFMunicipioTom AS Munic ON SRF.CodMunicipio = Munic.CodIBGE
LEFT JOIN CORPORATIVO.dbo.TB_IBGE_MUNICIPIO AS Cidade ON SRF.CodMunicipio = Cidade.CO_MUNICIPIO
INNER JOIN SITARWEB.DBO.ENTIDADE AS Ent ON SRF.NumCNPJCPF = Ent.NumCnpjCpf COLLATE Latin1_General_CI_AI
LEFT JOIN SITARWEB.DBO.HABILITACAO AS Hab ON Ent.IdtEntidade = Hab.idtEntidade
LEFT JOIN SITARWEB.DBO.contrato AS Cont ON Cont.idthabilitacao = Hab.idthabilitacao
LEFT JOIN CORPORATIVO.dbo.CadastroSRFSituacaoCadastral AS Situ ON SRF.CodSituacaoCadastral = Situ.CodSituacaoCadastral
LEFT JOIN DB_TELECOM.SC_CORPORATIVO.TB_ENTIDADE_NACIONAL AS EnNas ON Ent.NumCnpjCpf = EnNas.NU_CPF_CNPJ
LEFT JOIN DB_TELECOM.SC_CORPORATIVO.TB_ENTIDADE AS EnCer ON EnNas.CO_ENTIDADE = EnCer.CO_SEQ_ENTIDADE
LEFT JOIN (
SELECT
DISTINCT IdtEntidade,
MAX(
CASE WHEN numserviço IN (
'729', '116', '175', '176', '172', '173',
'174', '171', '034', '030', '040',
'010', '189', '020', '108', '049',
'050', '060', '023', '094', '038',
'039', '051', '076', '187', '077',
'041', '042', '078', '079', '036',
'002', '001', '047', '045', '163',
'191', '188', '069', '750', '067',
'031', '350', '054', '053', '032',
'016', '012', '027', '022', '029',
'025', '024', '013', '014', '033',
'026', '046', '015', '159', '302',
'048', '400', '064', '604', '018',
'507', '181', '028', '011', '019',
'182', '017', '140', '021', '186',
'185', '167', '124', '125', '043',
'132', '701', '086', '183', '264',
'740', '044', '735', '820', '251',
'252', '253', '256', '255', '254'
) THEN 1 END
) AS out_telecom,
MAX(
CASE WHEN numserviço IN (
'810', '728', '730', '710', '803', '247',
'802', '231', '248', '230', '205',
'221', '213', '800', '801', '229',
'804', '228'
) THEN 1 END
) AS out_radiodifusao,
MAX(
CASE WHEN numserviço IN ('035', '037') THEN 1 END
) AS out_telecom_temp,
MAX(
CASE WHEN numserviço IN ('099', '401', '190', '450') THEN 1 END
) AS out_prestador_disp_out
FROM
SITARWEB.DBO.HABILITACAO a
WHERE
a.DataExclusao is null -- Incluído ORLE
GROUP BY
IdtEntidade
) AS tipo_entidade ON Ent.IdtEntidade = tipo_entidade.idtEntidade
WHERE

/* SUBQUERIES */
ent.NumCnpjCpf NOT IN (
'00000000000', '00000000000000',
'12312312387', '50003731030', '50010027459'
) -- Meros registros de teste
AND SRF.NumCNPJCPF IN (
-- QUERY Entidades Certificadoras/Fabricantes/Solicitantes/Laboratórios
SELECT
DISTINCT EnNas.NU_CPF_CNPJ COLLATE Latin1_General_CI_AI AS NumCPFCNPJ
FROM
[DB_TELECOM].SC_CORPORATIVO.TB_ENTIDADE_NACIONAL AS EnNas
INNER JOIN db_telecom.SC_CORPORATIVO.TB_ENTIDADE AS EnCer ON EnNas.CO_ENTIDADE = EnCer.CO_SEQ_ENTIDADE
WHERE
EnNas.CO_ENTIDADE IN (
SELECT
MAX(EnNas.CO_ENTIDADE)
FROM
[DB_TELECOM].SC_CORPORATIVO.TB_ENTIDADE_NACIONAL AS EnNas
INNER JOIN [DB_TELECOM].SC_CORPORATIVO.TB_ENTIDADE ON EnNas.CO_ENTIDADE = CO_SEQ_ENTIDADE
WHERE
IC_SITUACAO = 1
GROUP BY
EnNas.NU_CPF_CNPJ
)
UNION
-- QUERY Todas as Entidades no Sitarweb
SELECT
DISTINCT ent.numcnpjcpf COLLATE Latin1_General_CI_AI AS NumCNPJCPF
FROM
SITARWEB.DBO.ENTIDADE AS Ent
UNION
-- QUERY Todas as Entidades sancionadas em Pados pela Agência
SELECT
DISTINCT pad.NumCnpjCpf COLLATE Latin1_General_CI_AI AS NumCNPJCPF
FROM
SPADO.dbo.InstauracaoFoto AS pad
)
AND SRF.NumCNPJCPF NOT IN (
-- retira Servidores da Anatel da pesquisa
SELECT
DISTINCT [NumCpf] COLLATE Latin1_General_CI_AI AS NumCPFCNPJ
FROM
[SARH].[dbo].[Empregado]
WHERE
NumCpf IS NOT NULL
UNION
-- retira colaboradores terceirizados da Anatel da pessquisa
SELECT
DISTINCT [NumCPFEmpTer] COLLATE Latin1_General_CI_AI AS NumCPFCNPJ
FROM
[SARH].[dbo].[EmpregadoTerceirizado]
WHERE
[NumCPFEmpTer] IS NOT NULL
UNION
--Query retira usuários DO SIS
SELECT
DISTINCT ent.numcnpjcpf COLLATE Latin1_General_CI_AI AS NumCNPJCPF
FROM
SITARWEB.DBO.ENTIDADE AS Ent
LEFT JOIN SITARWEB.DBO.HABILITACAO AS Hab ON Ent.IdtEntidade = Hab.idtEntidade
LEFT JOIN SPADO.dbo.InstauracaoFoto AS pado ON ent.NumCnpjCpf = pado.NumCnpjCpf
WHERE
hab.NumFistel IS NULL
AND Hab.IdtEntidade IS NULL
AND pado.NumCnpjCpf IS NULL
);

0 comments on commit 41c7678

Please sign in to comment.