Commit b8464ff7284e9dd438d64962ef71bc67f087f39f

Authored by Eriksen Costa
1 parent 70d5ef92
Exists in master

Atualizado cadastro de Alocação de Servidor:

 * O limite de 24 horas para uma locação foi removido, campo {{{carga_horaria}}} de {{{pmieducar.servidor_alocacao}}} agora é do tipo ''character varying''
 * Limite de 6h de alocação por período foi alterado para 36h por padrão (6 dias x 6 horas)
 * Cálculo de total de horas alocadas foi corrigido
ieducar/intranet/educar_servidor_alocacao_cad.php
... ... @@ -214,37 +214,25 @@ class indice extends clsCadastro
214 214 }
215 215  
216 216 // Carga horária
217   - $total_horas = sprintf('%02d', (int) (floor($this->carga_horaria_disponivel)));
218   - $total_horas = sprintf('%02d', (int) (floor($this->carga_horaria_disponivel)));
219   - $total_minutos = sprintf('%02d', (int) ((floatval($this->carga_horaria_disponivel) - floatval($total_horas)) * 60));
  217 + $carga = $this->carga_horaria_disponivel;
  218 + $this->campoRotulo('carga_horaria_disponivel', 'Carga Horária', $carga . ':00');
220 219  
221   - $horas_utilizadas = 0;
222   - $minutos_utilizados = 0;
  220 + foreach ($this->alocacao_array as $alocacao) {
  221 + $carga_horaria_ = explode(':', $alocacao['carga_horaria_alocada']);
223 222  
224   - if ($this->alocacao_array) {
225   - foreach ($this->alocacao_array as $alocacao) {
226   - $carga_horaria_ = explode(':', $alocacao['carga_horaria_alocada']);
227   -
228   - $horas_utilizadas += ($carga_horaria_[0]);
229   - $minutos_utilizados += ($carga_horaria_[1]);
230   - }
  223 + $horas += (int) $carga_horaria_[0];
  224 + $minutos += (int) $carga_horaria_[1];
231 225 }
232 226  
233   - $horas = sprintf('%02d', (int) $horas_utilizadas);
234   - $minutos = sprintf('%02d', (int) $minutos_utilizados);
235   - $str_horas_utilizadas = sprintf('%s:%s', $horas, $minutos);
236   -
237   - $this->campoRotulo('carga_horaria_disponivel', 'Carga Horária',
238   - sprintf('%s:%s', $total_horas, $total_minutos));
  227 + $total = ($horas * 60) + $minutos;
  228 + $rest = ($carga * 60) - $total;
239 229  
240   - $this->campoRotulo('horas_utilizadas', 'Horas Utilizadas', $str_horas_utilizadas);
  230 + $total = sprintf('%02d:%02d', ($total / 60), ($total % 60));
  231 + $rest = sprintf('%02d:%02d', ($rest / 60), ($rest % 60));
241 232  
242   - $horas = sprintf('%02d', (int) $total_horas - $horas_utilizadas);
243   - $minutos = sprintf('%02d', (int) $total_minutos - $minutos_utilizados);
244   - $str_horas_restantes = sprintf('%s:%s', $horas, $minutos);
245   -
246   - $this->campoRotulo('horas_restantes', 'Horas Restantes', $str_horas_restantes);
247   - $this->campoOculto('horas_restantes_', $str_horas_restantes);
  233 + $this->campoRotulo('horas_utilizadas', 'Horas Utilizadas', $total);
  234 + $this->campoRotulo('horas_restantes', 'Horas Restantes', $rest);
  235 + $this->campoOculto('horas_restantes_', $rest);
248 236  
249 237 $this->campoQuebra();
250 238  
... ... @@ -264,7 +252,7 @@ class indice extends clsCadastro
264 252 $nome_escola = $lista_escola[0]['nome'];
265 253 $cod_escola = $lista_escola[0]['cod_escola'];
266 254  
267   - $this->campoTextoInv('ref_cod_escola_label', 'Escola', $nome_escola);
  255 + $this->campoTextoInv('ref_cod_escola_label', 'Escola', $nome_escola, 100, 255, FALSE);
268 256 $this->campoOculto('ref_cod_escola', $cod_escola);
269 257 }
270 258 // Usuário administrador visualiza todas as escolas disponíveis
... ... @@ -317,14 +305,22 @@ class indice extends clsCadastro
317 305 $obj_permissoes = new clsPermissoes();
318 306 $link_excluir = '';
319 307  
320   - if ($obj_permissoes->permissao_excluir(635, $this->pessoa_logada, 7)) {
321   - $link_excluir = "<a href='#' onclick=\"getElementById('excluir_periodo').value = '{$key}'; getElementById('tipoacao').value = ''; {$this->__nome}.submit();\"><img src='imagens/nvp_bola_xis.gif' title='Excluir' border=0></a>";
322   - }
323   -
324 308 $obj_escola = new clsPmieducarEscola($alocacao['ref_cod_escola']);
325 309 $det_escola = $obj_escola->detalhe();
326 310 $det_escola = $det_escola['nome'];
327 311  
  312 + if ($obj_permissoes->permissao_excluir(635, $this->pessoa_logada, 7)) {
  313 +
  314 + $show = TRUE;
  315 + if (4 == $permissao->nivel_acesso($this->pessoa_logada)
  316 + && $alocacao['ref_cod_escola'] != $permissao->getEscola($this->pessoa_logada)
  317 + ) {
  318 + $show = FALSE;
  319 + }
  320 +
  321 + $link_excluir = $show ? "<a href='#' onclick=\"getElementById('excluir_periodo').value = '{$key}'; getElementById('tipoacao').value = ''; {$this->__nome}.submit();\"><img src='imagens/nvp_bola_xis.gif' title='Excluir' border=0></a>" : "";
  322 + }
  323 +
