Esta versão foi prevista para ser liberada em 06/10/2022.


212991 - RVDD

  • Não eram apresentados todos os assinantes no RVDD, isso ocorria pois o sistema grava os assinantes somente para o tipo de documento Histórico Escolar Digital. E o RVDD é gerado em cima do arquivo do XML do diploma. Feita implementação para gravar na tabela os assinantes para os 3 tipos de XML. Será necessário após a atualização do sistema, executar na base os scripts que serão colocados abaixo. O script precisa ser rodado sempre que for enviado um novo diploma para plataforma de assinatura (isso até a liberação do chamado 212717).


Orientações

Banco MSQL
No banco acadêmico, rodar os scripts individualmente: diretor_mssql, responsavelInstituicao_mssql, reitor_mssql, responsavelRegistro_mssql.
Antes de rodar, alterar o nome do banco “QUA_PADRAO_SEC” pelo nome do banco do security do cliente.
Obs.: No script responsavelInstituicao_mssql, tem 2 sql´s, rodar individualmente; No retorno dos sql´s, a primeira coluna será um insert que deve ser rodado no banco ICO. Se voltou null, desprezar.
Alguns sql´s, podem não retornar registros, isso não é um problema.


Banco Oracle
a) Rodar no banco do security do cliente o sql: SELECT ECO_TIPCOM FROM TB_ENTIDADE_COMPARTILHADA WHERE ECO_ENTIDADE = 'ParametrosSubNivelUnidade'
b) No banco acadêmico, rodar os scripts individualmente: diretor_oracle, responsavelInstituicao_oracle, reitor_oracle, responsavelRegistro_oracle.
Antes de rodar, alterar @ECO_TIPCOM pelo valor retornado no item “a”. No retorno dos sql´s, a primeira coluna será um insert que deve ser rodado no banco ICO. Se voltou null, desprezar. Alguns sql´s, podem não retornar registros, isso não é um problema.


Abaixo, seguem os scripts para execução no banco de dados MSSQL. clique nas abas para expandi-las.

1) MSSQL - Script diretor_mssql

1) MSSQL - Script diretor_mssql

DECLARE @ECO_TIPCOM VARCHAR(255)
SELECT @ECO_TIPCOM = ECO_TIPCOM FROM QUA_PADRAO_SEC.DBO.TB_ENTIDADE_COMPARTILHADA WHERE ECO_ENTIDADE = 'ParametrosSubNivelUnidade'
 
