Commit a7d83ba33ffe0e7d4c9a4ed4a8b028b92aba309b

Authored by Caroline Salib
2 parents 02ebf3eb 2ea620cb
Exists in master

Merge branch 'master' into 'master'

Corrigido function copia_notas_transf;

Referente a issue #19

See merge request !18
ieducar/misc/database/migrations/20161230162741_altera_funcao_copia_notas_transf.php 0 → 100644
... ... @@ -0,0 +1,158 @@
  1 +<?php
  2 +
  3 +use Phinx\Migration\AbstractMigration;
  4 +
  5 +class AlteraFuncaoCopiaNotasTransf extends AbstractMigration
  6 +{
  7 + public function up()
  8 + {
  9 + $this->execute("DROP FUNCTION modules.copia_notas_transf(old_matricula_id integer, new_matricula_id integer);
  10 + CREATE OR REPLACE FUNCTION modules.copia_notas_transf(old_matricula_id integer, new_matricula_id integer)
  11 + RETURNS void AS
  12 + $$
  13 + DECLARE
  14 + cur_comp RECORD;
  15 + cur_comp_media RECORD;
  16 + cur_falta_geral RECORD;
  17 + cur_falta_comp RECORD;
  18 + cur_parecer_geral RECORD;
  19 + cur_parecer_comp RECORD;
  20 + v_tipo_nota integer;
  21 + v_tipo_parecer integer;
  22 + v_tipo_falta integer;
  23 + v_nota_id integer;
  24 + v_old_nota_id integer;
  25 + v_falta_id integer;
  26 + v_old_falta_id integer;
  27 + v_parecer_id integer;
  28 + v_old_parecer_id integer;
  29 + begin
  30 +
  31 + /* VERIFICA SE AS MATRICULAS FAZEM PARTE DO MESMO ANO LETIVO*/
  32 + IF ((SELECT eal.ano FROM pmieducar.escola_ano_letivo eal
  33 + INNER JOIN pmieducar.matricula mat ON (mat.ref_ref_cod_escola = eal.ref_cod_escola)
  34 + WHERE mat.cod_matricula = old_matricula_id and eal.andamento = 1 limit 1) = (SELECT eal.ano FROM pmieducar.escola_ano_letivo eal
  35 + INNER JOIN pmieducar.matricula mat ON (mat.ref_ref_cod_escola = eal.ref_cod_escola)
  36 + WHERE mat.cod_matricula = new_matricula_id and eal.andamento = 1 limit 1) ) THEN
  37 +
  38 + /* VERIFICA SE POSSUEM MESMA QUANTIDADE DE ETAPAS*/
  39 + IF ((select max(sequencial) as qtd_etapa from pmieducar.ano_letivo_modulo mod
  40 + inner join pmieducar.matricula mat on (mat.ref_ref_cod_escola = mod.ref_ref_cod_escola)
  41 + where mat.cod_matricula = new_matricula_id) = (select max(sequencial) as qtd_etapa from pmieducar.ano_letivo_modulo mod
  42 + inner join pmieducar.matricula mat on (mat.ref_ref_cod_escola = mod.ref_ref_cod_escola)
  43 + where mat.cod_matricula = old_matricula_id)) THEN
  44 + /* VERIFICA SE UTILIZAM A MESMA REGRA DE AVALIAÇÃO*/
  45 + IF ((SELECT id FROM modules.regra_avaliacao rg
  46 + INNER JOIN pmieducar.serie s ON (rg.id = s.regra_avaliacao_id)
  47 + INNER JOIN pmieducar.matricula m ON (s.cod_serie = m.ref_ref_cod_serie)
  48 + where m.cod_matricula = old_matricula_id ) =
  49 + (SELECT id FROM modules.regra_avaliacao rg
  50 + INNER JOIN pmieducar.serie s ON (rg.id = s.regra_avaliacao_id)
  51 + INNER JOIN pmieducar.matricula m ON (s.cod_serie = m.ref_ref_cod_serie)
  52 + where m.cod_matricula = new_matricula_id ) ) THEN
  53 +
  54 +
  55 + v_tipo_nota := (SELECT tipo_nota FROM modules.regra_avaliacao rg
  56 + INNER JOIN pmieducar.serie s ON (rg.id = s.regra_avaliacao_id)
  57 + INNER JOIN pmieducar.matricula m ON (s.cod_serie = m.ref_ref_cod_serie)
  58 + where m.cod_matricula = old_matricula_id);
  59 +
  60 + v_tipo_falta := (SELECT tipo_presenca FROM modules.regra_avaliacao rg
  61 + INNER JOIN pmieducar.serie s ON (rg.id = s.regra_avaliacao_id)
  62 + INNER JOIN pmieducar.matricula m ON (s.cod_serie = m.ref_ref_cod_serie)
  63 + where m.cod_matricula = old_matricula_id);
  64 +
  65 + v_tipo_parecer := (SELECT parecer_descritivo FROM modules.regra_avaliacao rg
  66 + INNER JOIN pmieducar.serie s ON (rg.id = s.regra_avaliacao_id)
  67 + INNER JOIN pmieducar.matricula m ON (s.cod_serie = m.ref_ref_cod_serie)
  68 + where m.cod_matricula = old_matricula_id);
  69 + /* SE A REGRA UTILIZAR NOTA, COPIA AS NOTAS*/
  70 + IF (v_tipo_nota >0) THEN
  71 +
  72 + v_nota_id := (SELECT max(id)+1 as id FROM modules.nota_aluno);
  73 +
  74 + IF (v_nota_id is null) THEN
  75 + v_nota_id := 1;
  76 + END IF;
  77 +
  78 + INSERT INTO modules.nota_aluno VALUES (v_nota_id, new_matricula_id);
  79 + v_old_nota_id := (SELECT id FROM modules.nota_aluno WHERE matricula_id = old_matricula_id);
  80 +
  81 + FOR cur_comp IN (SELECT * FROM modules.nota_componente_curricular where nota_aluno_id = v_old_nota_id) LOOP
  82 + INSERT INTO modules.nota_componente_curricular (nota_aluno_id,componente_curricular_id,nota,nota_arredondada,etapa)
  83 + VALUES(v_nota_id,cur_comp.componente_curricular_id,cur_comp.nota,cur_comp.nota_arredondada,cur_comp.etapa);
  84 + END LOOP;
  85 +
  86 + FOR cur_comp_media IN (SELECT * FROM modules.nota_componente_curricular_media where nota_aluno_id = v_old_nota_id) LOOP
  87 + INSERT INTO modules.nota_componente_curricular_media (nota_aluno_id,componente_curricular_id,media,media_arredondada,etapa)
  88 + VALUES(v_nota_id,cur_comp_media.componente_curricular_id,cur_comp_media.media,cur_comp_media.media_arredondada,cur_comp_media.etapa);
  89 + END LOOP;
  90 + END IF;
  91 +
  92 + IF (v_tipo_falta = 1) THEN
  93 + v_falta_id := (SELECT max(id)+1 AS id FROM modules.falta_aluno);
  94 +
  95 + IF (v_falta_id is null) THEN
  96 + v_falta_id := 1;
  97 + END IF;
  98 +
  99 + INSERT INTO modules.falta_aluno VALUES (v_falta_id, new_matricula_id,1);
  100 + v_old_falta_id := (SELECT id FROM modules.falta_aluno WHERE matricula_id = old_matricula_id);
  101 +
  102 + FOR cur_falta_geral IN (SELECT * FROM modules.falta_geral where falta_aluno_id = v_old_falta_id) LOOP
  103 + INSERT INTO modules.falta_geral (falta_aluno_id,quantidade,etapa)
  104 + VALUES(v_falta_id,cur_falta_geral.quantidade, cur_falta_geral.etapa);
  105 + END LOOP;
  106 + END IF;
  107 +
  108 + IF (v_tipo_falta = 2) THEN
  109 + v_falta_id := (SELECT max(id)+1 AS id FROM modules.falta_aluno);
  110 + IF (v_falta_id is null) THEN
  111 + v_falta_id := 1;
  112 + END IF;
  113 + INSERT INTO modules.falta_aluno VALUES (v_falta_id, new_matricula_id,2);
  114 + v_old_falta_id := (SELECT id FROM modules.falta_aluno WHERE matricula_id = old_matricula_id);
  115 +
  116 + FOR cur_falta_comp IN (SELECT * FROM modules.falta_componente_curricular where falta_aluno_id = v_old_falta_id) LOOP
  117 + INSERT INTO modules.falta_componente_curricular (falta_aluno_id,componente_curricular_id,quantidade,etapa)
  118 + VALUES(v_falta_id,cur_falta_comp.componente_curricular_id,cur_falta_comp.quantidade, cur_falta_comp.etapa);
  119 + END LOOP;
  120 + END IF;
  121 +
  122 + IF (v_tipo_parecer = 2) THEN
  123 + v_parecer_id := (SELECT max(id)+1 AS id FROM modules.parecer_aluno);
  124 + IF (v_parecer_id is null) THEN
  125 + v_parecer_id := 1;
  126 + END IF;
  127 + INSERT INTO modules.parecer_aluno VALUES (v_parecer_id, new_matricula_id,2);
  128 + v_old_parecer_id := (SELECT id FROM modules.parecer_aluno WHERE matricula_id = old_matricula_id);
  129 +
  130 + FOR cur_parecer_comp IN (SELECT * FROM modules.parecer_componente_curricular where parecer_aluno_id = v_old_parecer_id) LOOP
  131 + INSERT INTO modules.parecer_componente_curricular (parecer_aluno_id,componente_curricular_id,parecer,etapa)
  132 + VALUES(v_parecer_id,cur_parecer_comp.componente_curricular_id,cur_parecer_comp.parecer, cur_parecer_comp.etapa);
  133 + END LOOP;
  134 + END IF;
  135 +
  136 + IF (v_tipo_parecer = 3) THEN
  137 + v_parecer_id := (SELECT max(id)+1 AS id FROM modules.parecer_aluno);
  138 + IF (v_parecer_id is null) THEN
  139 + v_parecer_id := 1;
  140 + END IF;
  141 + INSERT INTO modules.parecer_aluno VALUES (v_parecer_id, new_matricula_id,3);
  142 + v_old_parecer_id := (SELECT id FROM modules.parecer_aluno WHERE matricula_id = old_matricula_id);
  143 +
  144 + FOR cur_parecer_geral IN (SELECT * FROM modules.parecer_geral where parecer_aluno_id = v_old_parecer_id) LOOP
  145 + INSERT INTO modules.parecer_geral (parecer_aluno_id,parecer,etapa)
  146 + VALUES(v_parecer_id,cur_parecer_geral.parecer, cur_parecer_geral.etapa);
  147 + END LOOP;
  148 + END IF;
  149 +
  150 + END IF;
  151 + END IF;
  152 +
  153 + END IF;
  154 +
  155 + end;$$
  156 + LANGUAGE 'plpgsql' VOLATILE;");
  157 + }
  158 +}
... ...