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,37 +214,25 @@ class indice extends clsCadastro
214 } 214 }
215 215
216 // Carga horária 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 $this->campoQuebra(); 237 $this->campoQuebra();
250 238
@@ -264,7 +252,7 @@ class indice extends clsCadastro @@ -264,7 +252,7 @@ class indice extends clsCadastro
264 $nome_escola = $lista_escola[0]['nome']; 252 $nome_escola = $lista_escola[0]['nome'];
265 $cod_escola = $lista_escola[0]['cod_escola']; 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 $this->campoOculto('ref_cod_escola', $cod_escola); 256 $this->campoOculto('ref_cod_escola', $cod_escola);
269 } 257 }
270 // Usuário administrador visualiza todas as escolas disponíveis 258 // Usuário administrador visualiza todas as escolas disponíveis
@@ -317,14 +305,22 @@ class indice extends clsCadastro @@ -317,14 +305,22 @@ class indice extends clsCadastro
317 $obj_permissoes = new clsPermissoes(); 305 $obj_permissoes = new clsPermissoes();
318 $link_excluir = ''; 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 $obj_escola = new clsPmieducarEscola($alocacao['ref_cod_escola']); 308 $obj_escola = new clsPmieducarEscola($alocacao['ref_cod_escola']);
325 $det_escola = $obj_escola->detalhe(); 309 $det_escola = $obj_escola->detalhe();
326 $det_escola = $det_escola['nome']; 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 // @todo CoreExt_Enum 324 // @todo CoreExt_Enum
329 switch ($alocacao['periodo']) { 325 switch ($alocacao['periodo']) {
330 case 1: 326 case 1:
@@ -345,10 +341,10 @@ class indice extends clsCadastro @@ -345,10 +341,10 @@ class indice extends clsCadastro
345 FALSE, TRUE, '', '', '', '', 'periodo'); 341 FALSE, TRUE, '', '', '', '', 'periodo');
346 342
347 $this->campoTextoInv('carga_horaria_alocada_' . $key, '', 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 '', '', 'ds_carga_horaria_'); 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 FALSE, FALSE, FALSE, '', $link_excluir, '', '', 'ref_cod_escola_'); 348 FALSE, FALSE, FALSE, '', $link_excluir, '', '', 'ref_cod_escola_');
353 } 349 }
354 } 350 }
@@ -411,14 +407,23 @@ class indice extends clsCadastro @@ -411,14 +407,23 @@ class indice extends clsCadastro
411 if ($this->alocacao_array) { 407 if ($this->alocacao_array) {
412 foreach ($this->alocacao_array as $alocacao) { 408 foreach ($this->alocacao_array as $alocacao) {
413 if ($alocacao['novo']) { 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 $obj = new clsPmieducarServidorAlocacao(NULL, $this->ref_ref_cod_instituicao, 418 $obj = new clsPmieducarServidorAlocacao(NULL, $this->ref_ref_cod_instituicao,
415 NULL, $this->pessoa_logada, $alocacao['ref_cod_escola'], 419 NULL, $this->pessoa_logada, $alocacao['ref_cod_escola'],
416 $this->ref_cod_servidor, NULL, NULL, $this->ativo, 420 $this->ref_cod_servidor, NULL, NULL, $this->ativo,
417 - $alocacao['carga_horaria_alocada'], $alocacao['periodo']); 421 + $cargaHoraria, $alocacao['periodo']);
418 422
419 $cadastrou = FALSE; 423 $cadastrou = FALSE;
  424 +
420 if (FALSE == $obj->lista(NULL, $this->ref_ref_cod_instituicao, 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 NULL, NULL, NULL, NULL, $alocacao['periodo']) 427 NULL, NULL, NULL, NULL, $alocacao['periodo'])
423 ) { 428 ) {
424 $cadastrou = $obj->cadastra(); 429 $cadastrou = $obj->cadastra();
@@ -520,7 +525,8 @@ function validaHora() @@ -520,7 +525,8 @@ function validaHora()
520 hora_restantes_ = Date.UTC(1970, 01, 01, horas_restantes[0], horas_restantes[1], 0); 525 hora_restantes_ = Date.UTC(1970, 01, 01, horas_restantes[0], horas_restantes[1], 0);
521 526
522 if (hora_ > hora_max_) { 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 return false; 530 return false;
525 } 531 }
526 532
ieducar/intranet/educar_servidor_cad.php
@@ -116,17 +116,29 @@ class indice extends clsCadastro @@ -116,17 +116,29 @@ class indice extends clsCadastro
116 } 116 }
117 117
118 $db = new clsBanco(); 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 FROM 123 FROM
123 pmieducar.servidor_alocacao 124 pmieducar.servidor_alocacao
124 WHERE 125 WHERE
125 ref_cod_servidor = '%d' AND 126 ref_cod_servidor = '%d' AND
126 ativo = 1", $this->cod_servidor); 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 $obj_funcoes = new clsPmieducarServidorFuncao(); 142 $obj_funcoes = new clsPmieducarServidorFuncao();
131 $lst_funcoes = $obj_funcoes->lista($this->ref_cod_instituicao, $this->cod_servidor); 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,7 +58,7 @@ class clsPmieducarServidorAlocacao
58 * Carga horária máxima para um período de alocação (em horas). 58 * Carga horária máxima para um período de alocação (em horas).
59 * @var float 59 * @var float
60 */ 60 */
61 - static $cargaHorariaMax = 6.0; 61 + static $cargaHorariaMax = 36.0;
62 62
63 /** 63 /**
64 * Armazena o total de resultados obtidos na última chamada ao método lista(). 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 @@ @@ -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 \ No newline at end of file 21 \ No newline at end of file
ieducar/misc/database/ieducar.sql
@@ -14401,7 +14401,7 @@ CREATE TABLE servidor_alocacao ( @@ -14401,7 +14401,7 @@ CREATE TABLE servidor_alocacao (
14401 data_cadastro timestamp without time zone NOT NULL, 14401 data_cadastro timestamp without time zone NOT NULL,
14402 data_exclusao timestamp without time zone, 14402 data_exclusao timestamp without time zone,
14403 ativo smallint DEFAULT (1)::smallint NOT NULL, 14403 ativo smallint DEFAULT (1)::smallint NOT NULL,
14404 - carga_horaria time without time zone, 14404 + carga_horaria character varying(8),
14405 periodo smallint DEFAULT (1)::smallint, 14405 periodo smallint DEFAULT (1)::smallint,
14406 hora_final time without time zone, 14406 hora_final time without time zone,
14407 hora_inicial time without time zone, 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,6 +20135,7 @@ INSERT INTO changelog VALUES (20, &#39;Main&#39;, &#39;NOW()&#39;, &#39;NOW()&#39;, &#39;dbdeploy&#39;, &#39;20_remo
20135 INSERT INTO changelog VALUES (21, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '21_cria_tabelas_modulo_calendario.sql'); 20135 INSERT INTO changelog VALUES (21, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '21_cria_tabelas_modulo_calendario.sql');
20136 INSERT INTO changelog VALUES (22, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '22_cria_primary_key_em_modules_calendario_turma.sql'); 20136 INSERT INTO changelog VALUES (22, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '22_cria_primary_key_em_modules_calendario_turma.sql');
20137 INSERT INTO changelog VALUES (23, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '23_cria_tabela_modules_componente_curricular_turma.sql'); 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 --