Páginas filhas
  • Manual Operacional da Customização - Integração Sapes

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Manual Operacional da customização - Integração Sapes


O manual a seguir visa detalhar as customizações realizadas neste projeto para realizar a exportação de Alunos para o Sapes.



Para correta utilização da Integração com o Sapes, deverá

Deverá ser parametrizado o campo Sigla Estado - DR nos

Pârametros

Parâmetros Gerais do Sistema Indústria

em TOTVS

em TOTVS Educacional| Sistema Industria | Parâmetros Gerais| Sigla Estado - DR.

Sigla Estado - DR: Neste campo será exibida uma lista dos estados do Brasil e a sigla CT (Cetiqt), onde o usuário deverá selecionar a Sigla do DR/Estado das matrículas, para enviar ao Sapes informação de alunos referente ao estado onde estão matriculados.

Image Modified


Expandir
titleParâmetros da Integração

Pré-requisitos

No TOTVS Serviços Globais, por meio do menu Customização | Controle de customizações ativas, verificar se a customização Lib CNI e Integração Sapes estão ativadas.

Aviso
titleSigla Estado - DR
Aviso
titleSigla Estado - DR

O preenchimento campo Sigla Estado, é obrigatório para a exportação de dados dos alunos para o Sapes. 


Descrição do processo

Tela disponibilizada em TOTVS Educacional | Sistema Indústria | Integração Sapes| Parâmetros para que o usuário defina todos parâmetros necessários para efetuar a integração com o sistema Sapes.

Detalhamento do processo

Foi disponibilizada a seguinte tela para informar os dados da integração:

  • Endereço WebService SAPES: Neste parâmetro o usuário deverá informar o Endereço de acesso ao WebService disponibilizado pelo Sapes. .
  • Token acesso (Integração): O Token será valor fixo de acordo com cada Regional utilizado na autenticação da Integração com WebService do Sapes.

Número tentativas de reenvio: Neste campo o usuário deverá informar o número máximo de tentativas que a customização deverá tentar realizar a integração com Sapes dos registros com status de erro.


Modalidade: Modalidades dos cursos que serão exportados para o Sapes

● Qtde. Dias – Envio Conclusão (Disciplina): campo do tipo texto onde o usuário deverá informar a quantidade de dias anteriores à data final da última matrícula do aluno na última turma/disciplina (STURMADISC.DTFINAL), do último Período do Curso, na Análise Curricular do Curso/Habilitação no SGE, de acordo com a Modalidade do Curso. Esta informação irá definir quantos dias antes da conclusão será enviada a Pesquisa de Egresso para o Sapes, com a lista de dados das matrículas dos alunos.

Expandir
titleProcesso de Exportação de dados para Sapes - Automático

Pré-requisitos

Para envio da pesquisa de Egresso do Senai, serão considerados os dados dos alunos que estão concluindo determinado curso das modalidades parametrizadas.

Descrição do processo

A interface customizada estará disponível em: TOTVS Educacional | Sistema Industria | Integração Sapes| Exportação de Dados. 

O processo poderá ser executado a qualquer momento pelo usuário, na data do processamento ou agendado conforme recurso nativo de agendamento de job. Para isso é necessário que o ambiente esteja configurado em três camadas para ser executado.

Detalhamento do processo

Clique em Exportação de Dados



A Exportação de Dados para o Sapes será realizada apenas para os alunos que estiverem matriculados nas turmas/disciplinas das modalidades parametrizadas na ( Aba Modalidades de Cursos ) e quando atingir o número de dias anteriores à data final* da turma/disciplina.  Esta Esta informação irá definir quantos dias antes do término da turma/disciplina será enviada a Pesquisa de Egresso para o Sapes, com a lista de dados das matrículas dos alunos.

Serão exportados dados dos dados dos alunos após atualizar após atualizar a Analise Análise Curricular, de acordo com as seguintes regras:

  • Alunos com status de matrícula diferente de concluinte e matriculado não integram na primeira carga.
  • Aluno Alunos com status de matricula com matrícula que indica pendências em pelo menos 1 menos uma disciplina, não será integrado.serão integrados. (Exemplo: Evadido, Trancado, Cancelado, Reprovado, etc.)

Para os casos de alunos que tiveram a situação de matrícula alterada após serem integrados na primeira carga, caso tenha apresentado alguma pendência após o após o envio (foi reprovado, por exemplo), o processo customizado deverá enviar o registro do aluno novamente, com atual situação após alteração do status (para cancelar o envio no SAPES).

Para o envio dos dados ao Sapes, a customização irá consumir o método do Webservice parametrizado, sendo enviadas informações do aluno, da unidade, do curso e da modalidade.