SELECT DISTINCT 
(CASE WHEN DOC_ASSINAREGDIR = 1 THEN 'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT top 1 ' + CAST(PSU_DIRPESID AS VARCHAR(10)) + ', null, ' + CAST(PAS_CASID AS VARCHAR(10)) + ', ''' + CAST(DIR.PES_EMAIL COLLATE Latin1_General_CI_AI AS VARCHAR(400)) + ''', 1, getdate(), ' + CAST(ING.GRUPO_UNIDON AS VARCHAR(10)) + ', ' + CAST(ING.UNIDON AS VARCHAR(10)) + ', ''EDU'', 1, ''' + COALESCE(OCDIR.OCP_DESCRI,'Diretor') + ''', ' + CAST(ICE_ID AS VARCHAR(10)) + ', ''DIRETOR'', ' + CAST(DOC_DOCID AS VARCHAR(10)) + ', NULL
FROM TB_PARAMETROS_GERAIS
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' + CAST(DOC_DOCID AS VARCHAR(10)) + ' AND PAS_ICEID = ''' + CAST(ICE_ID AS VARCHAR(10)) + ''' AND PAS_PESID = ''' + CAST(PSU_DIRPESID AS VARCHAR(10)) + ''' AND PAS_TIPO_CARGO = ''DIRETOR'') = 0;' ELSE NULL END) AS SQL_DIRETOR,
PAS_ICEID, 
DOC_DOCID, DOC_ASSINAREGDIR AS assinaDiretor,
 
PSU_DIRPESID AS diretorId, DIR.PES_EMAIL AS diretorEmail, OCDIR.OCP_DESCRI AS diretorOcupacao, 'DIRETOR' AS diretorTipoOcupacao
 
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
-- PEGANDO O DIRETOR
LEFT JOIN TB_PESSOA DIR ON DIR.PES_ID = PSU_DIRPESID
LEFT JOIN TB_HISTORICO_OCUPACOES HOCDIR ON HOCDIR.HOC_PESID = DIR.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCDIR ON OCDIR.OCP_ID = HOCDIR.HOC_OCPID
 
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'DIRETOR' AND PAS_PESID = DIR.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1


2) MSSQL - Script responsavelInstituicao_mssql

2) MSSQL - Script responsavelInstituicao_mssql

--------------------------------------------------------------------
--- SQL 1 - CREDENCIAMENTO POR UNIDADE
--------------------------------------------------------------------
DECLARE @ECO_TIPCOM VARCHAR(255)
SELECT @ECO_TIPCOM = ECO_TIPCOM FROM QUA_PADRAO_SEC.DBO.TB_ENTIDADE_COMPARTILHADA WHERE ECO_ENTIDADE = 'ParametrosSubNivelUnidade'
 
SELECT DISTINCT 
'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT top 1 ' + CAST(RESPINST.PES_ID AS VARCHAR(10)) + ', null, ' + CAST(PAS_CASID AS VARCHAR(10)) + ', ''' + CAST(RESPINST.PES_EMAIL COLLATE Latin1_General_CI_AI AS VARCHAR(400)) + ''', 1, getdate(), ' + CAST(ING.GRUPO_UNIDON AS VARCHAR(10)) + ', ' + CAST(ING.UNIDON AS VARCHAR(10)) + ', ''EDU'', 1, ''' + COALESCE(OCRESPINST.OCP_DESCRI,'Responsável pela instituição') + ''', ' + CAST(ICE_ID AS VARCHAR(10)) + ', ''RESPONSAVEL_INSTITUICAO'', ' + CAST(DOC_DOCID AS VARCHAR(10)) + ', NULL
FROM TB_PARAMETROS_GERAIS
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' + CAST(DOC_DOCID AS VARCHAR(10)) + ' AND PAS_ICEID = ''' + CAST(ICE_ID AS VARCHAR(10)) + ''' AND PAS_PESID = ''' + CAST(RESPINST.PES_ID AS VARCHAR(10)) + ''' AND PAS_TIPO_CARGO = ''RESPONSAVEL_INSTITUICAO'') = 0;' 
 
AS SQL_RESPONSAVEL_INSTITUICAO,
 
PAS_ICEID, 
DOC_DOCID, 
RESPINST.PES_ID AS responsavelInstituicaoId, RESPINST.PES_EMAIL AS responsavelInstituicaoEmail, OCRESPINST.OCP_DESCRI AS responsavelInstituicaoOcupacao, 'RESPONSAVEL_INSTITUICAO' AS responsavelInstituicaoTipoOcupacao
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PESSOA UNI ON UNI.PES_UNIDID = ING.UNIDON
INNER JOIN TB_PESSOA MANT ON MANT.PES_ID = UNI.PES_MANID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
 
-- PEGANDO O RESPONSAVEL PELA INSITUICAO
LEFT JOIN TB_PESSOA RESPINST ON RESPINST.PES_ID = UNI.PES_PESIDRESCNPJ
LEFT JOIN TB_HISTORICO_OCUPACOES HOCRESPINST ON HOCRESPINST.HOC_PESID = RESPINST.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCRESPINST ON OCRESPINST.OCP_ID = HOCRESPINST.HOC_OCPID
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
UNI.PES_CREDPORUNID = 1 AND
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'RESPONSAVEL_INSTITUICAO' AND PAS_PESID = RESPINST.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1
 
--------------------------------------------------------------------
--- SQL 2 - CREDENCIAMENTO POR MANTENEDORA
--------------------------------------------------------------------
 
DECLARE @ECO_TIPCOM VARCHAR(255)
SELECT @ECO_TIPCOM = ECO_TIPCOM FROM QUA_PADRAO_SEC.DBO.TB_ENTIDADE_COMPARTILHADA WHERE ECO_ENTIDADE = 'ParametrosSubNivelUnidade'
 
SELECT DISTINCT 
'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT top 1 ' + CAST(RESPINST.PES_ID AS VARCHAR(10)) + ', null, ' + CAST(PAS_CASID AS VARCHAR(10)) + ', ''' + CAST(RESPINST.PES_EMAIL COLLATE Latin1_General_CI_AI AS VARCHAR(400)) + ''', 1, getdate(), ' + CAST(ING.GRUPO_UNIDON AS VARCHAR(10)) + ', ' + CAST(ING.UNIDON AS VARCHAR(10)) + ', ''EDU'', 1, ''' + COALESCE(OCRESPINST.OCP_DESCRI,'Responsável pela instituição') + ''', ' + CAST(ICE_ID AS VARCHAR(10)) + ', ''RESPONSAVEL_INSTITUICAO'', ' + CAST(DOC_DOCID AS VARCHAR(10)) + ', NULL
FROM TB_PARAMETROS_GERAIS
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' + CAST(DOC_DOCID AS VARCHAR(10)) + ' AND PAS_ICEID = ''' + CAST(ICE_ID AS VARCHAR(10)) + ''' AND PAS_PESID = ''' + CAST(RESPINST.PES_ID AS VARCHAR(10)) + ''' AND PAS_TIPO_CARGO = ''RESPONSAVEL_INSTITUICAO'') = 0;' 
 
AS SQL_RESPONSAVEL_INSTITUICAO,
 
PAS_ICEID, 
DOC_DOCID, 
RESPINST.PES_ID AS responsavelInstituicaoId, RESPINST.PES_EMAIL AS responsavelInstituicaoEmail, OCRESPINST.OCP_DESCRI AS responsavelInstituicaoOcupacao, 'RESPONSAVEL_INSTITUICAO' AS responsavelInstituicaoTipoOcupacao
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PESSOA UNI ON UNI.PES_UNIDID = ING.UNIDON
INNER JOIN TB_PESSOA MANT ON MANT.PES_ID = UNI.PES_MANID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
 
-- PEGANDO O RESPONSAVEL PELA INSITUICAO
LEFT JOIN TB_PESSOA RESPINST ON RESPINST.PES_ID = MANT.PES_PESIDRESCNPJ
LEFT JOIN TB_HISTORICO_OCUPACOES HOCRESPINST ON HOCRESPINST.HOC_PESID = RESPINST.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCRESPINST ON OCRESPINST.OCP_ID = HOCRESPINST.HOC_OCPID
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
UNI.PES_CREDPORUNID = 0 AND
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'RESPONSAVEL_INSTITUICAO' AND PAS_PESID = RESPINST.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1


3) MSSQL - Script responsavelRegistro_mssql

3) MSSQL - Script responsavelRegistro_mssql

DECLARE @ECO_TIPCOM VARCHAR(255)
SELECT @ECO_TIPCOM = ECO_TIPCOM FROM QUA_PADRAO_SEC.DBO.TB_ENTIDADE_COMPARTILHADA WHERE ECO_ENTIDADE = 'ParametrosSubNivelUnidade'
 
 
SELECT DISTINCT 
(CASE WHEN DOC_ASSINAREGRES = 1 THEN 'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT top 1 ' + CAST(RESPREG.PES_ID AS VARCHAR(10)) + ', null, ' + CAST(PAS_CASID AS VARCHAR(10)) + ', ''' + CAST(RESPREG.PES_EMAIL COLLATE Latin1_General_CI_AI AS VARCHAR(400)) + ''', 1, getdate(), ' + CAST(ING.GRUPO_UNIDON AS VARCHAR(10)) + ', ' + CAST(ING.UNIDON AS VARCHAR(10)) + ', ''EDU'', 1, ''' + COALESCE(OCRESPREG.OCP_DESCRI,'Responsável pelo registro') + ''', ' + CAST(ICE_ID AS VARCHAR(10)) + ', ''RESPONSAVEL_REGISTRO'', ' + CAST(DOC_DOCID AS VARCHAR(10)) + ', NULL
FROM TB_PARAMETROS_GERAIS
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' + CAST(DOC_DOCID AS VARCHAR(10)) + ' AND PAS_ICEID = ''' + CAST(ICE_ID AS VARCHAR(10)) + ''' AND PAS_PESID = ''' + CAST(PSU_DIRPESID AS VARCHAR(10)) + ''' AND PAS_TIPO_CARGO = ''RESPONSAVEL_REGISTRO'') = 0;' ELSE NULL END) AS SQL_RESPONSAVEL_REGISTRO,
PAS_ICEID, 
DOC_DOCID, DOC_ASSINAREGRES AS assinaResponsavelRegistro,
 
PSU_DIRPESID AS responsavelRegistroId, RESPREG.PES_EMAIL AS responsavelRegistroEmail, OCRESPREG.OCP_DESCRI AS responsavelRegistroOcupacao, 'RESPONSAVEL_REGISTRO' AS responsavelRegistroTipoOcupacao
 
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
-- PEGANDO O RESPONSAVEL PELO REGISTRO
LEFT JOIN TB_PESSOA RESPREG ON RESPREG.PES_ID = PSU_PESID_TERMO_RESPONSAB
LEFT JOIN TB_HISTORICO_OCUPACOES HOCRESPREG ON HOCRESPREG.HOC_PESID = RESPREG.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCRESPREG ON OCRESPREG.OCP_ID = HOCRESPREG.HOC_OCPID
 
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'RESPONSAVEL_REGISTRO' AND PAS_PESID = RESPREG.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1


4) MSSQL - Script reitor_mssql

4) MSSQL - Script reitor_mssql

--------------------------------------------------------------------
-- SQL ÚNICO
--------------------------------------------------------------------
 
DECLARE @ECO_TIPCOM VARCHAR(255)
SELECT @ECO_TIPCOM = ECO_TIPCOM FROM QUA_PADRAO_SEC.DBO.TB_ENTIDADE_COMPARTILHADA WHERE ECO_ENTIDADE = 'ParametrosSubNivelUnidade'
 
 
SELECT DISTINCT 
(CASE WHEN DOC_ASSINAREGREI = 1 THEN 'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT top 1 ' + CAST(REIT.PES_ID AS VARCHAR(10)) + ', null, ' + CAST(PAS_CASID AS VARCHAR(10)) + ', ''' + CAST(REIT.PES_EMAIL COLLATE Latin1_General_CI_AI AS VARCHAR(400)) + ''', 1, getdate(), ' + CAST(ING.GRUPO_UNIDON AS VARCHAR(10)) + ', ' + CAST(ING.UNIDON AS VARCHAR(10)) + ', ''EDU'', 1, ''' + COALESCE(OCREIT.OCP_DESCRI,'Reitor') + ''', ' + CAST(ICE_ID AS VARCHAR(10)) + ', ''REITOR'', ' + CAST(DOC_DOCID AS VARCHAR(10)) + ', NULL
FROM TB_PARAMETROS_GERAIS
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' + CAST(DOC_DOCID AS VARCHAR(10)) + ' AND PAS_ICEID = ''' + CAST(ICE_ID AS VARCHAR(10)) + ''' AND PAS_PESID = ''' + CAST(REIT.PES_ID AS VARCHAR(10)) + ''' AND PAS_TIPO_CARGO = ''REITOR'') = 0;' ELSE NULL END) AS SQL_REITOR,
PAS_ICEID, 
DOC_DOCID, DOC_ASSINAREGREI AS assinarReitor,
 
REIT.PES_ID AS reitorId, REIT.PES_EMAIL AS reitorEmail, OCREIT.OCP_DESCRI AS reitorOcupacao, 'REITOR' AS reitorTipoOcupacao
 
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
-- PEGANDO O DIRETOR
INNER JOIN TB_PESSOA INSTREG ON INSTREG.PES_ID = ICE_IESREGDIP
LEFT JOIN TB_PESSOA MATINSTREG ON MATINSTREG.PES_ID = INSTREG.PES_MANID
LEFT JOIN TB_PESSOA REIT ON REIT.PES_ID = MATINSTREG.PES_PESIDREI
LEFT JOIN TB_HISTORICO_OCUPACOES HOCREIT ON HOCREIT.HOC_PESID = REIT.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCREIT ON OCREIT.OCP_ID = HOCREIT.HOC_OCPID
 
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'REITOR' AND PAS_PESID = REIT.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1



Abaixo, seguem os scripts para execução no banco de dados Oracle. clique nas abas para expandi-las.

1) ORACLE- Script diretor_oracle

1) ORACLE- Script diretor_oracle

SELECT DISTINCT 
(CASE WHEN DOC_ASSINAREGDIR = 1 THEN 'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_ID, PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT PAS_ID.NEXTVAL, ' || PSU_DIRPESID || ', null, ' || PAS_CASID || ', ''' || DIR.PES_EMAIL || ''', 1, SYSDATE, ' || ING.GRUPO_UNIDON || ', ' || ING.UNIDON || ', ''EDU'', 1, ''' || COALESCE(OCDIR.OCP_DESCRI,'Diretor') || ''', ' || ICE_ID || ', ''DIRETOR'', ' || DOC_DOCID || ', NULL
FROM DUAL
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' || DOC_DOCID || ' AND PAS_ICEID = ''' || ICE_ID || ''' AND PAS_PESID = ''' || PSU_DIRPESID || ''' AND PAS_TIPO_CARGO = ''DIRETOR'') = 0;' ELSE NULL END) AS SQL_DIRETOR,
PAS_ICEID, 
DOC_DOCID, DOC_ASSINAREGDIR AS assinaDiretor,
 
PSU_DIRPESID AS diretorId, DIR.PES_EMAIL AS diretorEmail, OCDIR.OCP_DESCRI AS diretorOcupacao, 'DIRETOR' AS diretorTipoOcupacao
 
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
-- PEGANDO O DIRETOR
LEFT JOIN TB_PESSOA DIR ON DIR.PES_ID = PSU_DIRPESID
LEFT JOIN TB_HISTORICO_OCUPACOES HOCDIR ON HOCDIR.HOC_PESID = DIR.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCDIR ON OCDIR.OCP_ID = HOCDIR.HOC_OCPID
 
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'DIRETOR' AND PAS_PESID = DIR.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1


2) ORACLE- Script responsavelInstituicao_oracle

2) ORACLE- Script responsavelInstituicao_oracle

--------------------------------------------------------------------
--- ORACLE 1 - CREDENCIAMENTO POR UNIDADE
--------------------------------------------------------------------
 
--DECLARE @ECO_TIPCOM VARCHAR(255)
--SELECT @ECO_TIPCOM = ECO_TIPCOM FROM QUA_PADRAO_SEC.DBO.TB_ENTIDADE_COMPARTILHADA WHERE ECO_ENTIDADE = 'ParametrosSubNivelUnidade'
 
SELECT DISTINCT 
'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_ID, PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT PAS_ID.NEXTVAL, ' || RESPINST.PES_ID || ', null, ' || PAS_CASID || ', ''' || RESPINST.PES_EMAIL || ''', 1, SYSDATE, ' || ING.GRUPO_UNIDON || ', ' || ING.UNIDON || ', ''EDU'', 1, ''' || COALESCE(OCRESPINST.OCP_DESCRI,'Responsável pela instituição') || ''', ' || ICE_ID || ', ''RESPONSAVEL_INSTITUICAO'', ' || DOC_DOCID || ', NULL
FROM DUAL
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' || DOC_DOCID || ' AND PAS_ICEID = ''' || ICE_ID  || ''' AND PAS_PESID = ''' || RESPINST.PES_ID || ''' AND PAS_TIPO_CARGO = ''RESPONSAVEL_INSTITUICAO'') = 0;' 
 
AS SQL_RESPONSAVEL_INSTITUICAO,
 
PAS_ICEID, 
DOC_DOCID, 
RESPINST.PES_ID AS responsavelInstituicaoId, RESPINST.PES_EMAIL AS responsavelInstituicaoEmail, OCRESPINST.OCP_DESCRI AS responsavelInstituicaoOcupacao, 'RESPONSAVEL_INSTITUICAO' AS responsavelInstTipoOcupacao
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PESSOA UNI ON UNI.PES_UNIDID = ING.UNIDON
INNER JOIN TB_PESSOA MANT ON MANT.PES_ID = UNI.PES_MANID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR 
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
 
-- PEGANDO O RESPONSAVEL PELA INSITUICAO
LEFT JOIN TB_PESSOA RESPINST ON RESPINST.PES_ID = UNI.PES_PESIDRESCNPJ
LEFT JOIN TB_HISTORICO_OCUPACOES HOCRESPINST ON HOCRESPINST.HOC_PESID = RESPINST.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCRESPINST ON OCRESPINST.OCP_ID = HOCRESPINST.HOC_OCPID
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
UNI.PES_CREDPORUNID = 1 AND
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'RESPONSAVEL_INSTITUICAO' AND PAS_PESID = RESPINST.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1
 
--------------------------------------------------------------------
--- ORACLE 2 - CREDENCIAMENTO POR MANTENEDORA
--------------------------------------------------------------------
 
SELECT DISTINCT 
'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_ID, PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT PAS_ID.NEXTVAL, ' || RESPINST.PES_ID || ', null, ' || PAS_CASID || ', ''' || RESPINST.PES_EMAIL || ''', 1, SYSDATE, ' || ING.GRUPO_UNIDON || ', ' || ING.UNIDON || ', ''EDU'', 1, ''' || COALESCE(OCRESPINST.OCP_DESCRI,'Responsável pela instituição') || ''', ' || ICE_ID || ', ''RESPONSAVEL_INSTITUICAO'', ' || DOC_DOCID || ', NULL
FROM DUAL
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' || DOC_DOCID || ' AND PAS_ICEID = ''' || ICE_ID  || ''' AND PAS_PESID = ''' || RESPINST.PES_ID || ''' AND PAS_TIPO_CARGO = ''RESPONSAVEL_INSTITUICAO'') = 0;' 
 
AS SQL_RESPONSAVEL_INSTITUICAO,
 
PAS_ICEID, 
DOC_DOCID, 
RESPINST.PES_ID AS responsavelInstituicaoId, RESPINST.PES_EMAIL AS responsavelInstituicaoEmail, OCRESPINST.OCP_DESCRI AS responsavelInstituicaoOcupacao, 'RESPONSAVEL_INSTITUICAO' AS responsavelInstTipoOcupacao
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PESSOA UNI ON UNI.PES_UNIDID = ING.UNIDON
INNER JOIN TB_PESSOA MANT ON MANT.PES_ID = UNI.PES_MANID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
 
-- PEGANDO O RESPONSAVEL PELA INSITUICAO
LEFT JOIN TB_PESSOA RESPINST ON RESPINST.PES_ID = MANT.PES_PESIDRESCNPJ
LEFT JOIN TB_HISTORICO_OCUPACOES HOCRESPINST ON HOCRESPINST.HOC_PESID = RESPINST.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCRESPINST ON OCRESPINST.OCP_ID = HOCRESPINST.HOC_OCPID
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
UNI.PES_CREDPORUNID = 0 AND
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'RESPONSAVEL_INSTITUICAO' AND PAS_PESID = RESPINST.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1


3) ORACLE - Script responsavelRegistro_oracle

3) ORACLE - Script responsavelRegistro_oracle

SELECT DISTINCT 
(CASE WHEN DOC_ASSINAREGRES = 1 THEN 'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_ID, PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT PAS_ID.NEXTVAL, ' || RESPREG.PES_ID || ', null, ' || PAS_CASID || ', ''' || RESPREG.PES_EMAIL || ''', 1, SYSDATE, ' || ING.GRUPO_UNIDON || ', ' || ING.UNIDON || ', ''EDU'', 1, ''' || COALESCE(OCRESPREG.OCP_DESCRI,'Responsável pelo registro') || ''', ' || ICE_ID || ', ''RESPONSAVEL_REGISTRO'', ' || DOC_DOCID || ', NULL
FROM DUAL
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' || DOC_DOCID || ' AND PAS_ICEID = ''' || ICE_ID || ''' AND PAS_PESID = ''' || PSU_DIRPESID || ''' AND PAS_TIPO_CARGO = ''RESPONSAVEL_REGISTRO'') = 0;' ELSE NULL END) AS SQL_RESPONSAVEL_REGISTRO,
PAS_ICEID, 
DOC_DOCID, DOC_ASSINAREGRES AS assinaResponsavelRegistro,
 
PSU_DIRPESID AS responsavelRegistroId, RESPREG.PES_EMAIL AS responsavelRegistroEmail, OCRESPREG.OCP_DESCRI AS responsavelRegistroOcupacao, 'RESPONSAVEL_REGISTRO' AS responsavelRegTipoOcupacao
 
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
-- PEGANDO O RESPONSAVEL PELO REGISTRO
LEFT JOIN TB_PESSOA RESPREG ON RESPREG.PES_ID = PSU_PESID_TERMO_RESPONSAB
LEFT JOIN TB_HISTORICO_OCUPACOES HOCRESPREG ON HOCRESPREG.HOC_PESID = RESPREG.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCRESPREG ON OCRESPREG.OCP_ID = HOCRESPREG.HOC_OCPID
 
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'RESPONSAVEL_REGISTRO' AND PAS_PESID = RESPREG.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1


4) ORACLE - Script reitor_oracle

4) ORACLE - Script reitor_oracle

--------------------------------------------------------------------
-- SQL ÚNICO
--------------------------------------------------------------------
 
SELECT DISTINCT 
(CASE WHEN DOC_ASSINAREGREI = 1 THEN 'INSERT INTO TB_PESSOA_ASSIN_ELETRONICA
(PAS_ID, PAS_PESID, PAS_CHAVE, PAS_CASID, PAS_EMAIL, ATIVO, DATA_ULT_ALTERACAO, GRUPO_UNIDON, UNIDON, USUARIO_ULT_ALTERACAO, VERSAO, PAS_CARGO, PAS_ICEID, PAS_TIPO_CARGO, PAS_DOCID, PAS_DENID)
SELECT PAS_ID.NEXTVAL, ' || REIT.PES_ID || ', null, ' || PAS_CASID || ', ''' || REIT.PES_EMAIL || ''', 1, sysdate, ' || ING.GRUPO_UNIDON || ', ' || ING.UNIDON || ', ''EDU'', 1, ''' || COALESCE(OCREIT.OCP_DESCRI,'Reitor') || ''', ' || ICE_ID || ', ''REITOR'', ' || DOC_DOCID || ', NULL
FROM DUAL
WHERE (SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA 
        WHERE PAS_DOCID = ' || DOC_DOCID || ' AND PAS_ICEID = ''' || ICE_ID || ''' AND PAS_PESID = ''' || REIT.PES_ID || ''' AND PAS_TIPO_CARGO = ''REITOR'') = 0;' ELSE NULL END) AS SQL_REITOR,
PAS_ICEID, 
DOC_DOCID, DOC_ASSINAREGREI AS assinarReitor,
 
REIT.PES_ID AS reitorId, REIT.PES_EMAIL AS reitorEmail, OCREIT.OCP_DESCRI AS reitorOcupacao, 'REITOR' AS reitorTipoOcupacao
 
FROM TB_PESSOA_ASSIN_ELETRONICA  
INNER JOIN TB_INGRESSO_CERTIFICADO ON ICE_ID = PAS_ICEID
INNER JOIN TB_INGRESSO ING ON ING_ID = ICE_INGID
INNER JOIN TB_PARAMETROS_SUBNIVEL_UNID PSU ON (PSU_SNCID = ING_SNCID AND ( 
                                                                (@ECO_TIPCOM = 'SO_GRUPO' AND PSU.GRUPO_UNIDON = ING.GRUPO_UNIDON) OR
                                                                (@ECO_TIPCOM = 'SO_CRIAD' AND PSU.UNIDON = ING.UNIDON) OR
																(@ECO_TIPCOM = 'TODAS_UNI')
                                                            ) 
                                               )
-- PEGANDO O DIRETOR
INNER JOIN TB_PESSOA INSTREG ON INSTREG.PES_ID = ICE_IESREGDIP
LEFT JOIN TB_PESSOA MATINSTREG ON MATINSTREG.PES_ID = INSTREG.PES_MANID
LEFT JOIN TB_PESSOA REIT ON REIT.PES_ID = MATINSTREG.PES_PESIDREI
LEFT JOIN TB_HISTORICO_OCUPACOES HOCREIT ON HOCREIT.HOC_PESID = REIT.PES_ID
LEFT JOIN TB_OCUPACAO_PROFISSIONAL OCREIT ON OCREIT.OCP_ID = HOCREIT.HOC_OCPID
 
INNER JOIN TB_DOCUMENTO ON DOC_DOCID = PAS_DOCID
WHERE DOC_TIPODOCUMENTOACEITOXML = 'XML_DIPLOMADO' AND 
(SELECT COUNT(*) FROM tb_documento_entregue denint
INNER JOIN tb_documento docint ON (denint.den_docid = docint.doc_docid)
WHERE denint.den_ingid = ing_id AND denint.ativo = 1 AND docint.DOC_TIPODOCUMENTOACEITOXML = 'HISTORICO_ESCOLAR_DIGITAL') > 0 AND
(
SELECT COUNT(*) FROM TB_PESSOA_ASSIN_ELETRONICA WHERE PAS_TIPO_CARGO = 'REITOR' AND PAS_PESID = REIT.PES_ID AND PAS_DOCID = DOC_DOCID AND PAS_ICEID = ICE_ID
) = 0
ORDER BY 1



  • (edição externa)