328 324 // @todo CoreExt_Enum
329 325 switch ($alocacao['periodo']) {
330 326 case 1:
... ... @@ -345,10 +341,10 @@ class indice extends clsCadastro
345 341 FALSE, TRUE, '', '', '', '', 'periodo');
346 342  
347 343 $this->campoTextoInv('carga_horaria_alocada_' . $key, '',
348   - $alocacao['carga_horaria_alocada'], 5, 5, FALSE, FALSE, TRUE, '', '',
  344 + substr($alocacao['carga_horaria_alocada'], 0, 5), 5, 5, FALSE, FALSE, TRUE, '', '',
349 345 '', '', 'ds_carga_horaria_');
350 346  
351   - $this->campoTextoInv('ref_cod_escola_' . $key, '', $det_escola, 30, 255,
  347 + $this->campoTextoInv('ref_cod_escola_' . $key, '', $det_escola, 70, 255,
352 348 FALSE, FALSE, FALSE, '', $link_excluir, '', '', 'ref_cod_escola_');
353 349 }
354 350 }
... ... @@ -411,14 +407,23 @@ class indice extends clsCadastro
411 407 if ($this->alocacao_array) {
412 408 foreach ($this->alocacao_array as $alocacao) {
413 409 if ($alocacao['novo']) {
  410 + $cargaHoraria = explode(':', $alocacao['carga_horaria_alocada']);
  411 +
  412 + $hora = isset($cargaHoraria[0]) ? $cargaHoraria[0] : 0;
  413 + $minuto = isset($cargaHoraria[1]) ? $cargaHoraria[1] : 0;
  414 + $segundo = isset($cargaHoraria[2]) ? $cargaHoraria[2] : 0;
  415 +
  416 + $cargaHoraria = sprintf("%'02d:%'02d:%'02d", $hora, $minuto, $segundo);
  417 +
414 418 $obj = new clsPmieducarServidorAlocacao(NULL, $this->ref_ref_cod_instituicao,
415 419 NULL, $this->pessoa_logada, $alocacao['ref_cod_escola'],
416 420 $this->ref_cod_servidor, NULL, NULL, $this->ativo,
417   - $alocacao['carga_horaria_alocada'], $alocacao['periodo']);
  421 + $cargaHoraria, $alocacao['periodo']);
418 422  
419 423 $cadastrou = FALSE;
  424 +
420 425 if (FALSE == $obj->lista(NULL, $this->ref_ref_cod_instituicao,
421   - NULL, NULL, $alocacao['escola'], $this->ref_cod_servidor, NULL, NULL,
  426 + NULL, NULL, $alocacao['ref_cod_escola'], $this->ref_cod_servidor, NULL, NULL,
422 427 NULL, NULL, NULL, NULL, $alocacao['periodo'])
423 428 ) {
424 429 $cadastrou = $obj->cadastra();
... ... @@ -520,7 +525,8 @@ function validaHora()
520 525 hora_restantes_ = Date.UTC(1970, 01, 01, horas_restantes[0], horas_restantes[1], 0);
521 526  
522 527 if (hora_ > hora_max_) {
523   - alert("O número de horas máximo por período/escola é de 6h.");
  528 + message = <?php print sprintf('"O número de horas máximo por período/escola é de %.0fh."', clsPmieducarServidorAlocacao::$cargaHorariaMax); ?>;
  529 + alert(message);
524 530 return false;
525 531 }
526 532  
... ...
ieducar/intranet/educar_servidor_cad.php
... ... @@ -116,17 +116,29 @@ class indice extends clsCadastro
116 116 }
117 117  
118 118 $db = new clsBanco();
119   - $consulta = sprintf("
120   - SELECT
121   - SUBSTR(COALESCE(SUM(carga_horaria), '00:00'), 0, 6) AS horas_utilizadas
  119 +
  120 + // Carga horária alocada
  121 + $sql = sprintf("SELECT
  122 + carga_horaria
122 123 FROM
123 124 pmieducar.servidor_alocacao
124 125 WHERE
125 126 ref_cod_servidor = '%d' AND
126 127 ativo = 1", $this->cod_servidor);
127 128  
128   - $this->total_horas_alocadas = $db->CampoUnico($consulta);
  129 + $db->Consulta($sql);
  130 +
  131 + $carga = 0;
  132 + while ($db->ProximoRegistro()) {
  133 + $cargaHoraria = $db->Tupla();
  134 + $cargaHoraria = explode(':', $cargaHoraria['carga_horaria']);
  135 + $carga += $cargaHoraria[0] * 60 + $cargaHoraria[1];
  136 + }
  137 +
  138 + $this->total_horas_alocadas = sprintf('%02d:%02d',
  139 + $carga / 60, $carga % 60);
129 140  
  141 + // Funções
130 142 $obj_funcoes = new clsPmieducarServidorFuncao();
131 143 $lst_funcoes = $obj_funcoes->lista($this->ref_cod_instituicao, $this->cod_servidor);
132 144  
... ...
ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php
... ... @@ -58,7 +58,7 @@ class clsPmieducarServidorAlocacao
58 58 * Carga horária máxima para um período de alocação (em horas).
59 59 * @var float
60 60 */
61   - static $cargaHorariaMax = 6.0;
  61 + static $cargaHorariaMax = 36.0;
62 62  
63 63 /**
64 64 * Armazena o total de resultados obtidos na última chamada ao método lista().
... ...
ieducar/misc/database/deltas/24_altera_tipo_campo_carga_horaria_pmieducar_servidor_alocacao.sql 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +-- //
  2 +
  3 +--
  4 +-- Altera o tipo da coluna carga_horaria de pmieducar.servidor_alocacao para
  5 +-- possibilitar a alocação de um servidor por mais de 24h em um período de aula
  6 +-- (matutino, vespertino, noturno).
  7 +--
  8 +-- @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  9 +-- @license @@license@@
  10 +-- @version $Id$
  11 +--
  12 +
  13 +ALTER TABLE pmieducar.servidor_alocacao ALTER carga_horaria TYPE character varying(8);
  14 +
  15 +-- //@UNDO
  16 +
  17 +-- Não é possível converter uma coluna character varying para time. Caso
  18 +-- necessário, um script de rotação de dados deverá ser criado.
  19 +
  20 +-- //
0 21 \ No newline at end of file
... ...
ieducar/misc/database/ieducar.sql
... ... @@ -14401,7 +14401,7 @@ CREATE TABLE servidor_alocacao (
14401 14401 data_cadastro timestamp without time zone NOT NULL,
14402 14402 data_exclusao timestamp without time zone,
14403 14403 ativo smallint DEFAULT (1)::smallint NOT NULL,
14404   - carga_horaria time without time zone,
  14404 + carga_horaria character varying(8),
14405 14405 periodo smallint DEFAULT (1)::smallint,
14406 14406 hora_final time without time zone,
14407 14407 hora_inicial time without time zone,
... ... @@ -20135,6 +20135,7 @@ INSERT INTO changelog VALUES (20, &#39;Main&#39;, &#39;NOW()&#39;, &#39;NOW()&#39;, &#39;dbdeploy&#39;, &#39;20_remo
20135 20135 INSERT INTO changelog VALUES (21, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '21_cria_tabelas_modulo_calendario.sql');
20136 20136 INSERT INTO changelog VALUES (22, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '22_cria_primary_key_em_modules_calendario_turma.sql');
20137 20137 INSERT INTO changelog VALUES (23, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '23_cria_tabela_modules_componente_curricular_turma.sql');
  20138 +INSERT INTO changelog VALUES (24, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '24_altera_tipo_campo_carga_horaria_pmieducar_servidor_alocacao.sql');
20138 20139  
20139 20140  
20140 20141 --
... ...