Após processamento, o Sapes retornará à informação se o registro foi processado com sucesso ou erro, informando a mensagem em caso de erro. Ao final do processamento, os registros serão gravados em tabela customizada de log, com dados como: data da criação, usuário responsável, dados enviados, dados recebidos, mensagem de erro e status do registro na integração.


Aviso
titleImportante:
  • *Data Final - Para exportação ao Sapes, analisamos a data de encerramento de todas as turmas disciplinas, identificando a última. Turmas disciplinas que não possuem uma data final preenchida não serão consideradas na exportação.
  • As informações serão extraídas de cadastros nativos do SGE, não sendo criado nenhum novo cadastro e/ou campo.
  • Os dados serão exportados do SGE para o Sapes, onde a pesquisa de egresso será realizada.

 

Serão exportados dados dos alunos após atualizar a Analise Curricular, de acordo com as seguintes regras:

  • Alunos com status de matrícula diferente de concluinte e matriculado não integram na primeira carga.
  • Aluno com status de matricula que indica pendências em pelo menos 1 disciplina, não será integrado. (Ex: Evadido, Trancado, Cancelado, Reprovado etc..)

Image Added


Observação: O Processo de Exportação de Dados para o Sapes por Turma, permite selecionar apenas um registro de turma, por processamento. Caso o usuário selecione mais de uma turma, será exibida a seguinte mensagem.

Image Modified

Expandir
titleProcesso de Exportação de dados para Sapes - Por Turma

Pré-requisitos

Para envio da pesquisa de Egresso do Senai, serão considerados os dados dos alunos que estão concluindo determinado curso das modalidades parametrizadas.

Descrição do processo

O menu utilizado ficará disponível em: TOTVS Educacional| Currículo e Oferta | Turma | Processos| Exportar Dados para o Sapes, para ser executado de forma manual pelo usuário.

Detalhamento do processo

Ao clicar no processo, será exibida tela com a lista de aluno da turma selecionada, para que o usuário selecione todos ou apenas os desejados. O processo enviará ao Sapes uma lista de dados das matrículas dos alunos selecionados que atenderem aos requisitos pré-definidos. Se ocorrer alguma atualização dos dados após o envio, o processo irá identificar a modificação e enviar a atualização para o SAPES.

Image Removed

Aviso
titleImportante
Aviso
titleImportante
  • Após processamento, o Sapes retornará à informação se o registro foi processado com sucesso ou erro, informando a mensagem em caso de erro.


Expandir
titleMonitor de Log

Pré-requisitos

Não se aplica.

Descrição do processo

O objetivo da Interface de Log é armazenar informações e status dos dados que foram exportados do SGE para o Sapes.

Detalhamento do processo

Será possível acompanhar os status dos dados de matrículas dos alunos enviados para o Sapes . Nesta interface será possível identificar os status dos alunos integradosatravés do menu TOTVS Educacional | Sistema Indústria | Integração Sapes | Monitor de Log. Não será permitida a inclusão, alteração ou exclusão de registros nesta interface. Os dados exibidos nesta interface ficam armazenados na tabela customizada ZDOCSIGNMONITOR. Os históricos das exportações de dados para o Moodle serão registrados e poderão ser visualizadas no menu TOTVS Educacional | Sistema Indústria | Integração Sapes| Monitor de Log.



Na tela de log estarão disponíveis os seguintes campos: 

  •  Id Log: Identificador sequencial de Log.
  •  Campos Chave: Descrição dos campos utilizados para gerar o registro integrado. 
  •  Valores Chave: Chave primária do registro integrado. 
  •  Status: Situação da Integração (Sucesso ou Erro). 
  •  Funcionalidade: Tipo de Processo que está sendo feito (Por exemplo: Exportação de Dados). 
  •  Módulo: Tipo da integração que está sendo feita.
  •  Data de Criação: Data de Criação do registro. 
  •  Data da última alteração: Data da última alteração do registro.

Ao acessar o anexo de um registro será possível o usuário visualizar todos os registros relacionados ao cadastro integrado selecionando a opção Item de Log. Estarão disponíveis os seguintes campos:

  • Id. Item Log: Identificador sequencial de log; 
  • Id. Log: Identificador sequencial de log;
  • Mensagem: Mensagem com o status da integração do item; 
  • Status: Situação da integração do item selecionado;
  • Dados Enviados: Relação dos dados enviados para integração;
  • Dados Recebidos: Relação dos dados recebidos;
  • Data de Criação: Data de criação do registro;
  • Data da última Alteração: Data da última alteração do registro.


Informações

Para informações sobre Alteração Status Logs com Erro e o processo de Exclusão de Logs no monitor, acesse o Manual Operacional da Customização - LIB DN

Expandir
titleProcesso para Reenvio de Dados

Pré-requisitos

Expandir
titleProcesso para Reenvio de Dados

