Commit 9e4daec81a410e9b834ad959be8f9bbe52c9c1e3
1 parent
2e565aac
Exists in
master
Implementa o encaminhamento para categoria
git-svn-id: http://svn.softwarepublico.gov.br/svn/sistemadeatendimento/sistema/trunk@20 63db2ce5-8a6c-0410-abb9-a418dd412890
Showing
12 changed files
with
272 additions
and
114 deletions
Show diff stats
Fila-Servico/lib/Fila/Servico/Controller/WS/Gestao/Atendente.pm
@@ -740,14 +740,11 @@ sub encaminhar_atendimento :WSDLPort('GestaoAtendente') :DBICTransaction('DB') : | @@ -740,14 +740,11 @@ sub encaminhar_atendimento :WSDLPort('GestaoAtendente') :DBICTransaction('DB') : | ||
740 | my ($self, $c, $query) = @_; | 740 | my ($self, $c, $query) = @_; |
741 | 741 | ||
742 | my $now = $c->stash->{now}; | 742 | my $now = $c->stash->{now}; |
743 | - | 743 | + |
744 | my $guiche_origem = $c->model('DB::Guiche')->find | 744 | my $guiche_origem = $c->model('DB::Guiche')->find |
745 | ( id_guiche => $c->stash->{guiche}->id_guiche ); | 745 | ( id_guiche => $c->stash->{guiche}->id_guiche ); |
746 | - | ||
747 | - my $outro_guiche = $c->model('DB::Guiche')->find | ||
748 | - ( $query->{guiche} ); | ||
749 | 746 | ||
750 | - my $motivo = $query->{guiche}{pausa_motivo}; | 747 | + my $motivo = $query->{encaminhamento}{informacoes}; |
751 | unless ($motivo) { | 748 | unless ($motivo) { |
752 | die $c->stash->{soap}->fault | 749 | die $c->stash->{soap}->fault |
753 | ({ code => 'Server', | 750 | ({ code => 'Server', |
@@ -755,13 +752,6 @@ sub encaminhar_atendimento :WSDLPort('GestaoAtendente') :DBICTransaction('DB') : | @@ -755,13 +752,6 @@ sub encaminhar_atendimento :WSDLPort('GestaoAtendente') :DBICTransaction('DB') : | ||
755 | detail => 'E necessário um motivo para o encaminhamento.' }); | 752 | detail => 'E necessário um motivo para o encaminhamento.' }); |
756 | } | 753 | } |
757 | 754 | ||
758 | - unless ($outro_guiche) { | ||
759 | - die $c->stash->{soap}->fault | ||
760 | - ({ code => 'Server', | ||
761 | - reason => 'Guiche Invalido', | ||
762 | - detail => 'Nao conseguiu encontrar guiche.' }); | ||
763 | - } | ||
764 | - | ||
765 | my $atendimento = $c->stash->{guiche}->atendimento_atual->first; | 755 | my $atendimento = $c->stash->{guiche}->atendimento_atual->first; |
766 | 756 | ||
767 | unless ($atendimento) { | 757 | unless ($atendimento) { |
@@ -796,13 +786,35 @@ sub encaminhar_atendimento :WSDLPort('GestaoAtendente') :DBICTransaction('DB') : | @@ -796,13 +786,35 @@ sub encaminhar_atendimento :WSDLPort('GestaoAtendente') :DBICTransaction('DB') : | ||
796 | vt_fim => 'Infinity', | 786 | vt_fim => 'Infinity', |
797 | id_estado => $estado_encaminhado->id_estado }); | 787 | id_estado => $estado_encaminhado->id_estado }); |
798 | 788 | ||
799 | - $outro_guiche->encaminhamentos->create | ||
800 | - ({ vt_ini => $now, | ||
801 | - vt_fim => 'Infinity', | ||
802 | - id_atendimento => $atendimento->id_atendimento, | ||
803 | - id_guiche_origem => $guiche_origem->id_guiche, | ||
804 | - informacoes => $motivo | ||
805 | - }); | 789 | + if ($query->{encaminhamento}{id_guiche}) { |
790 | + my $outro_guiche = $c->model('DB::Guiche') | ||
791 | + ->find({ id_guiche => $query->{encaminhamento}{id_guiche} }) | ||
792 | + or die $c->stash->{soap}->fault | ||
793 | + ({ code => 'Server', | ||
794 | + reason => 'Nao encontrou guiche', | ||
795 | + detail => 'O guiche informado não existe.' }); | ||
796 | + | ||
797 | + $outro_guiche->encaminhamentos->create | ||
798 | + ({ vt_ini => $now, | ||
799 | + vt_fim => 'Infinity', | ||
800 | + id_atendimento => $atendimento->id_atendimento, | ||
801 | + id_guiche_origem => $guiche_origem->id_guiche, | ||
802 | + informacoes => $motivo }); | ||
803 | + } elsif ($query->{encaminhamento}{id_categoria}) { | ||
804 | + $c->stash->{local}->encaminhamentos_categoria->create | ||
805 | + ({ id_categoria => $query->{encaminhamento}{id_categoria}, | ||
806 | + vt_ini => $now, | ||
807 | + vt_fim => 'Infinity', | ||
808 | + id_atendimento => $atendimento->id_atendimento, | ||
809 | + id_guiche_origem => $guiche_origem->id_guiche, | ||
810 | + informacoes => $motivo }); | ||
811 | + | ||
812 | + } else { | ||
813 | + die $c->stash->{soap}->fault | ||
814 | + ({ code => 'Client', | ||
815 | + reason => 'Faltou parâmetros', | ||
816 | + detail => 'É preciso indicar ou um guiche ou uma categoria' }); | ||
817 | + } | ||
806 | 818 | ||
807 | $c->stash->{guiche}->estado_atual->first->update | 819 | $c->stash->{guiche}->estado_atual->first->update |
808 | ({ vt_fim => $now }); | 820 | ({ vt_fim => $now }); |
Fila-Servico/lib/Fila/Servico/Controller/WS/Gestao/Guiche.pm
@@ -99,6 +99,29 @@ sub listar_guiches :WSDLPort('GestaoGuiche') :DBICTransaction('DB') :MI { | @@ -99,6 +99,29 @@ sub listar_guiches :WSDLPort('GestaoGuiche') :DBICTransaction('DB') :MI { | ||
99 | ({ lista_guiches => { guiche => $lista_guiches } }); | 99 | ({ lista_guiches => { guiche => $lista_guiches } }); |
100 | } | 100 | } |
101 | 101 | ||
102 | +sub listar_categorias :WSDLPort('GestaoGuiche') :DBICTransaction('DB') :MI { | ||
103 | + my ($self, $c, $query) = @_; | ||
104 | + my $now = $c->stash->{now}; | ||
105 | + | ||
106 | + my $categorias = $c->stash->{local}->configuracoes_categoria->search | ||
107 | + ({ 'me.vt_ini' => { '<=', $now }, | ||
108 | + 'me.vt_fim' => { '>', $now }}, | ||
109 | + { prefetch => 'categoria', | ||
110 | + order_by => 'codigo' }); | ||
111 | + | ||
112 | + my $lista_categorias = []; | ||
113 | + | ||
114 | + while (my $categoria = $categorias->next) { | ||
115 | + my $ca = $categoria->categoria; | ||
116 | + push @$lista_categorias, | ||
117 | + {( map { $_ => $ca->$_() } | ||
118 | + qw/id_categoria codigo nome/ )}; | ||
119 | + } | ||
120 | + | ||
121 | + $c->stash->{soap}->compile_return | ||
122 | + ({ lista_categorias => { categoria => $lista_categorias } }); | ||
123 | +} | ||
124 | + | ||
102 | sub abrir_guiche :WSDLPort('GestaoGuiche') :DBICTransaction('DB') :MI { | 125 | sub abrir_guiche :WSDLPort('GestaoGuiche') :DBICTransaction('DB') :MI { |
103 | my ($self, $c, $query) = @_; | 126 | my ($self, $c, $query) = @_; |
104 | 127 |
Fila-Servico/lib/Fila/Servico/Controller/WS/Gestao/Local.pm
@@ -22,6 +22,7 @@ use Net::XMPP2::Util 'bare_jid'; | @@ -22,6 +22,7 @@ use Net::XMPP2::Util 'bare_jid'; | ||
22 | use DateTime; | 22 | use DateTime; |
23 | use DateTime::Format::Pg; | 23 | use DateTime::Format::Pg; |
24 | use DateTime::Format::XSD; | 24 | use DateTime::Format::XSD; |
25 | +use List::Util qw(reduce); | ||
25 | use Carp qw(croak); | 26 | use Carp qw(croak); |
26 | use base | 27 | use base |
27 | 'Fila::Servico::Controller', | 28 | 'Fila::Servico::Controller', |
@@ -240,7 +241,7 @@ sub status_local :WSDLPort('GestaoLocal') :DBICTransaction('DB') :MI { | @@ -240,7 +241,7 @@ sub status_local :WSDLPort('GestaoLocal') :DBICTransaction('DB') :MI { | ||
240 | 241 | ||
241 | my $estado_local_aberto = $c->model('DB::TipoEstadoLocal')->find | 242 | my $estado_local_aberto = $c->model('DB::TipoEstadoLocal')->find |
242 | ({ nome => 'aberto' }); | 243 | ({ nome => 'aberto' }); |
243 | - | 244 | + |
244 | unless ($estado_local_aberto) { | 245 | unless ($estado_local_aberto) { |
245 | die $c->stash->{soap}->fault | 246 | die $c->stash->{soap}->fault |
246 | ({code => 'Server', | 247 | ({code => 'Server', |
@@ -257,7 +258,7 @@ sub status_local :WSDLPort('GestaoLocal') :DBICTransaction('DB') :MI { | @@ -257,7 +258,7 @@ sub status_local :WSDLPort('GestaoLocal') :DBICTransaction('DB') :MI { | ||
257 | print STDERR "O hash é ", Data::Dumper::Dumper( \$gerente ), "\n"; | 258 | print STDERR "O hash é ", Data::Dumper::Dumper( \$gerente ), "\n"; |
258 | 259 | ||
259 | # agora tah faltando 'mandar 'o $gerente para ser mostrado no template | 260 | # agora tah faltando 'mandar 'o $gerente para ser mostrado no template |
260 | - | 261 | + |
261 | # obter o tempo maximo em espera por categoria, | 262 | # obter o tempo maximo em espera por categoria, |
262 | # o agregado pode ser obtido sem outra consulta. | 263 | # o agregado pode ser obtido sem outra consulta. |
263 | my $lista = $c->stash->{local}->configuracoes_categoria_atual->search | 264 | my $lista = $c->stash->{local}->configuracoes_categoria_atual->search |
@@ -416,49 +417,42 @@ sub status_local :WSDLPort('GestaoLocal') :DBICTransaction('DB') :MI { | @@ -416,49 +417,42 @@ sub status_local :WSDLPort('GestaoLocal') :DBICTransaction('DB') :MI { | ||
416 | 417 | ||
417 | my $estado_local = $c->stash->{local}->estado_atual->search | 418 | my $estado_local = $c->stash->{local}->estado_atual->search |
418 | ({ }, | 419 | ({ }, |
419 | - { | ||
420 | - prefetch => 'estado' })->first; | 420 | + { prefetch => 'estado' })->first; |
421 | 421 | ||
422 | #encaminhamentos | 422 | #encaminhamentos |
423 | 423 | ||
424 | #pegar ultimo vt_ini do ultimo estadoaberto do local. | 424 | #pegar ultimo vt_ini do ultimo estadoaberto do local. |
425 | my $ultimo_aberto = $c->stash->{local}->estados->search | 425 | my $ultimo_aberto = $c->stash->{local}->estados->search |
426 | - ({ | ||
427 | - 'estado.nome' => $estado_local_aberto->nome }, { | ||
428 | - join => 'estado', | ||
429 | - order_by => 'vt_ini DESC' | ||
430 | - })->first; | 426 | + ({ 'estado.nome' => $estado_local_aberto->nome }, |
427 | + { join => 'estado', | ||
428 | + order_by => 'vt_ini DESC' })->first; | ||
431 | 429 | ||
432 | my $total_enc=0; | 430 | my $total_enc=0; |
433 | my $total_enc_abertos=0; | 431 | my $total_enc_abertos=0; |
434 | 432 | ||
435 | if ($ultimo_aberto) { | 433 | if ($ultimo_aberto) { |
436 | 434 | ||
437 | - my $enc = $c->model('DB::GuicheEncaminhamento')->find( | ||
438 | - { | ||
439 | - 'me.vt_ini' => { '>=', $ultimo_aberto->get_column('vt_ini') } | ||
440 | - }, | ||
441 | - { | ||
442 | - select => [ { count => 'me.id_atendimento' } ], | ||
443 | - as => [ 'encaminhamentos' ] | ||
444 | - } | ||
445 | - ); | ||
446 | - | ||
447 | - $total_enc = $enc->get_column('encaminhamentos'); | ||
448 | - | ||
449 | - #encaminhamentos ainda sem atendimento | ||
450 | - $enc = $c->model('DB::GuicheEncaminhamento')->find( | ||
451 | - { | ||
452 | - 'me.vt_ini' => { '>=', $ultimo_aberto->get_column('vt_ini') }, | ||
453 | - 'me.vt_fim' => 'Infinity' | ||
454 | - }, | ||
455 | - { | ||
456 | - select => [ { count => 'me.id_atendimento' } ], | ||
457 | - as => [ 'encaminhamentos' ] | ||
458 | - } | ||
459 | - ); | ||
460 | - | ||
461 | - $total_enc_abertos = $enc->get_column('encaminhamentos'); | 435 | + my @e_g = $c->model('DB::GuicheEncaminhamento')->search |
436 | + ({ 'me.vt_ini' => { '>=', $ultimo_aberto->get_column('vt_ini') }}, | ||
437 | + { select => [ { count => 'me.id_atendimento' }, | ||
438 | + \"CASE WHEN vt_fim > NOW() THEN 1 ELSE 0 END" ], | ||
439 | + as => [ 'encaminhamentos', | ||
440 | + 'esperando' ], | ||
441 | + group_by => \"CASE WHEN vt_fim > NOW() THEN 1 ELSE 0 END" })->all; | ||
442 | + | ||
443 | + my @e_c = $c->model('DB::CategoriaEncaminhamento')->search | ||
444 | + ({ 'me.vt_ini' => { '>=', $ultimo_aberto->get_column('vt_ini') }}, | ||
445 | + { select => [ { count => 'me.id_atendimento' }, | ||
446 | + \"CASE WHEN vt_fim > NOW() THEN 1 ELSE 0 END" ], | ||
447 | + as => [ 'encaminhamentos', | ||
448 | + 'esperando' ], | ||
449 | + group_by => \"CASE WHEN vt_fim > NOW() THEN 1 ELSE 0 END" })->all; | ||
450 | + | ||
451 | + my @tot = (@e_g, @e_c); | ||
452 | + my @esp = grep { $_->get_column('esperando') } @tot; | ||
453 | + | ||
454 | + $total_enc = reduce { $a + $b->get_column('encaminhamentos') } 0, @tot; | ||
455 | + $total_enc_abertos = reduce { $a + $b->get_column('encaminhamentos') } 0, @esp; | ||
462 | } | 456 | } |
463 | 457 | ||
464 | return $c->stash->{soap}->compile_return | 458 | return $c->stash->{soap}->compile_return |
@@ -801,28 +795,44 @@ sub escalonar_senha :WSDLPort('GestaoLocal') :DBICTransaction('DB') :MI { | @@ -801,28 +795,44 @@ sub escalonar_senha :WSDLPort('GestaoLocal') :DBICTransaction('DB') :MI { | ||
801 | # de categorias. | 795 | # de categorias. |
802 | my @ids = map { $_->id_categoria } $guiche->categorias_atuais; | 796 | my @ids = map { $_->id_categoria } $guiche->categorias_atuais; |
803 | my %restringir; | 797 | my %restringir; |
798 | + my %restringir_c; | ||
804 | if (@ids) { | 799 | if (@ids) { |
805 | %restringir = ( 'categoria_atual.id_categoria' => { 'IN' => \@ids }); | 800 | %restringir = ( 'categoria_atual.id_categoria' => { 'IN' => \@ids }); |
801 | + %restringir_c = ( 'id_categoria' => { 'IN' => \@ids }); | ||
806 | } | 802 | } |
807 | 803 | ||
808 | - # descobrir os atendimentos em espera. O escalonamento vai ter o | ||
809 | - # conceito de proporção entre o tempo de espera dependendo da | ||
810 | - # prioridade da categoria. A prioridade vai representar um | ||
811 | - # multiplicador para o tempo de espera, o que significa que, se | ||
812 | - # uma categoria tem prioridade 1, o tempo de espera vai ter a | ||
813 | - # proporção de 1 para 1. Uma categoria com prioridade 2 significa | ||
814 | - # que o tempo de espera vai significar o dobro. Ou seja, se uma | ||
815 | - # pessoa está esperando 10 minutos em uma categoria de prioridade | ||
816 | - # 2 vai representar para o sistema como se ela já estivesse | ||
817 | - # esperando a 20 minutos. | ||
818 | - $atendimento = $c->stash->{local}->atendimentos_atuais->find | ||
819 | - ({ 'estado.nome' => 'espera', | ||
820 | - 'configuracoes_atuais.id_local' => $c->stash->{local}->id_local, | ||
821 | - %restringir }, | ||
822 | - { 'join' => | ||
823 | - [{ 'estado_atual' => 'estado' }, | ||
824 | - { 'categoria_atual' => { 'categoria' => 'configuracoes_atuais' }}], | ||
825 | - 'order_by' => '((now() - estado_atual.vt_ini) * configuracoes_atuais.prioridade) DESC'}); | 804 | + # agora também precisamos descobrir se existe algum |
805 | + # encaminhamento esperando para alguma das categorias que | ||
806 | + # esse guichê atende. | ||
807 | + my $enc = $c->stash->{local}->encaminhamentos_categoria->search | ||
808 | + ({ vt_ini => { '<=' => $now }, | ||
809 | + vt_fim => { '>' => $now }, | ||
810 | + %restringir_c }, | ||
811 | + { order_by => 'vt_ini' })->next; | ||
812 | + | ||
813 | + if ($enc) { | ||
814 | + $atendimento = $enc->atendimento; | ||
815 | + $enc->update({ vt_fim => $now }); | ||
816 | + } else { | ||
817 | + # descobrir os atendimentos em espera. O escalonamento vai ter o | ||
818 | + # conceito de proporção entre o tempo de espera dependendo da | ||
819 | + # prioridade da categoria. A prioridade vai representar um | ||
820 | + # multiplicador para o tempo de espera, o que significa que, se | ||
821 | + # uma categoria tem prioridade 1, o tempo de espera vai ter a | ||
822 | + # proporção de 1 para 1. Uma categoria com prioridade 2 significa | ||
823 | + # que o tempo de espera vai significar o dobro. Ou seja, se uma | ||
824 | + # pessoa está esperando 10 minutos em uma categoria de prioridade | ||
825 | + # 2 vai representar para o sistema como se ela já estivesse | ||
826 | + # esperando a 20 minutos. | ||
827 | + $atendimento = $c->stash->{local}->atendimentos_atuais->find | ||
828 | + ({ 'estado.nome' => 'espera', | ||
829 | + 'configuracoes_atuais.id_local' => $c->stash->{local}->id_local, | ||
830 | + %restringir }, | ||
831 | + { 'join' => | ||
832 | + [{ 'estado_atual' => 'estado' }, | ||
833 | + { 'categoria_atual' => { 'categoria' => 'configuracoes_atuais' }}], | ||
834 | + 'order_by' => '((now() - estado_atual.vt_ini) * configuracoes_atuais.prioridade) DESC'}); | ||
835 | + } | ||
826 | } | 836 | } |
827 | 837 | ||
828 | if ($atendimento) { | 838 | if ($atendimento) { |
@@ -1130,40 +1140,70 @@ sub listar_encaminhamentos: WSDLPort('GestaoLocal') :DBICTransaction('DB'): MI { | @@ -1130,40 +1140,70 @@ sub listar_encaminhamentos: WSDLPort('GestaoLocal') :DBICTransaction('DB'): MI { | ||
1130 | if ($ultimo_aberto) { | 1140 | if ($ultimo_aberto) { |
1131 | my $vt_ini = $ultimo_aberto->get_column('vt_ini'); | 1141 | my $vt_ini = $ultimo_aberto->get_column('vt_ini'); |
1132 | 1142 | ||
1133 | - my $enc = | 1143 | + my $enc_guiches = |
1134 | $c->model('DB::GuicheEncaminhamento')->search | 1144 | $c->model('DB::GuicheEncaminhamento')->search |
1135 | ({ 'me.vt_ini' => { '>=', $vt_ini } }, | 1145 | ({ 'me.vt_ini' => { '>=', $vt_ini } }, |
1136 | { join => [ 'guiche' , 'guiche_origem' ], | 1146 | { join => [ 'guiche' , 'guiche_origem' ], |
1137 | - select => [ | ||
1138 | - 'me.vt_ini', | ||
1139 | - 'guiche.identificador', | ||
1140 | - 'guiche_origem.identificador', | ||
1141 | - 'me.id_atendimento', | ||
1142 | - 'me.informacoes', | ||
1143 | - 'me.vt_fim' | ||
1144 | - ], | ||
1145 | - as => [ | ||
1146 | - 'vt_ini' , | ||
1147 | - 'id_guiche', | ||
1148 | - 'id_guiche_origem', | ||
1149 | - 'id_atendimento', | ||
1150 | - 'informacoes', | ||
1151 | - 'vt_fim' | ||
1152 | - ], | ||
1153 | - order_by => [ 'me.vt_ini DESC' ]}); | ||
1154 | - | ||
1155 | - while (my $encaminhamento = $enc->next) { | ||
1156 | - push @$ret, | ||
1157 | - { | ||
1158 | - ( map { $_ => $encaminhamento->get_column($_) } | ||
1159 | - qw( id_guiche id_guiche_origem id_atendimento informacoes ) | ||
1160 | - ), | ||
1161 | - ( map { ($encaminhamento->$_ && $encaminhamento->$_->is_infinite) ? | ||
1162 | - () : ($_ => DateTime::Format::XSD->format_datetime($encaminhamento->$_->set_time_zone('local'))) } | ||
1163 | - qw/ vt_ini vt_fim / | ||
1164 | - ), | ||
1165 | - } | 1147 | + select => [ 'me.vt_ini', |
1148 | + 'guiche.identificador', | ||
1149 | + 'guiche_origem.identificador', | ||
1150 | + 'me.id_atendimento', | ||
1151 | + 'me.informacoes', | ||
1152 | + 'me.vt_fim' ], | ||
1153 | + as => [ 'vt_ini' , | ||
1154 | + 'id_guiche', | ||
1155 | + 'id_guiche_origem', | ||
1156 | + 'id_atendimento', | ||
1157 | + 'informacoes', | ||
1158 | + 'vt_fim' ], | ||
1159 | + order_by => 'me.vt_ini DESC'}); | ||
1160 | + | ||
1161 | + my $enc_categorias = | ||
1162 | + $c->model('DB::CategoriaEncaminhamento')->search | ||
1163 | + ({ 'me.vt_ini' => { '>=', $vt_ini } }, | ||
1164 | + { join => [ 'categoria' , 'guiche_origem' ], | ||
1165 | + select => [ 'me.vt_ini', | ||
1166 | + 'categoria.codigo', | ||
1167 | + 'guiche_origem.identificador', | ||
1168 | + 'me.id_atendimento', | ||
1169 | + 'me.informacoes', | ||
1170 | + 'me.vt_fim' ], | ||
1171 | + as => [ 'vt_ini' , | ||
1172 | + 'id_categoria', | ||
1173 | + 'id_guiche_origem', | ||
1174 | + 'id_atendimento', | ||
1175 | + 'informacoes', | ||
1176 | + 'vt_fim' ], | ||
1177 | + order_by => 'me.vt_ini DESC'}); | ||
1178 | + | ||
1179 | + my $eg = $enc_guiches->next; | ||
1180 | + my $ec = $enc_categorias->next; | ||
1181 | + | ||
1182 | + while ($eg || $ec) { | ||
1183 | + my $encaminhamento; | ||
1184 | + my %add; | ||
1185 | + if (($eg && $ec) && ($eg->vt_ini > $ec->vt_ini) || | ||
1186 | + ($eg && !$ec)) { | ||
1187 | + $encaminhamento = $eg; | ||
1188 | + $eg = $enc_guiches->next; | ||
1189 | + $add{id_guiche} = $encaminhamento->get_column('id_guiche'); | ||
1190 | + } else { | ||
1191 | + $encaminhamento = $ec; | ||
1192 | + $ec = $enc_categorias->next; | ||
1193 | + $add{id_categoria} = $encaminhamento->get_column('id_categoria'); | ||
1166 | } | 1194 | } |
1195 | + | ||
1196 | + push @$ret, | ||
1197 | + {( map { $_ => $encaminhamento->get_column($_) } | ||
1198 | + qw( id_guiche_origem id_atendimento informacoes ) ), | ||
1199 | + ( map { ($encaminhamento->$_ && $encaminhamento->$_->is_infinite) ? | ||
1200 | + () : ($_ => DateTime::Format::XSD->format_datetime($encaminhamento->$_->set_time_zone('local'))) } | ||
1201 | + qw/ vt_ini vt_fim /), | ||
1202 | + %add | ||
1203 | + }; | ||
1204 | + } | ||
1205 | + | ||
1206 | + | ||
1167 | } | 1207 | } |
1168 | return $c->stash->{soap}->compile_return | 1208 | return $c->stash->{soap}->compile_return |
1169 | ({ lista_encaminhamentos => { encaminhamento => $ret } }); | 1209 | ({ lista_encaminhamentos => { encaminhamento => $ret } }); |
Fila-Servico/lib/Fila/Servico/DB/Local.pm
@@ -89,6 +89,10 @@ __PACKAGE__->has_many('configuracoes_categoria', 'Fila::Servico::DB::Configuraca | @@ -89,6 +89,10 @@ __PACKAGE__->has_many('configuracoes_categoria', 'Fila::Servico::DB::Configuraca | ||
89 | { 'foreign.id_local' => 'self.id_local' }, | 89 | { 'foreign.id_local' => 'self.id_local' }, |
90 | { join_type => 'left' }); | 90 | { join_type => 'left' }); |
91 | 91 | ||
92 | +__PACKAGE__->has_many('encaminhamentos_categoria', 'Fila::Servico::DB::CategoriaEncaminhamento', | ||
93 | + { 'foreign.id_local' => 'self.id_local' }, | ||
94 | + { join_type => 'left' }); | ||
95 | + | ||
92 | __PACKAGE__->has_many('configuracoes_limite', 'Fila::Servico::DB::ConfiguracaoLimite', | 96 | __PACKAGE__->has_many('configuracoes_limite', 'Fila::Servico::DB::ConfiguracaoLimite', |
93 | { 'foreign.id_local' => 'self.id_local' }, | 97 | { 'foreign.id_local' => 'self.id_local' }, |
94 | { join_type => 'left' }); | 98 | { join_type => 'left' }); |
Fila-Servico/schemas/FilaServico.wsdl
@@ -55,9 +55,6 @@ | @@ -55,9 +55,6 @@ | ||
55 | <wsdl:part name="lista_funcionarios" element="filatp:lista_funcionarios" /> | 55 | <wsdl:part name="lista_funcionarios" element="filatp:lista_funcionarios" /> |
56 | </wsdl:message> | 56 | </wsdl:message> |
57 | 57 | ||
58 | - <wsdl:message name="solicitacao_encaminhamento"> | ||
59 | - <wsdl:part name="encaminhamento" element="filatp:encaminhamento" /> | ||
60 | - </wsdl:message> | ||
61 | <wsdl:message name="resposta_lista_encaminhamentos"> | 58 | <wsdl:message name="resposta_lista_encaminhamentos"> |
62 | <wsdl:part name="lista_encaminhamentos" element="filatp:lista_encaminhamentos" /> | 59 | <wsdl:part name="lista_encaminhamentos" element="filatp:lista_encaminhamentos" /> |
63 | </wsdl:message> | 60 | </wsdl:message> |
@@ -113,7 +110,7 @@ | @@ -113,7 +110,7 @@ | ||
113 | <wsdl:input message="filasv:solicitacao_guiche" /> | 110 | <wsdl:input message="filasv:solicitacao_guiche" /> |
114 | </wsdl:operation> | 111 | </wsdl:operation> |
115 | <wsdl:operation name="listar_encaminhamentos"> | 112 | <wsdl:operation name="listar_encaminhamentos"> |
116 | - <wsdl:input message="filasv:solicitacao_encaminhamento" /> | 113 | + <wsdl:input message="filasv:solicitacao_guiche" /> |
117 | <wsdl:output message="filasv:resposta_lista_encaminhamentos" /> | 114 | <wsdl:output message="filasv:resposta_lista_encaminhamentos" /> |
118 | </wsdl:operation> | 115 | </wsdl:operation> |
119 | <wsdl:operation name="associar_gerente"> | 116 | <wsdl:operation name="associar_gerente"> |
@@ -212,10 +209,15 @@ | @@ -212,10 +209,15 @@ | ||
212 | <wsdl:message name="solicitacao_guiche"> | 209 | <wsdl:message name="solicitacao_guiche"> |
213 | <wsdl:part name="guiche" element="filatp:guiche" /> | 210 | <wsdl:part name="guiche" element="filatp:guiche" /> |
214 | </wsdl:message> | 211 | </wsdl:message> |
212 | + <wsdl:message name="solicitacao_encaminhamento"> | ||
213 | + <wsdl:part name="encaminhamento" element="filatp:encaminhamento" /> | ||
214 | + </wsdl:message> | ||
215 | <wsdl:message name="resposta_guiche"> | 215 | <wsdl:message name="resposta_guiche"> |
216 | <wsdl:part name="guiche" element="filatp:guiche" /> | 216 | <wsdl:part name="guiche" element="filatp:guiche" /> |
217 | </wsdl:message> | 217 | </wsdl:message> |
218 | - | 218 | + <wsdl:message name="resposta_lista_categorias"> |
219 | + <wsdl:part name="lista_categorias" element="filatp:lista_categorias" /> | ||
220 | + </wsdl:message> | ||
219 | 221 | ||
220 | <wsdl:portType name="GestaoGuiche"> | 222 | <wsdl:portType name="GestaoGuiche"> |
221 | <wsdl:operation name="dados_local"> | 223 | <wsdl:operation name="dados_local"> |
@@ -226,6 +228,10 @@ | @@ -226,6 +228,10 @@ | ||
226 | <wsdl:input message="filasv:solicitacao_local" /> | 228 | <wsdl:input message="filasv:solicitacao_local" /> |
227 | <wsdl:output message="filasv:resposta_lista_guiches" /> | 229 | <wsdl:output message="filasv:resposta_lista_guiches" /> |
228 | </wsdl:operation> | 230 | </wsdl:operation> |
231 | + <wsdl:operation name="listar_categorias"> | ||
232 | + <wsdl:input message="filasv:solicitacao_local" /> | ||
233 | + <wsdl:output message="filasv:resposta_lista_categorias" /> | ||
234 | + </wsdl:operation> | ||
229 | <wsdl:operation name="abrir_guiche"> | 235 | <wsdl:operation name="abrir_guiche"> |
230 | <wsdl:input message="filasv:solicitacao_guiche" /> | 236 | <wsdl:input message="filasv:solicitacao_guiche" /> |
231 | </wsdl:operation> | 237 | </wsdl:operation> |
@@ -243,6 +249,11 @@ | @@ -243,6 +249,11 @@ | ||
243 | <wsdl:input><soap:body namespace="urn:oktiva:fila:servico" use="literal"/></wsdl:input> | 249 | <wsdl:input><soap:body namespace="urn:oktiva:fila:servico" use="literal"/></wsdl:input> |
244 | <wsdl:output><soap:body namespace="urn:oktiva:fila:servico" use="literal"/></wsdl:output> | 250 | <wsdl:output><soap:body namespace="urn:oktiva:fila:servico" use="literal"/></wsdl:output> |
245 | </wsdl:operation> | 251 | </wsdl:operation> |
252 | + <wsdl:operation name="listar_categorias"> | ||
253 | + <soap:operation style="rpc" /> | ||
254 | + <wsdl:input><soap:body namespace="urn:oktiva:fila:servico" use="literal"/></wsdl:input> | ||
255 | + <wsdl:output><soap:body namespace="urn:oktiva:fila:servico" use="literal"/></wsdl:output> | ||
256 | + </wsdl:operation> | ||
246 | <wsdl:operation name="abrir_guiche"> | 257 | <wsdl:operation name="abrir_guiche"> |
247 | <soap:operation style="rpc" /> | 258 | <soap:operation style="rpc" /> |
248 | <wsdl:input><soap:body namespace="urn:oktiva:fila:servico" use="literal"/></wsdl:input> | 259 | <wsdl:input><soap:body namespace="urn:oktiva:fila:servico" use="literal"/></wsdl:input> |
@@ -255,9 +266,6 @@ | @@ -255,9 +266,6 @@ | ||
255 | <wsdl:message name="resposta_atendimento"> | 266 | <wsdl:message name="resposta_atendimento"> |
256 | <wsdl:part name="atendimento" element="filatp:atendimento" /> | 267 | <wsdl:part name="atendimento" element="filatp:atendimento" /> |
257 | </wsdl:message> | 268 | </wsdl:message> |
258 | - <wsdl:message name="resposta_lista_categorias"> | ||
259 | - <wsdl:part name="lista_categorias" element="filatp:lista_categorias" /> | ||
260 | - </wsdl:message> | ||
261 | <wsdl:message name="resposta_lista_atendimentos"> | 269 | <wsdl:message name="resposta_lista_atendimentos"> |
262 | <wsdl:part name="lista_atendimentos" element="filatp:lista_atendimentos" /> | 270 | <wsdl:part name="lista_atendimentos" element="filatp:lista_atendimentos" /> |
263 | </wsdl:message> | 271 | </wsdl:message> |
@@ -342,7 +350,7 @@ | @@ -342,7 +350,7 @@ | ||
342 | <wsdl:input message="filasv:solicitacao_guiche" /> | 350 | <wsdl:input message="filasv:solicitacao_guiche" /> |
343 | </wsdl:operation> | 351 | </wsdl:operation> |
344 | <wsdl:operation name="encaminhar_atendimento"> | 352 | <wsdl:operation name="encaminhar_atendimento"> |
345 | - <wsdl:input message="filasv:solicitacao_guiche" /> | 353 | + <wsdl:input message="filasv:solicitacao_encaminhamento" /> |
346 | </wsdl:operation> | 354 | </wsdl:operation> |
347 | <wsdl:operation name="setar_motivo_pausa"> | 355 | <wsdl:operation name="setar_motivo_pausa"> |
348 | <wsdl:input message="filasv:solicitacao_guiche" /> | 356 | <wsdl:input message="filasv:solicitacao_guiche" /> |
Fila-Servico/schemas/FilaWeb.wsdl
@@ -192,6 +192,9 @@ | @@ -192,6 +192,9 @@ | ||
192 | <wsdl:operation name="encaminhar_atendimento"> | 192 | <wsdl:operation name="encaminhar_atendimento"> |
193 | <wsdl:input message="filasv:callback_request" /> | 193 | <wsdl:input message="filasv:callback_request" /> |
194 | </wsdl:operation> | 194 | </wsdl:operation> |
195 | + <wsdl:operation name="encaminhar_atendimento_categoria"> | ||
196 | + <wsdl:input message="filasv:callback_request" /> | ||
197 | + </wsdl:operation> | ||
195 | <wsdl:operation name="listar_no_show"> | 198 | <wsdl:operation name="listar_no_show"> |
196 | <wsdl:input message="filasv:callback_request" /> | 199 | <wsdl:input message="filasv:callback_request" /> |
197 | </wsdl:operation> | 200 | </wsdl:operation> |
@@ -267,6 +270,10 @@ | @@ -267,6 +270,10 @@ | ||
267 | <soap:operation style="rpc" /> | 270 | <soap:operation style="rpc" /> |
268 | <wsdl:input><soap:body namespace="urn:oktiva:fila:web:servico" use="literal"/></wsdl:input> | 271 | <wsdl:input><soap:body namespace="urn:oktiva:fila:web:servico" use="literal"/></wsdl:input> |
269 | </wsdl:operation> | 272 | </wsdl:operation> |
273 | + <wsdl:operation name="encaminhar_atendimento_categoria"> | ||
274 | + <soap:operation style="rpc" /> | ||
275 | + <wsdl:input><soap:body namespace="urn:oktiva:fila:web:servico" use="literal"/></wsdl:input> | ||
276 | + </wsdl:operation> | ||
270 | <wsdl:operation name="disponivel"> | 277 | <wsdl:operation name="disponivel"> |
271 | <soap:operation style="rpc" /> | 278 | <soap:operation style="rpc" /> |
272 | <wsdl:input><soap:body namespace="urn:oktiva:fila:web:servico" use="literal"/></wsdl:input> | 279 | <wsdl:input><soap:body namespace="urn:oktiva:fila:web:servico" use="literal"/></wsdl:input> |
Fila-Servico/schemas/fila-servico.xsd
@@ -145,6 +145,7 @@ | @@ -145,6 +145,7 @@ | ||
145 | </xsd:sequence> | 145 | </xsd:sequence> |
146 | </xsd:complexType> | 146 | </xsd:complexType> |
147 | 147 | ||
148 | + | ||
148 | <xsd:complexType name="TipoDadosAtendimento"> | 149 | <xsd:complexType name="TipoDadosAtendimento"> |
149 | <xsd:sequence> | 150 | <xsd:sequence> |
150 | <xsd:element name="id_atendimento" minOccurs="0" type="xsd:integer" /> | 151 | <xsd:element name="id_atendimento" minOccurs="0" type="xsd:integer" /> |
@@ -233,6 +234,7 @@ | @@ -233,6 +234,7 @@ | ||
233 | <xsd:sequence> | 234 | <xsd:sequence> |
234 | <xsd:element name="id_atendimento" minOccurs="0" type="xsd:integer" /> | 235 | <xsd:element name="id_atendimento" minOccurs="0" type="xsd:integer" /> |
235 | <xsd:element name="id_guiche" minOccurs="0" type="xsd:string" /> | 236 | <xsd:element name="id_guiche" minOccurs="0" type="xsd:string" /> |
237 | + <xsd:element name="id_categoria" minOccurs="0" type="xsd:string" /> | ||
236 | <xsd:element name="id_guiche_origem" minOccurs="0" type="xsd:string" /> | 238 | <xsd:element name="id_guiche_origem" minOccurs="0" type="xsd:string" /> |
237 | <xsd:element name="vt_ini" minOccurs="0" type="xsd:dateTime" /> | 239 | <xsd:element name="vt_ini" minOccurs="0" type="xsd:dateTime" /> |
238 | <xsd:element name="vt_fim" minOccurs="0" type="xsd:dateTime" /> | 240 | <xsd:element name="vt_fim" minOccurs="0" type="xsd:dateTime" /> |
@@ -250,6 +252,7 @@ | @@ -250,6 +252,7 @@ | ||
250 | <xsd:element name="guiche" type="fila:TipoDadosGuiche" /> | 252 | <xsd:element name="guiche" type="fila:TipoDadosGuiche" /> |
251 | <xsd:element name="lista_guiches" type="fila:TipoDadosListaGuiches" /> | 253 | <xsd:element name="lista_guiches" type="fila:TipoDadosListaGuiches" /> |
252 | <xsd:element name="atendimento" type="fila:TipoDadosAtendimento" /> | 254 | <xsd:element name="atendimento" type="fila:TipoDadosAtendimento" /> |
255 | + <xsd:element name="encaminhamento" type="fila:TipoDadosEncaminhamento" /> | ||
253 | <xsd:element name="categoria" type="fila:TipoDadosCategoria" /> | 256 | <xsd:element name="categoria" type="fila:TipoDadosCategoria" /> |
254 | <xsd:element name="lista_categorias" type="fila:TipoDadosListaCategorias" /> | 257 | <xsd:element name="lista_categorias" type="fila:TipoDadosListaCategorias" /> |
255 | <xsd:element name="funcionario" type="fila:TipoDadosFuncionario" /> | 258 | <xsd:element name="funcionario" type="fila:TipoDadosFuncionario" /> |
@@ -257,7 +260,6 @@ | @@ -257,7 +260,6 @@ | ||
257 | <xsd:element name="lista_atendimentos" type="fila:TipoDadosListaAtendimentos" /> | 260 | <xsd:element name="lista_atendimentos" type="fila:TipoDadosListaAtendimentos" /> |
258 | <xsd:element name="servico" type="fila:TipoDadosServico" /> | 261 | <xsd:element name="servico" type="fila:TipoDadosServico" /> |
259 | <xsd:element name="lista_servicos" type="fila:TipoDadosListaServicos" /> | 262 | <xsd:element name="lista_servicos" type="fila:TipoDadosListaServicos" /> |
260 | - <xsd:element name="encaminhamento" type="fila:TipoDadosEncaminhamento" /> | ||
261 | <xsd:element name="lista_encaminhamentos" type="fila:TipoDadosListaEncaminhamentos" /> | 263 | <xsd:element name="lista_encaminhamentos" type="fila:TipoDadosListaEncaminhamentos" /> |
262 | <xsd:element name="lista_funcionarios" type="fila:TipoDadosListaFuncionarios" /> | 264 | <xsd:element name="lista_funcionarios" type="fila:TipoDadosListaFuncionarios" /> |
263 | 265 |
Fila-Web/lib/Fila/Web/Controller/CB/Atendente.pm
@@ -79,6 +79,22 @@ sub encaminhar_atendimento : Local { | @@ -79,6 +79,22 @@ sub encaminhar_atendimento : Local { | ||
79 | value => $id_guiche } ]}}); | 79 | value => $id_guiche } ]}}); |
80 | } | 80 | } |
81 | 81 | ||
82 | +sub encaminhar_atendimento_categoria : Local { | ||
83 | + my ($self, $c) = @_; | ||
84 | + | ||
85 | + my $id_categoria = $c->req->param('id_categoria'); | ||
86 | + my $motivo = $c->req->param('motivoEnc'); | ||
87 | + | ||
88 | + $c->model('SOAP')->transport | ||
89 | + ->addrs([$c->session->{user_jid}.'/cb/atendente']); | ||
90 | + | ||
91 | + my $req = $c->model('SOAP::Atendente')->encaminhar_atendimento_categoria | ||
92 | + ({ callback_request => | ||
93 | + { param => | ||
94 | + [ { name => $motivo, | ||
95 | + value => $id_categoria } ]}}); | ||
96 | +} | ||
97 | + | ||
82 | sub devolver_senha : Local { | 98 | sub devolver_senha : Local { |
83 | my ($self, $c) = @_; | 99 | my ($self, $c) = @_; |
84 | 100 |
Fila-Web/lib/Fila/WebApp/Controller/CB/Atendente.pm
@@ -67,11 +67,21 @@ sub listar_guiches_encaminhar : WSDLPort('FilaWebAtendenteCallback') { | @@ -67,11 +67,21 @@ sub listar_guiches_encaminhar : WSDLPort('FilaWebAtendenteCallback') { | ||
67 | return $c->forward('/render/error_message'); | 67 | return $c->forward('/render/error_message'); |
68 | } | 68 | } |
69 | 69 | ||
70 | + $c->model('SOAP')->transport->addrs(['motor@gestao.fila.vhost/ws/gestao/guiche']); | ||
71 | + my $lista_categorias = $c->model('SOAP::Gestao::Guiche') | ||
72 | + ->listar_categorias({ local => {} }); | ||
73 | + | ||
74 | + if ($lista_categorias->{Fault}) { | ||
75 | + $c->stash->{error_message} = $lista_guiches->{Fault}{faultstring}; | ||
76 | + return $c->forward('/render/error_message'); | ||
77 | + } | ||
78 | + | ||
70 | $c->model('SOAP')->transport->addrs(['motor@gestao.fila.vhost/ws/gestao/atendente']); | 79 | $c->model('SOAP')->transport->addrs(['motor@gestao.fila.vhost/ws/gestao/atendente']); |
71 | $c->stash->{status_guiche} = $c->model('SOAP::Gestao::Atendente') | 80 | $c->stash->{status_guiche} = $c->model('SOAP::Gestao::Atendente') |
72 | ->status_guiche({ guiche => {} }); | 81 | ->status_guiche({ guiche => {} }); |
73 | 82 | ||
74 | $c->stash->{lista_guiches_encaminhar} = $lista_guiches; | 83 | $c->stash->{lista_guiches_encaminhar} = $lista_guiches; |
84 | + $c->stash->{lista_categorias_encaminhar} = $lista_categorias; | ||
75 | 85 | ||
76 | $c->stash->{template} = 'cb/atendente/refresh.tt'; | 86 | $c->stash->{template} = 'cb/atendente/refresh.tt'; |
77 | $c->forward($c->view()); | 87 | $c->forward($c->view()); |
@@ -83,10 +93,21 @@ sub encaminhar_atendimento : WSDLPort('FilaWebAtendenteCallback') { | @@ -83,10 +93,21 @@ sub encaminhar_atendimento : WSDLPort('FilaWebAtendenteCallback') { | ||
83 | 93 | ||
84 | my $id_guiche = $query->{callback_request}{param}[0]{value}; | 94 | my $id_guiche = $query->{callback_request}{param}[0]{value}; |
85 | my $motivo = $query->{callback_request}{param}[0]{name}; | 95 | my $motivo = $query->{callback_request}{param}[0]{name}; |
86 | - | 96 | + |
97 | + $c->model('SOAP')->transport->addrs(['motor@gestao.fila.vhost/ws/gestao/atendente']); | ||
98 | + my $encaminhar_atendimento = $c->model('SOAP::Gestao::Atendente') | ||
99 | + ->encaminhar_atendimento({ encaminhamento => { id_guiche => $id_guiche, informacoes => $motivo } }); | ||
100 | +} | ||
101 | + | ||
102 | +sub encaminhar_atendimento_categoria : WSDLPort('FilaWebAtendenteCallback') { | ||
103 | + my ($self, $c,$query) = @_; | ||
104 | + | ||
105 | + my $id_categoria = $query->{callback_request}{param}[0]{value}; | ||
106 | + my $motivo = $query->{callback_request}{param}[0]{name}; | ||
107 | + | ||
87 | $c->model('SOAP')->transport->addrs(['motor@gestao.fila.vhost/ws/gestao/atendente']); | 108 | $c->model('SOAP')->transport->addrs(['motor@gestao.fila.vhost/ws/gestao/atendente']); |
88 | my $encaminhar_atendimento = $c->model('SOAP::Gestao::Atendente') | 109 | my $encaminhar_atendimento = $c->model('SOAP::Gestao::Atendente') |
89 | - ->encaminhar_atendimento({ guiche => { id_guiche => $id_guiche, pausa_motivo => $motivo } }); | 110 | + ->encaminhar_atendimento({ encaminhamento => { id_categoria => $id_categoria, informacoes => $motivo } }); |
90 | } | 111 | } |
91 | 112 | ||
92 | sub atender_no_show : WSDLPort('FilaWebAtendenteCallback') { | 113 | sub atender_no_show : WSDLPort('FilaWebAtendenteCallback') { |
Fila-Web/root/render/atendente.tt
@@ -154,6 +154,15 @@ | @@ -154,6 +154,15 @@ | ||
154 | }); | 154 | }); |
155 | return false; | 155 | return false; |
156 | } | 156 | } |
157 | + function encaminhar_atendimento_categoria() { | ||
158 | + var url = '/cb/atendente/encaminhar_atendimento_categoria'; | ||
159 | + var params = $('encaminhar_categoria').serialize(true); | ||
160 | + new Ajax.Request(url, { | ||
161 | + method: 'post', | ||
162 | + parameters: params | ||
163 | + }); | ||
164 | + return false; | ||
165 | + } | ||
157 | function setar_info_interno() { | 166 | function setar_info_interno() { |
158 | var url = '/cb/atendente/setar_info_interno'; | 167 | var url = '/cb/atendente/setar_info_interno'; |
159 | var params = $('interno').serialize(true); | 168 | var params = $('interno').serialize(true); |
Fila-Web/root/render/mesas.tt
@@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
28 | <h3 class='titulos'>Encaminhados</h3> | 28 | <h3 class='titulos'>Encaminhados</h3> |
29 | <TABLE id='TabEncaminhamentos' cellspacing='0' cellpadding='5' border='1'> | 29 | <TABLE id='TabEncaminhamentos' cellspacing='0' cellpadding='5' border='1'> |
30 | <TR class='titulosTabela'> | 30 | <TR class='titulosTabela'> |
31 | - <TD>Horário:</TD><TD>Atendido:</TD><TD>Mesa de Origem:</TD><TD>Mesa de Destino:</TD><TD>Nº do Atendimento</TD><TD>Motivo:</TD> | 31 | + <TD>Horário:</TD><TD>Atendido:</TD><TD>Mesa de Origem:</TD><TD>Mesa de Destino:</TD><TD>Categoria de Destino:</TD><TD>Nº do Atendimento</TD><TD>Motivo:</TD> |
32 | </TR> | 32 | </TR> |
33 | [% FOREACH encaminhamento IN lista_encaminhamentos.lista_encaminhamentos.encaminhamento %] | 33 | [% FOREACH encaminhamento IN lista_encaminhamentos.lista_encaminhamentos.encaminhamento %] |
34 | <TR> | 34 | <TR> |
@@ -36,6 +36,7 @@ | @@ -36,6 +36,7 @@ | ||
36 | <TD>[% dtf.f(encaminhamento.vt_fim) %]</TD> | 36 | <TD>[% dtf.f(encaminhamento.vt_fim) %]</TD> |
37 | <TD>[% encaminhamento.id_guiche_origem %]</TD> | 37 | <TD>[% encaminhamento.id_guiche_origem %]</TD> |
38 | <TD>[% encaminhamento.id_guiche %]</TD> | 38 | <TD>[% encaminhamento.id_guiche %]</TD> |
39 | + <TD>[% encaminhamento.id_categoria %]</TD> | ||
39 | <TD>[% encaminhamento.id_atendimento %]</TD> | 40 | <TD>[% encaminhamento.id_atendimento %]</TD> |
40 | <TD>[% encaminhamento.informacoes %]</TD> | 41 | <TD>[% encaminhamento.informacoes %]</TD> |
41 | </TR> | 42 | </TR> |
Fila-Web/root/render/status_atendente.tt
@@ -125,6 +125,21 @@ | @@ -125,6 +125,21 @@ | ||
125 | </DIV> | 125 | </DIV> |
126 | [% END %] | 126 | [% END %] |
127 | 127 | ||
128 | + [% IF lista_categorias_encaminhar %] | ||
129 | + <H3 class="titulos">Encaminhar para outra categoria</h3> | ||
130 | + <DIV ID="lista_categorias_encaminhar" class="encaminhar"> | ||
131 | + <form name="encaminhar_categoria" id="encaminhar_categoria" onsubmit="return encaminhar_atendimento_categoria()"> | ||
132 | + Categorias: <select name="id_categoria" id="id_categoria_destino" size="1" style="width: 300px"> | ||
133 | + [% FOREACH categoria IN lista_categorias_encaminhar.lista_categorias.categoria %] | ||
134 | + <option value="[% categoria.id_categoria %]">[% categoria.codigo %] - [% categoria.nome %]</option> | ||
135 | + [% END %] | ||
136 | + </select><br /><br /> | ||
137 | + Motivo: <input type="text" name="motivoEnc" id="motivoEncCat" style="width: 300px" maxlength="100"><br /><br /> | ||
138 | + <button value="Encaminhar" id="BtEncCat" type="submit">Encaminhar</button> | ||
139 | + </form> | ||
140 | + </DIV> | ||
141 | + [% END %] | ||
142 | + | ||
128 | [% IF status_guiche.guiche.estado == 'interno' %] | 143 | [% IF status_guiche.guiche.estado == 'interno' %] |
129 | <h3 id="TitServicos" class="titulos">Serviço em andamento:</h3><br> | 144 | <h3 id="TitServicos" class="titulos">Serviço em andamento:</h3><br> |
130 | <DIV ID="servicos"> | 145 | <DIV ID="servicos"> |