Subversion Repositories bacoAlunos

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed



SIGES WEB

    /**
     * DOCUMENTACAO
     * Um aluno está inscrito numa disciplina na tabela T_INSCRI
     * Se o aluno frequentar uma unidade extracurrilar do plano de outro curso não há forma
     * de associar essa cadeira ao curso certo. A associação no SIGES é feita criando um grupo
     * especial com a Turma e usando os planos de estudos mas não fica nenhuma associação
     * entre turmas e cursos, nem entre grupos e cursos uma vez que os funcionaros criam muitas
     * vezes grupos especiais para as extracurriculares
     * A Turma pode também ela não ter associação ao curso precisamente para poderem ser colocados
     * alunos de cadeiras extracurriculares
     *
     * Solução:
     *
     * A tabela T_INSCRI tem as inscrições dos alunos nas disciplinas, no entanto o codigo de curso é
     * sempre o curso do aluno e não o curtsdo onde está a cadeira extracurricular
     * A inscrição tem o campo CD_TIPDIS que tem o valor 6 no caso das extracurriculares. Quando
     * o campo tem 1 significa inscrição regular e nesse caso o PAR turma, Curso está correcto
     * A turma é sempre escrita no campo TURMA_T mas existe o campo TURMA_P e TURMA_L
     * Vamos manter configuravel o campo TURMA_T mas na chamada do WEB-SERVICE
     * Assim saberemos que Turma está em que curso
     *
     * De seguida quando importamos as inscrições vamos sacar o curso mas também a turma
     * e dessa forma o cliente poderá fazer o que quiser com essa informação
     *
     * Para sacar as cadeiras de um curso excluimos a chamada pelo CD_TIPDIS = 1
     * Para sacar alunos escrevemos toda a informação incluindo a TURMA_T e o código do curso
     * e o código CD_TIPDIS e o cliente decide o que fazer com isso
     *
     * Nas cadeiras de um CURSO vamos enviar também o código da TURMA_T, TURMA_P e TURMA_L e TURMA_TP
     * para o cliente executar como quiser e poder inclusivamente criar várias cadeiras
     * uma por turma se necessário.
     *
     * Portanto a turma vai ser o PONTO chave de todas as importações
     *
     * notas:
     * Nos alunos o CD_SITUA_PAR significa situação parcial servia para identificar bacharelatos no passado
     * CSE.T_INSCRI.CD_STATUS <>5 para evitar anuladas
     * CSE.T_INSCRI.CD_TIPDIS = 6 significa extracurricular
     * CSE.T_INSCRI.CD_TIPDIS = 1 significa regular
     *
     * CD_TIPDISC = 1 Inscricoes normais
     * CD_TIPDISC = 2 Nao conta para media
     * CD_TIPDISC = 3 Qualitativa
     * CD_TIPDISC = 4 Equivalencia
     * CD_TIPDISC = 5 Equivalencia sem nota
     * CD_TIPDISC = 6 Extra Curricular
     * CD_TIPDISC = 7 Suplemento Diploma
     * CD_TIPDISC = 8 Integracao ou refazimento do plano de estudos
     *
     * */


     /***
     NOTAS SOBRE BASE DE DADOS DE INSCRICOES
     ***/
     Existem Cursos Ficticios na ESTG
     Erasmus
     Cadeiras a Vulso
     Vasco da Gama
     que são cursos que apesar de os alunos terem inscrições normais tem de ser mapeadas
     ao verdadeiro curso indo buscar o curso pela turma indo buscar os pares Turma Curso




     ######################
REVISAO DESCRICAO DO PROCESSO DE IMPORTACOES 2/3/2016
     ######################

ImportCoursesService (REVISTO 1/03/2016)