Pré-requisitos

Possuir registros enviados com erro.

Descrição do processo

O objetivo do processo de reenvio de dados é permitir o envio para o Sapes dos registros que não foram exportados corretamente. Esse processo poderá ser executado manualmente ou poderá ser agendado, por registro (com status de cancelado, erro ou pendente) e a integração efetuará a exportação dos registros novamente.

Detalhamento do processo

O Reenvio de Dados, que ao ser acionado a customização tentará realizar novamente o envio das informações ao Sapes. A funcionalidade estará disponível na tela de Monitor de Logs, menu TOTVS Educacional | Sistema Indústria | Integração Sapes | Monitor de Log | Processos | Reenvio de Log.

Neste exemplo abaixo o envio apresentou o status de erro;

Selecione o erro registro que desejo deseja reenviar, clicar clica em processos, reenvio Reenvio de log;

Expandir
titleConsulta SAPES

Consulta Base (SENAI) - Utilizada no desenvolvimento da Integração SGE X SAPES

Bloco de código
languagesql
linenumberstrue
SELECT 'SGE' + SALUNO.RA + '-' + CONVERT(VARCHAR, SCURSO.IDFT) AS id,
       SHABILITACAOALUNO.RA AS ra,
       SHABILITACAOALUNO.IDHABILITACAOFILIAL AS idhabilitacaofilial,
       STURMA.CODTURMA AS cd_turma,
       SALUNO.RA AS cd_matricula,
       PPESSOA.CPF AS cpf,
       PPESSOA.NOME AS nome,
       PPESSOA.DTNASCIMENTO AS dt_nascimento,
       PPESSOA.SEXO AS sexo,
       ISNULL(PPESSOA.CARTIDENTIDADE, '') AS rg_numero,
       LOWER(ISNULL(SALUNOCOMPL.EMAILLEGADO, PPESSOA.EMAIL)) AS email,
       CASE
           WHEN PPESSOA.CORRACA = 2 THEN '1'
           WHEN PPESSOA.CORRACA = 4 THEN '2'
           WHEN PPESSOA.CORRACA = 8 THEN '3'
           WHEN PPESSOA.CORRACA = 6 THEN '4'
           WHEN PPESSOA.CORRACA = 0 THEN '5'
           WHEN PPESSOA.CORRACA = 10 THEN '6'
           ELSE '6'
       END AS cd_raca_cor,
       CASE
           WHEN PPESSOA.CORRACA = 2 THEN 'BRANCA'
           WHEN PPESSOA.CORRACA = 4 THEN 'PRETA'
           WHEN PPESSOA.CORRACA = 8 THEN 'PARDA'
           WHEN PPESSOA.CORRACA = 6 THEN 'AMARELA'
           WHEN PPESSOA.CORRACA = 0 THEN 'INDIGENA'
           WHEN PPESSOA.CORRACA = 10 THEN 'NAO DECLARADO'
           ELSE 'NAO DECLARADO'
       END AS ds_raca_cor,
       CASE
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 13 THEN '5'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) IN (14,
                                                             17,
                                                             18,
                                                             19) THEN '7'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 11 THEN '5'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 16 THEN '6'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 1 THEN '11'
           WHEN ISNULL(PPESSOA.DEFICIENTEFISICO, 0) = 1 THEN '4'
           WHEN ISNULL(PPESSOA.DEFICIENTEAUDITIVO, 0) = 2 THEN '3'
           WHEN ISNULL(PPESSOA.DEFICIENTEFALA, 0) = 3
                AND ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 7 THEN '5'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 7
                AND ISNULL(PPESSOA.DEFICIENTEFALA, 0) <> 3 THEN '3'
           WHEN ISNULL(PPESSOA.DEFICIENTEFALA, 0) = 3
                AND ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) <> 7 THEN '8'
           WHEN ISNULL(PPESSOA.DEFICIENTEVISUAL, 0) = 4 THEN '2'
           WHEN ISNULL(PPESSOA.DEFICIENTEMENTAL, 0) = 5 THEN '1'
           WHEN ISNULL(PPESSOA.DEFICIENTEINTELECTUAL, 0) = 6 THEN '1'
           WHEN ISNULL(PPESSOA.BRPDH, 0) = 7 THEN '10'
           ELSE '9'
       END AS cd_necessidade_especial,
       CASE
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 13 THEN 'Deficiência Múltipla'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) IN (14,
                                                             17,
                                                             18,
                                                             19) THEN 'Transtorno do Espectro Autista'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 11 THEN 'Deficiência Múltipla'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 16 THEN 'Altas Habilidades/Superdotação'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 1 THEN 'Deficiência Psicossocial '
           WHEN ISNULL(PPESSOA.DEFICIENTEFISICO, 0) = 1 THEN 'Deficiência Física'
           WHEN ISNULL(PPESSOA.DEFICIENTEAUDITIVO, 0) = 2 THEN 'Deficiência Auditiva'
           WHEN ISNULL(PPESSOA.DEFICIENTEFALA, 0) = 3
                AND ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 7 THEN 'Deficiência Múltipla'
           WHEN ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) = 7
                AND ISNULL(PPESSOA.DEFICIENTEFALA, 0) <> 3 THEN 'Deficiência Auditiva'
           WHEN ISNULL(PPESSOA.DEFICIENTEFALA, 0) = 3
                AND ISNULL(TABDEFICIENCIA.CODDEFICIENCIA, 0) <> 7 THEN 'Outras Deficiências'
           WHEN ISNULL(PPESSOA.DEFICIENTEVISUAL, 0) = 4 THEN 'Deficiência Visual'
           WHEN ISNULL(PPESSOA.DEFICIENTEMENTAL, 0) = 5 THEN 'Deficiência Intelectual'
           WHEN ISNULL(PPESSOA.DEFICIENTEINTELECTUAL, 0) = 6 THEN 'Deficiência Intelectual'
           WHEN ISNULL(PPESSOA.BRPDH, 0) = 7 THEN 'Reabilitados'
           ELSE 'Nenhuma'
       END AS ds_necessidade_especial,
       ISNULL(PPESSOA.TELEFONE1, '') AS telefone,
       ISNULL(PPESSOA.TELEFONE2, '') AS celular,
       GFILIAL.ESTADO AS dr,
       ISNULL(SGRADECOMPL.CODCURSOSCOP, CONVERT(VARCHAR, SCURSO.IDFT) + CONVERT(VARCHAR, SGRADE.IDFT)) AS cd_curso_dr,
       SCURSO.NOME AS ds_curso,
       MONTH(PRIMEIRATURMA.DTINICIAL) AS dt_mes_inicio,
       YEAR(PRIMEIRATURMA.DTINICIAL) AS dt_ano_inicio,
       DAY(TURMAS.DTFINAL) AS dt_dia_termino,
       MONTH(TURMAS.DTFINAL) AS dt_mes_termino,
       YEAR(TURMAS.DTFINAL) AS dt_ano_termino,
       CASE
           WHEN SHABILITACAOALUNO.CODSTATUS IN (1,
                                                19,
                                                2,
                                                20,
                                                47) THEN 1
           WHEN SHABILITACAOALUNO.CODSTATUS IN (4,
                                                7,
                                                22,
                                                25) THEN 2
           WHEN SHABILITACAOALUNO.CODSTATUS IN (16,
                                                34) THEN 4
           WHEN SHABILITACAOALUNO.CODSTATUS IN (11,
                                                29) THEN 5
           WHEN SHABILITACAOALUNO.CODSTATUS IN (14,
                                                32) THEN 6
           WHEN SHABILITACAOALUNO.CODSTATUS IN (18,
                                                36) THEN 7
           WHEN SHABILITACAOALUNO.CODSTATUS IN (15,
                                                33) THEN 8
           WHEN SHABILITACAOALUNO.CODSTATUS IN (40,
                                                44) THEN 9
           WHEN SHABILITACAOALUNO.CODSTATUS IN (10,
                                                28) THEN 10
           WHEN SHABILITACAOALUNO.CODSTATUS IN (12,
                                                30) THEN 11
       END AS cd_situacao,         CASE
           WHEN SHABILITACAOALUNO.CODSTATUS IN (1,
                                                19,
                                                2,
                                                20,
                                                47) THEN 'Em Andamento'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (4,
                                                7,
                                                22,
                                                25) THEN 'Concluída'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (16,
                                                34) THEN 'Evadido'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (11,
                                                29) THEN 'Transferida - Interna'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (14,
                                                32) THEN 'Trancada'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (18,
                                                36) THEN 'Pendente de Estágio'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (15,
                                                33) THEN 'Aluno Desistente'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (40,
                                                44) THEN 'Aluno Falecido'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (10,
                                                28) THEN 'Aluno Reprovado'
           WHEN SHABILITACAOALUNO.CODSTATUS IN (12,
                                                30) THEN 'Transferida - Externa'
       END AS ds_situacao,
       ISNULL(DFILIAL.CAMPOLIVRE1, GFILIAL.IDINTEGRACAO) AS cd_unidade,
       NOMEFANTASIA AS ds_unidade,
       SCURSO.CODMODALIDADECURSO AS cd_modalidade,
       SMODALIDADECURSO.DESCRICAO AS ds_modalidade,
       SCURSO.CODAREA AS cd_area_atuacao,
       SAREA.NOME AS ds_area_atuacao,
       CASE
           WHEN SCURSO.CURPRESDIST = 'D' THEN 1
           ELSE 0
       END AS ead,
       CASE
           WHEN SMATRICPLCOMPL.TIPOGRAT = '1' THEN 1
           ELSE 0
       END AS gratuidade_regimental,
       ISNULL(SALUNOCOMPL.TIPOESCOLA, 9) AS cd_escola_orig_aluno_no_curso,
       ISNULL(GCONSIST.DESCRICAO, 'Não Declarado') AS ds_escola_orig_aluno_no_curso,
       CASE
           WHEN LEN(ISNULL(TIPOGRAT, '')) < 3 THEN 1
           ELSE CONVERT(INT, RIGHT(TIPOGRAT, 2))
       END AS cd_pronatec,
       CASE
           WHEN LEN(ISNULL(TIPOGRAT, '')) < 3 THEN 'Não'
           ELSE PRONATEC.DESCRICAO
       END AS ds_pronatec,
       CASE
           WHEN SMATRICPLCOMPL.ARTICULACAO = 1 THEN 'S'
           ELSE 'N'
       END AS articulacao_sesi_senai,
       CASE
           WHEN SCURSO.CODMODALIDADECURSO IN ('11',
                                              '15') THEN CASE
                                                             WHEN ESTAGIO.CNPJ IS NOT NULL
                                                                  AND ESTAGIO.DTINICIOESTAGIO <= CONVERT(DATETIME, GETDATE()) THEN 'Com Contrato'
                                                             ELSE 'Sem Contrato'
                                                         END
           ELSE 'Não se Aplica'
       END AS condicao_aluno_aprendizagem,
       CASE
           WHEN SCURSO.CODMODALIDADECURSO IN ('11',
                                              '15')
                AND ESTAGIO.CNPJ IS NOT NULL
                AND ESTAGIO.DTINICIOESTAGIO <= CONVERT(DATETIME, GETDATE()) THEN ESTAGIO.DTINICIOESTAGIO
       END AS dt_inicio_estagio,
       CASE
           WHEN SCURSO.CODMODALIDADECURSO IN ('11',
                                              '15')
                AND ESTAGIO.CNPJ IS NOT NULL
                AND ESTAGIO.DTINICIOESTAGIO <= CONVERT(DATETIME, GETDATE()) THEN ESTAGIO.DTFINALESTAGIO
       END AS dt_fim_estagio,
       TURMAS.DTFINAL AS dt_final
