From b8464ff7284e9dd438d64962ef71bc67f087f39f Mon Sep 17 00:00:00 2001 From: Eriksen Costa Date: Tue, 3 Aug 2010 12:52:47 -0300 Subject: [PATCH] Atualizado cadastro de Alocação de Servidor: --- ieducar/intranet/educar_servidor_alocacao_cad.php | 76 +++++++++++++++++++++++++++++++++++++++++----------------------------------- ieducar/intranet/educar_servidor_cad.php | 20 ++++++++++++++++---- ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php | 2 +- ieducar/misc/database/deltas/24_altera_tipo_campo_carga_horaria_pmieducar_servidor_alocacao.sql | 20 ++++++++++++++++++++ ieducar/misc/database/ieducar.sql | 3 ++- 5 files changed, 80 insertions(+), 41 deletions(-) create mode 100644 ieducar/misc/database/deltas/24_altera_tipo_campo_carga_horaria_pmieducar_servidor_alocacao.sql diff --git a/ieducar/intranet/educar_servidor_alocacao_cad.php b/ieducar/intranet/educar_servidor_alocacao_cad.php index 58dd904..da25dec 100644 --- a/ieducar/intranet/educar_servidor_alocacao_cad.php +++ b/ieducar/intranet/educar_servidor_alocacao_cad.php @@ -214,37 +214,25 @@ class indice extends clsCadastro } // Carga horária - $total_horas = sprintf('%02d', (int) (floor($this->carga_horaria_disponivel))); - $total_horas = sprintf('%02d', (int) (floor($this->carga_horaria_disponivel))); - $total_minutos = sprintf('%02d', (int) ((floatval($this->carga_horaria_disponivel) - floatval($total_horas)) * 60)); + $carga = $this->carga_horaria_disponivel; + $this->campoRotulo('carga_horaria_disponivel', 'Carga Horária', $carga . ':00'); - $horas_utilizadas = 0; - $minutos_utilizados = 0; + foreach ($this->alocacao_array as $alocacao) { + $carga_horaria_ = explode(':', $alocacao['carga_horaria_alocada']); - if ($this->alocacao_array) { - foreach ($this->alocacao_array as $alocacao) { - $carga_horaria_ = explode(':', $alocacao['carga_horaria_alocada']); - - $horas_utilizadas += ($carga_horaria_[0]); - $minutos_utilizados += ($carga_horaria_[1]); - } + $horas += (int) $carga_horaria_[0]; + $minutos += (int) $carga_horaria_[1]; } - $horas = sprintf('%02d', (int) $horas_utilizadas); - $minutos = sprintf('%02d', (int) $minutos_utilizados); - $str_horas_utilizadas = sprintf('%s:%s', $horas, $minutos); - - $this->campoRotulo('carga_horaria_disponivel', 'Carga Horária', - sprintf('%s:%s', $total_horas, $total_minutos)); + $total = ($horas * 60) + $minutos; + $rest = ($carga * 60) - $total; - $this->campoRotulo('horas_utilizadas', 'Horas Utilizadas', $str_horas_utilizadas); + $total = sprintf('%02d:%02d', ($total / 60), ($total % 60)); + $rest = sprintf('%02d:%02d', ($rest / 60), ($rest % 60)); - $horas = sprintf('%02d', (int) $total_horas - $horas_utilizadas); - $minutos = sprintf('%02d', (int) $total_minutos - $minutos_utilizados); - $str_horas_restantes = sprintf('%s:%s', $horas, $minutos); - - $this->campoRotulo('horas_restantes', 'Horas Restantes', $str_horas_restantes); - $this->campoOculto('horas_restantes_', $str_horas_restantes); + $this->campoRotulo('horas_utilizadas', 'Horas Utilizadas', $total); + $this->campoRotulo('horas_restantes', 'Horas Restantes', $rest); + $this->campoOculto('horas_restantes_', $rest); $this->campoQuebra(); @@ -264,7 +252,7 @@ class indice extends clsCadastro $nome_escola = $lista_escola[0]['nome']; $cod_escola = $lista_escola[0]['cod_escola']; - $this->campoTextoInv('ref_cod_escola_label', 'Escola', $nome_escola); + $this->campoTextoInv('ref_cod_escola_label', 'Escola', $nome_escola, 100, 255, FALSE); $this->campoOculto('ref_cod_escola', $cod_escola); } // Usuário administrador visualiza todas as escolas disponíveis @@ -317,14 +305,22 @@ class indice extends clsCadastro $obj_permissoes = new clsPermissoes(); $link_excluir = ''; - if ($obj_permissoes->permissao_excluir(635, $this->pessoa_logada, 7)) { - $link_excluir = "__nome}.submit();\">"; - } - $obj_escola = new clsPmieducarEscola($alocacao['ref_cod_escola']); $det_escola = $obj_escola->detalhe(); $det_escola = $det_escola['nome']; + if ($obj_permissoes->permissao_excluir(635, $this->pessoa_logada, 7)) { + + $show = TRUE; + if (4 == $permissao->nivel_acesso($this->pessoa_logada) + && $alocacao['ref_cod_escola'] != $permissao->getEscola($this->pessoa_logada) + ) { + $show = FALSE; + } + + $link_excluir = $show ? "__nome}.submit();\">" : ""; + } + // @todo CoreExt_Enum switch ($alocacao['periodo']) { case 1: @@ -345,10 +341,10 @@ class indice extends clsCadastro FALSE, TRUE, '', '', '', '', 'periodo'); $this->campoTextoInv('carga_horaria_alocada_' . $key, '', - $alocacao['carga_horaria_alocada'], 5, 5, FALSE, FALSE, TRUE, '', '', + substr($alocacao['carga_horaria_alocada'], 0, 5), 5, 5, FALSE, FALSE, TRUE, '', '', '', '', 'ds_carga_horaria_'); - $this->campoTextoInv('ref_cod_escola_' . $key, '', $det_escola, 30, 255, + $this->campoTextoInv('ref_cod_escola_' . $key, '', $det_escola, 70, 255, FALSE, FALSE, FALSE, '', $link_excluir, '', '', 'ref_cod_escola_'); } } @@ -411,14 +407,23 @@ class indice extends clsCadastro if ($this->alocacao_array) { foreach ($this->alocacao_array as $alocacao) { if ($alocacao['novo']) { + $cargaHoraria = explode(':', $alocacao['carga_horaria_alocada']); + + $hora = isset($cargaHoraria[0]) ? $cargaHoraria[0] : 0; + $minuto = isset($cargaHoraria[1]) ? $cargaHoraria[1] : 0; + $segundo = isset($cargaHoraria[2]) ? $cargaHoraria[2] : 0; + + $cargaHoraria = sprintf("%'02d:%'02d:%'02d", $hora, $minuto, $segundo); + $obj = new clsPmieducarServidorAlocacao(NULL, $this->ref_ref_cod_instituicao, NULL, $this->pessoa_logada, $alocacao['ref_cod_escola'], $this->ref_cod_servidor, NULL, NULL, $this->ativo, - $alocacao['carga_horaria_alocada'], $alocacao['periodo']); + $cargaHoraria, $alocacao['periodo']); $cadastrou = FALSE; + if (FALSE == $obj->lista(NULL, $this->ref_ref_cod_instituicao, - NULL, NULL, $alocacao['escola'], $this->ref_cod_servidor, NULL, NULL, + NULL, NULL, $alocacao['ref_cod_escola'], $this->ref_cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, $alocacao['periodo']) ) { $cadastrou = $obj->cadastra(); @@ -520,7 +525,8 @@ function validaHora() hora_restantes_ = Date.UTC(1970, 01, 01, horas_restantes[0], horas_restantes[1], 0); if (hora_ > hora_max_) { - alert("O número de horas máximo por período/escola é de 6h."); + message = ; + alert(message); return false; } diff --git a/ieducar/intranet/educar_servidor_cad.php b/ieducar/intranet/educar_servidor_cad.php index 1b9bc19..083eefc 100644 --- a/ieducar/intranet/educar_servidor_cad.php +++ b/ieducar/intranet/educar_servidor_cad.php @@ -116,17 +116,29 @@ class indice extends clsCadastro } $db = new clsBanco(); - $consulta = sprintf(" - SELECT - SUBSTR(COALESCE(SUM(carga_horaria), '00:00'), 0, 6) AS horas_utilizadas + + // Carga horária alocada + $sql = sprintf("SELECT + carga_horaria FROM pmieducar.servidor_alocacao WHERE ref_cod_servidor = '%d' AND ativo = 1", $this->cod_servidor); - $this->total_horas_alocadas = $db->CampoUnico($consulta); + $db->Consulta($sql); + + $carga = 0; + while ($db->ProximoRegistro()) { + $cargaHoraria = $db->Tupla(); + $cargaHoraria = explode(':', $cargaHoraria['carga_horaria']); + $carga += $cargaHoraria[0] * 60 + $cargaHoraria[1]; + } + + $this->total_horas_alocadas = sprintf('%02d:%02d', + $carga / 60, $carga % 60); + // Funções $obj_funcoes = new clsPmieducarServidorFuncao(); $lst_funcoes = $obj_funcoes->lista($this->ref_cod_instituicao, $this->cod_servidor); diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php index a434e41..6db886d 100644 --- a/ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php +++ b/ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php @@ -58,7 +58,7 @@ class clsPmieducarServidorAlocacao * Carga horária máxima para um período de alocação (em horas). * @var float */ - static $cargaHorariaMax = 6.0; + static $cargaHorariaMax = 36.0; /** * Armazena o total de resultados obtidos na última chamada ao método lista(). diff --git a/ieducar/misc/database/deltas/24_altera_tipo_campo_carga_horaria_pmieducar_servidor_alocacao.sql b/ieducar/misc/database/deltas/24_altera_tipo_campo_carga_horaria_pmieducar_servidor_alocacao.sql new file mode 100644 index 0000000..c1440f0 --- /dev/null +++ b/ieducar/misc/database/deltas/24_altera_tipo_campo_carga_horaria_pmieducar_servidor_alocacao.sql @@ -0,0 +1,20 @@ +-- // + +-- +-- Altera o tipo da coluna carga_horaria de pmieducar.servidor_alocacao para +-- possibilitar a alocação de um servidor por mais de 24h em um período de aula +-- (matutino, vespertino, noturno). +-- +-- @author Eriksen Costa Paixão +-- @license @@license@@ +-- @version $Id$ +-- + +ALTER TABLE pmieducar.servidor_alocacao ALTER carga_horaria TYPE character varying(8); + +-- //@UNDO + +-- Não é possível converter uma coluna character varying para time. Caso +-- necessário, um script de rotação de dados deverá ser criado. + +-- // \ No newline at end of file diff --git a/ieducar/misc/database/ieducar.sql b/ieducar/misc/database/ieducar.sql index 4fbeb4d..b411408 100644 --- a/ieducar/misc/database/ieducar.sql +++ b/ieducar/misc/database/ieducar.sql @@ -14401,7 +14401,7 @@ CREATE TABLE servidor_alocacao ( data_cadastro timestamp without time zone NOT NULL, data_exclusao timestamp without time zone, ativo smallint DEFAULT (1)::smallint NOT NULL, - carga_horaria time without time zone, + carga_horaria character varying(8), periodo smallint DEFAULT (1)::smallint, hora_final time without time zone, hora_inicial time without time zone, @@ -20135,6 +20135,7 @@ INSERT INTO changelog VALUES (20, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '20_remo INSERT INTO changelog VALUES (21, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '21_cria_tabelas_modulo_calendario.sql'); INSERT INTO changelog VALUES (22, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '22_cria_primary_key_em_modules_calendario_turma.sql'); INSERT INTO changelog VALUES (23, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '23_cria_tabela_modules_componente_curricular_turma.sql'); +INSERT INTO changelog VALUES (24, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '24_altera_tipo_campo_carga_horaria_pmieducar_servidor_alocacao.sql'); -- -- libgit2 0.21.2