WF/maisexemplos: Ligaes_Telefnicas_10.xml

File Ligaes_Telefnicas_10.xml, 96.0 KB (added by pedroerp, 14 years ago)
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<process>
3  <name>Ligações Telefônicas</name>
4  <isValid>y</isValid>
5  <version>1.0</version>
6  <isActive>y</isActive>
7   <description>Processo de gerenciamento das ligações telefônicas (a serviço ou particular) efetuadas pelos funcionários da Celepar.</description>
8  <lastModif>07/03/2007 [09:14:23]</lastModif>
9  <sharedCode><![CDATA[<?php
10wf_include('class.controller.inc.php');
11wf_include('class.consultar.generico.controller.inc.php');
12wf_include('class.registrar.ligacao.controller.inc.php');
13wf_include('class.tipo.ligacao.controller.inc.php');
14wf_include('class.funcionario.avalia.controller.inc.php');
15wf_include('class.chefia.avalia.controller.inc.php');
16wf_include('class.retificacao.controller.inc.php');
17wf_include('class.salva.controller.inc.php');
18wf_include('class.definir.valor.ligacao.controller.inc.php');
19wf_include('class.consultar.ligacoes.controller.inc.php');
20wf_include('class.consultar.registros.controller.inc.php');
21wf_include('class.forcar.avaliacao.padrao.controller.inc.php');
22wf_include('class.gerar.relatorios.controller.inc.php');
23
24wf_include('class.model.inc.php');
25wf_include('class.consultar.generico.model.inc.php');
26wf_include('class.registrar.ligacao.model.inc.php');
27wf_include('class.tipo.ligacao.model.inc.php');
28wf_include('class.funcionario.avalia.model.inc.php');
29wf_include('class.chefia.avalia.model.inc.php');
30wf_include('class.retificacao.model.inc.php');
31wf_include('class.salva.model.inc.php');
32wf_include('class.definir.valor.ligacao.model.inc.php');
33wf_include('class.consultar.ligacoes.model.inc.php');
34wf_include('class.consultar.registros.model.inc.php');
35wf_include('class.forcar.avaliacao.padrao.model.inc.php');
36wf_include('class.gerar.relatorios.model.inc.php');
37?>
38  ]]></sharedCode>
39  <configs>
40    <config>
41      <wf_config_name>disable_advanced_actions</wf_config_name>
42      <wf_config_value></wf_config_value>
43      <wf_config_value_int>1</wf_config_value_int>
44    </config>
45    <config>
46      <wf_config_name>mail_smtp_profile</wf_config_name>
47      <wf_config_value></wf_config_value>
48      <wf_config_value_int>1</wf_config_value_int>
49    </config>
50  </configs>
51  <activities>
52    <activity>
53      <name>Aprova</name>
54      <type>activity</type>
55      <description>O chefia aprova a ligação realizada por seu funcionário.</description>
56      <menuPath></menuPath>
57      <lastModif>28/12/2006 [08:30:44]</lastModif>
58      <isInteractive>n</isInteractive>
59      <isAutoRouted>y</isAutoRouted>
60      <roles>
61      </roles>
62      <agents>
63      </agents>
64      <code><![CDATA[<?php
65?>
66      ]]></code>    </activity>
67    <activity>
68      <name>Chefia Avalia</name>
69      <type>switch</type>
70      <description>O chefe de área avalia a ligação feita por seu funcionário (no caso de ligação a serviço).</description>
71      <menuPath></menuPath>
72      <lastModif>28/12/2006 [08:30:44]</lastModif>
73      <isInteractive>y</isInteractive>
74      <isAutoRouted>y</isAutoRouted>
75      <roles>
76        <role>usuario</role>
77      </roles>
78      <agents>
79      </agents>
80      <code><![CDATA[<?php
81$application = new ChefiaAvaliaController(new ChefiaAvaliaModel($env), $env);
82$application->run($_REQUEST['action']);
83?>
84      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
85    <activity>
86      <name>Confirma</name>
87      <type>activity</type>
88      <description>O funcionária confirma as informações sobre sua ligação.</description>
89      <menuPath></menuPath>
90      <lastModif>28/12/2006 [08:30:44]</lastModif>
91      <isInteractive>n</isInteractive>
92      <isAutoRouted>y</isAutoRouted>
93      <roles>
94      </roles>
95      <agents>
96      </agents>
97      <code><![CDATA[<?php
98?>
99      ]]></code>    </activity>
100    <activity>
101      <name>Consultar Ligações</name>
102      <type>standalone</type>
103      <description>Consulta as ligações feitas pelo usuário.</description>
104      <menuPath></menuPath>
105      <lastModif>17/01/2007 [10:23:05]</lastModif>
106      <isInteractive>y</isInteractive>
107      <isAutoRouted>n</isAutoRouted>
108      <roles>
109        <role>usuario</role>
110      </roles>
111      <agents>
112      </agents>
113      <code><![CDATA[<?php
114$application = new ConsultarLigacoesController(new ConsultarLigacoesModel($env), $env);
115$application->run($_REQUEST['action']);
116?>
117      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
118    <activity>
119      <name>Consultar Registros</name>
120      <type>standalone</type>
121      <description>A telefonista consulta as ligações realizadas.</description>
122      <menuPath></menuPath>
123      <lastModif>03/12/2007 [04:00:23]</lastModif>
124      <isInteractive>y</isInteractive>
125      <isAutoRouted>n</isAutoRouted>
126      <roles>
127        <role>telefonista</role>
128      </roles>
129      <agents>
130      </agents>
131      <code><![CDATA[<?php
132$application = new ConsultarRegistrosController(new ConsultarRegistrosModel($env), $env);
133$application->run($_REQUEST['action']);
134?>      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
135    <activity>
136      <name>Definir Valor Ligação</name>
137      <type>standalone</type>
138      <description>A telfonista define o valor das ligações.</description>
139      <menuPath></menuPath>
140      <lastModif>28/12/2006 [08:30:44]</lastModif>
141      <isInteractive>y</isInteractive>
142      <isAutoRouted>n</isAutoRouted>
143      <roles>
144        <role>atribuidor</role>
145      </roles>
146      <agents>
147      </agents>
148      <code><![CDATA[<?php
149$application = new DefinirValorLigacaoController(new DefinirValorLigacaoModel($env), $env);
150$application->run($_REQUEST['action']);
151?>
152      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
153    <activity>
154      <name>end</name>
155      <type>end</type>
156      <description>default end activity</description>
157      <menuPath></menuPath>
158      <lastModif>28/12/2006 [08:30:44]</lastModif>
159      <isInteractive>n</isInteractive>
160      <isAutoRouted>y</isAutoRouted>
161      <roles>
162      </roles>
163      <agents>
164      </agents>
165      <code><![CDATA[<?php
166?>      ]]></code>    </activity>
167    <activity>
168      <name>Forçar Avaliação Padrão</name>
169      <type>standalone</type>
170      <description>Faz com que as avaliações paradas a mais de um determinado período de tempo sigam o fluxo padrão.</description>
171      <menuPath></menuPath>
172      <lastModif>28/12/2006 [08:30:44]</lastModif>
173      <isInteractive>y</isInteractive>
174      <isAutoRouted>n</isAutoRouted>
175      <roles>
176        <role>telefonista</role>
177      </roles>
178      <agents>
179      </agents>
180      <code><![CDATA[<?php
181$application = new ForcarAvaliacaoPadraoController(new ForcarAvaliacaoPadraoModel($env), $env);
182$application->run($_REQUEST['action']);
183?>
184      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
185    <activity>
186      <name>Funcionário Avalia</name>
187      <type>switch</type>
188      <description>O funcionário avalia sua própria ligação (que foi particular).</description>
189      <menuPath></menuPath>
190      <lastModif>28/12/2006 [08:30:44]</lastModif>
191      <isInteractive>y</isInteractive>
192      <isAutoRouted>y</isAutoRouted>
193      <roles>
194        <role>usuario</role>
195      </roles>
196      <agents>
197      </agents>
198      <code><![CDATA[<?php
199$application = new FuncionarioAvaliaController(new FuncionarioAvaliaModel($env), $env);
200$application->run($_REQUEST['action']);
201?>
202      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
203    <activity>
204      <name>Gerar Relatórios</name>
205      <type>standalone</type>
206      <description>Geração de relatórios para os mais diversos fins.</description>
207      <menuPath></menuPath>
208      <lastModif>28/12/2006 [08:30:44]</lastModif>
209      <isInteractive>y</isInteractive>
210      <isAutoRouted>n</isAutoRouted>
211      <roles>
212        <role>telefonista</role>
213      </roles>
214      <agents>
215      </agents>
216      <code><![CDATA[<?php
217$application = new GerarRelatoriosController(new GerarRelatoriosModel($env), $env);
218$application->run($_REQUEST['action']);
219?>
220      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
221    <activity>
222      <name>Não Procede</name>
223      <type>activity</type>
224      <description>Caso as informações não procedam, o fluxo é transferido para a telefonista para que esta faça as correções necessárias.</description>
225      <menuPath></menuPath>
226      <lastModif>28/12/2006 [08:30:44]</lastModif>
227      <isInteractive>n</isInteractive>
228      <isAutoRouted>y</isAutoRouted>
229      <roles>
230      </roles>
231      <agents>
232      </agents>
233      <code><![CDATA[<?php
234?>
235      ]]></code>    </activity>
236    <activity>
237      <name>Registrar Ligação</name>
238      <type>start</type>
239      <description>Registra uma ligação solicitada pelo funcionário.</description>
240      <menuPath></menuPath>
241      <lastModif>28/12/2006 [08:30:44]</lastModif>
242      <isInteractive>y</isInteractive>
243      <isAutoRouted>y</isAutoRouted>
244      <roles>
245        <role>telefonista</role>
246      </roles>
247      <agents>
248      </agents>
249      <code><![CDATA[<?php
250$application = new RegistrarLigacaoController(new RegistrarLigacaoModel($env), $env);
251$application->run($_REQUEST['action']);
252?>
253      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
254    <activity>
255      <name>Rejeita</name>
256      <type>activity</type>
257      <description>A ligação é rejeitada pela chefia. Equivale a uma ligação particular do funcionário.</description>
258      <menuPath></menuPath>
259      <lastModif>28/12/2006 [08:30:44]</lastModif>
260      <isInteractive>n</isInteractive>
261      <isAutoRouted>y</isAutoRouted>
262      <roles>
263      </roles>
264      <agents>
265      </agents>
266      <code><![CDATA[<?php
267?>
268      ]]></code>    </activity>
269    <activity>
270      <name>Retificação</name>
271      <type>activity</type>
272      <description>A telefonista faz as correções dos dados da ligação.</description>
273      <menuPath></menuPath>
274      <lastModif>28/12/2006 [08:30:44]</lastModif>
275      <isInteractive>y</isInteractive>
276      <isAutoRouted>y</isAutoRouted>
277      <roles>
278        <role>telefonista</role>
279      </roles>
280      <agents>
281      </agents>
282      <code><![CDATA[<?php
283$application = new RetificacaoController(new RetificacaoModel($env), $env);
284$application->run($_REQUEST['action']);
285?>
286      ]]></code>      <template><![CDATA[      ]]></template>    </activity>
287    <activity>
288      <name>Salva</name>
289      <type>activity</type>
290      <description>Os dados da ligação são salvos no Banco de Dados.</description>
291      <menuPath></menuPath>
292      <lastModif>28/12/2006 [08:30:44]</lastModif>
293      <isInteractive>n</isInteractive>
294      <isAutoRouted>y</isAutoRouted>
295      <roles>
296      </roles>
297      <agents>
298      </agents>
299      <code><![CDATA[<?php
300$application = new SalvaController(new SalvaModel($env), $env);
301$application->run($_REQUEST['action']);
302?>
303      ]]></code>    </activity>
304    <activity>
305      <name>Tipo Ligação</name>
306      <type>switch</type>
307      <description>Redireciona o fluxo de acordo com o tipo da ligação (particular ou a serviço).</description>
308      <menuPath></menuPath>
309      <lastModif>03/01/2008 [12:01:50]</lastModif>
310      <isInteractive>n</isInteractive>
311      <isAutoRouted>y</isAutoRouted>
312      <roles>
313      </roles>
314      <agents>
315        <agent>
316           <agent_type>mail_smtp</agent_type>
317           <agent_datas>
318               <agent_data>
319                   <name>wf_to</name>
320                   <value>%property_email%</value>
321               </agent_data>
322               <agent_data>
323                   <name>wf_cc</name>
324                   <value></value>
325               </agent_data>
326               <agent_data>
327                   <name>wf_bcc</name>
328                   <value></value>
329               </agent_data>
330               <agent_data>
331                   <name>wf_from</name>
332                   <value>no-reply@celepar.pr.gov.br</value>
333               </agent_data>
334               <agent_data>
335                   <name>wf_replyto</name>
336                   <value>no-reply@celepar.pr.gov.br</value>
337               </agent_data>
338               <agent_data>
339                   <name>wf_subject</name>
340                   <value>%property_assunto%</value>
341               </agent_data>
342               <agent_data>
343                   <name>wf_message</name>
344                   <value>Uma liga&amp;ccedil;&amp;atilde;o telef&amp;ocirc;nica aguarda sua avalia&amp;ccedil;&amp;atilde;o.
345Informa&amp;ccedil;&amp;otilde;es sobre a liga&amp;ccedil;&amp;atilde;o:
346&amp;lt;strong&amp;gt;Usu&amp;aacute;rio&amp;lt;/strong&amp;gt;: %property__usuario_desc%
347&amp;lt;strong&amp;gt;Telefone&amp;lt;/strong&amp;gt;: %property__telefone%
348&amp;lt;strong&amp;gt;Hor&amp;aacute;rio&amp;lt;/strong&amp;gt;: %property__data% %property__horario%
349&amp;lt;strong&amp;gt;Cidade&amp;lt;/strong&amp;gt;: %property__cidade_desc%
350
351Clique no link a seguir para avali&amp;aacute;-la:
352&amp;lt;a href=&amp;quot;%property_link%&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Link para avalia&amp;ccedil;&amp;atilde;o&amp;lt;/a&amp;gt;
353
354(Para evitar a perda de sess&amp;atilde;o, n&amp;atilde;o fa&amp;ccedil;a logout na janela que ser&amp;aacute; aberta. Apenas feche a janela ap&amp;oacute;s a avalia&amp;ccedil;&amp;atilde;o.)</value>
355               </agent_data>
356               <agent_data>
357                   <name>wf_send_mode</name>
358                   <value>3</value>
359               </agent_data>
360               <agent_data>
361                   <name>wf_agent_type</name>
362                   <value>mail_smtp</value>
363               </agent_data>
364           </agent_datas>
365        </agent>
366      </agents>
367      <code><![CDATA[<?php
368$application = new TipoLigacaoController(new TipoLigacaoModel($env), $env);
369$application->run($_REQUEST['action']);
370?>
371      ]]></code>    </activity>
372  </activities>
373  <templates>
374    <template>
375      <name>Consultar_Registros.tpl</name>
376      <code><![CDATA[{include file="header.tpl"}
377<script language="javascript1.2" src="{$wf_resources_path}/consultar.js"></script>
378{wf_make_link}
379<br/><br/>
380<label><input type="checkbox" name="incluirHistorico" value="true" onclick="document.getElementsByName('workflow_form')[0].submit();"{if ($smarty.request.incluirHistorico == true)} checked{/if}/>Incluir Histórico</label>
381<br/><br/>
382{$linksPaginacao}
383{if count($itens) == 0}
384        <center><strong>nenhum registro encontrado</strong></center>
385        <br/><br/>
386{else}
387        <table width="100%" align="center">
388        <tbody>
389        <tr>
390        {foreach from=$titulosOrdenacao item=tituloOrdenacao}
391                <th class="cabecalho"><a href="{$tituloOrdenacao.link}">{$tituloOrdenacao.name}</a></th>
392        {/foreach}
393        </tr>
394        {foreach name="feItens" from=$itens item=item}
395                <tr style="cursor: pointer;" {if $smarty.foreach.feItens.iteration is even}class="par"{else}class="impar"{/if} id="l{$smarty.foreach.feItens.iteration}" onclick="exibir({$smarty.foreach.feItens.iteration}, {$item.usuario}, '{$item.data_ordenacao}')">
396                <td>{$item.usuario_desc}</td>
397                <td>{$item.data_hora}</td>
398                <td>{$item.telefone}</td>
399                <td>{$listaMotivos[$item.motivo]}</td>
400                <td>{$item.valor}</td>
401                </tr>
402                <tr style="display: none;" id="lo{$smarty.foreach.feItens.iteration}">
403                <td colspan="5">
404                <iframe width="100%" frameborder="0" id="if{$smarty.foreach.feItens.iteration}">
405                </iframe>
406                </td>
407                </tr>
408        {/foreach}
409        </tbody>
410        </table>
411{/if}
412{$linksPaginacao}
413      ]]></code>    </template>
414    <template>
415      <name>Funcionrio_Avalia.tpl</name>
416      <code><![CDATA[{include file="header.tpl"}
417{include file="informacoes.tpl"}
418<table width="650" cellspacing="2" cellpadding="2" border="0" align="center">
419        <tbody>
420                <tr>
421                        <td>
422                                <input type="submit" name="action" value="Confirmar" />
423                                <input type="submit" name="action" value="Não Procede" />
424                        </td>
425                </tr>
426        <tbody>
427</table>
428      ]]></code>    </template>
429    <template>
430      <name>Definir_Valor_Ligao.tpl</name>
431      <code><![CDATA[{include file="header.tpl"}
432{wf_calendar_init}
433{wf_ajax_init}
434<script language="javascript1.2" src="{$wf_resources_path}/definir_valor.js"></script>
435<script language="javascript1.2" src="{$wf_resources_path}/definir_mes.js"></script>
436<script language="javascript1.2" src="{$wf_js_path}/../scriptaculous/prototype.js"></script>
437{wf_make_link}
438<br/><br/>
439{$linksPaginacao}
440{if count($itens) == 0}
441        <center><strong>nenhum registro encontrado</strong></center>
442        <br/><br/>
443{else}
444        <table width="100%" align="center">
445        <tbody>
446        <tr>
447        {foreach from=$titulosOrdenacao item=tituloOrdenacao}
448                <th class="cabecalho"><a href="{$tituloOrdenacao.link}">{$tituloOrdenacao.name}</a></th>
449        {/foreach}
450        </tr>
451        {foreach name="feItens" from=$itens item=item}
452                <tr {if $smarty.foreach.feItens.iteration is even}class="par"{else}class="impar"{/if} id="linha_{$smarty.foreach.feItens.iteration}">
453                <td>{$item.usuario_desc}</td>
454                <td>{$item.data_hora}</td>
455                <td>{$listaTipoLigacao[$item.tipo_ligacao]}{if isset($item.extra_tipo_ligacao)} - {$item.extra_tipo_ligacao}{/if}</td>
456                <td>{$item.telefone}</td>
457                <td>{if $item.mes_referencia}{$item.mes_referencia}{else}<span id="m{$smarty.foreach.feItens.iteration}" onclick="editarMes('m{$smarty.foreach.feItens.iteration}', this, '{$item.usuario}', '{$item.data_ordenacao}'); return false;"><a href="#">definir mês de referência</a></span>{/if}</td>
458                <td>{if $item.valor}{$item.valor}{else}<span id="v{$smarty.foreach.feItens.iteration}" onclick="editarValor('v{$smarty.foreach.feItens.iteration}', this, '{$item.usuario}', '{$item.data_ordenacao}'); return false;"><a href="#">definir valor</a></span>{/if}</td>
459                </tr>
460        {/foreach}
461        </tbody>
462        </table>
463{/if}
464{$linksPaginacao}
465      ]]></code>    </template>
466    <template>
467      <name>formulario.tpl</name>
468      <code><![CDATA[<br /><br />
469
470{wf_calendar_init}
471{wf_select_user_init}
472{wf_select_city_init}
473{wf_ajax_init}
474<table width="650" cellspacing="2" cellpadding="2" border="0" align="center">
475   <tbody>
476      <tr>
477         <td colspam="2" colspan="2">&nbsp;</td>
478      </tr>
479          {if isset($linhasAntes)}
480                {foreach from=$linhasAntes item=linhaAntes}
481          <tr>
482                <td>{$linhaAntes[0]}</td>
483                <td>{$linhaAntes[1]}</td>
484          </tr>
485                {/foreach}
486          {/if}
487      <tr>
488         <td valign="top"><label for="_usuario">Usuário:</label></td>
489         <td>
490                        {wf_select_user name="_usuario" id_value=$_usuario organization="CELEPAR" desc_value=$_usuario_desc title="Selecione o usuário que efetuou a ligação" entities='u'}
491                        <span id="info_usuario"></span>
492         </td>
493      </tr>
494      <tr>
495         <td valign="top"><label for="Data">Data:</label></td>
496         <td valign="top">
497                        {wf_calendar default=true name="_data" value=$_data}
498         </td>
499      </tr>
500      <tr>
501         <td valign="top"><label>Horário:</label></td>
502         <td>
503            {html_select_time prefix="_horario" display_seconds=false use_24_hours=true time=$_horario}
504         </td>
505      </tr>
506      <tr>
507         <td valign="top"><label for="_motivo">Motivo:</label></td>
508         <td>
509            {html_options name=_motivo options=$listaMotivos selected=$_motivo id=_motivo}
510                        <span id="info_chefia"></span>
511         </td>
512      </tr>
513      <tr>
514         <td valign="top"><label for="_tipoLigacao">Tipo Ligação:</label></td>
515         <td>
516            {html_options name=_tipoLigacao options=$listaTipoLigacao selected=$_tipoLigacao id=_tipoLigacao}
517                        <span id="info_numero_folhas" style="display: none;"><label>Número de Folhas: <input type="text" name="_numero_folhas" id="_numero_folhas" size="1" value="{$_numero_folhas}" onkeypress="return(somenteNumeros(this, event))"/></label></span>
518         </td>
519      </tr>
520      <tr>
521         <td valign="top"><label for="_telefone">Telefone:</label></td>
522         <td>
523            <input type="text" name="_telefone" id="_telefone" value="{$_telefone}" onkeypress="return(formatarEntradaTelefone(this, event))"/></td>
524      </tr>
525      <tr>
526         <td valign="top"><label for="_cidade">Cidade:</label></td>
527         <td>
528                        {wf_select_city name="_cidade" value=$_cidade}
529                 </td>
530      </tr>
531      <tr>
532         <td valign="top"><label for="_valor">Valor:</label></td>
533         <td valign="top">
534            <input type="text" name="_valor" id="_valor" value="{$_valor}" onkeypress="return(formatarEntradaValor(this,'.',',',event));"/>
535            <input type="submit" id="enviar" name="action" value="Enviar" />
536            <input type="submit" id="cancelar" name="action" value="Cancelar" />
537                        {$botaoAbortar}
538         </td>
539      </tr>
540      <tr>
541         <td valign="top"><label for="_observacoes">Observações:</label></td></td>
542         <td>
543            <textarea name="_observacoes" cols="60" rows="10">{$_observacoes}</textarea>
544            <br /></td>
545      </tr>
546      <tr>
547         <td valign="top">&nbsp;</td>
548         <td valign="top">
549                </td>
550      </tr>
551   </tbody>
552</table>
553{literal}
554<script language="javascript">
555$('_usuario').onchange = function() {if ($F('_usuario') != '') checarUsuario($F('_usuario')); $('_motivo').onchange(); };
556$('_motivo').onchange = function() {if (($F('_usuario') != '') && ($F('_motivo') == 1)) obterChefia($F('_usuario')); else $('info_chefia').innerHTML = '';};
557$('_tipoLigacao').onchange = function() {if ($F('_tipoLigacao') == 2){$('info_numero_folhas').style.display = ''; if ($F('_numero_folhas') == '') $('_numero_folhas').value = 0;} else $('info_numero_folhas').style.display = 'none';};
558
559$('_tipoLigacao').onchange();
560</script>
561{/literal}
562      ]]></code>    </template>
563    <template>
564      <name>Consultar_Ligaes.tpl</name>
565      <code><![CDATA[{include file="header.tpl"}
566<script language="javascript1.2" src="{$wf_resources_path}/consultar.js"></script>
567<br/><br/>
568{$linksPaginacao}
569{if count($itens) == 0}
570        <center><strong>nenhuma ligação encontrada</strong></center>
571        <br/><br/>
572{else}
573        <table width="100%" align="center">
574        <tbody>
575        <tr>
576        {foreach from=$titulosOrdenacao item=tituloOrdenacao}
577                <th class="cabecalho"><a href="{$tituloOrdenacao.link}">{$tituloOrdenacao.name}</a></th>
578        {/foreach}
579        </tr>
580        {foreach name="feItens" from=$itens item=item}
581                <tr style="cursor: pointer;" {if $smarty.foreach.feItens.iteration is even}class="par"{else}class="impar"{/if} id="l{$smarty.foreach.feItens.iteration}" onclick="exibir({$smarty.foreach.feItens.iteration}, {$item.usuario}, '{$item.data_ordenacao}')">
582                <td>{$item.data_hora}</td>
583                <td>{$item.telefone}</td>
584                <td>{$listaTipoLigacao[$item.tipo_ligacao]}</td>
585                <td>{$listaMotivos[$item.motivo]}</td>
586                <td>{$listaStatus[$item.status]}</td>
587                <td>{if $item.valor == ""}---{else}R$ {$item.valor}{/if}</td>
588                <td>{if $item.mes_referencia == ""}(não definido){else}{$item.mes_referencia}{/if}</td>
589                </tr>
590                <tr style="display: none;" id="lo{$smarty.foreach.feItens.iteration}">
591                <td colspan="7">
592                <iframe width="100%" frameborder="0" id="if{$smarty.foreach.feItens.iteration}">
593                </iframe>
594                </td>
595                </tr>
596        {/foreach}
597        </tbody>
598        </table>
599{/if}
600{$linksPaginacao}
601      ]]></code>    </template>
602    <template>
603      <name>informacoes.tpl</name>
604      <code><![CDATA[<br /><br />
605
606<table width="550" cellspacing="2" cellpadding="2" border="0" align="center">
607   <tbody>
608      <tr>
609         <td valign="top"><label>Usuário:</label></td>
610         <td>{$_usuario_desc}</td>
611      </tr>
612      <tr>
613         <td valign="top"><label>Data:</label></td>
614         <td valign="top">{$_data}</td>
615      </tr>
616      <tr>
617         <td valign="top"><label>Horário:</label></td>
618         <td>{$_horario}</td>
619      </tr>
620      <tr>
621         <td valign="top"><label>Motivo:</label></td>
622         <td>{$listaMotivos[$_motivo]}</td>
623      </tr>
624      <tr>
625         <td valign="top"><label>Tipo Ligação:</label></td>
626         <td>{$listaTipoLigacao[$_tipoLigacao]}{if isset($extra_tipo_ligacao)} - {$extra_tipo_ligacao}{/if}</td>
627      </tr>
628      <tr>
629         <td valign="top"><label for="telefone">Telefone:</label></td>
630         <td>{$_telefone}</td>
631      </tr>
632      <tr>
633         <td valign="top"><label for="cidade">Cidade:</label></td>
634         <td>{$_cidade_desc}</td>
635      </tr>
636      <tr>
637         <td valign="top"><label for="valor">Valor:</label></td>
638         <td valign="top">{$_valor}</td>
639      </tr>
640      <tr>
641         <td valign="top"><label for="observacoes">Observações:</label></td></td>
642         <td>{$_observacoes|wordwrap|nl2br}<br /></td>
643      </tr>
644          {if isset($linhasDepois)}
645                {foreach from=$linhasDepois item=linhaDepois}
646          <tr>
647                <td>{$linhaDepois[0]}</td>
648                <td>{$linhaDepois[1]}</td>
649          </tr>
650                {/foreach}
651          {/if}
652   </tbody>
653</table>
654      ]]></code>    </template>
655    <template>
656      <name>Registrar_Ligao.tpl</name>
657      <code><![CDATA[{include file="header.tpl"}
658{include file="formulario.tpl"}
659      ]]></code>    </template>
660    <template>
661      <name>Gerar_Relatrios.tpl</name>
662      <code><![CDATA[{include file="header.tpl"}
663<script language="javascript" src="{$wf_resources_path}/gerarRelatorios.js"></script>
664{wf_calendar_init}
665{wf_select_user_init}
666<table>
667        <tr>
668                <th>Relatórios Gerais</th>
669                <th>Relatório Individual</th>
670        </tr>
671        <tr>
672                <td>
673                        <table width="350" cellspacing="2" cellpadding="2" border="0">
674                                <tr>
675                                        <td><label for="data">Data de Referência</label></td>
676                                        <td>{wf_calendar default=true name="data" value=$data ifFormat="%m/%Y"}</td>
677                                </tr>
678                                <tr>
679                                        <td colspan="2">
680                                                <label><input type="checkbox" name="lancarHistorico" value="true"/>Lançar no histórico</label>
681                                        </td>
682                                </tr>
683                                <tr>
684                                        <td colspan="2">
685                                                <input type="submit" name="action" value="Gerar Relatório de Conferência"/>
686                                                <input type="submit" name="action" value="Gerar Relatório de Folha"/>
687                                        </td>
688                                </tr>
689                        </table>
690                </td>
691                <td>
692                        <table>
693                                <tr>
694                                        <td><label for="usuario">Usuário</label></td>
695                                        <td>{wf_select_user name="usuario" organization="CELEPAR" title="Selecione o usuário para constar no relatório" entities='u'}</td>
696                                </tr>
697                                <tr>
698                                        <td><label for="selecaoMeses">Pré-Seleção de Mês</label></td>
699                                        <td>{wf_calendar default=true name="selecaoMeses" value=$data ifFormat="%m/%Y"} <button onclick="individualAdicionarData(); return false;">Adicionar</button></td>
700                                </tr>
701                                <tr>
702                                        <td><label for="meses">Meses</label></td>
703                                        <td>
704                                                <table>
705                                                <tr>
706                                                <td><select name="meses[]" id="meses" multiple style="width: 100px; height: 50px;"></select></td>
707                                                <td><button onclick="individualRemoverData(); return false;">Remover</button></td>
708                                                </tr>
709                                                </table>
710                                        </td>
711                                </tr>
712                                <tr>
713                                        <td colspan="2">
714                                                <label><input type="checkbox" name="incluirMesIndefinido" value="true"/>Incluir Ligações sem mês de referência</label>
715                                        </td>
716                                </tr>
717                                <tr>
718                                        <td colspan="2">
719                                                <input type="submit" name="action" value="Gerar Relatório Individual"/>
720                                        </td>
721                                </tr>
722                        </table>
723                </td>
724        </tr>
725</table>
726<script language="javascript">
727{literal}
728var data = $('data');
729data.onkeypress = function(event){return formatarCalendarioMes(this, event);};
730data.setAttribute("maxlength", "7");
731data = $('selecaoMeses');
732data.onkeypress = function(event){return formatarCalendarioMes(this, event);};
733data.setAttribute("maxlength", "7");
734
735document.getElementsByName('workflow_form')[0].onsubmit = function()
736{
737        $A($('meses').childNodes).each(function(item){item.selected = true;});
738};
739{/literal}
740</script>
741      ]]></code>    </template>
742    <template>
743      <name>Retificao.tpl</name>
744      <code><![CDATA[{include file="header.tpl"}
745{assign var="botaoAbortar" value='<input type="submit" name="action" value="Abortar" />'}
746{include file="formulario.tpl"}
747      ]]></code>    </template>
748    <template>
749      <name>header.tpl</name>
750      <code><![CDATA[<script language="javascript" src="{$wf_resources_path}/geral.js"></script>
751<script type="text/javascript" src="{$wf_js_path}/prototype.js"></script>
752<link href="{$wf_resources_path}/ligacoes_telefonicas.css" type="text/css" rel="StyleSheet">
753<table class="table_header">
754    <tbody>
755        <tr>
756            <td  class="td_header_logo" background="{$wf_resources_path}/telefone.jpg"></td>
757            <td>
758                <span class="txt_header_titulo">Ligações Telefônicas</span><br/>
759                <span class="txt_header_sub_titulo">{$subtitulo}</span>
760            </td>
761        </tr>
762    </tbody>
763</table>
764      ]]></code>    </template>
765    <template>
766      <name>Forar_Avaliao_Padro.tpl</name>
767      <code><![CDATA[{include file="header.tpl"}
768{wf_calendar_init}
769<script language="javascript1.2" src="{$wf_resources_path}/geral.js"></script>
770<script language="javascript1.2">
771{literal}
772function enviarFormulario()
773{
774        var numeroDias = document.getElementById('numeroDias').value;
775        if (numeroDias == '')
776        {
777                alert("É necessário informar a quantidade de dias.");
778                return;
779        }
780
781        if (numeroDias < 10)
782                if (!confirm("Tem certeza que deseja forçar o fluxo padrão de avaliações paradas há mais de " + numeroDias + " dias?"))
783                        return;
784
785        var formulario = document.getElementsByName('workflow_form')[0];
786        formulario.submit();
787}
788{/literal}
789</script>
790{wf_make_link}
791<br/><br/>
792{if isset($quantidade)}
793<font color="red">{$quantidade} avaliações foram completadas.</font>
794{/if}
795{if isset($mensagem)}
796<font color="red">{$mensagem}</font>
797{/if}
798<br/>
799<strong>Descrição</strong>: Forçar com que ligações que não foram avaliadas há mais de uma determinada quantidade de dias sigam o fluxo normal.
800<table>
801        <tbody>
802                <tr style="background-color: #000; color: #fff; align: center;">
803                        <td>
804                                <center><strong>Atividade</strong></center>
805                        </td>
806                        <td>
807                                <center><strong>Fluxo Normal</strong></center>
808                        </td>
809                </tr>
810                <tr>
811                        <td>
812                                Funcionário Avalia
813                        </td>
814                        <td>
815                                Confirmar Ligação
816                        </td>
817                </tr>
818                <tr>
819                        <td>
820                                Chefia Avalia
821                        </td>
822                        <td>
823                                Aprovar Ligação
824                        </td>
825                </tr>
826        <tbody>
827</table>
828<br/>
829<table>
830        <tbody>
831                <tr>
832                        <td>
833                                <label for="numeroDias">Número de Dias</label>
834                        </td>
835                        <td>
836                                <input type="text" size="3" value="10" name="numeroDias" id="numeroDias" onkeypress="return(somenteNumeros(this, event))"/>
837                        </td>
838                </tr>
839                <tr>
840                        <td colspan="2">
841                                <input type="hidden" value="Forçar Fluxo" name="action"/>
842                                <button onclick="enviarFormulario(); return false;">Forçar Fluxo</button>
843                        </td>
844                </tr>
845        <tbody>
846</table>
847<br/><br/><br/><br/>
848      ]]></code>    </template>
849    <template>
850      <name>descricao.tpl</name>
851      <code><![CDATA[      ]]></code>    </template>
852    <template>
853      <name>Chefia_Avalia.tpl</name>
854      <code><![CDATA[{include file="header.tpl"}
855{include file="informacoes.tpl"}
856<table width="650" cellspacing="2" cellpadding="2" border="0" align="center">
857        <tbody>
858                <tr>
859                        <td>
860                                <input type="submit" onclick="document.getElementsByName('workflow_form')[0].onsubmit = null;" name="action" value="Aprovar" />
861                                <input type="submit" onclick="document.getElementsByName('workflow_form')[0].onsubmit = confirmarRejeicao;" name="action" value="Rejeitar" />
862                                <input type="submit" onclick="document.getElementsByName('workflow_form')[0].onsubmit = null;" name="action" value="Não Procede" />
863                        </td>
864                </tr>
865        <tbody>
866</table>
867      ]]></code>    </template>
868  </templates>
869  <includes>
870    <include>
871      <name>class.tipo.ligacao.model.inc.php</name>
872      <code><![CDATA[<?php
873class TipoLigacaoModel extends Model
874{
875        function defaultAction()
876        {
877                $this->updateAttributes();
878                switch ($this->_motivo)
879                {
880                        /* ligação pessoal, funcionário avalia */
881                        case 0:
882                                $this->ligacaoParticular();
883                                break;
884
885                        /* ligação a serviço, chefe avalia */
886                        case 1:
887                                $this->ligacaoServico();
888                                break;
889
890                        default:
891                }
892
893                /* se o usuário não estiver no organograma, passa a ligação para um usuário padrão */
894                if ((!is_numeric($this->_setor_id)) || is_null($this->_avaliador))
895                        $this->_avaliador = 17749; # Sidnei Augusto Drovetto Junior
896
897                /* carrega informações do avaliador */
898                $avaliadorInfo = $this->factory->getInstance('wf_ldap')->get_entry($this->_avaliador);
899                $this->_avaliador_desc = $avaliadorInfo['cn'];
900
901
902                /* define o próximo usuário */
903                $this->instance->setNextUser($this->_avaliador);
904
905                /* configura os parâmetros do e-mail */
906                $this->instance->set("email", '"' . $avaliadorInfo['cn'] . '" <' . $avaliadorInfo['mail'] . '>');
907                $this->instance->set("link", wf_get_next_activity_link());
908                $this->instance->set("assunto", "Uma ligação espera a sua avaliação");
909
910                return true;
911        }
912
913        function ligacaoParticular()
914        {
915                $this->instance->setNextActivity('Funcionário Avalia');
916                $this->_avaliador = $this->_usuario;
917        }
918
919        function ligacaoServico()
920        {
921                $this->instance->setNextActivity('Chefia Avalia');
922                $this->_avaliador = $this->factory->getInstance("wf_orgchart")->getEmployeeCurrentAdministrativeResponsibleID($this->_usuario, -1);
923        }
924}
925
926?>
927      ]]></code>    </include>
928    <include>
929      <name>class.salva.controller.inc.php</name>
930      <code><![CDATA[<?php
931class SalvaController extends Controller
932{
933        function __default()
934        {
935                $this->model->defaultAction();
936        }
937}
938
939?>
940      ]]></code>    </include>
941    <include>
942      <name>class.registrar.ligacao.controller.inc.php</name>
943      <code><![CDATA[<?php
944class RegistrarLigacaoController extends Controller
945{
946        function __default()
947        {
948                if ($this->model->defaultAction())
949                {
950                        $this->syncVars();
951                        $this->loadViewVars();
952                }
953                else
954                {
955                        /* acao erro */
956                };
957        }
958
959        function enviar()
960        {
961                if (!$this->model->enviarAction())
962                        $this->__default();
963        }
964}
965
966?>
967      ]]></code>    </include>
968    <include>
969      <name>class.ajax.consulta.inc.php</name>
970      <code><![CDATA[<?php
971class consulta
972{
973        function consulta()
974        {
975        }
976
977        function obterChefia($params)
978        {
979                $organograma = wf_create_object("wf_orgchart");
980                $usuarioID = (int) $params['usuario'];
981                $chefe = $organograma->getEmployeeCurrentAdministrativeResponsibleID($usuarioID);
982                if ($chefe === false)
983                        return false;
984                else
985                {
986                        $output = array();
987                        $ldap = wf_create_object('wf_ldap');
988                        $infoLDAP = $ldap->get_entry($chefe);
989                        $output['chefe'] = $infoLDAP['cn'];
990                        $areaID = $organograma->getEmployeeAreaID($usuarioID);
991                        $area = $organograma->getArea($areaID);
992                        $output['area'] = $area['sigla'];
993                        return $output;
994                }
995        }
996}
997?>
998      ]]></code>    </include>
999    <include>
1000      <name>class.chefia.avalia.model.inc.php</name>
1001      <code><![CDATA[<?php
1002class ChefiaAvaliaModel extends FuncionarioAvaliaModel
1003{
1004        function defaultAction()
1005        {
1006                parent::defaultAction();
1007                $this->addViewVar('subtitulo', 'Avaliação pela Chefia');
1008
1009                return true;
1010        }
1011
1012        function aprovarAction()
1013        {
1014                $this->updateAttributes();
1015                $this->_status = 1;
1016                $this->instance->setNextActivity('Aprova');
1017
1018                $this->posAvaliacao();
1019        }
1020
1021        function rejeitarAction()
1022        {
1023                $this->updateAttributes();
1024                $this->_status = 0;
1025                $this->instance->setNextActivity('Rejeita');
1026
1027                $this->posAvaliacao();
1028        }
1029
1030        function aprovadaAutomaticamenteAction()
1031        {
1032                $this->updateAttributes();
1033                $this->_status = 4;
1034                $this->instance->setNextActivity('Aprova');
1035
1036                $this->posAvaliacao();
1037        }
1038
1039        function confirmarAction(){}
1040        function confirmadaAutomaticamenteAction(){}
1041}
1042
1043?>
1044      ]]></code>    </include>
1045    <include>
1046      <name>class.funcionario.avalia.model.inc.php</name>
1047      <code><![CDATA[<?php
1048class FuncionarioAvaliaModel extends Model
1049{
1050        function defaultAction()
1051        {
1052                $this->updateAttributes();
1053                $this->addViewVar('subtitulo', 'Avaliação pelo Funcionário');
1054                if ($this->_tipoLigacao == 2)
1055                        $this->addViewVar('extra_tipo_ligacao', $this->_numero_folhas . ' ' . $this->singularPlural($this->_numero_folhas, 'folha', 'folhas'));
1056                $linhasDepois[] = array('<label for="_comentario">Comentário: <br/> (no caso das informações não procederem)</label>', '<textarea name="_comentario" id="_comentario" cols="60" rows="10"></textarea>');
1057                $this->addViewVar("linhasDepois", $linhasDepois);
1058
1059                return true;
1060        }
1061
1062        function confirmarAction()
1063        {
1064                $this->updateAttributes();
1065                $this->_status = 2;
1066                $this->instance->setNextActivity('Confirma');
1067
1068                $this->posAvaliacao();
1069        }
1070
1071        function naoProcedeAction()
1072        {
1073                $this->updateAttributes();
1074                $this->_comentario = $this->request['_comentario'];
1075                $this->_status = 3;
1076                $this->instance->setNextActivity('Não Procede');
1077                $this->instance->setNextUser($this->_telefonista, 'Não Procede');
1078
1079                $this->posAvaliacao();
1080        }
1081
1082        function confirmadaAutomaticamenteAction()
1083        {
1084                $this->updateAttributes();
1085                $this->_status = 5;
1086                $this->instance->setNextActivity('Confirma');
1087
1088                $this->posAvaliacao();
1089        }
1090
1091        function posAvaliacao()
1092        {
1093                /* se o avaliador da ligação foi modificado (normalmente via monitoramento), atualiza suas informações na instância */
1094                if ($this->_avaliador != $this->getWfProperty('wf_user_id'))
1095                {
1096                        $this->_avaliador = $this->getWfProperty('wf_user_id');
1097                        $this->_avaliador_desc = $this->getWfProperty('wf_user_cnname');
1098                }
1099                $this->updateInstance();
1100                $this->instance->complete();
1101        }
1102
1103}
1104
1105?>
1106      ]]></code>    </include>
1107    <include>
1108      <name>class.consultar.generico.controller.inc.php</name>
1109      <code><![CDATA[<?php
1110class ConsultarGenericoController extends Controller
1111{
1112        function __default()
1113        {
1114                if ($this->model->defaultAction())
1115                {
1116                        $this->syncVars();
1117                        $this->loadViewVars();
1118                }
1119        }
1120
1121        function buscarInformacoes()
1122        {
1123                if ($this->model->buscarInformacoesAction())
1124                {
1125                        $this->syncVars(); /* é necessário para enviar as variáveis de lista */
1126                        $this->loadViewVars();
1127                        $this->showForm($this->INFORMACOES);
1128                }
1129                else
1130                        die();
1131        }
1132}
1133?>
1134      ]]></code>    </include>
1135    <include>
1136      <name>class.model.inc.php</name>
1137      <code><![CDATA[<?php
1138class Model extends BaseModel
1139{
1140        var $_usuario;
1141        var $_usuario_desc;
1142        var $_data;
1143        var $_horario;
1144        var $_motivo;
1145        var $_tipoLigacao;
1146        var $_telefone;
1147        var $_cidade;
1148        var $_cidade_desc;
1149        var $_valor;
1150        var $_observacoes;
1151        var $_telefonista;
1152        var $_telefonista_desc;
1153        var $_numero_folhas;
1154        var $_avaliador;
1155        var $_avaliador_desc;
1156        var $_setor_id;
1157        var $_setor_desc;
1158        var $_comentario;
1159        var $_status;
1160
1161        var $listaMotivos = array(
1162                0 => "Particular",
1163                1 => "A serviço");
1164
1165        var $listaTipoLigacao = array(
1166                0 => "Celular",
1167                1 => "Interurbano",
1168                2 => "FAX",
1169                3 => "A Cobrar");
1170
1171        var $listaStatus = array(
1172                0 => "Rejeitada",
1173                1 => "Aprovada",
1174                2 => "Confirmada",
1175                3 => "Não Confere",
1176                4 => "Aprovada Automaticamente",
1177                5 => "Confirmada Automaticamente");
1178
1179        var $schema = 'ligacoes_telefonicas';
1180
1181        function Model(&$env)
1182        {
1183                $this->super(&$env);
1184        }
1185
1186        function getRequest()
1187        {
1188                /* atribui null para todos os valores vazios */
1189                foreach ($this->request as $key => $value)
1190                        if (trim($value) == '')
1191                                $this->request[$key] = null;
1192                $this->request['_cidade'] = is_null($this->request['_cidade']) ? 1 : $this->request['_cidade'];
1193                $this->request['_horario'] = $this->request['_horarioHour'] . ":" . $this->request['_horarioMinute'];
1194                $this->request['_numero_folhas'] = ($this->request['_tipoLigacao'] == 2) ? ((int) isset($this->request['_numero_folhas']) ? $this->request['_numero_folhas'] : 0) : null;
1195
1196                /* carrega informações sobre a cidade selecionada */
1197                $location = &$this->factory->getInstance("wf_location");
1198                $cidade = $location->getCityById($this->request['_cidade']);
1199                $this->request['_cidade_desc'] = $cidade['city_name'] . ' - ' . $cidade['state_symbol'];
1200
1201                parent::getRequest();
1202        }
1203
1204        function formatarTelefone($entrada)
1205        {
1206                return "(" . substr($entrada, 0, 2) . ") " . wordwrap(substr($entrada, 2), 4, '-', 2);
1207        }
1208
1209        function singularPlural($valor, $singular, $plural, $zero = null)
1210        {
1211                if (is_null($zero))
1212                        $zero = $singular;
1213                return ($valor == 0) ? $zero : (($valor < 2) ? $singular : $plural);
1214        }
1215}
1216?>
1217      ]]></code>    </include>
1218    <include>
1219      <name>class.chefia.avalia.controller.inc.php</name>
1220      <code><![CDATA[<?php
1221class ChefiaAvaliaController extends FuncionarioAvaliaController
1222{
1223        function aprovar()
1224        {
1225                $this->model->aprovarAction();
1226        }
1227
1228        function rejeitar()
1229        {
1230                $this->model->rejeitarAction();
1231        }
1232
1233        function aprovadaAutomaticamente()
1234        {
1235                $this->model->aprovadaAutomaticamenteAction();
1236        }
1237
1238        function confirmadaAutomaticamente(){}
1239        function confirmar(){}
1240}
1241
1242?>
1243      ]]></code>    </include>
1244    <include>
1245      <name>class.funcionario.avalia.controller.inc.php</name>
1246      <code><![CDATA[<?php
1247class FuncionarioAvaliaController extends Controller
1248{
1249        function __default()
1250        {
1251                if ($this->model->defaultAction())
1252                {
1253                        $this->syncVars();
1254                        $this->loadViewVars();
1255                }
1256        }
1257
1258        function confirmar()
1259        {
1260                $this->model->confirmarAction();
1261        }
1262
1263        function naoProcede()
1264        {
1265                $this->model->naoProcedeAction();
1266        }
1267
1268        function confirmadaAutomaticamente()
1269        {
1270                $this->model->confirmadaAutomaticamenteAction();
1271        }
1272}
1273
1274?>
1275      ]]></code>    </include>
1276    <include>
1277      <name>class.definir.valor.ligacao.controller.inc.php</name>
1278      <code><![CDATA[<?php
1279class DefinirValorLigacaoController extends Controller
1280{
1281        function __default()
1282        {
1283                if ($this->model->defaultAction())
1284                {
1285                        $this->syncVars();
1286                        $this->loadViewVars();
1287                }
1288        }
1289}
1290
1291?>
1292      ]]></code>    </include>
1293    <include>
1294      <name>class.controller.inc.php</name>
1295      <code><![CDATA[<?php
1296class Controller extends BaseController
1297{
1298        var $INFORMACOES = 'informacoes.tpl';
1299
1300        function Controller(&$model , &$env)
1301        {
1302                $this->super(&$model , &$env);
1303        }
1304
1305        function syncVars()
1306        {
1307                $this->assign('listaMotivos', $this->model->listaMotivos);
1308                $this->assign('listaTipoLigacao', $this->model->listaTipoLigacao);
1309                $this->assign('listaStatus', $this->model->listaStatus);
1310
1311                parent::syncVars();
1312        }
1313
1314        function run($action)
1315        {
1316                $this->dispatch($this->getNormalizedAction($action));
1317        }
1318}
1319?>
1320      ]]></code>    </include>
1321    <include>
1322      <name>class.forcar.avaliacao.padrao.controller.inc.php</name>
1323      <code><![CDATA[<?php
1324class ForcarAvaliacaoPadraoController extends Controller
1325{
1326        function __default()
1327        {
1328        }
1329
1330        function forcarFluxo()
1331        {
1332                $this->model->forcarFluxoAction();
1333                $this->loadViewVars();
1334        }
1335}
1336
1337?>
1338      ]]></code>    </include>
1339    <include>
1340      <name>class.definir.valor.ligacao.model.inc.php</name>
1341      <code><![CDATA[<?php
1342class DefinirValorLigacaoModel extends Model
1343{
1344        function defaultAction()
1345        {
1346                /* configurações de exibição da paginação */
1347                $numeroItensPorPagina = 3000;
1348                $numeroLinksPaginacao = 10;
1349
1350                /* define o título dos campos e a sua ordem (id) na consulta SQL */
1351                $titulosOrdenacao = array(
1352                        array('name' => 'Usuário',                              'id' => "1"),
1353                        array('name' => 'Data / Hora',                  'id' => "7"), //ordena pelo campo não formatado
1354                        array('name' => 'Tipo Ligação',                 'id' => "3"),
1355                        array('name' => 'Telefone',                             'id' => "4"),
1356                        array('name' => 'Mês de Referência',    'id' => "9"),
1357                        array('name' => 'Valor',                                'id' => "8")
1358                );
1359
1360                /* configura a paginação */
1361                $paging = &$this->factory->getInstance('wf_paging');
1362                $paging->configure($numeroItensPorPagina, $_GET);
1363                $paging->useDatabase(true);
1364                $paging->enableSorting(true);
1365                $paging->setSortingTitles($titulosOrdenacao);
1366
1367                /* seleciona as ligações e faz a paginação */
1368                $query = "SELECT usuario, TO_CHAR(data_hora, 'DD/MM/YYYY HH24:MI') AS data_hora, tipo_ligacao, telefone, TO_CHAR(mes_referencia, 'MM/YYYY') AS mes_referencia, valor, data_hora as data_ordenacao, COALESCE(valor, -0.01) AS valor_ordenacao, COALESCE(mes_referencia, '1900-01-01') AS mes_referencia_ordenacao, numero_folhas FROM {$this->schema}.ligacao_telefonica WHERE ((valor IS NULL) OR (mes_referencia IS NULL)) AND ((motivo = 0) OR ((motivo = 1) AND (status = 0))) AND (historico = false)";
1369                $this->DAO->connect();
1370                $itens = $paging->restrictDBItems($this->DAO, $query);
1371
1372                /* busca os nomes dos usuários */
1373                $IDs = array_map(create_function('$a', 'return $a["usuario"];'), $itens);
1374                $nomes = $this->factory->getInstance('wf_ldap')->getNames($IDs);
1375                $IDsNomes = array();
1376                foreach ($nomes as $nome)
1377                        $IDsNomes[$nome['id']] = $nome['name'];
1378
1379                /* formata os dados que serão exibidos */
1380                foreach ($itens as $key => $value)
1381                {
1382                        /* formata o telefone */
1383                        $itens[$key]['telefone'] = $this->formatarTelefone($value['telefone']);
1384
1385                        /* inclui o nome de quem fez a ligação */
1386                        $itens[$key]['usuario_desc'] = $IDsNomes[$value['usuario']];
1387
1388                        /* formata o valor da ligação */
1389                        if (is_numeric($value['valor']))
1390                                $itens[$key]['valor'] = number_format((float) $value['valor'], 2, ",", ".");
1391
1392                        /* se for um FAX, coloca informações extras */
1393                        if ($value['tipo_ligacao'] == 2)
1394                                $itens[$key]['extra_tipo_ligacao'] = $value['numero_folhas'] . ' ' . $this->singularPlural($value['numero_folhas'], 'folha', 'folhas');
1395                }
1396
1397                /* a ordenação por nomes é um caso especial (também é definido como padrão) */
1398                if ((!isset($this->request['s_co'])) || ($this->request['s_co'] == 1))
1399                {
1400                        usort($itens, create_function('$a,$b', 'return strcasecmp($a[\'usuario_desc\'],$b[\'usuario_desc\']);'));
1401                        if (isset($this->request['s_so']) && ($this->request['s_so'] == 0))
1402                                $itens = array_reverse($itens, true);
1403                }
1404
1405                /* define as variáveis que serão utilizadas no template */
1406                $this->addViewVar('subtitulo', 'Definir Valor de Ligação Telefônica');
1407                $this->addViewVar('titulosOrdenacao', $paging->getSortingTitles());
1408                $this->addViewVar('linksPaginacao', $paging->autoLinks($numeroLinksPaginacao));
1409                $this->addViewVar('itens', $itens);
1410
1411                return true;
1412        }
1413}
1414?>
1415      ]]></code>    </include>
1416    <include>
1417      <name>class.ajax.definir_valores.inc.php</name>
1418      <code><![CDATA[<?php
1419class definir_valores
1420{
1421        var $db;
1422        var $schema;
1423
1424        function definir_valores()
1425        {
1426                $aux = wf_create_object('wf_db');
1427                $aux->connect();
1428                $this->db = $aux->Link_ID;
1429                $this->schema = "ligacoes_telefonicas";
1430        }
1431
1432        function valor($params)
1433        {
1434                $output = array();
1435
1436                $valor = str_replace(",", ".", str_replace(".", "", $params['valor']));
1437                $usuario = (int) $params['usuario'];
1438                $data_hora = $params['data_hora'];
1439
1440                if (!is_numeric($valor))
1441                        $output['erro'] = "\"" . $params['valor'] . "\" é um valor inválido";
1442                else
1443                {
1444                        $valor = (double) $valor;
1445                        $sqlStatement = "UPDATE {$this->schema}.ligacao_telefonica SET valor = ? WHERE (data_hora = ?) AND (usuario = ?)";
1446                        $resultado = $this->db->query($sqlStatement, array($valor, $data_hora, $usuario));
1447                        $this->db->disconnect();
1448                        if ($resultado)
1449                                $output['valor'] = $params['valor'];
1450                        else
1451                                $output['erro'] = "Ocorreu um erro ao se tentar definir um valor para esta ligação.";
1452                }
1453                return $output;
1454        }
1455
1456        function mes($params)
1457        {
1458                $output = array();
1459
1460                $data = "01/" . $params['mes'];
1461                $usuario = $params['usuario'];
1462                $data_hora = $params['data_hora'];
1463                list($dia, $mes, $ano) = explode('/', $data, 3);
1464                if (!@checkdate($mes, $dia, $ano))
1465                        $output['erro'] = "\"" . $params['mes'] . "\" é uma data inválida";
1466                else
1467                        if (strlen($data) != 10)
1468                                $output['erro'] = "A data deve estar no formato: mm/yyyy";
1469                        else
1470                        {
1471                                $sqlStatement = "UPDATE {$this->schema}.ligacao_telefonica SET mes_referencia = TO_DATE(?, 'DD/MM/YYYY') WHERE (data_hora = ?) AND (usuario = ?)";
1472                                $resultado = $this->db->query($sqlStatement, array($data, $data_hora, $usuario));
1473                                $this->db->disconnect();
1474                                if ($resultado)
1475                                        $output['mes'] = $params['mes'];
1476                                else
1477                                        $output['erro'] = "Ocorreu um erro ao se tentar definir um mês de referência para esta ligação.";
1478                        }
1479                return $output;
1480        }
1481}
1482?>
1483      ]]></code>    </include>
1484    <include>
1485      <name>class.retificacao.controller.inc.php</name>
1486      <code><![CDATA[<?php
1487class RetificacaoController extends RegistrarLigacaoController
1488{
1489        function abortar()
1490        {
1491                parent::cancelar();
1492                $this->model->abortarAction();
1493        }
1494}
1495
1496?>
1497      ]]></code>    </include>
1498    <include>
1499      <name>class.retificacao.model.inc.php</name>
1500      <code><![CDATA[<?php
1501class RetificacaoModel extends RegistrarLigacaoModel
1502{
1503        function defaultAction()
1504        {
1505                if ($this->request['action'] != 'Enviar')
1506                        $this->updateAttributes();
1507                $linhasAntes = array();
1508                $linhasAntes[] = array('<label>Avaliador:</label>', $this->_avaliador_desc);
1509                $linhasAntes[] = array('<label>Status:</label>', 'Não procede');
1510                $linhasAntes[] = array('<label>Comentário:</label>', nl2br(wordwrap($this->_comentario, 80)));
1511                $this->addViewVar('linhasAntes', $linhasAntes);
1512                $this->addViewVar('subtitulo', 'Retificação');
1513                return true;
1514        }
1515
1516        function abortarAction()
1517        {
1518                $this->instance->abort();
1519        }
1520}
1521?>
1522      ]]></code>    </include>
1523    <include>
1524      <name>class.gerar.relatorios.model.inc.php</name>
1525      <code><![CDATA[<?php
1526class GerarRelatoriosModel extends Model
1527{
1528        var $dataRelatorio;
1529        var $lancarHistorico = false;
1530
1531        function defaultAction()
1532        {
1533                $this->addViewVar('data', date('m/Y'));
1534
1535                return true;
1536        }
1537
1538        function verificarDados()
1539        {
1540                $erros = array();
1541                if (empty($this->request['data']))
1542                        $erros[] = "É necessário informar uma data";
1543                else
1544                {
1545                        list($mes, $ano) = explode('/', $this->request['data'], 2);
1546                        if (!@checkdate($mes, 1, $ano))
1547                                $erros[] = "A data informada é inválida";
1548                        else
1549                                $this->dataRelatorio = $this->request['data'];
1550                }
1551
1552                $this->lancarHistorico = isset($this->request['lancarHistorico']);
1553
1554                return $erros;
1555        }
1556
1557        function verificarDadosRelatorioIndividual()
1558        {
1559                $erros = array();
1560                if (empty($this->request['usuario']))
1561                        $erros[] = 'É necessário informar um usuário';
1562                if (is_array($this->request['meses']))
1563                {
1564                        foreach ($this->request['meses'] as $mes)
1565                                if (!ereg("^[0-9]{2}/[0-9]{4}$", $mes))
1566                                {
1567                                        $erros[] = 'Mês informado é inválido';
1568                                        break;
1569                                }
1570                }
1571                else
1572                        if (!isset($this->request['incluirMesIndefinido']))
1573                                $erros[] = 'É necessário informar os meses do relatório ou então incluir ligações sem mês de referência';
1574
1575                return $erros;
1576        }
1577
1578        function buscarDados()
1579        {
1580                $query =
1581                        "SELECT
1582                                usuario,
1583                                TO_CHAR(mes_referencia, 'YYYYMM') AS data_referencia,
1584                                SUM(valor)*1.25 AS valor_total
1585                        FROM
1586                                {$this->schema}.ligacao_telefonica
1587                        WHERE
1588                                (TO_CHAR(mes_referencia, 'MM/YYYY') = ?) AND
1589                                ((motivo = 0) OR ((motivo = 1) AND (status = 0))) AND
1590                                (valor IS NOT NULL)
1591                        GROUP BY
1592                                usuario,
1593                                data_referencia
1594                        HAVING
1595                                (SUM(valor) > 0)";
1596
1597                $saida = array();
1598                $ldap = &$this->factory->getInstance('wf_ldap');
1599                $this->DAO->connect();
1600                $resultSet = $this->DAO->query($query, array($this->dataRelatorio));
1601                while ($linha = $resultSet->fetchRow(DB_FETCHMODE_ASSOC))
1602                {
1603                        $ldapInfo = $ldap->get_entry($linha['usuario']);
1604                        /* exclui do relatório funcionários que já saíram da empresa (não estão no LDAP) */
1605                        if (!empty($ldapInfo['cn']))
1606                                $saida[] = array_merge($linha, array(
1607                                        'nome' => $ldapInfo['cn'],
1608                                        'matricula' => $ldapInfo['employeenumber'],
1609                                        'valor_total' => round($linha['valor_total'], 2)
1610                                ));
1611                }
1612
1613                return $saida;
1614        }
1615
1616        function lancarParaHistorico()
1617        {
1618                $query =
1619                "UPDATE
1620                        {$this->schema}.ligacao_telefonica
1621                SET
1622                        historico = true
1623                WHERE
1624                        (TO_CHAR(mes_referencia, 'MM/YYYY') = ?) AND
1625                        ((motivo = 0) OR ((motivo = 1) AND (status = 0))) AND
1626                        (valor IS NOT NULL)";
1627
1628                $this->DAO->connect();
1629                $resultSet = $this->DAO->query($query, array($this->dataRelatorio));
1630
1631                return true;
1632        }
1633
1634        function gerarRelatorioFolhaAction()
1635        {
1636                /* verifica se os dados estão corretos */
1637                if (count($this->activity->error = $this->verificarDados()) > 0)
1638                        return false;
1639
1640                /* busca os dados */
1641                $relatorioGenerico = $this->buscarDados($this->dataRelatorio);
1642
1643                /* ordena o relatório pelo nome */
1644                usort($relatorioGenerico, create_function('$a,$b', 'return strcasecmp($a[\'nome\'],$b[\'nome\']);'));
1645
1646                /* formata o relatório */
1647                $relatorio = array();
1648                foreach ($relatorioGenerico as $linhaRelatorio)
1649                        $relatorio[] = str_pad($linhaRelatorio['matricula'], 4, '0', STR_PAD_LEFT) . $linhaRelatorio['data_referencia'] . '01'  . str_pad($linhaRelatorio['valor_total'] * 100, 13, '0', STR_PAD_LEFT);
1650
1651                /* lança para histórico, se requisitado */
1652                if ($this->lancarHistorico)
1653                        $this->lancarParaHistorico();
1654
1655                /* envia o relatório */
1656                $this->sendFile('LFUNLAN.TXT', implode("\r\n", $relatorio));
1657
1658                return true;
1659        }
1660
1661        function gerarRelatorioConferenciaAction()
1662        {
1663                /* verifica se os dados estão corretos */
1664                if (count($this->activity->error = $this->verificarDados()) > 0)
1665                        return false;
1666
1667                /* busca os dados */
1668                $relatorioGenerico = $this->buscarDados($this->dataRelatorio);
1669
1670                /* ordena o relatório pelo nome */
1671                usort($relatorioGenerico, create_function('$a,$b', 'return strcasecmp($a[\'nome\'],$b[\'nome\']);'));
1672
1673                /* formata o relatório */
1674                $total = 0;
1675                $relatorio = array();
1676                $relatorio[] = "Desconto em Folha de Pagamento de Ligações Telefônicas, " . $this->dataRelatorio . ", DIFRA";
1677                foreach ($relatorioGenerico as $linhaRelatorio)
1678                {
1679                        $relatorio[] = $linhaRelatorio['matricula'] . "\t" . $linhaRelatorio['nome'] . "\t" . number_format($linhaRelatorio['valor_total'], 2, ',', '.');
1680                        $total += $linhaRelatorio['valor_total'];
1681                }
1682                $relatorio[] = "Total \t\t " . number_format($total, 2, ',', '.');
1683
1684                /* lança para histórico, se requisitado */
1685                if ($this->lancarHistorico)
1686                        $this->lancarParaHistorico();
1687
1688                /* envia o relatório */
1689                $this->sendFile('relatorio_conferencia.txt', implode("\r\n", $relatorio));
1690
1691                return true;
1692        }
1693
1694        function gerarRelatorioIndividualAction()
1695        {
1696                /* verifica se os dados estão corretos */
1697                if (count($this->activity->error = $this->verificarDadosRelatorioIndividual()) > 0)
1698                        return false;
1699
1700                /* busca as variáveis informadas */
1701                $incluirMesIndefinido = isset($this->request['incluirMesIndefinido']);
1702                $meses = $this->request['meses'];
1703                $usuario = (int) $this->request['usuario'];
1704
1705                /* gera restrições de data da query */
1706                $queryMes = array();
1707                if ($incluirMesIndefinido)
1708                        $queryMes[] = '(mes_referencia IS NULL)';
1709                if (is_array($meses))
1710                        $queryMes[] = "(TO_CHAR(mes_referencia, 'MM/YYYY') IN (" . implode(', ', array_map(create_function('$a', 'return "\'$a\'";'), $meses)) . "))";
1711
1712                $query =
1713                        "SELECT
1714                                TO_CHAR(mes_referencia, 'MM/YYYY') AS data_referencia,
1715                                telefone,
1716                                TO_CHAR(data_hora, 'DD/MM/YYYY HH24hMI') AS data_hora,
1717                                tipo_ligacao,
1718                                valor,
1719                                numero_folhas
1720                        FROM
1721                                {$this->schema}.ligacao_telefonica
1722                        WHERE
1723                                (usuario = ?) AND
1724                                ((motivo = 0) OR ((motivo = 1) AND (status = 0)))
1725                                AND (" . implode(' OR ', $queryMes) . ")
1726                        ORDER BY
1727                                mes_referencia, data_hora";
1728
1729                $this->DAO->connect();
1730                $resultSet = $this->DAO->query($query, array($usuario));
1731
1732                /* busca os dados, formata alguns valores e define o tamanho dos campos */
1733                $preRelatorio = array();
1734                $tamanho = array_fill(0, 4, 0);
1735                $total = 0;
1736                $possuiValorIndefinido = false;
1737                while ($linha = $resultSet->fetchRow(DB_FETCHMODE_ASSOC))
1738                {
1739                        if (is_null($linha['data_referencia']))
1740                                $linha['data_referencia'] = 'indefinido';
1741                        $linhaRelatorio = array();
1742                        $linhaRelatorio[0] = $linha['data_hora'];
1743                        $linhaRelatorio[1] = $this->formatarTelefone($linha['telefone']);
1744                        $linhaRelatorio[2] = $this->listaTipoLigacao[$linha['tipo_ligacao']] . (($linha['tipo_ligacao'] == 2) ? ' - ' . $linha['numero_folhas'] . ' ' . $this->singularPlural($linha['numero_folhas'], 'folha', 'folhas') : '');
1745                        $linhaRelatorio[3] = $linha['valor'];
1746                        $preRelatorio[$linha['data_referencia']][] = $linhaRelatorio;
1747                        for ($i = 0; $i < 3; $i++)
1748                                $tamanho[$i] = max($tamanho[$i], strlen($linhaRelatorio[$i]));
1749
1750                        if (is_null($linha['valor']))
1751                                $possuiValorIndefinido = true;
1752                        else
1753                                $total += $linha['valor'];
1754                }
1755
1756                /* o campo de valor recebe um tratamento especial */
1757                if ($possuiValorIndefinido)
1758                        $tamanho[3] = strlen('indefinido');
1759                $tamanho[3] = max($tamanho[3], strlen('R$ ' . number_format($total*1.25, 2, ',', '.')));
1760
1761                /* agrega algumas colunas para incluir linhas de mês, subtotal e total */
1762                $tamanhoTresColunas = $tamanho[0] + $tamanho[1] + $tamanho[2] + 12;
1763                $tamanhoTotal = $tamanhoTresColunas + $tamanho[3];
1764
1765                /* monta o relatório final */
1766                $relatorio = array();
1767                foreach ($preRelatorio as $mesReferencia => $linhas)
1768                {
1769                        $relatorio[] = str_pad('Mês de Referência: ' . $mesReferencia, $tamanhoTotal, ' ', STR_PAD_BOTH);
1770                        $subTotal = 0;
1771                        foreach ($linhas as $linha)
1772                        {
1773                                $linha[0] = str_pad($linha[0], $tamanho[0], ' ', STR_PAD_RIGHT);
1774                                $linha[1] = str_pad($linha[1], $tamanho[1], ' ', STR_PAD_RIGHT);
1775                                $linha[2] = str_pad($linha[2], $tamanho[2], ' ', STR_PAD_RIGHT);
1776                                if (is_null($linha[3]))
1777                                        $linha[3] = str_pad('indefinido', $tamanho[3], ' ', STR_PAD_LEFT);
1778                                else
1779                                {
1780                                        $subTotal += $linha[3];
1781                                        $linha[3] = 'R$ ' . str_pad(number_format($linha[3], 2, ',', '.'), $tamanho[3]-3, ' ', STR_PAD_LEFT);
1782                                }
1783                                $relatorio[] = implode('    ', $linha);
1784                        }
1785                        $linhaSubtotal = str_pad('Subtotal', $tamanhoTresColunas, ' ', STR_PAD_RIGHT);
1786                        $linhaSubtotal .= 'R$ ' . str_pad(number_format($subTotal, 2, ',', '.'), $tamanho[3]-3, ' ', STR_PAD_LEFT);
1787                        $relatorio[] = $linhaSubtotal;
1788                        $relatorio[] = '';
1789                }
1790                $linhaTotal = str_pad('Total', $tamanhoTresColunas, ' ', STR_PAD_RIGHT);
1791                $linhaTotal .= 'R$ ' . str_pad(number_format($total, 2, ',', '.'), $tamanho[3]-3, ' ', STR_PAD_LEFT);
1792                $relatorio[] = $linhaTotal;
1793                $linhaTotal = str_pad('Total + 25%', $tamanhoTresColunas, ' ', STR_PAD_RIGHT);
1794                $linhaTotal .= 'R$ ' . str_pad(number_format($total*1.25, 2, ',', '.'), $tamanho[3]-3, ' ', STR_PAD_LEFT);
1795                $relatorio[] = $linhaTotal;
1796                $this->sendFile('relatorio_pessoal.txt', implode("\r\n", $relatorio));
1797
1798                return true;
1799        }
1800}
1801?>
1802      ]]></code>    </include>
1803    <include>
1804      <name>class.consultar.registros.model.inc.php</name>
1805      <code><![CDATA[<?php
1806class ConsultarRegistrosModel extends ConsultarGenericoModel
1807{
1808        function defaultAction()
1809        {
1810                /* configurações de exibição da paginação */
1811                $numeroItensPorPagina = 30;
1812                $numeroLinksPaginacao = 10;
1813
1814                /* define o título dos campos e a sua ordem (id) na consulta SQL */
1815                $titulosOrdenacao = array(
1816                        array('name' => 'Usuário',              'id' => "1"),
1817                        array('name' => 'Data / Hora',  'id' => "6"), //ordena pelo campo não formatado
1818                        array('name' => 'Telefone',             'id' => "3"),
1819                        array('name' => 'Motivo',               'id' => "4"),
1820                        array('name' => 'Valor',                'id' => "7") //ordena considerando NULL igual a -0.01
1821                );
1822
1823                /* seleciona as ligações */
1824                $query = "SELECT usuario, TO_CHAR(data_hora, 'DD/MM/YYYY HH24:MI') AS data_hora, telefone, motivo, valor, data_hora AS data_ordenacao, COALESCE(valor, -0.01) AS valor_ordenacao FROM {$this->schema}.ligacao_telefonica WHERE ((motivo = 0) OR ((motivo = 1) AND (status = 0)))";
1825                if ($_REQUEST['incluirHistorico'] != true)
1826                        $query .= " AND (historico = false)";
1827
1828                /* faz a paginação, formata os itens e enviar ao smarty */
1829                $this->paginar($numeroItensPorPagina, $numeroLinksPaginacao, $titulosOrdenacao, $query);
1830
1831                /* busca os itens para fazer novas modificações */
1832                $itens = $this->getViewVar('itens');
1833
1834                /* busca os nomes dos usuários */
1835                $IDs = array_map(create_function('$a', 'return $a["usuario"];'), $itens);
1836                $nomes = $this->factory->getInstance('wf_ldap')->getNames($IDs);
1837                $IDsNomes = array();
1838                foreach ($nomes as $nome)
1839                        $IDsNomes[$nome['id']] = $nome['name'];
1840
1841                /* inclui o nome de quem fez a ligação */
1842                foreach ($itens as $key => $value)
1843                        $itens[$key]['usuario_desc'] = $IDsNomes[$value['usuario']];
1844
1845                /* a ordenação por nomes é um caso especial (também é definido como padrão) */
1846                if ((!isset($this->request['s_co'])) || ($this->request['s_co'] == 1))
1847                {
1848                        usort($itens, create_function('$a,$b', 'return strcasecmp($a[\'usuario_desc\'],$b[\'usuario_desc\']);'));
1849                        if (isset($this->request['s_so']) && ($this->request['s_so'] == 0))
1850                                $itens = array_reverse($itens, true);
1851                }
1852                $this->addViewVar('itens', $itens);
1853
1854                /* define as variáveis que serão utilizadas no template */
1855                $this->addViewVar('subtitulo', 'Consultar Registros');
1856
1857                return true;
1858        }
1859
1860        function buscarInformacoesAction()
1861        {
1862                return parent::buscarLigacao($this->request['usuario'], $this->request['data_hora']);
1863        }
1864}
1865?>
1866      ]]></code>    </include>
1867    <include>
1868      <name>class.registrar.ligacao.model.inc.php</name>
1869      <code><![CDATA[<?php
1870class RegistrarLigacaoModel extends Model
1871{
1872        function defaultAction()
1873        {
1874                if (!isset($this->_data))
1875                        $this->_data = date('d/m/Y');
1876                $this->addViewVar('subtitulo', 'Registrar Ligação');
1877                return true;
1878        }
1879
1880        function validarFormulario()
1881        {
1882                $erros = array();
1883
1884                /* define os campos que são obrigatórios */
1885                $camposObrigatorios = array(
1886                        '_usuario' => 'usuário',
1887                        '_telefone' => 'telefone',
1888                        '_cidade' => 'cidade',
1889                        '_data' => 'data');
1890
1891                /* verifica os campos obrigatórios */
1892                foreach ($camposObrigatorios as $nomeCampo => $descricaoCampo)
1893                        if (trim($this->{$nomeCampo}) == '')
1894                                $erros[] = 'O campo "' . $descricaoCampo  . '" não pode ser vazio.';
1895
1896                /* checa se a data é válida e está num formato válido */
1897                if (!empty($this->_data))
1898                {
1899                        list($dia, $mes, $ano) = explode('/', $this->_data, 3);
1900                        if (!@checkdate($mes, $dia, $ano))
1901                                $erros[] = "A data informada é inválida.";
1902                        else
1903                                if (strlen($ano) != 4)
1904                                        $erros[] = "O ano deve ser informado com quatro dígitos.";
1905                }
1906
1907                /* verifica se o número de folhar é maior ou igual a 1 quando a ligação for do tipo FAX */
1908                if ($this->_tipoLigacao == 2)
1909                        if ($this->_numero_folhas < 1)
1910                                $erros[] = "Quando a ligação for do tipo FAX, deve-se informar o número de folhas (uma ou mais).";
1911
1912                return $erros;
1913        }
1914
1915        function enviarAction()
1916        {
1917                /* busca as variáveis passadas por $_REQUEST e as salva nos atributos da model */
1918                $this->getRequest();
1919                if (count($this->activity->error = $this->validarFormulario()) == 0)
1920                {
1921                        /* define as informações da telefonista */
1922                        $this->_telefonista = $this->getWfProperty('wf_user_id');
1923                        $this->_telefonista_desc = $this->getWfProperty('wf_user_cnname');
1924
1925                        /* salva as informações na instância */
1926                        $this->updateInstance();
1927
1928                        /* carrega informações sobre o setor do funcionário */
1929                        $organograma = &$this->factory->getInstance("wf_orgchart");
1930                        $setor = $organograma->getArea($organograma->getEmployeeAreaID($this->_usuario));
1931                        $this->instance->set('_setor_id', $setor['area_id']);
1932                        $this->instance->set('_setor_desc', $setor['sigla']);
1933
1934                        /* define o nome da instância */
1935                        $this->setNameInstance($this->_telefone);
1936
1937                        /* finaliza a atividade */
1938                        $this->commitInstance();
1939                        return true;
1940                }
1941                return false;
1942        }
1943}
1944
1945?>
1946      ]]></code>    </include>
1947    <include>
1948      <name>class.consultar.generico.model.inc.php</name>
1949      <code><![CDATA[<?php
1950class ConsultarGenericoModel extends Model
1951{
1952        function paginar($numeroItensPorPagina, $numeroLinksPaginacao, $titulosOrdenacao, $query)
1953        {
1954                /* configura a paginação */
1955                $paging = &$this->factory->getInstance('wf_paging');
1956                $paging->configure($numeroItensPorPagina, $_GET);
1957                $paging->useDatabase(true);
1958                $paging->enableSorting(true);
1959                $paging->setSortingTitles($titulosOrdenacao);
1960
1961                /* seleciona as ligações e faz a paginação */
1962                $this->DAO->connect();
1963                $itens = $paging->restrictDBItems($this->DAO, $query);
1964
1965                /* formata os dados que serão exibidos */
1966                foreach ($itens as $key => $value)
1967                        $itens[$key] = $this->formatarItem($value);
1968
1969                /* define as variáveis que serão utilizadas no template */
1970                $this->addViewVar('titulosOrdenacao', $paging->getSortingTitles());
1971                $this->addViewVar('linksPaginacao', $paging->autoLinks($numeroLinksPaginacao));
1972                $this->addViewVar('itens', $itens);
1973        }
1974
1975        function formatarItem($item)
1976        {
1977                /* formata o telefone */
1978                $item['telefone'] = $this->formatarTelefone($item['telefone']);
1979
1980                /* formata o valor da ligação */
1981                if (is_numeric($item['valor']))
1982                        $item['valor'] = number_format((float) $item['valor'], 2, ",", ".");
1983
1984                /* se for um FAX, coloca informações extras */
1985                if ($item['tipo_ligacao'] == 2)
1986                        $item['extra_tipo_ligacao'] = $item['numero_folhas'] . ' ' . $this->singularPlural($item['numero_folhas'], 'folha', 'folhas');
1987
1988                return $item;
1989        }
1990
1991        function buscarLigacao($usuario, $dataHora)
1992        {
1993                $usuario = (int) $usuario;
1994
1995                /* verifica se a data está no formato esperado */
1996                if (!ereg("[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:00", $dataHora))
1997                        return false;
1998
1999                /* seleciona a ligação */
2000                $query = "SELECT usuario, TO_CHAR(data_hora, 'DD/MM/YYYY') AS data, TO_CHAR(data_hora, 'HH24:MI') AS horario, motivo, tipo_ligacao, telefone, cidade, valor, avaliador, telefonista, setor_id, status, observacoes, numero_folhas FROM {$this->schema}.ligacao_telefonica WHERE (usuario = ?) AND (data_hora = ?)";
2001                $this->DAO->connect();
2002                $resultSet = $this->DAO->query($query, array($usuario, $dataHora));
2003                $dados = $resultSet->fetchRow(DB_FETCHMODE_ASSOC);
2004                if (!$dados)
2005                        return false;
2006
2007                /* busca o nome do usuário e do avaliador */
2008                $nomes = $this->factory->getInstance('wf_ldap')->getNames(array($dados['usuario'], $dados['avaliador']));
2009                foreach ($nomes as $nome)
2010                {
2011                        if ($dados['usuario'] == $nome['id'])
2012                                $dados['usuario_desc'] = $nome['name'];
2013
2014                        if ($dados['avaliador'] == $nome['id'])
2015                                $dados['avaliador_desc'] = $nome['name'];
2016                }
2017
2018                if ($dados['tipo_ligacao'] == 2)
2019                        $dados['extra_tipo_ligacao'] = $dados['numero_folhas'] . ' ' . $this->singularPlural($dados['numero_folhas'], 'folha', 'folhas');
2020
2021                /* busca algumas informações */
2022                $informacaoCidade = $this->factory->getInstance('wf_location')->getCityById($dados['cidade']);
2023                $informacaoSetor = $this->factory->getInstance('wf_orgchart')->getArea($dados['setor_id']);
2024
2025                /* informa as variáveis que serão enviadas para a camada view */
2026                $this->addViewVar('_usuario_desc', $dados['usuario_desc']);
2027                $this->addViewVar('_data', $dados['data']);
2028                $this->addViewVar('_horario', $dados['horario']);
2029                $this->addViewVar('_motivo', $dados['motivo']);
2030                $this->addViewVar('_tipoLigacao', $dados['tipo_ligacao']);
2031                $this->addViewVar('_telefone', $this->formatarTelefone($dados['telefone']));
2032                $this->addViewVar('_cidade_desc', $informacaoCidade['city_name'] . ' - ' . $informacaoCidade['state_symbol']);
2033                $this->addViewVar('_observacoes', $dados['observacoes']);
2034                $this->addViewVar('extra_tipo_ligacao', $dados['extra_tipo_ligacao']);
2035                if (is_numeric($dados['valor']))
2036                        $this->addViewVar('_valor', number_format((float) $dados['valor'], 2, ",", "."));
2037                else
2038                        $this->addViewVar('_valor', '---');
2039
2040                $linhasDepois = array();
2041                $linhasDepois[] = array("<label>Avaliador</label>", $dados['avaliador_desc']);
2042                $linhasDepois[] = array("<label>Status</label>", $this->listaStatus[$dados['status']]);
2043                $linhasDepois[] = array("<label>Setor</label>", $informacaoSetor['sigla']);
2044                $this->addViewVar('linhasDepois', $linhasDepois);
2045
2046                return true;
2047        }
2048}
2049?>
2050      ]]></code>    </include>
2051    <include>
2052      <name>class.salva.model.inc.php</name>
2053      <code><![CDATA[<?php
2054class SalvaModel extends Model
2055{
2056        function defaultAction()
2057        {
2058                $this->updateAttributes();
2059
2060                $query = "INSERT INTO {$this->schema}.ligacao_telefonica (usuario, data_hora, motivo, tipo_ligacao, telefone, cidade, valor, avaliador, telefonista, setor_id, status, observacoes, numero_folhas) VALUES(?, TO_TIMESTAMP(?, 'DD/MM/YYYY HH24:MI'), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
2061                $valores = array(
2062                        $this->_usuario,
2063                        $this->_data . ' ' . $this->_horario,
2064                        $this->_motivo,
2065                        $this->_tipoLigacao,
2066                        ereg_replace('[^0-9]', '', $this->_telefone),
2067                        $this->_cidade,
2068                        (is_null($this->_valor)) ? null : str_replace(",", ".", str_replace(".", "", $this->_valor)),
2069                        $this->_avaliador,
2070                        $this->_telefonista,
2071                        $this->_setor_id,
2072                        $this->_status,
2073                        $this->_observacoes,
2074                        $this->_numero_folhas
2075                );
2076
2077                $this->DAO->connect();
2078                $this->DAO->query($query, $valores);
2079        }
2080}
2081
2082?>
2083      ]]></code>    </include>
2084    <include>
2085      <name>class.tipo.ligacao.controller.inc.php</name>
2086      <code><![CDATA[<?php
2087class TipoLigacaoController extends Controller
2088{
2089        function __default()
2090        {
2091                $this->model->defaultAction();
2092        }
2093}
2094
2095?>
2096      ]]></code>    </include>
2097    <include>
2098      <name>class.consultar.ligacoes.model.inc.php</name>
2099      <code><![CDATA[<?php
2100class ConsultarLigacoesModel extends ConsultarGenericoModel
2101{
2102        function defaultAction()
2103        {
2104                /* configurações de exibição da paginação */
2105                $numeroItensPorPagina = 20;
2106                $numeroLinksPaginacao = 10;
2107
2108                /* define o título dos campos e a sua ordem (id) na consulta SQL */
2109                $titulosOrdenacao = array(
2110                        array('name' => 'Data / Hora',  'id' => "9"), //ordena pelo campo não formatado
2111                        array('name' => 'Telefone',             'id' => "3"),
2112                        array('name' => 'Tipo',                 'id' => "4"),
2113                        array('name' => 'Motivo',               'id' => "5"),
2114                        array('name' => 'Status',               'id' => "6"),
2115                        array('name' => 'Valor',                'id' => "10"), //ordena considerando NULL igual a -0.01
2116                        array('name' => 'Mês Cobrança', 'id' => "11") //ordena considerando NULL igual a 01/01/1900
2117                );
2118
2119                /* configura uma ordenação padrão */
2120                if (!isset($_GET['s_co']) || !isset($_GET['s_so']))
2121                {
2122                        $_GET['s_co'] = 8;
2123                        $_GET['s_so'] = 0;
2124                }
2125
2126                /* seleciona as ligações */
2127                $query = "SELECT usuario, TO_CHAR(data_hora, 'DD/MM/YYYY HH24:MI') AS data_hora, telefone, tipo_ligacao, motivo, status, valor, TO_CHAR(mes_referencia, 'MM/YYYY') AS mes_referencia, data_hora AS data_ordenacao, COALESCE(valor, -0.01) AS valor_ordenacao, COALESCE(mes_referencia, '1900-01-01') AS mes_referencia_ordenacao FROM {$this->schema}.ligacao_telefonica WHERE (usuario = " . $this->getWfProperty('wf_user_id') . ")";
2128
2129                /* faz a paginação, formata os itens e enviar ao smarty */
2130                $this->paginar($numeroItensPorPagina, $numeroLinksPaginacao, $titulosOrdenacao, $query);
2131
2132                /* define as variáveis que serão utilizadas no template */
2133                $this->addViewVar('subtitulo', 'Consultar Ligações');
2134
2135                return true;
2136        }
2137
2138        function buscarInformacoesAction()
2139        {
2140                return parent::buscarLigacao($this->getWfProperty('wf_user_id'), $this->request['data_hora']);
2141        }
2142}
2143?>
2144      ]]></code>    </include>
2145    <include>
2146      <name>class.consultar.registros.controller.inc.php</name>
2147      <code><![CDATA[<?php
2148class ConsultarRegistrosController extends ConsultarGenericoController
2149{
2150}
2151?>
2152      ]]></code>    </include>
2153    <include>
2154      <name>class.ajax.validacao.inc.php</name>
2155      <code><![CDATA[<?php
2156class validacao
2157{
2158        function validacao()
2159        {
2160        }
2161
2162        function usuario($params)
2163        {
2164                $organograma = wf_create_object("wf_orgchart");
2165                $usuarioID = (int) $params['usuario'];
2166                $usuario = $organograma->getEmployee($usuarioID);
2167                if ($usuario === false)
2168                        return false;
2169                else
2170                        return true;
2171        }
2172}
2173?>
2174      ]]></code>    </include>
2175    <include>
2176      <name>class.consultar.ligacoes.controller.inc.php</name>
2177      <code><![CDATA[<?php
2178class ConsultarLigacoesController extends ConsultarGenericoController
2179{
2180}
2181?>
2182      ]]></code>    </include>
2183    <include>
2184      <name>class.gerar.relatorios.controller.inc.php</name>
2185      <code><![CDATA[<?php
2186class GerarRelatoriosController extends Controller
2187{
2188        function __default()
2189        {
2190                if ($this->model->defaultAction())
2191                        $this->loadViewVars();
2192        }
2193
2194        function gerarRelatorioDeFolha()
2195        {
2196                $this->model->gerarRelatorioFolhaAction();
2197        }
2198
2199        function gerarRelatorioDeConferencia()
2200        {
2201                $this->model->gerarRelatorioConferenciaAction();
2202        }
2203
2204        function gerarRelatorioIndividual()
2205        {
2206                $this->model->gerarRelatorioIndividualAction();
2207        }
2208}
2209
2210?>
2211      ]]></code>    </include>
2212    <include>
2213      <name>class.forcar.avaliacao.padrao.model.inc.php</name>
2214      <code><![CDATA[<?php
2215class ForcarAvaliacaoPadraoModel extends Model
2216{
2217        function defaultAction()
2218        {
2219                return true;
2220        }
2221
2222        function forcarFluxoAction()
2223        {
2224                $numeroDias = $_POST['numeroDias'];
2225                if (is_numeric($numeroDias))
2226                        $numeroDias = max((int) $numeroDias, 0);
2227                else
2228                {
2229                        $this->addViewVar('mensagem', 'O número de dias informado é inválido');
2230                        return false;
2231                }
2232
2233                /* seleciona as atividades */
2234                $atividadeFuncionarioAvalia = $this->instance->process->getActivityByName('Funcionário Avalia');
2235                $atividadeChefiaAvalia = $this->instance->process->getActivityByName('Chefia Avalia');
2236
2237                /* busca as instâncias abandonadas */
2238                $engine = &$this->factory->getInstance("wf_engine");
2239                $instancias = $engine->getIdleInstances($numeroDias, array($atividadeFuncionarioAvalia['wf_activity_id'], $atividadeChefiaAvalia['wf_activity_id']));
2240
2241                $numeroInstancias = 0;
2242                foreach ($instancias as $instancia)
2243                {
2244                        /* define as variáveis de request */
2245                        if ($instancia['wf_activity_id'] == $atividadeFuncionarioAvalia['wf_activity_id'])
2246                                $_REQUEST['action'] = 'Confirmada Automaticamente';
2247                        if ($instancia['wf_activity_id'] == $atividadeChefiaAvalia['wf_activity_id'])
2248                                $_REQUEST['action'] = 'Aprovada Automaticamente';
2249
2250                        if ($engine->continueInstance($instancia['wf_activity_id'], $instancia['wf_instance_id']))
2251                                $numeroInstancias++;
2252                }
2253
2254                $this->addViewVar('quantidade', $numeroInstancias);
2255                return true;
2256        }
2257}
2258
2259?>
2260      ]]></code>    </include>
2261  </includes>
2262  <resources>
2263    <resource>
2264      <name>add_user.png</name>
2265      <bindata><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB
2266L2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarY69SsNQHEfPbUXBIYgEN+HiIC7ix9YxaUsR
2267HGoUSbI1yaWKNrncXD86+RI+hIOLo6BvUHEQnHwEN0EcHBwiZHAQwTOd/xn+/KCx4nX8bmMORrk1
2268Qc+XYRTLmUemaQLAIC211+9vA+RFrvjB+zMC4GnV6/hd/sZsqo0FPoHNTJUpiHUgO7PagrgE3ORI
2269WxBXgGv2gjaIO8AZVj4BnKTyF8AxYRSDeAXcYRjF0ABwk8pdwLXq3AK0Cz02h8MDKzdarZb0siJR
2270cndcWjUq5VaeFkYXZmBVBlT7qt2e1sdKBj2f/yWMYlnZ2w4CEAuTutWkJ+b0W4V4+P2uf4zvwQtg
22716rZu+x9wvQaLzbotL8H8BdzoL/HAUD36i+bmAAAABGdBTUEAANjr9RwUqgAAACBjSFJNAAB6JQAA
2272gIMAAPQlAACE0QAAbV8AAOhsAAA8iwAAG1iD5wd4AAADQElEQVR42mSTy2tcZRjGf9/5vjMzZ87M
2273ZGYymWQSG6Wxpk0gqSTVVF0IVaQFF0YQSq0Fuyiif4B/gLiybkQ34sqFihvBuggFMRovDbZCeotW
2274bZuYhEwy98zMybl8n4tZqPjAu3su8PC84vSxFP+GNpByDMX+4Wfy7vpb2b7sdDKV86VKrtjB3Vf9
2275wLsThj5CCADE/ww0pJLGPj4RfVppWvMdr8vIUJYDB8epNjK3bl6/cbLV2l6zLAWAJYD/nIC0W/hA
2276WGL+1Ok3eHDiJKt3avz2612U8ie0cd7uMXtQSeuf9AjwASFEyxcj4cGpp9WRx+b5anCE61cuE6xt
22770A203NhVSNkTyuhRh03XYi1lEdkwagzNdnXRSR948YnZqWLMNoxPP87YkaOsLC/frFTrr4dBZzdm
2278K5QUqPvpnpMB1iIYLA1xKjPs/VXr1HW3BlEdbJdCCqLI/iPj6NWOPEr80BnsuECmJx2kAWnAwmJV
2279d0jkMgwM5a+quv/86FA6Q7jH94u/bHRC+Zqdnd3So2fxNVhK0asSA8IAlpNUscxnW7dM2k47PyzP
2280rRWK/kg8qXn/8uH62OTItfVyIPOFKMIEPVn+3CB2bB8l63jV7MdzM8dfTqdcGuvKe2H8gjg2MxqX
2281EhoNbb68dLveqLXXnaR5LzTtTywZtRVIECn6Ev3YUpdmzl7DEg7fXHw4UUrnaO1YyESEikXi3CvT
2282uXzOzb17celDr7s3hI4uydRsJm5psRjtqwv57MChsad2Ul0vzu0rFivby3z95xcMFwscLk0iMPhB
2283iONqlpbuD7quaimnpGxlyyefPVMByrRDQ9NrMXW+QRD9zsJHgnU9S6HvJcqNHe7dK7NdruI4sUdq
2284u/o5VQ13jNkXbO3uM5yHalPTDfcQviIAKsUQP9A06wFb5SatvX1sO0YirpSJ6YQYPu8qrxZfMJHI
22852TJhnXhzcxrH8N07pU1vo79mecWtQnfOT8tiEOpQGG0wRuP7Ecbwo5JahMl0cCLwBIFvFgquZOAB
2286zbdWu9Jf6p/q/jxOFIvwo5BIRxhjMBjC0BCGurcDI8AojQjRP32eDBJJ7LijK/GHboDUiKvzyJgF
2287opduDISi93h/DwCBlnQWovsJogAAAABJRU5ErkJggg==
2288 ]]></bindata>    </resource>
2289    <resource>
2290      <name>icon.png</name>
2291      <bindata><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA
2292BGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VG
2293AAAKZklEQVR42mL8//8/w0ACgABiYhhgABBAjBginBIMDP//MjD8/c3AIGzBwPDzFQMDixAQ88ky
2294cImZMAiLGXBy81tyCAhrs7CycIO0/Pn95+uPD2+ufv/y6TjDu9cXGL69PMPw59Njhj/vGBjYxRgY
22953p0EqvoHVPgNSP1GsQ4ggFiwOgvsgF9AxYxCDILaQZyK+kG6uhpWRhqS/OqyQgyyotwMQtwsDDwc
2296zGDlX37+5X/39Y/Uk9dfXW88fs9w9tqzj1euXD/2/d6ldQzf3qwDmvWOgYkRq1UAAYQpyibIwMDE
2297xckgapQuYhGa7WWvq+JpLMWgKsHJwMPOxADS8PfffzD+A8T/gB5jAkYkC9ACVhYmqIP+Mdx+8Z1h
229829lnDNsOXL7z9uSaqQwvj89k+PX6O7p1AAGE6QB+XRMWw/iJnl6OVjH2MgzKYhxAS/4x/Pz9j4GD
2299lYlBS4aPAWTPDyD/5vOvDKK8bAzvv/1m+PT9D9iTjCAIpNmYGYEOY2K4++oHw5JDjxm2b9lz7M+Z
2300GXkM3x6cRbYOIICYUSwXNgoScqtclRPvrBZrLcHAxc7I8OXHX7Blv/7+A/qQmUFRlBPsW2YgvvD8
2301J4OZAg+DGB870DJGhleffgHVAUMGiL8D9Xz7+ZeBj5OJwUpdkEFcXkn26l/NkB/P791h+P7iOsxK
2302gABCOEDIwF/Uu3ZFQbgpr7UKL8PXn3+AFoOCGRjkwJz6G5gsQEEsL8wJ9iEo+G+++sWgIsrOwAL0
2303rQAXCwMbKzPD43c/wHIgfSAaZMZPoGYVcQ4GeTkJzsu/1AK+Pb15GeiImyBrAQII4gBOaU1e17r1
2304KUGmfIaynAyfgb7+8x9i8V9gOQG0mwHoIQY2YAgoiSIccOPVTwYNYBQxQxMYHycLw6svfxjefvnN
2305AJSGOuQ/wy+gYd9+/WWQ4mdlEBEVYrn0Vcbl18NTWxj+fH4DEECgVMPMrBvd6+JgJKIjyQGMz78M
230634HO/wHUBMZA24GBAcYgX8ESMxszE9BxoPhGTUagNAHSA9HPAMWQkHj/7Q+DjjQHg7O9kQizTnQv
2307yG6AAGJmENByVfDIbvQ1FWdgZAL5FJiygQnpHyi1/2eEshkZ/gItAvnk14/fDG8+/2K48+obw8uv
2308/xlUhFnBiRMGPoNywJuf0NCDmAeJwv/g9AGiRXhZGO58E1T9cPvsUYAAYmbVDK61dHYxUBFjA1sA
2309thDZYij/PwMTAzBNMdwBGn7//R+G51/+AR3FxPD5y08GVWA0wEICpPbSsx+QtANNB6D0A4rK3+DQ
2310/AeMSkaGr//ZGe4/fPEPIIBY+JTNLCUFWIGpFmI5M9C1jMCUwQxkMwENZfoHyU4gmhEY/pzcHAyg
2311RMAItoyB4ek3iK9AhoLLMCD+BXQEKAhB1cw/oL5/oFD4ywgpP4BqmYEOkRRkZeBTMrMECCAWXhFx
2312CW42RnBcgUwFWwo0gAUUv/9A2Q1oOSR3g8UZ/zMywCDIAczAHPAfKR38gzmAAeIAcDTCHQGUB+Lf
2313QAkuYLSB7AYIIBYmNvb/px9/YxAEZiMNKW4GNqAmpn+gUhjiewjNzMDEDAkROGSEphO0IhYUAsAi
2314Ccj4B3bg3/9MQPo/JFqBfGBmYLgNLJzef/3DwMjG9h8ggFhY2VgYPn7/C8wm/xk+/PjCoCDOzSDI
2315wwYuhEAp/T8wPpiAcQ0OGSANspgJUuSBDf3DiF6gAsWAEfgfJMYITCf/QYUYMM5//me4/+o7wxdg
2316ifkNmKW+A2lWVhYGgABcVUEKgDAMC2tXwYP//6IHYSgIU9xMBl68lyZNk9ZVOpGEjky3jK0m7KQa
2317+aG7GavFMHNFzqYucJKSKlK9a6rfQ/8UkDoCXQ9G+moo5cQ9TJ6GpyKMBm94BWCq7FYAhEIYPPJ4
2318IILe/wmDbiMo1H6cEHTpnXP7ZnvshHYFM6TZZAzKQGzydHyKy3ahtRtzotNzSREp37/yoc9//Uz/
2319ShG7IXKIQIV7nLLC3eEWhSaZP9zwCiCWn+9eM7CrqQGjDGgR0AEgDAoaUNSAgwiEgeH0B5Q1gFgA
2320WCOyM0Py+Adgja0nAHQ4M3IIAKOAiYWBA1ih/gPa/vs3BIMyMqj19R+cGP8xsDMxM/x6/4YBIIBY
23213t6+9lrV2or/F1CAGehDkGVwDHYMxEFAbzPI8DIy5OsALWSCWD7vFgODvzxqCIDSByhKQYkTlD7+
2322M8Cy438GFmCt+g+YoJmBUcEGDOa3d669Bgggpo93Tl349PgRAx8/DzBegUHMguwQaAgAMQcwHQAr
2323PQZgZgFqBpb7wPQBao9wotanDM+ApSMzMJ2wQkMTYg7EPFD0gRIxLz83w9dnTxg+3j19HiCAmBi+
23243N58de8hBm6GHwwcnBzg1A6JZ4RGdqBlXCALWSGFDyyxcbEj+HAHfIEkXlZWqKVQi0HlCSMo8XGw
2325M/Cz/mG4c+IUA8O3O1sAAoiJ4dfTLZ/unj13av0OBhkRdgZWdjZwSQfyBRPIEcAExwH0NbCiA9Pw
2326zAYMXike1OB/8ek3w53P/xn4gIUlOzjWIBaDzAJpAKUreTFOhhuHjjN8fHTxHMP3x1sAAggYgP+/
2327M/z7+OrdO96g39+/M5vZ6gITERu4HGcDauBkZYT4HuguYE3MoMOPsPARsIGlwgO1/OMvhh2PfjP8
2328YWcHF1TgeuA/JFf8AhIcQBfJAiuuy/uPMtw4e+HXj9vrcv/9/HQeIIAgMfjnK7Bx8IPtxUt2u4+v
23293zCYmiox8IvwAisORnAKBzmAE4h5gBWFFLB8AJXnn4B5mxGYLv4DC5WrwJLt3Htg+ufhAmdPsKXQ
2330ahxUWEkIsjCIsH5nOLX7KMPNy3cYPl9b2/7j1fUZIKsBAgiRhH6+PsnM/Jv77XcBi/s3HjLIAWs4
2331LVVRBh4uSFIGBT8wEzHceP2D4QGwGP0AjHxOYHPr8dffDL/YgCUnDzu4YAJZCrIcVB0IAhvt0rzA
2332EvbxQ4aDu88yPHv8guHtueX9n+4ebQS1cUDWAgQQchr+/f/7i0Msf99//8shZXzr9juOV0+fMYjx
2333MjMoSPAwCPOxMPADHSPEz8YgIsDGIMzLysDLAaxQeFjBiQvka1CCAIUUHycotH4zfHjxkuHUiWsM
2334l64+Y/j0+snHJwdntny4fawNqBLeOgYIILRMBGxPfnt95M/b65fYOLmkv/7jk7957z3j7dtPGD5/
2335/AIuWECFEAcLMzieQY1PUBsC3Dz/85fhy5fvDM9efGC4cec5w8kLjxiu3XvH8P7th/9vLu85eHfb
2336xOIvz2/Nh/kcBgACiBFPr0mMU1TJT1jTIUJIzcKcnV+Uh4uPj4EbVFEB8xkfLzs4VYNSOsjzP4CV
23372R9wbQeMhm/fGH5+ePXl+cWDJx8e27Tiw6Prm4BKXmGzBCCAGInovgmzcQsY8cvp2Ago6BjzSysp
23388krIiXLwCvIxs7Mxg5rqTIz//v4F9su+vHr8+v3Te/df37pw9tWtc0d+fHx7Dqj/LT7DAQKIkcS+
2339JC8oZJjZOESYmFn4gKUaM6wv9+/vn09/fv54A/XpZ2INBAggxoHungMEGAAyQjpGcQcsZQAAAABJ
2340RU5ErkJggg==
2341 ]]></bindata>    </resource>
2342    <resource>
2343      <name>definir_valor.js</name>
2344      <bindata><![CDATA[ZnVuY3Rpb24gZWRpdGFyVmFsb3IoZXh0ZXJub0lELCBpbnRlcm5vLCB1c3VhcmlvLCBkYXRhKQp7
2345Cgl2YXIgaW5wdXRJRCA9IGV4dGVybm9JRCArICJpbnB1dF92YWxvciI7Cgl2YXIgd29ya2Zsb3df
2346Zm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCd3b3JrZmxvd19mb3JtJylbMF07CgoJ
2347d29ya2Zsb3dfZm9ybS5hY3Rpb24gPSAiIjsKCXdvcmtmbG93X2Zvcm0ub25zdWJtaXQgPSBmdW5j
2348dGlvbiAoKXsgYWx0ZXJhclZhbG9yKGV4dGVybm9JRCwgdXN1YXJpbywgZGF0YSwgJEYoaW5wdXRJ
2349RCkpOyByZXR1cm4gZmFsc2V9OwoKCXZhciB0YW1hbmhvSW5wdXQgPSAoJChleHRlcm5vSUQpLm9m
2350ZnNldFdpZHRoIC8gNyk7Cgl2YXIgbm92b0NvZGlnbyA9ICc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9
2351IicgKyBpbnB1dElEICsgJyIgbmFtZT0idmFsb3IiIHNpemU9IicgKyB0YW1hbmhvSW5wdXQgKyAn
2352IiBvbmJsdXI9InJlc3RhdXJhclZhbG9yKFwnJyArIGV4dGVybm9JRCArICdcJyk7IiBvbmtleXBy
2353ZXNzPSJyZXR1cm4oZm9ybWF0YXJFbnRyYWRhVmFsb3IodGhpcyxcJy5cJyxcJyxcJyxldmVudCkp
2354Ii8+JzsKCSQoZXh0ZXJub0lEKS5pbm5lckhUTUwgPSBub3ZvQ29kaWdvOwoJdmFyIGlucHV0VmFs
2355b3IgPSAkKGlucHV0SUQpOwoJaW5wdXRWYWxvci5mb2N1cygpOwoJaW5wdXRWYWxvci5zZWxlY3Qo
2356KTsKfQoKZnVuY3Rpb24gYWx0ZXJhclZhbG9yKGV4dGVybm9JRCwgcF91c3VhcmlvLCBwX2RhdGEs
2357IHBfdmFsb3IpCnsKCXZhciByZXN1bHRBbHRlcmFyVmFsb3IgPSBmdW5jdGlvbihkYXRhKQoJewoJ
2358CWlmIChkYXRhWyd2YWxvciddWydkYXRhJ11bJ2Vycm8nXSkKCQl7CgkJCWFsZXJ0KGRhdGFbJ3Zh
2359bG9yJ11bJ2RhdGEnXVsnZXJybyddKTsKCQkJcmVzdGF1cmFyVmFsb3IoZXh0ZXJub0lEKTsKCQl9
2360CgkJZWxzZQoJCXsKCQkJdmFyIGV4dGVybm8gPSAkKGV4dGVybm9JRCk7CgkJCWV4dGVybm8uaW5u
2361ZXJIVE1MID0gZGF0YVsndmFsb3InXVsnZGF0YSddWyd2YWxvciddOwoJCQlleHRlcm5vLm9uY2xp
2362Y2sgPSBudWxsOwoJCX0KCX0KCgl2YXIgbmMgPSBuZXcgTmFub0NvbnRyb2xsZXIoKTsKCW5jLnNl
2363dFdmVXJsKCk7CgluYy5zZXRTdWNjZXNzSGFuZGxlcihyZXN1bHRBbHRlcmFyVmFsb3IpOwoJbmMu
2364YWRkVmlydHVhbFJlcXVlc3QoJ3ZhbG9yJywKCQl7CgkJCWFjdGlvbiA6ICdkZWZpbmlyX3ZhbG9y
2365ZXMnLAoJCQltb2RlICAgOiAndmFsb3InCgkJfSwKCQl7CgkJCXVzdWFyaW86IHBfdXN1YXJpbywK
2366CQkJZGF0YV9ob3JhOiBwX2RhdGEsCgkJCXZhbG9yOiBwX3ZhbG9yCgkJfSk7CgluYy5zZW5kUmVx
2367dWVzdCgpOwoJJChleHRlcm5vSUQpLmlubmVySFRNTCA9ICc8Zm9udCBjb2xvcj0iZ3JleSI+YXR1
2368YWxpemFuZG8uLjwvZm9udD4nOwp9CgpmdW5jdGlvbiByZXN0YXVyYXJWYWxvcihleHRlcm5vSUQp
2369CnsKCSQoZXh0ZXJub0lEKS5pbm5lckhUTUwgPSAnPGEgaHJlZj0iIyI+ZGVmaW5pciB2YWxvcjwv
2370YT4nOwp9Cg==
2371 ]]></bindata>    </resource>
2372    <resource>
2373      <name>geral.js</name>
2374      <bindata><![CDATA[ZnVuY3Rpb24gZm9ybWF0YXJFbnRyYWRhVmFsb3IoZmxkLCBtaWxTZXAsIGRlY1NlcCwgZSkKewoJ
2375dmFyIHNlcCA9IDA7Cgl2YXIga2V5ID0gJyc7Cgl2YXIgaSA9IGogPSAwOwoJdmFyIGxlbiA9IGxl
2376bjIgPSAwOwoJdmFyIHN0ckNoZWNrID0gJzAxMjM0NTY3ODknOwoJdmFyIGF1eCA9IGF1eDIgPSAn
2377JzsKCQoJdmFyIHdoaWNoQ29kZSA9IChlLndoaWNoKSA/IGUud2hpY2ggOiBlLmtleUNvZGU7Cglp
2378ZiAod2hpY2hDb2RlID09IDEzKQoJCXJldHVybiB0cnVlOyAgLy8gRW50ZXIKCWlmICh3aGljaENv
2379ZGUgPT0gOCkKCQlyZXR1cm4gdHJ1ZTsgIC8vIERlbGV0ZSAoQnVnIGZpeGVkKQoJaWYgKHdoaWNo
2380Q29kZSA9PSAwKQoJCXJldHVybiB0cnVlOyAgLy8gVGFiCgkKCWtleSA9IFN0cmluZy5mcm9tQ2hh
2381ckNvZGUod2hpY2hDb2RlKTsgIC8vIEdldCBrZXkgdmFsdWUgZnJvbSBrZXkgY29kZQoJaWYgKHN0
2382ckNoZWNrLmluZGV4T2Yoa2V5KSA9PSAtMSkKCQlyZXR1cm4gZmFsc2U7ICAvLyBOb3QgYSB2YWxp
2383ZCBrZXkKCQoJbGVuID0gZmxkLnZhbHVlLmxlbmd0aDsKCWZvcihpID0gMDsgaSA8IGxlbjsgaSsr
2384KQoJCWlmICgoZmxkLnZhbHVlLmNoYXJBdChpKSAhPSAnMCcpICYmIChmbGQudmFsdWUuY2hhckF0
2385KGkpICE9IGRlY1NlcCkpCgkJCWJyZWFrOwoJYXV4ID0gJyc7Cglmb3IoOyBpIDwgbGVuOyBpKysp
2386CgkJaWYgKHN0ckNoZWNrLmluZGV4T2YoZmxkLnZhbHVlLmNoYXJBdChpKSkhPS0xKQoJCQlhdXgg
2387Kz0gZmxkLnZhbHVlLmNoYXJBdChpKTsKCWF1eCArPSBrZXk7CglsZW4gPSBhdXgubGVuZ3RoOwoJ
2388aWYgKGxlbiA9PSAwKQoJCWZsZC52YWx1ZSA9ICcnOwoJaWYgKGxlbiA9PSAxKQoJCWZsZC52YWx1
2389ZSA9ICcwJysgZGVjU2VwICsgJzAnICsgYXV4OwoJaWYgKGxlbiA9PSAyKQoJCWZsZC52YWx1ZSA9
2390ICcwJysgZGVjU2VwICsgYXV4OwoJaWYgKGxlbiA+IDIpCgl7CgkJYXV4MiA9ICcnOwoJCWZvciAo
2391aiA9IDAsIGkgPSBsZW4gLSAzOyBpID49IDA7IGktLSkKCQl7CgkJCWlmIChqID09IDMpCgkJCXsK
2392CQkJCWF1eDIgKz0gbWlsU2VwOwoJCQkJaiA9IDA7CgkJCX0KCQkJYXV4MiArPSBhdXguY2hhckF0
2393KGkpOwoJCQlqKys7CgkJfQoJCWZsZC52YWx1ZSA9ICcnOwoJCWxlbjIgPSBhdXgyLmxlbmd0aDsK
2394CQlmb3IgKGkgPSBsZW4yIC0gMTsgaSA+PSAwOyBpLS0pCgkJZmxkLnZhbHVlICs9IGF1eDIuY2hh
2395ckF0KGkpOwoJCWZsZC52YWx1ZSArPSBkZWNTZXAgKyBhdXguc3Vic3RyKGxlbiAtIDIsIGxlbik7
2396Cgl9CgkKCXJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gZm9ybWF0YXJFbnRyYWRhVGVsZWZvbmUo
2397Y2FtcG8sIGUpCnsKCXZhciBrZXkgPSAnJzsKCXZhciB2YWxvciA9ICcnOwoJdmFyIHZhbG9yTGlt
2398cG8gPSAnJzsKCXZhciBsZW4gPSAwOwoJdmFyIGxlbkxpbXBvID0gMDsKCXZhciBzdHJDaGVjayA9
2399ICcwMTIzNDU2Nzg5JzsKCgkvKiBwZXJtaXRlIGFsZ3VtYXMgdGVjbGFzICovCgl2YXIgd2hpY2hD
2400b2RlID0gKGUud2hpY2gpID8gZS53aGljaCA6IGUua2V5Q29kZTsKCWlmICh3aGljaENvZGUgPT0g
2401MTMpCgkJcmV0dXJuIHRydWU7ICAvLyBFbnRlcgoJaWYgKHdoaWNoQ29kZSA9PSA4KQoJCXJldHVy
2402biB0cnVlOyAgLy8gRGVsZXRlCglpZiAod2hpY2hDb2RlID09IDApCgkJcmV0dXJuIHRydWU7ICAv
2403LyBUYWIKCglrZXkgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHdoaWNoQ29kZSk7CglpZiAoc3RyQ2hl
2404Y2suaW5kZXhPZihrZXkpID09IC0xKQoJCXJldHVybiBmYWxzZTsgIC8vIG7jbyDpIHVtIGNhcmFj
2405dGVyZSB24WxpZG8KCQoJdmFsb3IgPSBjYW1wby52YWx1ZTsKCWxlbiA9IHZhbG9yLmxlbmd0aDsK
2406Cglmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKQoJCWlmIChzdHJDaGVjay5pbmRleE9mKHZh
2407bG9yLmNoYXJBdChpKSkgIT0gLTEpCgkJCXZhbG9yTGltcG8gKz0gdmFsb3IuY2hhckF0KGkpOwoJ
2408Cgl2YWxvckxpbXBvICs9IGtleTsKCWxlbkxpbXBvID0gdmFsb3JMaW1wby5sZW5ndGg7Cgl2YXIg
2409dmFsb3JOb3ZvID0gJyc7CgkvKiBhYnJlIG8gcGFy6m50ZXNlIGRvIERERCAqLwoJdmFsb3JOb3Zv
2410ID0gJygnOwoJZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5MaW1wbzsgaSsrKQoJewoJCS8qIGluc2Vy
2411ZSBvcyB0cmHnb3MgZW50cmUgb3MgYmxvY29zIGRlICBu+m1lcm9zICovCgkJaWYgKCgoKGkgLSAy
2412KSAlIDQpID09IDApICYmIChpID4gMykpCgkJCXZhbG9yTm92byArPSAnLSc7CgkJCgkJLyogZmVj
2413aGEgbyBwYXLqbnRlc2UgZG8gREREICovCgkJdmFsb3JOb3ZvICs9IHZhbG9yTGltcG8uY2hhckF0
2414KGkpOwoJCWlmIChpID09IDEpCgkJCXZhbG9yTm92byArPSAnKSAnOwoKCX0KCgljYW1wby52YWx1
2415ZSA9IHZhbG9yTm92bzsKCXJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gc29tZW50ZU51bWVyb3Mo
2416Y2FtcG8sIGUpCnsKCXZhciBrZXkgPSAnJzsKCXZhciBzdHJDaGVjayA9ICcwMTIzNDU2Nzg5JzsK
2417CgkvKiBwZXJtaXRlIGFsZ3VtYXMgdGVjbGFzICovCgl2YXIgd2hpY2hDb2RlID0gKGUud2hpY2gp
2418ID8gZS53aGljaCA6IGUua2V5Q29kZTsKCWlmICh3aGljaENvZGUgPT0gOCkKCQlyZXR1cm4gdHJ1
2419ZTsgIC8vIERlbGV0ZQoJaWYgKHdoaWNoQ29kZSA9PSAwKQoJCXJldHVybiB0cnVlOyAgLy8gVGFi
2420CgoJa2V5ID0gU3RyaW5nLmZyb21DaGFyQ29kZSh3aGljaENvZGUpOwoJaWYgKHN0ckNoZWNrLmlu
2421ZGV4T2Yoa2V5KSA9PSAtMSkKCQlyZXR1cm4gZmFsc2U7ICAvLyBu428g6SB1bSBjYXJhY3RlcmUg
2422duFsaWRvCgoJcmV0dXJuIHRydWU7Cn0KCmZ1bmN0aW9uIGZvcm1hdGFyQ2FsZW5kYXJpb01lcyhj
2423YW1wbywgZSkKewoJdmFyIGtleSA9ICcnOwoJdmFyIHZhbG9yID0gJyc7Cgl2YXIgdmFsb3JMaW1w
2424byA9ICcnOwoJdmFyIGxlbiA9IDA7Cgl2YXIgbGVuTGltcG8gPSAwOwoJdmFyIHN0ckNoZWNrID0g
2425JzAxMjM0NTY3ODknOwoKCS8qIHBlcm1pdGUgYWxndW1hcyB0ZWNsYXMgKi8KCXZhciB3aGljaENv
2426ZGUgPSAoZS53aGljaCkgPyBlLndoaWNoIDogZS5rZXlDb2RlOwoJaWYgKHdoaWNoQ29kZSA9PSAx
2427MykKCQlyZXR1cm4gdHJ1ZTsgIC8vIEVudGVyCglpZiAod2hpY2hDb2RlID09IDgpCgkJcmV0dXJu
2428IHRydWU7ICAvLyBEZWxldGUKCWlmICh3aGljaENvZGUgPT0gMCkKCQlyZXR1cm4gdHJ1ZTsgIC8v
2429IFRhYgoKCWtleSA9IFN0cmluZy5mcm9tQ2hhckNvZGUod2hpY2hDb2RlKTsKCWlmIChzdHJDaGVj
2430ay5pbmRleE9mKGtleSkgPT0gLTEpCgkJcmV0dXJuIGZhbHNlOyAgLy8gbuNvIOkgdW0gY2FyYWN0
2431ZXJlIHbhbGlkbwoJCgl2YWxvciA9IGNhbXBvLnZhbHVlOwoJbGVuID0gdmFsb3IubGVuZ3RoOwoK
2432CWZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspCgkJaWYgKHN0ckNoZWNrLmluZGV4T2YodmFs
2433b3IuY2hhckF0KGkpKSAhPSAtMSkKCQkJdmFsb3JMaW1wbyArPSB2YWxvci5jaGFyQXQoaSk7CgkK
2434CXZhbG9yTGltcG8gKz0ga2V5OwoJbGVuTGltcG8gPSB2YWxvckxpbXBvLmxlbmd0aDsKCXZhciB2
2435YWxvck5vdm8gPSAnJzsKCWZvciAodmFyIGkgPSAwOyBpIDwgbGVuTGltcG87IGkrKykKCXsKCQl2
2436YWxvck5vdm8gKz0gdmFsb3JMaW1wby5jaGFyQXQoaSk7CgkJaWYgKGkgPT0gMSkKCQkJdmFsb3JO
2437b3ZvICs9ICcvJzsKCX0KCgljYW1wby52YWx1ZSA9IHZhbG9yTm92bzsKCXJldHVybiBmYWxzZTsK
2438fQoKZnVuY3Rpb24gY29uZmlybWFyUmVqZWljYW8oKQp7CglyZXR1cm4gY29uZmlybSgiVGVtIGNl
2439cnRlemEgcXVlIGRlc2VqYSByZWplaXRhciBhIGxpZ2Hn428/Iik7Cn0KCmZ1bmN0aW9uIGNoZWNh
2440clVzdWFyaW8ocF91c3VhcmlvKQp7Cgl2YXIgZXhpYmlyUmVzdWx0YWRvID0gZnVuY3Rpb24oZGF0
2441YSkKCXsKCQlpZiAoZGF0YVsnY2hlY2FyVXN1YXJpbyddWydkYXRhJ10pCgkJewoJCQkkKCdpbmZv
2442X3VzdWFyaW8nKS5pbm5lckhUTUwgPSAnPGZvbnQgY29sb3I9ImdyZWVuIj5Vc3XhcmlvIE9LPC9m
2443b250Pic7CgkJCSQoJ2VudmlhcicpLmRpc2FibGVkID0gZmFsc2U7CgkJfQoJCWVsc2UKCQl7CgkJ
2444CSQoJ2luZm9fdXN1YXJpbycpLmlubmVySFRNTCA9ICc8Zm9udCBjb2xvcj0icmVkIj5Vc3Xhcmlv
2445IG7jbyBjYWRhc3RyYWRvIG5vIG9yZ2Fub2dyYW1hPC9mb250Pic7CgkJCSQoJ2VudmlhcicpLmRp
2446c2FibGVkID0gdHJ1ZTsKCQl9Cgl9CgoJdmFyIG5jID0gbmV3IE5hbm9Db250cm9sbGVyKCk7Cglu
2447Yy5zZXRXZlVybCgpOwoJbmMuc2V0U3VjY2Vzc0hhbmRsZXIoZXhpYmlyUmVzdWx0YWRvKTsKCW5j
2448LnNldEVycm9ySGFuZGxlcihmdW5jdGlvbigpeyQoJ2luZm9fdXN1YXJpbycpLmlubmVySFRNTCA9
2449ICcnfSk7CgluYy5hZGRWaXJ0dWFsUmVxdWVzdCgnY2hlY2FyVXN1YXJpbycsCgkJewoJCQlhY3Rp
2450b24gOiAndmFsaWRhY2FvJywKCQkJbW9kZSAgIDogJ3VzdWFyaW8nCgkJfSwKCQl7CgkJCXVzdWFy
2451aW86IHBfdXN1YXJpbwoJCX0pOwoJbmMuc2VuZFJlcXVlc3QoKTsKCSQoJ2luZm9fdXN1YXJpbycp
2452LmlubmVySFRNTCA9ICc8Zm9udCBjb2xvcj0iZ3JleSI+VmVyaWZpY2FuZG8uLi48L2ZvbnQ+JzsK
2453fQoKZnVuY3Rpb24gb2J0ZXJDaGVmaWEocF91c3VhcmlvKQp7Cgl2YXIgZXhpYmlyUmVzdWx0YWRv
2454ID0gZnVuY3Rpb24oZGF0YSkKCXsKCQlpZiAoZGF0YVsnb2J0ZXJDaGVmaWEnXVsnZGF0YSddKQoJ
2455CXsKCQkJJCgnaW5mb19jaGVmaWEnKS5pbm5lckhUTUwgPSAnPGZvbnQgY29sb3I9ImdyZWVuIj48
2456c3Ryb25nPkF2YWxpYWRvcjo8L3N0cm9uZz4gJyArIGRhdGFbJ29idGVyQ2hlZmlhJ11bJ2RhdGEn
2457XVsnY2hlZmUnXSArICcgKCcgKyBkYXRhWydvYnRlckNoZWZpYSddWydkYXRhJ11bJ2FyZWEnXSAr
2458ICcpJyArICc8L2ZvbnQ+JzsKCQkJJCgnZW52aWFyJykuZGlzYWJsZWQgPSBmYWxzZTsKCQl9CgkJ
2459ZWxzZQoJCXsKCQkJJCgnaW5mb19jaGVmaWEnKS5pbm5lckhUTUwgPSAnPGZvbnQgY29sb3I9InJl
2460ZCI+VXN14XJpbyBu428gY2FkYXN0cmFkbyBubyBvcmdhbm9ncmFtYTwvZm9udD4nOwoJCQkkKCdl
2461bnZpYXInKS5kaXNhYmxlZCA9IHRydWU7CgkJfQoJfQoKCXZhciBuYyA9IG5ldyBOYW5vQ29udHJv
2462bGxlcigpOwoJbmMuc2V0V2ZVcmwoKTsKCW5jLnNldFN1Y2Nlc3NIYW5kbGVyKGV4aWJpclJlc3Vs
2463dGFkbyk7CgluYy5zZXRFcnJvckhhbmRsZXIoZnVuY3Rpb24oKXskKCdpbmZvX2NoZWZpYScpLmlu
2464bmVySFRNTCA9ICcnfSk7CgluYy5hZGRWaXJ0dWFsUmVxdWVzdCgnb2J0ZXJDaGVmaWEnLAoJCXsK
2465CQkJYWN0aW9uIDogJ2NvbnN1bHRhJywKCQkJbW9kZSAgIDogJ29idGVyQ2hlZmlhJwoJCX0sCgkJ
2466ewoJCQl1c3VhcmlvOiBwX3VzdWFyaW8KCQl9KTsKCW5jLnNlbmRSZXF1ZXN0KCk7CgkkKCdpbmZv
2467X2NoZWZpYScpLmlubmVySFRNTCA9ICc8Zm9udCBjb2xvcj0iZ3JleSI+VmVyaWZpY2FuZG8uLi48
2468L2ZvbnQ+JzsKfQo=
2469 ]]></bindata>    </resource>
2470    <resource>
2471      <name>telefone.jpg</name>
2472      <bindata><![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsHCAkIBwsJCQkMCwsNEBoREA8PECAXGBMaJiIoKCYi
2473JSQqMD0zKi05LiQlNUg1OT9BREVEKTNLUEpCTz1DREH/2wBDAQsMDBAOEB8RER9BLCUsQUFBQUFB
2474QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUH/wAARCABZAGIDASIA
2475AhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAEDBAUGBwL/xAAwEAABAwMCBQIFBAMBAAAAAAAB
2476AAIDBBEhBRIGEzFBUSJhFCMycZFSgaHBMzSx0f/EABgBAQADAQAAAAAAAAAAAAAAAAABAgME/8QA
2477HhEAAgEFAQEBAAAAAAAAAAAAAAECAxESITFBEyL/2gAMAwEAAhEDEQA/APXEUIgJREQBERAEREAU
2478Iq5ZmxjyobSJtctRVwTsmBLTkdR4VilO5AREQBERAFU6du8saQS3r7JVzcimkl/S0lcVUcRGmZVN
2479Ft28N3E5PpB/srGrUx0jWnDLZ1762Fhs6QX9yvoVkRjL2uBAtfPZePanxROHn5hKu4e4rkdUtjmf
24808uT0G5xY4uqRlN7LSjFHsl1TUztgjL3mwWu0TUTU6ZE5/wDkZdjr+RhYnEFQXUxAJ8q0qmtFFDez
2481Ml1Vgb6RdQyfn0jJQfq7rnoJXSsActzpRAY6nflrjuZ/YWSy9NXbwto5Hsq2O7E7HeCt0sH4Ybm2
2482FshZy3p3MZhERalAiIgMbUs0Mw2l3p6NFyV5xqPD9ZPJUzUsrJmOO/YGPacCzhcjaeg7r06RjZGO
2483Y8Xa4EEey8/1CKmptZiFOGWhsA4NBc0E2B3B28A9AbFvY9Vz1Y/pM2pvTRw1Xo8kmbHPkKKbSHse
2484CAf+LtpaaOT1AYJu0jwvqCiYTgK8HqxSfTccOhzdJ57yPURvAxZ1rH/391j6lK+oJbCN38rbaHRA
248508kMjd0LiCR2uFuY6aGIWZE1o+ytCMVtkSk2cJHHqEZ/1SQs+lqK4ENNE838Lr9jf0j8KQAOi0eL
24868KLJemPQtdymukDw7w7sslEVUrcJCIikBEUXsgMbUZ/h6Vzr2LvS37lcvBTuq68OnB2tDni97t7W
2487yT57W9wcFbXiusZDRR7Xgyc0EMBG52DewJA/Jt5WFp+pUbKAT1MsccYPLMgexzQc4u3AXO2nU2bJ
2488NQNLXxT08rmwFpZe+12PwszQozNKPiDtA7NyrZNf4Ym28zUIzu7EHH8K2i4g4Zbt5NdHYgu6EWA6
24893uunOnbhhjO51UDY2xhsYs0Kxa6l1fTZGbo6tgbtDyXY2g9Cb9L9r9VsGuD2hzSHNIuCMgqqafCz
2490TXSVClFJAREQBERAVSSODbgdlz+tVOpO9NPLsFx9Lbn3XRFl1W+mjk+oA/fKWXo34eT1Gg6jUai2
2491re6WZ7OglkJGeuBfsbK+evq9LnkpdQhfUQSsIlbIHOHLxZrWgho9j9z2Xpxo2NywC/uFg6ppzK6n
24925NZRNqIh2Bsf4/dVnGMuImMmjzeB3DVVs2Vz6V81nRwzMBLc4u4Ai2L57ZWfFpOh1EbzFqlG9l7g
2493iobhpBJGQM2zfsr9W4T07kSNhhmZKXAM5sR2xssQWgt9iM26Bc3XcGOAqoqR7X7iTE97HAgGwta2
2494MXC1UZNFHJI6WnpNO0+rhEmsUm1xMjBzOpFm9rgOyMnpfC3vB+uRajVOgoy51MWOf6hYsIIFrZzk
2495Zub3vggrh6LguqmrYZeV8trSCza76iepvYHAC9G4S0Fmh0QiaPUcucepKzdLF5F/pkrG9RSikgIi
2496IAiIgCIiAIiICCAeoUbW/pH4X0iAiw8KURAFClEAREQBERAf/9k=
2497 ]]></bindata>    </resource>
2498    <resource>
2499      <name>definir_mes.js</name>
2500      <bindata><![CDATA[dmFyIGNsaWNrRWRpdGFyTWVzID0gbmV3IEFycmF5KCk7CmZ1bmN0aW9uIGVkaXRhck1lcyhleHRl
2501cm5vSUQsIGludGVybm8sIHVzdWFyaW8sIGRhdGFfaG9yYSkKewoJdmFyIHRhbWFuaG9JbnB1dCA9
2502IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChleHRlcm5vSUQpLm9mZnNldFdpZHRoIC8gNyk7Cgl2
2503YXIgaW5wdXRJRCA9IGV4dGVybm9JRCArICJpbnB1dF9tZXMiOwoJaWYgKCEgZG9jdW1lbnQuZ2V0
2504RWxlbWVudEJ5SWQoaW5wdXRJRCkpCgl7CgkJZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3dv
2505cmtmbG93X2Zvcm0nKVswXS5hY3Rpb24gPSAiIjsKCQl2YXIgZGF0ZU9iaiA9IG5ldyBEYXRlKCk7
2506CgkJdmFyIGRhdGEgPSAoKGRhdGVPYmouZ2V0TW9udGgoKSA8IDkpID8gKCIwIiArIChkYXRlT2Jq
2507LmdldE1vbnRoKCkrMSkpIDogKGRhdGVPYmouZ2V0TW9udGgoKSsxKSkgKyAiLyIgKyBkYXRlT2Jq
2508LmdldEZ1bGxZZWFyKCk7CgkJdmFyIG5vdm9Db2RpZ28gPSAnPGlucHV0IHR5cGU9InRleHQiIGlk
2509PSInICsgaW5wdXRJRCArICciIG5hbWU9Im1lcyIgdmFsdWU9IicgKyBkYXRhICsgJyIgc2l6ZT0i
2510NyIgbWF4bGVuZ3RoPSI3IiBvbmtleXByZXNzPSJyZXR1cm4oZm9ybWF0YXJDYWxlbmRhcmlvTWVz
2511KHRoaXMsIGV2ZW50KSk7IiAvPic7CgkJbm92b0NvZGlnbyArPSAnPGJ1dHRvbiBpZD0iJyArIGlu
2512cHV0SUQgKyAnLXRyaWdnZXIiPi4uLjwvYnV0dG9uPic7CgkJbm92b0NvZGlnbyArPSAnPGJ1dHRv
2513biBvbmNsaWNrPSJhbHRlcmFyTWVzKFwnJyArIGV4dGVybm9JRCAgKyAnXCcsICcgKyB1c3Vhcmlv
2514ICsgJywgXCcnICsgZGF0YV9ob3JhICsgJ1wnLCAkRihcJycgKyBpbnB1dElEICsgJ1wnKSk7IHJl
2515dHVybiBmYWxzZTsiPk9LPC9idXR0b24+JzsKCQlub3ZvQ29kaWdvICs9ICc8YnV0dG9uIG9uY2xp
2516Y2s9InJlc3RhdXJhck1lcyhcJycgKyBleHRlcm5vSUQgICsgJ1wnKTsgcmV0dXJuIGZhbHNlOyI+
2517Q2FuY2VsYXI8L2J1dHRvbj4nOwoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGV4dGVybm9JRCku
2518aW5uZXJIVE1MID0gbm92b0NvZGlnbzsKCQlDYWxlbmRhci5zZXR1cCh7ImlucHV0RmllbGQiOmlu
2519cHV0SUQsImJ1dHRvbiI6aW5wdXRJRCArICItdHJpZ2dlciIsInNpbmdsZUNsaWNrIjp0cnVlLCJp
2520ZkZvcm1hdCI6IiVtLyVZIiwibmFtZSI6Im1lcyIsImRlZmF1bHQiOnRydWUsInZhbHVlIjoiIn0p
2521OwoKCQljbGlja0VkaXRhck1lc1tleHRlcm5vSURdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
2522ZXh0ZXJub0lEKS5vbmNsaWNrOwoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGV4dGVybm9JRCku
2523b25jbGljayA9IG51bGw7Cgl9CgllbHNlCgkJcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBhbHRl
2524cmFyTWVzKGV4dGVybm9JRCwgcF91c3VhcmlvLCBwX2RhdGEsIHBfbWVzKQp7Cgl2YXIgcmVzdWx0
2525QWx0ZXJhck1lcyA9IGZ1bmN0aW9uKGRhdGEpCgl7CgkJaWYgKGRhdGFbJ21lcyddWydkYXRhJ11b
2526J2Vycm8nXSkKCQl7CgkJCWFsZXJ0KGRhdGFbJ21lcyddWydkYXRhJ11bJ2Vycm8nXSk7CgkJCXJl
2527c3RhdXJhck1lcyhleHRlcm5vSUQpOwoJCX0KCQllbHNlCgkJewoJCQl2YXIgZXh0ZXJubyA9ICQo
2528ZXh0ZXJub0lEKTsKCQkJZXh0ZXJuby5pbm5lckhUTUwgPSBkYXRhWydtZXMnXVsnZGF0YSddWydt
2529ZXMnXTsKCQkJZXh0ZXJuby5vbmNsaWNrID0gbnVsbDsKCQl9Cgl9CgoJdmFyIG5jID0gbmV3IE5h
2530bm9Db250cm9sbGVyKCk7CgluYy5zZXRXZlVybCgpOwoJbmMuc2V0U3VjY2Vzc0hhbmRsZXIocmVz
2531dWx0QWx0ZXJhck1lcyk7CgluYy5hZGRWaXJ0dWFsUmVxdWVzdCgnbWVzJywKCQl7CgkJCWFjdGlv
2532biA6ICdkZWZpbmlyX3ZhbG9yZXMnLAoJCQltb2RlICAgOiAnbWVzJwoJCX0sCgkJewoJCQl1c3Vh
2533cmlvOiBwX3VzdWFyaW8sCgkJCWRhdGFfaG9yYTogcF9kYXRhLAoJCQltZXM6IHBfbWVzCgkJfSk7
2534CgluYy5zZW5kUmVxdWVzdCgpOwoJJChleHRlcm5vSUQpLmlubmVySFRNTCA9ICc8Zm9udCBjb2xv
2535cj0iZ3JleSI+YXR1YWxpemFuZG8uLjwvZm9udD4nOwp9CgpmdW5jdGlvbiByZXN0YXVyYXJNZXMo
2536ZXh0ZXJub0lEKQp7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZChleHRlcm5vSUQpLmlubmVySFRN
2537TCA9ICI8YSBocmVmPVwiI1wiPmRlZmluaXIgbepzIGRlIHJlZmVy6m5jaWE8L2E+IjsKCWRvY3Vt
2538ZW50LmdldEVsZW1lbnRCeUlkKGV4dGVybm9JRCkub25jbGljayA9IGNsaWNrRWRpdGFyTWVzW2V4
2539dGVybm9JRF07Cn0K
2540 ]]></bindata>    </resource>
2541    <resource>
2542      <name>consultar.js</name>
2543      <bindata><![CDATA[ZnVuY3Rpb24gZXhpYmlyKGlkLCB1c3VhcmlvLCBkYXRhX2hvcmEpCnsKCXZhciBsaW5oYU9jdWx0
2544YSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbycgKyBpZCk7Cgl2YXIgaWZyYW1lID0gZG9j
2545dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lmJyArIGlkKTsKCglpZiAobGluaGFPY3VsdGEuc3R5bGUu
2546ZGlzcGxheSA9PSAnbm9uZScpCgl7CgkJbGluaGFPY3VsdGEuc3R5bGUuZGlzcGxheSA9ICcnOwoK
2547CQl2YXIgVVJMID0gdW5lc2NhcGUobG9jYXRpb24uaHJlZik7CgkJVVJMICs9ICImYWN0aW9uPWJ1
2548c2NhcitpbmZvcm1hY29lcyZkb3dubG9hZF9tb2RlPXRydWUmdXN1YXJpbz0iICsgdXN1YXJpbyAr
2549ICImZGF0YV9ob3JhPSIgKyBkYXRhX2hvcmE7CgkJaWYgKCFpZnJhbWUuc3JjKQoJCQlpZnJhbWUu
2550c3JjID0gVVJMOwoJfQoJZWxzZQoJCWxpbmhhT2N1bHRhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
2551Cn0K
2552 ]]></bindata>    </resource>
2553    <resource>
2554      <name>gerarRelatorios.js</name>
2555      <bindata><![CDATA[ZnVuY3Rpb24gaW5kaXZpZHVhbEFkaWNpb25hckRhdGEoKQp7Cgl2YXIgbWVzID0gJCgnc2VsZWNh
2556b01lc2VzJykudmFsdWU7CglpZiAobWVzLmxlbmd0aCA9PSA3KQoJewoJCS8qIGltcGVkZSBxdWUg
2557ZGF0YXMgcmVwZXRpZGFzIHNlamFtIGFkaWNpb25hZGFzICovCgkJdmFyIG1lc2VzID0gJCgnbWVz
2558ZXMnKTsKCQl2YXIgcmVnID0gbmV3IFJlZ0V4cChtZXMsICJnaSIpOwoJCWlmIChtZXNlcy5pbm5l
2559ckhUTUwuc2VhcmNoKHJlZykgPT0gLTEpCgkJewoJCQl2YXIgbm92YURhdGEgPSAnPG9wdGlvbiB2
2560YWx1ZT0iJyArIG1lcyArICciPicgKyBtZXMgKyAnPC9vcHRpb24+JzsKCQkJJCgnbWVzZXMnKS5p
2561bm5lckhUTUwgKz0gbm92YURhdGE7CgkJfQoJfQp9CgpmdW5jdGlvbiBpbmRpdmlkdWFsUmVtb3Zl
2562ckRhdGEoKQp7Cgl2YXIgbWVzZXMgPSAkKCdtZXNlcycpOwoJZm9yICh2YXIgaSA9IDA7aSA8IG1l
2563c2VzLm9wdGlvbnMubGVuZ3RoOyBpKyspCgkJaWYobWVzZXMub3B0aW9uc1tpXS5zZWxlY3RlZCkK
2564CQkJbWVzZXMub3B0aW9uc1tpLS1dID0gbnVsbDsKfQo=
2565 ]]></bindata>    </resource>
2566    <resource>
2567      <name>ligacoes_telefonicas.css</name>
2568      <bindata><![CDATA[LnRhYmxlX2hlYWRlcg0Kew0KCXdpZHRoOiAxMDAlOw0KCWJhY2tncm91bmQtY29sb3I6ICNGRkZG
2569RkY7DQoJYm9yZGVyLXdpZHRoOiAwcHg7DQoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsNCglw
2570YWRkaW5nOiAwcHg7DQp9DQoNCi50ZF9oZWFkZXJfbG9nbw0Kew0KCXdpZHRoOiA5OHB4Ow0KCWhl
2571aWdodDogODlweDsNCn0NCg0KLnR4dF9oZWFkZXJfdGl0dWxvDQp7DQoJZm9udC1mYW1pbHk6IFZl
2572cmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJZm9udC1zaXplOiAxNnB4Ow0K
2573CWNvbG9yOiAjM2IwMDAwOw0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQoudHh0X2hlYWRlcl9z
2574dWJfdGl0dWxvDQp7DQoJZm9udC1mYW1pbHk6IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNh
2575bnMtc2VyaWY7DQoJZm9udC1zaXplOiAxNHB4Ow0KCWNvbG9yOiAjM2IwMDAwOw0KCWZvbnQtd2Vp
2576Z2h0OiBib2xkOw0KDQp9DQoNCi50YWJsZV9zdWJfaGVhZGVyDQp7DQoJd2lkdGg6IDEwMCU7DQoJ
2577Ym9yZGVyLXdpZHRoOiAwcHg7DQoJcGFkZGluZzogMnB4Ow0KfQ0KDQoudGFibGVfZGVmYXVsdA0K
2578ew0KCWZvbnQtZmFtaWx5OiBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0K
2579CXdpZHRoOiA2NTBweDsNCglwYWRkaW5nOiAycHg7DQoJYm9yZGVyLXdpZHRoOiAwcHg7DQp9DQoN
2580Ci50ZF9kZWZhdWx0X2xhYmVsDQp7DQoJd2lkdGg6IDEwMHB4Ow0KCXZlcnRpY2FsLWFsaWduOiB0
2581b3A7DQp9DQoNCi50ZF9kZWZhdWx0X2ZpZWxkDQp7DQoJd2lkdGg6IDU1MHB4Ow0KCWZvbnQtd2Vp
2582Z2h0OiBpbm9ybWFsOw0KCXZlcnRpY2FsLWFsaWduOiB0b3A7DQp9DQoudGRfZGVmYXVsdF9maWVs
2583ZF9ib2xkDQp7DQoJd2lkdGg6IDU1MHB4Ow0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KCXZlcnRpY2Fs
2584LWFsaWduOiB0b3A7DQp9DQoNCi50ZF9kZWZhdWx0X3RpdHVsbw0Kew0KCWZvbnQtc2l6ZTogMTZw
2585eDsNCglmb250LXdlaWdodDogYm9sZDsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJZm9udC1mYW1p
2586bHk6IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQp9DQoNCi50YWJsZV9s
2587aXN0DQp7DQoJZm9udC1mYW1pbHk6IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy
2588aWY7DQoJd2lkdGg6IDcwMHB4Ow0KCXBhZGRpbmc6IDJweDsNCglib3JkZXItd2lkdGg6IDBweDsN
2589Cn0NCg0KLnRhYmxlX2xpc3RfY2VudHJhbA0Kew0KCWJvcmRlci13aWR0aDogMXB4Ow0KCWJvcmRl
2590ci1zdHlsZTogc29saWQ7DQoJYm9yZGVyLWNvbG9yOiBibGFjazsNCglwYWRkaW5nOiAwcHg7DQoJ
2591Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsNCgl3aWR0aDogMTAwJTsNCn0NCg0KLnRyX2xpc3Rf
2592Y2VudHJhbF9oZWFkZXINCnsNCgliYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTksIDAsIDApOw0KCWNv
2593bG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7DQp9DQoNCnRoLmNhYmVjYWxobw0Kew0KCWZvbnQtc2l6
2594ZTogMTNweDsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjMEY4RUZGOw0KfQ0KDQp0aC5jYWJlY2FsaG8g
2595YQ0Kew0KCWNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7DQp9DQoNCnRyLnBhcg0Kew0KCWJhY2tn
2596cm91bmQtY29sb3I6ICNDQ0U3RkY7DQoJaGVpZ2h0OiAxLjdlbTsNCn0NCg0KdHIuaW1wYXINCnsN
2597CgloZWlnaHQ6IDEuN2VtOw0KfQ0K
2598 ]]></bindata>    </resource>
2599  </resources>
2600  <transitions>
2601     <transition>
2602       <from>Não Procede</from>
2603       <to>Retificação</to>
2604     </transition>
2605     <transition>
2606       <from>Registrar Ligação</from>
2607       <to>Tipo Ligação</to>
2608     </transition>
2609     <transition>
2610       <from>Retificação</from>
2611       <to>Tipo Ligação</to>
2612     </transition>
2613     <transition>
2614       <from>Tipo Ligação</from>
2615       <to>Funcionário Avalia</to>
2616     </transition>
2617     <transition>
2618       <from>Tipo Ligação</from>
2619       <to>Chefia Avalia</to>
2620     </transition>
2621     <transition>
2622       <from>Chefia Avalia</from>
2623       <to>Aprova</to>
2624     </transition>
2625     <transition>
2626       <from>Chefia Avalia</from>
2627       <to>Rejeita</to>
2628     </transition>
2629     <transition>
2630       <from>Chefia Avalia</from>
2631       <to>Não Procede</to>
2632     </transition>
2633     <transition>
2634       <from>Funcionário Avalia</from>
2635       <to>Confirma</to>
2636     </transition>
2637     <transition>
2638       <from>Funcionário Avalia</from>
2639       <to>Não Procede</to>
2640     </transition>
2641     <transition>
2642       <from>Rejeita</from>
2643       <to>Salva</to>
2644     </transition>
2645     <transition>
2646       <from>Aprova</from>
2647       <to>Salva</to>
2648     </transition>
2649     <transition>
2650       <from>Confirma</from>
2651       <to>Salva</to>
2652     </transition>
2653     <transition>
2654       <from>Salva</from>
2655       <to>end</to>
2656     </transition>
2657  </transitions>
2658</process>