FROM SHABILITACAOALUNO (NOLOCK)
INNER JOIN SHABILITACAOFILIAL (NOLOCK) ON SHABILITACAOFILIAL.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SHABILITACAOALUNO.IDHABILITACAOFILIAL
INNER JOIN SGRADE (NOLOCK) ON SGRADE.CODCURSO = SHABILITACAOFILIAL.CODCURSO
AND SGRADE.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA
AND SGRADE.CODGRADE = SHABILITACAOFILIAL.CODGRADE
AND SGRADE.CODHABILITACAO = SHABILITACAOFILIAL.CODHABILITACAO
INNER JOIN GFILIAL (NOLOCK) ON GFILIAL.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA
AND GFILIAL.CODFILIAL = SHABILITACAOFILIAL.CODFILIAL
INNER JOIN SCURSO (NOLOCK) ON SCURSO.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
AND SCURSO.CODCURSO = SHABILITACAOFILIAL.CODCURSO
INNER JOIN SMATRICPL (NOLOCK) ON SMATRICPL.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
AND SMATRICPL.RA = SHABILITACAOALUNO.RA
AND SMATRICPL.IDHABILITACAOFILIAL = SHABILITACAOALUNO.IDHABILITACAOFILIAL
INNER JOIN SPLETIVO (NOLOCK) ON SPLETIVO.CODCOLIGADA = SMATRICPL.CODCOLIGADA
AND SPLETIVO.IDPERLET = SMATRICPL.IDPERLET
INNER JOIN SALUNO (NOLOCK) ON SALUNO.RA = SHABILITACAOALUNO.RA
AND SALUNO.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
INNER JOIN PPESSOA (NOLOCK) ON PPESSOA.CODIGO = SALUNO.CODPESSOA
INNER JOIN STURMA (NOLOCK) ON STURMA.CODFILIAL = SMATRICPL.CODFILIAL
AND STURMA.CODCOLIGADA = SMATRICPL.CODCOLIGADA
AND STURMA.IDPERLET = SMATRICPL.IDPERLET
AND STURMA.CODTURMA = SMATRICPL.CODTURMA
INNER JOIN
  (SELECT *
   FROM
     (SELECT SHABILITACAOFILIAL.CODCOLIGADA,
             SHABILITACAOFILIAL.CODTIPOCURSO,
             SHABILITACAOFILIAL.CODFILIAL,
             SHABILITACAOFILIAL.CODCURSO,
             SHABILITACAOFILIAL.CODHABILITACAO,
             SHABILITACAOFILIAL.CODGRADE,
             STURMA.CODTURMA,
             STURMA.IDPERLET,
             SPLETIVO.CODPERLET,
             SHABILITACAOFILIAL.IDHABILITACAOFILIAL,
             STURMA.DTINICIAL,
             STURMA.DTFINAL,
             MAX(CODPERIODO) AS PERIODOTURMA,

        (SELECT MAX(SPERIODO.CODPERIODO)
         FROM SPERIODO (NOLOCK)
         WHERE SPERIODO.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA
           AND SPERIODO.CODCURSO = SHABILITACAOFILIAL.CODCURSO
           AND SPERIODO.CODHABILITACAO = SHABILITACAOFILIAL.CODHABILITACAO
           AND SPERIODO.CODGRADE = SHABILITACAOFILIAL.CODGRADE
           AND SPERIODO.CODPERIODO <> 0 ) AS PERIODOCURSO        FROM STURMA
      INNER JOIN SPLETIVO ON SPLETIVO.IDPERLET = STURMA.IDPERLET
      AND SPLETIVO.CODCOLIGADA = STURMA.CODCOLIGADA
      INNER JOIN SHABILITACAOFILIAL ON SHABILITACAOFILIAL.IDHABILITACAOFILIAL = STURMA.IDHABILITACAOFILIAL
      AND SHABILITACAOFILIAL.CODCOLIGADA = STURMA.CODCOLIGADA
      INNER JOIN STURMADISC ON STURMADISC.CODFILIAL = STURMA.CODFILIAL
      AND STURMADISC.CODTURMA = STURMA.CODTURMA
      AND STURMADISC.CODCOLIGADA = STURMA.CODCOLIGADA
      AND STURMADISC.IDPERLET = STURMA.IDPERLET
      INNER JOIN SDISCGRADE ON SDISCGRADE.CODCOLIGADA = STURMADISC.CODCOLIGADA
      AND SDISCGRADE.CODCURSO = SHABILITACAOFILIAL.CODCURSO
      AND SDISCGRADE.CODHABILITACAO = SHABILITACAOFILIAL.CODHABILITACAO
      AND SDISCGRADE.CODGRADE = SHABILITACAOFILIAL.CODGRADE
      AND SDISCGRADE.CODDISC = STURMADISC.CODDISC
      GROUP BY SHABILITACAOFILIAL.CODCOLIGADA,
               SHABILITACAOFILIAL.CODTIPOCURSO,
               SHABILITACAOFILIAL.CODFILIAL,
               SHABILITACAOFILIAL.CODCURSO,
               SHABILITACAOFILIAL.CODHABILITACAO,
               SHABILITACAOFILIAL.CODGRADE,
               STURMA.CODTURMA,
               STURMA.IDPERLET,
               SPLETIVO.CODPERLET,
               SHABILITACAOFILIAL.IDHABILITACAOFILIAL,
               STURMA.DTINICIAL,
               STURMA.DTFINAL) AS TURMAS
   WHERE TURMAS.PERIODOTURMA = TURMAS.PERIODOCURSO ) AS TURMAS ON TURMAS.CODCOLIGADA = SMATRICPL.CODCOLIGADA