1.1 - Dada a Instituicao e o Ano - O sistema vai buscar todas as disciplinas diferenciando-as por Turma, Codigo, Ano, Semestre, Curso
    considerando as Inscrições de alunos T_INSCR Regulares codigo Tipo 1 e 2
    obtendo o resto da info da TB_DISCIP
    (codigo em oracle/DisciplinaDao)

1.2 - O Sistema cria uma unidade por cada saida do ponto anterior

ImportTeachersService (REVISTO 1/03/2016)

2.1 - (REVISTO 1/03/2016) Dada a Instituicao e o Ano - Obtem-se os codigos de todos os docentes
     da instituição para a partir da Tabela T_DOC_TURMA que associa docentes a turmas e junta-se
     à tabela disciplina para obter da instituição certa e filtra-se pelo Ano na T_DOC_TURMA
2.2 - Para cada docente proveniente da listagem anterior obtem-se os seus dados pessoais da tabela funcionario
      e as unidades onde este está subscrito como docente.
      As unidades são obtidas novamente da tabela T_DOC_TURMA
      Existem casos em que o codigo de Curso nao vem preenchido na T_DOC_TURMA, vem a NULL
      Isto acontece porque o sistema do Academicos nao permite associar Curso sempre o professor dá a cadeira
      a mais que um curso naquela turma. Nestes casos considera-se que o docente tem as cadeiras todas
      que no BACO têm o CODIGO de CADEIRA, ANO, SEMESTRE ignorando o código de curso.
2.3 - São adicionadas ao docente as cadeiras em falta encontradas na lista anterior que nao tenham sido
      removidas pelos administradores locais no sistema local
2.4 - Sao removidas as que nao vieram do SIGES e que existe localmente associadas e que não foram adicionadas
      localmente o que significa que as ações de adição ou remoção locais prevalecem sempre.


2.5 - TODO: Quanto a Topologias: A politica de escolha da tipologia está por decidir. Deverá
      ser feita neste ponto mas a ser decidida. Hipoteses:
       a) Considerar os sumários (Horario de Trabalho e o campo CD_TIPO_AULA na tabela
       T_SUMARIOS_AULAS)) limitado a 1,2,3,4,5,6,7,8 mas é um campo antigo
       deveria ter texto e não tem correspondencia em tabela nenhuma, desconfia-se que os tipos
       estão na Combobox HardCoded e não servem para mais nada
       b) Considerar o campo CD_TIPO_AULA no Horario de Referência do Docente,
       que corresponde à tabela T_OCUPACOES, neste caso perde-se tudo
       o que não tenha horario de referência criado como por exemplo estágios
       c) considerar o mesmo campo nos DETALHE_AULAS dos sumários, Horario de Trabalho
       mas ai temos informação a mais e a politica poderá ser dizer o que é ou não considerado
       e ignoramos o resto.
       TO BE (Todas as associações Turma Docente são necessárias como a cola entre os alunos e o
       professor, sem isto é impossivel saber que alunos estão com que professor)

ImportStudentsService (REVISTO 2/03/2016)

3.1 - São importados todos os estudantes com inscrições na tabela T_INSCRI com
      Código da Situação Parcial do Aluno = 1 e Código do Status da Inscrição <> 5
      para evitar inscrições anuladas
      ((CSE.T_ALUNOS.CD_SITUA_PAR)=1) AND ((CSE.T_INSCRI.CD_STATUS)<>5))
