Commit b8464ff7284e9dd438d64962ef71bc67f087f39f
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
Showing
5 changed files
with
80 additions
and
41 deletions
Show diff stats
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, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '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 | -- | ... | ... |