AND TURMAS.CODTURMA = SMATRICPL.CODTURMA
AND TURMAS.IDPERLET = SMATRICPL.IDPERLET
AND TURMAS.CODFILIAL = SMATRICPL.CODFILIAL
AND TURMAS.IDHABILITACAOFILIAL = SMATRICPL.IDHABILITACAOFILIAL
LEFT OUTER JOIN
  (SELECT MAT.CODCOLIGADA,
          MAT.RA,
          MAT.IDHABILITACAOFILIAL,
          MIN(TUR.DTINICIAL) DTINICIAL
   FROM SMATRICPL AS MAT (NOLOCK)
   INNER JOIN STURMA AS TUR (NOLOCK) ON TUR.CODFILIAL = MAT.CODFILIAL
   AND TUR.CODCOLIGADA = MAT.CODCOLIGADA
   AND TUR.IDPERLET = MAT.IDPERLET
   AND TUR.CODTURMA = MAT.CODTURMA
   GROUP BY MAT.CODCOLIGADA,
            MAT.RA,
            MAT.IDHABILITACAOFILIAL) AS PRIMEIRATURMA ON PRIMEIRATURMA.CODCOLIGADA = SMATRICPL.CODCOLIGADA
AND PRIMEIRATURMA.RA = SMATRICPL.RA
AND PRIMEIRATURMA.IDHABILITACAOFILIAL = SMATRICPL.IDHABILITACAOFILIAL
LEFT OUTER JOIN SGRADECOMPL (NOLOCK) ON SGRADECOMPL.CODCOLIGADA = SGRADE.CODCOLIGADA
AND SGRADECOMPL.CODGRADE = SGRADE.CODGRADE
AND SGRADECOMPL.CODHABILITACAO = SGRADE.CODHABILITACAO
AND SGRADECOMPL.CODCURSO = SGRADE.CODCURSO
LEFT OUTER JOIN SMODALIDADECURSO (NOLOCK) ON SMODALIDADECURSO.CODMODALIDADECURSO = SCURSO.CODMODALIDADECURSO
AND SMODALIDADECURSO.CODCOLIGADA = SCURSO.CODCOLIGADA
LEFT OUTER JOIN SAREA (NOLOCK) ON SAREA.CODCOLIGADA = SCURSO.CODCOLIGADA
AND SAREA.CODAREA = SCURSO.CODAREA
LEFT OUTER JOIN SCURSOCOMPL (NOLOCK) ON SCURSOCOMPL.CODCOLIGADA = SCURSO.CODCOLIGADA
AND SCURSOCOMPL.CODCURSO = SCURSO.CODCURSO
LEFT OUTER JOIN DFILIAL (NOLOCK) ON DFILIAL.CODCOLIGADA = GFILIAL.CODCOLIGADA
AND DFILIAL.CODFILIAL = GFILIAL.CODFILIAL
LEFT OUTER JOIN SALUNOCOMPL (NOLOCK) ON SALUNOCOMPL.CODCOLIGADA = SALUNO.CODCOLIGADA
AND SALUNOCOMPL.RA = SALUNO.RA
LEFT OUTER JOIN GCONSIST (NOLOCK) ON GCONSIST.CODCOLIGADA = SALUNOCOMPL.CODCOLIGADA
AND GCONSIST.CODCLIENTE = TIPOESCOLA
AND CODTABELA = 'TIPOESCOLA'
LEFT OUTER JOIN SMATRICPLCOMPL (NOLOCK) ON SMATRICPLCOMPL.CODCOLIGADA = SMATRICPL.CODCOLIGADA
AND SMATRICPLCOMPL.RA = SMATRICPL.RA
AND SMATRICPLCOMPL.IDHABILITACAOFILIAL = SMATRICPL.IDHABILITACAOFILIAL
AND SMATRICPLCOMPL.IDPERLET = SMATRICPL.IDPERLET
LEFT OUTER JOIN GCONSIST AS PRONATEC (NOLOCK) ON PRONATEC.CODCOLIGADA = SMATRICPLCOMPL.CODCOLIGADA
AND PRONATEC.CODCLIENTE = SMATRICPLCOMPL.TIPOGRAT
AND PRONATEC.CODTABELA = 'TIPOGRAT'
LEFT JOIN
  (SELECT CODPESSOA,
          MIN(CODDEFICIENCIA) AS CODDEFICIENCIA
   FROM PPESSOADEFICIENCIA (NOLOCK)
   GROUP BY CODPESSOA) TABDEFICIENCIA ON PPESSOA.CODIGO = TABDEFICIENCIA.CODPESSOA