3.2 - Quando se obtém as disciplinas dos alunos existem dois casos possiveis quando
      uma cadeira é importada tipo de inscrição = 1 ou 2 ou 6.
      CSE.T_INSCRI.CD_TIPDIS = 2 OR CSE.T_INSCRI.CD_TIPDIS = 1 OR CSE.T_INSCRI.CD_TIPDIS = 6
      - Caso a inscrição seja de tipo 1 ou 2 a cadeira escolhida do BACO com uma filtragem
      dos campos provenientes da tabela T_INSCRI (Curso, Semestre, Ano, Codigo, Instituição)
      - Caso a inscrição seja de tipo 6 (Extracurricular) ou caso o Codigo de Curso seja um
      curso ficticio 19,4,0,22 (Vasco da Gama, Cadeiras a Vulso, Erasmus, etc) Vamos buscar
      o código de curso real do curso da seguinte forma:
         - Obtemos uma tabela de relações de turmas x curso real a partir da tabela inscrição
         considerando todas as ocorrencias unicas de inscrições de tipo 1 e status <> 5
         CSE.T_INSCRI.CD_TIPDIS = 1 AND CSE.T_INSCRI.CD_STATUS<>5
         - Desta forma temos uma tabela de pares curso turma
         - Caso exista mais que um curso para o mesmo código de turma escolhemos aleatóriamente
           um dos códigos de curso . Obtrmos a unidade do Baco com uma filtragem dos campos
            (Código de Curso Real, Semestre, Ano, Codigo, Instituição)
         - Um aviso é emitido nestes casos
3.3 - Obtidas as unidades do BACO onde iremos colocar o aluno guardamos as associações entre
      essas cadeiras e suas respetivas turmas identificadas na T_INSCRI para mais tarde
      colocar o aluno na turma certa (Modelo de Turmas será adicional no BACO, atualmente
      o aluno é apenas associado à unidade, isso irá continuar mas será adicionado ao modelo
      de dados um relacionamento entre a unidade a turma e os alunos que será consistida
      após cada atualização dos alunos)
3.4 - É usado o histórico dos alunos para verificar a situação de propinas em Dia
3.5 - As cadeiras são adicionadas ao aluno em mais 3 passos
    - São retiradas da lista as unidades que foram removidas pelo administrador local
    - São adicionadas ao docente as cadeiras em falta encontradas na lista anterior que nao tenham sido
      removidas pelos administradores locais no sistema local
    - Sao removidas as que nao vieram do SIGES e que existem localmente associadas e que não foram adicionadas
      localmente o que significa que as ações de adição ou remoção locais prevalecem sempre.
3.6 - Serão consistidas as associações dos alunos e das turmas nas unidades respectivas


ImportSumariesService  (REVISTO 2/03/2016)

4.1 - São importados unidade a unidade a partir das tabelas  T_SUMARIOS_AULAS,
      T_DETALHE_AULA, T_OCUPACAO e T_DETALHE_OCUPACAO e T_TURMA.
      As junções das tabelas foram revistas na documentação do SIGES pelas
      chaves estrangeiras de campos multiplos identificadas para relacionar as tabelas.
      Com estas tabelas é possivel obter os sumários do horario de trabalho das
      unidades filtrando cada unidade, ano, semestre e curso. O código de turma e o docente tb são importados
      portanto consegue-se saber a que docente e a que turma pertence cada sumário. E desta forma
      é possivel obter as tipologias de aula, Docente, Turma, Tipologia.

      CSH.T_DETALHE_AULA.CD_DISCIP = " + codigoUnidade
      AND CSH.T_DETALHE_AULA.CD_LECTIVO = '" + anolectivo + "'"
      AND CSH.T_DETALHE_AULA.CD_PERIODO = '" + semestre + "'"
      AND (CSE.T_TURMA.CD_CURSO = '" + codigoCurso + "' OR CSE.T_TURMA.CD_CURSO is NULL)"











     ######################
REVISAO
DESCRICAO DO PROCESSO DE IMPORTACOES
     ######################

     Sumarios T_SUMARIOSAULAS.CD_ESTADO
      1 Lançado
      2 Faltou
      3 Cancelado
      4 Pré-lançado

      importa tudo

Para o Json vai apenas aquilo que tem
     Numero Aula > -1 e
     que tem menos de 48 horas
     e que tem titulo ou descricao e
     ESTADO = 1;
Para o PDF vai apenas o que tem
     numero de aula > -1
 e   estado do Sumário = 1
o tipo 1 apenas