LEFT OUTER JOIN
  (SELECT DISTINCT MATRICL.CODCOLIGADA,
                   MATRICL.IDPERLET,
                   MATRICL.IDHABILITACAOFILIAL,
                   MATRICL.RA,
                   ISNULL(ESTAGIOCONTRATO.DTINICIOESTAGIO, MATRICPLCOMPL.DATAINICIAL) AS DTINICIOESTAGIO,
                   ISNULL(ESTAGIOCONTRATO.DTFINALESTAGIO, MATRICPLCOMPL.DATAFINAL) AS DTFINALESTAGIO,
                   ISNULL(EMPRESA.CNPJ, HABILITACAOALUNOCOMPL.EMPRESACOMP) AS CNPJ
   FROM dbo.SHABILITACAOALUNO AS HABILITACAOALUNO
   INNER JOIN dbo.SMATRICPL AS MATRICL (NOLOCK) ON MATRICL.CODCOLIGADA = HABILITACAOALUNO.CODCOLIGADA
   AND MATRICL.RA = HABILITACAOALUNO.RA
   AND MATRICL.IDHABILITACAOFILIAL = HABILITACAOALUNO.IDHABILITACAOFILIAL
   INNER JOIN dbo.SHABILITACAOFILIAL AS HABILITACAOFILIAL (NOLOCK) ON HABILITACAOFILIAL.CODCOLIGADA = MATRICL.CODCOLIGADA
   AND HABILITACAOFILIAL.CODFILIAL = MATRICL.CODFILIAL
   AND HABILITACAOFILIAL.IDHABILITACAOFILIAL = MATRICL.IDHABILITACAOFILIAL
   INNER JOIN dbo.SCURSO AS CURSO (NOLOCK) ON CURSO.CODCOLIGADA = HABILITACAOFILIAL.CODCOLIGADA
   AND CURSO.CODCURSO = HABILITACAOFILIAL.CODCURSO
   INNER JOIN dbo.SPLETIVO AS PLETIVO (NOLOCK) ON PLETIVO.CODCOLIGADA = MATRICL.CODCOLIGADA
   AND PLETIVO.IDPERLET = MATRICL.IDPERLET
   INNER JOIN dbo.SMATRICULA AS MATRICULA (NOLOCK) ON MATRICULA.CODCOLIGADA = MATRICL.CODCOLIGADA
   AND MATRICULA.RA = MATRICL.RA
   AND MATRICULA.IDPERLET = MATRICL.IDPERLET
   AND MATRICULA.IDHABILITACAOFILIAL = MATRICL.IDHABILITACAOFILIAL
   INNER JOIN dbo.STURMADISC AS TURMADISC (NOLOCK) ON TURMADISC.CODCOLIGADA = MATRICULA.CODCOLIGADA
   AND TURMADISC.IDTURMADISC = MATRICULA.IDTURMADISC
   INNER JOIN dbo.SDISCIPLINA AS DISCIPLINA (NOLOCK) ON DISCIPLINA.CODDISC = TURMADISC.CODDISC
   AND DISCIPLINA.CODCOLIGADA = TURMADISC.CODCOLIGADA
   LEFT OUTER JOIN dbo.SHABILITACAOALUNOCOMPL AS HABILITACAOALUNOCOMPL (NOLOCK) ON HABILITACAOALUNOCOMPL.CODCOLIGADA = HABILITACAOALUNO.CODCOLIGADA
   AND HABILITACAOALUNOCOMPL.RA = HABILITACAOALUNO.RA
   AND HABILITACAOALUNOCOMPL.IDHABILITACAOFILIAL = HABILITACAOALUNO.IDHABILITACAOFILIAL
   LEFT OUTER JOIN dbo.SMATRICPLCOMPL AS MATRICPLCOMPL (NOLOCK) ON MATRICPLCOMPL.CODCOLIGADA = MATRICL.CODCOLIGADA
   AND MATRICPLCOMPL.RA = MATRICL.RA
   AND MATRICPLCOMPL.IDPERLET = MATRICL.IDPERLET
   AND MATRICPLCOMPL.IDHABILITACAOFILIAL = MATRICL.IDHABILITACAOFILIAL
   LEFT OUTER JOIN dbo.SESTAGIOCONTRATO AS ESTAGIOCONTRATO (NOLOCK) ON ESTAGIOCONTRATO.CODCOLIGADA = MATRICL.CODCOLIGADA
   AND ESTAGIOCONTRATO.RA = MATRICL.RA
   AND ESTAGIOCONTRATO.IDPERLET = MATRICL.IDPERLET
   AND ESTAGIOCONTRATO.IDHABILITACAOFILIAL = MATRICL.IDHABILITACAOFILIAL
   LEFT OUTER JOIN dbo.SEMPRESA AS EMPRESA ON EMPRESA.IDEMPRESA = ESTAGIOCONTRATO.IDEMPRESA
   WHERE PLETIVO.CODPERLET LIKE '%FE'
     AND DISCIPLINA.ESTAGIO = 'S'
     AND CURSO.CODMODALIDADECURSO IN ('11','15') ) ESTAGIO ON ESTAGIO.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
AND ESTAGIO.IDHABILITACAOFILIAL = SHABILITACAOALUNO.IDHABILITACAOFILIAL
AND ESTAGIO.RA = SHABILITACAOALUNO.RA
WHERE SMATRICPL.CODCOLIGADA = :CODCOLIGADA
  AND SMATRICPL.CODSTATUSRES IS NULL
  AND SCURSO.CODMODALIDADECURSO IN ('31','32''21','22','11','15','41','81','82')
  AND PPESSOA.CPF IS NOT NULL
  AND SCURSO.CODAREA IS NOT NULL
  AND ISNULL(SALUNOCOMPL.MOTIVOCPF, '') NOT IN ('03','04')
  AND SPLETIVO.CODPERLET NOT LIKE '%FE'
  AND TURMAS.DTFINAL BETWEEN CONVERT(DATE, GETDATE()) AND CONVERT(DATE, DATEADD(MONTH, 1, GETDATE())) /*AND TURMAS.DTFINAL BETWEEN '2020-06-01' AND CONVERT(DATE, DATEADD(MONTH, 1, GETDATE()))*/
  AND NOT (TURMAS.PERIODOCURSO = 1
           AND SHABILITACAOALUNO.CODSTATUS IN (1,19))