package br.com.centralit.citcorpore.ajaxForms; import java.sql.Time; import java.sql.Timestamp; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.bpm.dto.FluxoDTO; import br.com.centralit.bpm.dto.PermissoesFluxoDTO; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLForm; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citcorpore.bean.CidadesDTO; import br.com.centralit.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.DespesaViagemDTO; import br.com.centralit.citcorpore.bean.IntegranteViagemDTO; import br.com.centralit.citcorpore.bean.JustificativaParecerDTO; import br.com.centralit.citcorpore.bean.JustificativaSolicitacaoDTO; import br.com.centralit.citcorpore.bean.ParceiroDTO; import br.com.centralit.citcorpore.bean.ParecerDTO; import br.com.centralit.citcorpore.bean.RequisicaoViagemDTO; import br.com.centralit.citcorpore.bean.RoteiroViagemDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.bean.TipoMovimFinanceiraViagemDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.integracao.UsuarioDao; import br.com.centralit.citcorpore.negocio.CentroResultadoService; import br.com.centralit.citcorpore.negocio.CidadesService; import br.com.centralit.citcorpore.negocio.ContratoService; import br.com.centralit.citcorpore.negocio.DespesaViagemService; import br.com.centralit.citcorpore.negocio.FormaPagamentoService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.IntegranteViagemService; import br.com.centralit.citcorpore.negocio.JustificativaParecerService; import br.com.centralit.citcorpore.negocio.JustificativaSolicitacaoService; import br.com.centralit.citcorpore.negocio.MoedaService; import br.com.centralit.citcorpore.negocio.ParceiroService; import br.com.centralit.citcorpore.negocio.ParecerService; import br.com.centralit.citcorpore.negocio.PermissoesFluxoService; import br.com.centralit.citcorpore.negocio.ProjetoService; import br.com.centralit.citcorpore.negocio.RequisicaoViagemService; import br.com.centralit.citcorpore.negocio.RoteiroViagemService; import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService; import br.com.centralit.citcorpore.negocio.TipoMovimFinanceiraViagemService; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; import br.com.citframework.util.UtilStrings; @SuppressWarnings({"rawtypes","unused", "unchecked"}) public class DespesaViagem extends AjaxFormAction { @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); this.preencherComboCentroResultado(document, request, response); this.preencherComboProjeto(document, request, response); this.preencherComboJustificativa(document, request, response); this.restoreTreeIntegrantesViagem(document, request, response, true); this.restoreTitulo(document, request, response); this.removeBotoesDaTela(document, request, response, usuario, despesaViagemDTO); if(despesaViagemDTO.getIdSolicitacaoServico() != null) { this.restore(document, request, response); } } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception { RequisicaoViagemService reqViagemService = (RequisicaoViagemService) ServiceLocator.getInstance().getService(RequisicaoViagemService.class, null); DespesaViagemService despesaViagemService = (DespesaViagemService) ServiceLocator.getInstance().getService(DespesaViagemService.class, null); IntegranteViagemService integranteViagemService = (IntegranteViagemService) ServiceLocator.getInstance().getService(IntegranteViagemService.class, null); DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); RequisicaoViagemDTO requisicaoViagemDTO = new RequisicaoViagemDTO(); Collection<IntegranteViagemDTO> colIntegrantes = null; requisicaoViagemDTO.setIdSolicitacaoServico(despesaViagemDTO.getIdSolicitacaoServico()); requisicaoViagemDTO.setIdContrato(despesaViagemDTO.getIdContrato()); if(despesaViagemDTO.getIdSolicitacaoServico()!=null){ requisicaoViagemDTO = (RequisicaoViagemDTO) reqViagemService.restore(requisicaoViagemDTO); if(requisicaoViagemDTO != null){ if(requisicaoViagemDTO.getIdCidadeOrigem() != null) { requisicaoViagemDTO.setNomeCidadeOrigem(this.recuperaCidade(requisicaoViagemDTO.getIdCidadeOrigem())); } if(requisicaoViagemDTO.getIdCidadeDestino() != null) { requisicaoViagemDTO.setNomeCidadeDestino(this.recuperaCidade(requisicaoViagemDTO.getIdCidadeDestino())); } } colIntegrantes = integranteViagemService.recuperaIntegrantesViagemByIdSolicitacaoEstado(despesaViagemDTO.getIdSolicitacaoServico(), RequisicaoViagemDTO.AGUARDANDO_PLANEJAMENTO); } HTMLForm form = document.getForm("form"); form.clear(); form.setValues(requisicaoViagemDTO); document.getElementById("nomeCidadeOrigem").setDisabled(true); document.getElementById("nomeCidadeDestino").setDisabled(true); document.getElementById("dataInicioViagem").setDisabled(true); document.getElementById("dataFimViagem").setDisabled(true); document.getElementById("qtdeDias").setDisabled(true); document.getElementById("idCentroCusto").setDisabled(true); document.getElementById("idProjeto").setDisabled(true); document.getElementById("idMotivoViagem").setDisabled(true); document.getElementById("descricaoMotivo").setDisabled(true); if(colIntegrantes != null) { document.getElementById("colIntegrantesViagem_Serialize").setValue(br.com.citframework.util.WebUtil.serializeObjects(colIntegrantes)); } } /** * Retorna o html com a treeview dos integrantes e seu respectivos itens * * @param document * @param request * @param response * @param collapsed * @throws ServiceException * @throws Exception */ public void restoreTreeIntegrantesViagem(DocumentHTML document, HttpServletRequest request, HttpServletResponse response, Boolean collapsed) throws ServiceException, Exception { RequisicaoViagemService reqViagemService = (RequisicaoViagemService) ServiceLocator.getInstance().getService(RequisicaoViagemService.class, null); DespesaViagemService despesaViagemService = (DespesaViagemService) ServiceLocator.getInstance().getService(DespesaViagemService.class, null); RoteiroViagemService roteiroViagemService = (RoteiroViagemService) ServiceLocator.getInstance().getService(RoteiroViagemService.class, null); TipoMovimFinanceiraViagemService tipoMovimFinanceiraViagemService = (TipoMovimFinanceiraViagemService) ServiceLocator.getInstance().getService(TipoMovimFinanceiraViagemService.class, null); CidadesService cidadeService = (CidadesService) ServiceLocator.getInstance().getService(CidadesService.class, null); IntegranteViagemService integranteViagemService = (IntegranteViagemService) ServiceLocator.getInstance().getService(IntegranteViagemService.class, null); DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); RoteiroViagemDTO roteiroViagemDTO = null; TipoMovimFinanceiraViagemDTO tipoMovimFinanceiraViagemDTO = null; CidadesDTO origem = null; CidadesDTO destino = null; Collection<IntegranteViagemDTO> colIntegrantes = integranteViagemService.recuperaIntegrantesViagemByIdSolicitacaoEstado(despesaViagemDTO.getIdSolicitacaoServico(), RequisicaoViagemDTO.AGUARDANDO_PLANEJAMENTO); NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("pt", "BR")); DecimalFormat decimal = (DecimalFormat) nf; decimal.applyPattern("#,##0.00"); if(colIntegrantes != null) { StringBuilder html = new StringBuilder(); for(IntegranteViagemDTO integrante: colIntegrantes) { roteiroViagemDTO = roteiroViagemService.findByIdIntegrante(integrante.getIdIntegranteViagem()); Collection<DespesaViagemDTO> colDespesaViagem = despesaViagemService.findDespesasAtivasViagemByIdRoteiro(roteiroViagemDTO.getIdRoteiroViagem()); origem = (CidadesDTO) ((List) cidadeService.findNomeByIdCidade(roteiroViagemDTO.getOrigem())).get(0); destino = (CidadesDTO) ((List) cidadeService.findNomeByIdCidade(roteiroViagemDTO.getDestino())).get(0); html.append("<div class='despesa-viagem-item'>"); html.append(" <ul class='filetree treeview browser'>"); html.append(" <li>"); html.append(" <span class='folder'>" + integrante.getNome() + " - ida " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, roteiroViagemDTO.getIda(), UtilI18N.getLocale()) + " - volta " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, roteiroViagemDTO.getVolta(), UtilI18N.getLocale()) + " - " + origem.getNomeCidade() + "/" + origem.getNomeUf() + " - " + destino.getNomeCidade() + "/" + destino.getNomeUf() + "</span>"); html.append(" <ul>"); html.append(" <li>"); html.append(" <div class='file'>"); html.append(" <table class='table_integrante_controle'>"); if(colDespesaViagem != null && !colDespesaViagem.isEmpty()) { Double total = 0.0; for(DespesaViagemDTO despesaViagem : colDespesaViagem) { tipoMovimFinanceiraViagemDTO = tipoMovimFinanceiraViagemService.findByMovimentacao(Long.parseLong(despesaViagem.getIdTipo().toString())); html.append(" <tr>"); html.append(" <td width='5%'><span class='glyphicons " + tipoMovimFinanceiraViagemDTO.getImagem() + "'><i></i> </span></td>"); html.append(" <td width='50%'>" + tipoMovimFinanceiraViagemDTO.getClassificacao() + "</td>"); html.append(" <td width='15%'>" + despesaViagem.getTotalFormatado() + "</td>"); html.append(" <td width='30%'><a class='btn-editar-item-despesa btn-action btn-success glyphicons edit' href='javascript:;' onclick='editarDespesaViagem(" + despesaViagem.getIdDespesaViagem() + ")'><i></i></a> <a class='btn-action btn-excluir-item-despesa btn-danger glyphicons remove_2' href='javascript:;' onclick='excluirDespesaViagem(" + despesaViagem.getIdDespesaViagem() + ")'><i></i></a></td>"); html.append(" </tr>"); total += despesaViagem.getTotal(); } html.append(" <tr>"); html.append(" <td></td>"); html.append(" <td class='strong'>Valor total</td>"); html.append(" <td class='strong' colspan='2'>" + decimal.format(total) + "</td>"); html.append(" </tr>"); } else { html.append(" <tr>"); html.append(" <td colspan='3' style='padding: 0;'>N�o h� itens adicionados para este integrante!</td>"); html.append(" </tr>"); } html.append(" </table>"); html.append(" </div><!-- .file -->"); html.append(" </li>"); html.append(" </ul>"); html.append(" </li>"); html.append(" </ul>"); html.append("</div><!-- .despesa-viagem-item -->"); } document.getElementById("despesa-viagem-items-container").setInnerHTML(html.toString()); document.executeScript("$('.browser').treeview({collapsed: " + collapsed + "});"); } } /** * Carrega a popup para adicionar item de despesa * * @param document * @param request * @param response * @throws Exception */ public void carregarPopup(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); HTMLForm formItem = document.getForm("formItem"); formItem.clear(); if(despesaViagemDTO.getIdSolicitacaoServico() != null) { document.getElementById("idSolicitacaoServicoAux").setValue(despesaViagemDTO.getIdSolicitacaoServico().toString()); } this.preencherComboTipoDespesa(document, request, response); this.preencherComboMoeda(document, request, response); this.preencherComboFormaPagamento(document, request, response); // Verifica se � altera��o do item if(despesaViagemDTO.getIdDespesaViagem() != null) { DespesaViagemService despesaViagemService = (DespesaViagemService) ServiceLocator.getInstance().getService(DespesaViagemService.class, null); ParceiroService parceiroService = (ParceiroService) ServiceLocator.getInstance().getService(ParceiroService.class, null); ParceiroDTO parceiro = new ParceiroDTO(); despesaViagemDTO = (DespesaViagemDTO) despesaViagemService.restore(despesaViagemDTO); if(despesaViagemDTO != null) { formItem.setValues(despesaViagemDTO); // Tipo da despesa document.getSelectById("tipoDespesa").setValue(despesaViagemDTO.getIdTipo().toString()); // Parceiro parceiro.setIdParceiro(despesaViagemDTO.getIdFornecedor()); parceiro = (ParceiroDTO) parceiroService.restore(parceiro); if(parceiro != null) { document.getElementById("nomeFornecedor").setValue(parceiro.getNome()); } // Moeda if(despesaViagemDTO.getIdFormaPagamento() != null) { document.getElementById("idMoeda").setValue(despesaViagemDTO.getIdMoeda().toString()); document.getSelectById("idMoedaAux").setValue(despesaViagemDTO.getIdMoeda().toString()); } // Forma de pagamento if(despesaViagemDTO.getIdFormaPagamento() != null) { document.getSelectById("idFormaPagamento").setValue(despesaViagemDTO.getIdFormaPagamento().toString()); } if(despesaViagemDTO.getValidade() != null) { document.getElementById("prazoCotacaoAux").setValue(UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, despesaViagemDTO.getValidade(), UtilI18N.getLocale())); document.getElementById("horaCotacaoAux").setValue(UtilDatas.getHoraHHMM(despesaViagemDTO.getValidade())); } document.getElementById("valorAdiantamento").setValue(despesaViagemDTO.getTotalFormatado()); this.tratarValoresTipoMovimentacao(document, request, response, despesaViagemDTO); this.carregaIntegranteViagem(document, request, response, despesaViagemDTO); } } else { this.carregaIntegrantesViagem(document, request, response); } } /** * Realiza o calculo da quantidade vezes o valor e retorna para a tela do usuario * * @param document * @param request * @param response * @throws ServiceException * @throws Exception */ public void calcularTotal(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)throws ServiceException,Exception { DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); document.getElementById("valorAdiantamento").setValue(despesaViagemDTO.getTotalFormatado()); } /** * Criado apenas para ser chamado do JS pelo .fireEvent(''); * * @param document * @param request * @param response * @throws ServiceException * @throws Exception * @author renato.jesus */ public void tratarValoresTipoMovimentacao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)throws ServiceException,Exception { DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); this.tratarValoresTipoMovimentacao(document, request, response, despesaViagemDTO); } /** * Faz o tratamento do tipo da movimenta��o financeira. * Se a Classifica��o for igual a di�ria ent�o o adiantamento = valorUnit�rio * (quantidade + 1), se a classifica��o for qualquer outro diferente * ent�o adiantamento = valorUnit�rio * di�ria * O tratamento para o adiantamento � feito , ele calcula e seta o valor na tela automaticamente. * Esse m�todo tamb�m faz o tratamento para casas decimais * * @param document * @param request * @param response * @param despesaViagemDTO * @throws ServiceException * @throws Exception * @author renato.jesus */ private void tratarValoresTipoMovimentacao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response, DespesaViagemDTO despesaViagemDTO)throws ServiceException,Exception { if(despesaViagemDTO.getIdTipo() != null && !despesaViagemDTO.getIdTipo().toString().equals("")) { TipoMovimFinanceiraViagemService tipoMovimentacaoService = (TipoMovimFinanceiraViagemService) ServiceLocator.getInstance().getService(TipoMovimFinanceiraViagemService.class, null); TipoMovimFinanceiraViagemDTO tipoMovimFinanceiraDto = new TipoMovimFinanceiraViagemDTO(); tipoMovimFinanceiraDto.setIdtipoMovimFinanceiraViagem(despesaViagemDTO.getIdTipo()); tipoMovimFinanceiraDto = (TipoMovimFinanceiraViagemDTO) tipoMovimentacaoService.restore(tipoMovimFinanceiraDto); if(tipoMovimFinanceiraDto != null) { if(despesaViagemDTO.getIdDespesaViagem() == null) { String classificacao = ""; classificacao = UtilStrings.removeCaracteresEspeciais(tipoMovimFinanceiraDto.getClassificacao()); if(despesaViagemDTO.getValor() == null && tipoMovimFinanceiraDto.getValorPadrao() != null) { NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("pt", "BR")); DecimalFormat decimalFormat = (DecimalFormat) nf; decimalFormat.applyPattern("#,##0.00"); String valorUnit = decimalFormat.format(tipoMovimFinanceiraDto.getValorPadrao()); despesaViagemDTO.setValor(tipoMovimFinanceiraDto.getValorPadrao()); document.getElementById("valor").setValue(valorUnit); } else { document.getElementById("valor").setValue(""); } if(classificacao.equalsIgnoreCase(Enumerados.ClassificacaoMovFinViagem.Diaria.toString())) { RequisicaoViagemDTO requisicaoViagemDto = new RequisicaoViagemDTO(); RequisicaoViagemService requisicaoService = (RequisicaoViagemService) ServiceLocator.getInstance().getService(RequisicaoViagemService.class, null); requisicaoViagemDto.setIdSolicitacaoServico(despesaViagemDTO.getIdSolicitacaoServico()); requisicaoViagemDto = (RequisicaoViagemDTO) requisicaoService.restore(requisicaoViagemDto); // Adiciona mais um dia quando a op��o selecionada e di�ria requisicaoViagemDto.setQtdeDias(requisicaoViagemDto.getQtdeDias() + 1); despesaViagemDTO.setQuantidade(requisicaoViagemDto.getQtdeDias()); document.getElementById("quantidade").setValue(requisicaoViagemDto.getQtdeDias().toString()); document.getElementById("quantidade").setReadonly(true); } else { document.getElementById("quantidade").setValue("1"); document.getElementById("quantidade").setReadonly(false); } document.getElementById("valorAdiantamento").setValue(despesaViagemDTO.getTotalFormatado()); } if(tipoMovimFinanceiraDto.getExigeDataHoraCotacao().equalsIgnoreCase("S")) { document.executeScript("$('#labelPrazoCotacao, #labelHoraCotacao').addClass('campoObrigatorio');"); document.getElementById("prazoCotacaoAux").setDisabled(false); document.getElementById("horaCotacaoAux").setDisabled(false); } else { document.executeScript("$('#labelPrazoCotacao, #labelHoraCotacao').removeClass('campoObrigatorio');"); document.getElementById("prazoCotacaoAux").setDisabled(true); document.getElementById("horaCotacaoAux").setDisabled(true); } } } else { document.getElementById("quantidade").setValue(""); document.getElementById("valor").setValue(""); document.getElementById("valorAdiantamento").setValue(""); document.getElementById("quantidade").setReadonly(false); } } /** * Carrega o html de todos os integrantes de viagem e seus respectivos checkboxes * * @param document * @param request * @param response * @throws Exception */ public void carregaIntegrantesViagem(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); RoteiroViagemDTO roteiroViagemDTO = null; CidadesDTO origem = null; CidadesDTO destino = null; IntegranteViagemService integranteViagemService = (IntegranteViagemService) ServiceLocator.getInstance().getService(IntegranteViagemService.class, null); DespesaViagemService despesaViagemService = (DespesaViagemService) ServiceLocator.getInstance().getService(DespesaViagemService.class, null); RoteiroViagemService roteiroViagemService = (RoteiroViagemService) ServiceLocator.getInstance().getService(RoteiroViagemService.class, null); CidadesService cidadeService = (CidadesService) ServiceLocator.getInstance().getService(CidadesService.class, null); Collection<IntegranteViagemDTO> colIntegrantes = integranteViagemService.recuperaIntegrantesViagemByIdSolicitacaoEstado(despesaViagemDTO.getIdSolicitacaoServico(), RequisicaoViagemDTO.AGUARDANDO_PLANEJAMENTO); document.getElementById("integrantes-viagem-heading").setInnerHTML(UtilI18N.internacionaliza(request, "requisicaoViagem.atribuirIntegrante")); if(colIntegrantes != null) { StringBuilder html = new StringBuilder(); html.append("<li>"); html.append(" <label class='inline checkbox'>"); html.append(" <input id='idIntegranteMarcaTodos' type='checkbox' /> " + UtilI18N.internacionaliza(request, "citcorpore.comum.selecionarTodos")); html.append(" </label>"); html.append("</li>"); for(IntegranteViagemDTO integrante: colIntegrantes) { roteiroViagemDTO = roteiroViagemService.findByIdIntegrante(integrante.getIdIntegranteViagem()); origem = (CidadesDTO) ((List) cidadeService.findNomeByIdCidade(roteiroViagemDTO.getOrigem())).get(0); destino = (CidadesDTO) ((List) cidadeService.findNomeByIdCidade(roteiroViagemDTO.getDestino())).get(0); html.append("<li>"); html.append(" <label class='inline checkbox'>"); html.append(" <input class='idIntegrate' type='checkbox' value='" + integrante.getIdIntegranteViagem() + "' />" + integrante.getNome() + " - ida " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, roteiroViagemDTO.getIda(), UtilI18N.getLocale()) + " - volta " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, roteiroViagemDTO.getVolta(), UtilI18N.getLocale()) + " - " + origem.getNomeCidade() + "/" + origem.getNomeUf() + " - " + destino.getNomeCidade() + "/" + destino.getNomeUf()); html.append(" </label>"); html.append("</li>"); } document.getElementById("integrantes-itens").setInnerHTML(html.toString()); } } /** * Carrega apenas um integrante de viagem e seu respectivo checkbox * * @param document * @param request * @param response * @param despesaViagemDTO * @throws Exception */ public void carregaIntegranteViagem(DocumentHTML document, HttpServletRequest request, HttpServletResponse response, DespesaViagemDTO despesaViagemDTO) throws Exception{ RoteiroViagemService roteiroViagemService = (RoteiroViagemService) ServiceLocator.getInstance().getService(RoteiroViagemService.class, WebUtil.getUsuarioSistema(request)); IntegranteViagemService integranteViagemService = (IntegranteViagemService) ServiceLocator.getInstance().getService(IntegranteViagemService.class, WebUtil.getUsuarioSistema(request)); CidadesService cidadeService = (CidadesService) ServiceLocator.getInstance().getService(CidadesService.class, WebUtil.getUsuarioSistema(request)); RoteiroViagemDTO roteiroViagemDTO = new RoteiroViagemDTO(); IntegranteViagemDTO integranteViagemDTO = null; CidadesDTO origem = null; CidadesDTO destino = null; roteiroViagemDTO.setIdRoteiroViagem(despesaViagemDTO.getIdRoteiro()); roteiroViagemDTO = (RoteiroViagemDTO) roteiroViagemService.restore(roteiroViagemDTO); if(roteiroViagemDTO != null) { integranteViagemDTO = new IntegranteViagemDTO(); integranteViagemDTO.setIdIntegranteViagem(roteiroViagemDTO.getIdIntegrante()); integranteViagemDTO = (IntegranteViagemDTO) integranteViagemService.restore(integranteViagemDTO); origem = (CidadesDTO) ((List) cidadeService.findNomeByIdCidade(roteiroViagemDTO.getOrigem())).get(0); destino = (CidadesDTO) ((List) cidadeService.findNomeByIdCidade(roteiroViagemDTO.getDestino())).get(0); document.getElementById("integrantes-viagem-heading").setInnerHTML("Atribuir ao integrante"); StringBuilder html = new StringBuilder(); html.append("<li>"); html.append(" <label class='inline checkbox'>"); html.append(" <input class='idIntegrate' type='checkbox' checked='checked' disabled='disabled' value='" + integranteViagemDTO.getIdIntegranteViagem() + "' />" + integranteViagemDTO.getNome() + " - ida " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, roteiroViagemDTO.getIda(), UtilI18N.getLocale()) + " - volta " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, roteiroViagemDTO.getVolta(), UtilI18N.getLocale()) + " - " + origem.getNomeCidade() + "/" + origem.getNomeUf() + " - " + destino.getNomeCidade() + "/" + destino.getNomeUf()); html.append(" </label>"); html.append("</li>"); document.getElementById("integrantes-itens").setInnerHTML(html.toString()); } } /** * Armazena o item de despesa e configura-o para cada integrante selecionado * * @param document * @param request * @param response * @throws Exception */ public void adicionarDespesaViagem(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { RoteiroViagemService roteiroViagemService = (RoteiroViagemService) ServiceLocator.getInstance().getService(RoteiroViagemService.class, null); DespesaViagemService despesaViagemService = (DespesaViagemService) ServiceLocator.getInstance().getService(DespesaViagemService.class, null); DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); if(despesaViagemDTO.getPrazoCotacaoAux() != null && despesaViagemDTO.getHoraCotacaoAux() != null) { despesaViagemDTO.setValidade(Timestamp.valueOf(despesaViagemDTO.getPrazoCotacaoAux() + " " + Time.valueOf(despesaViagemDTO.getHoraCotacaoAux() + ":00"))); } if(despesaViagemDTO.getIdDespesaViagem() == null || despesaViagemDTO.getIdDespesaViagem().equals("")) { despesaViagemDTO.setDataInicio(UtilDatas.getDataAtual()); RoteiroViagemDTO roteiroViagemDTO = null; Collection<IntegranteViagemDTO> colIntegrantesViagem = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(IntegranteViagemDTO.class, "colIntegrantesViagem_SerializeAux", request); if(colIntegrantesViagem != null && !colIntegrantesViagem.isEmpty()) { for(IntegranteViagemDTO integranteViagemDTO : colIntegrantesViagem) { roteiroViagemDTO = roteiroViagemService.findByIdIntegrante(integranteViagemDTO.getIdIntegranteViagem()); despesaViagemDTO.setIdRoteiro(roteiroViagemDTO.getIdRoteiroViagem()); if(integranteViagemDTO.getRemarcacao().equalsIgnoreCase("S")){ despesaViagemDTO.setOriginal("N"); }else{ despesaViagemDTO.setOriginal("S"); } despesaViagemService.create(despesaViagemDTO); } } } else { despesaViagemService.update(despesaViagemDTO); } HTMLForm formItem = document.getForm("formItem"); formItem.clear(); this.restoreTreeIntegrantesViagem(document, request, response, false); } /** * Exclui o item de despesa conforme dados passados * * @param document * @param request * @param response * @throws Exception */ public void excluirDespesaViagem(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { DespesaViagemService despesaViagemService = (DespesaViagemService) ServiceLocator.getInstance().getService(DespesaViagemService.class, null); DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); if(despesaViagemDTO != null && despesaViagemDTO.getIdDespesaViagem() != null) { despesaViagemService.delete(despesaViagemDTO); this.restoreTreeIntegrantesViagem(document, request, response, false); } } /** * Preenche a combo de 'Centro Resultado' do formul�rio HTML * * @param document * @param request * @param response * @throws Exception * @author renato.jesus */ public void preencherComboCentroResultado(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ CentroResultadoService centroResultadoService = (CentroResultadoService) ServiceLocator.getInstance().getService(CentroResultadoService.class, WebUtil.getUsuarioSistema(request)); HTMLSelect comboCentroCusto = (HTMLSelect) document.getSelectById("idCentroCusto"); comboCentroCusto.removeAllOptions(); comboCentroCusto.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); Collection colCCusto = centroResultadoService.listPermiteRequisicaoProduto(); if(colCCusto != null && !colCCusto.isEmpty()){ comboCentroCusto.addOptions(colCCusto, "idCentroResultado", "nomeHierarquizado", null); } } /** * Preenche a combo de 'Projeto' do formul�rio HTML * * @param document * @param request * @param response * @param requisicaoViagemDto * @throws Exception * @author renato.jesus */ public void preencherComboProjeto(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); HTMLSelect comboProjeto = (HTMLSelect) document.getSelectById("idProjeto"); comboProjeto.removeAllOptions(); comboProjeto.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); if (despesaViagemDTO.getIdContrato() != null) { ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, WebUtil.getUsuarioSistema(request)); ContratoDTO contratoDto = new ContratoDTO(); contratoDto.setIdContrato(despesaViagemDTO.getIdContrato()); contratoDto = (ContratoDTO) contratoService.restore(contratoDto); if (contratoDto != null) { ProjetoService projetoService = (ProjetoService) ServiceLocator.getInstance().getService(ProjetoService.class, WebUtil.getUsuarioSistema(request)); Collection colProjetos = projetoService.listHierarquia(contratoDto.getIdCliente(), true); if(colProjetos != null && !colProjetos.isEmpty()) comboProjeto.addOptions(colProjetos, "idProjeto", "nomeHierarquizado", null); } } } /** * Preenche combo de 'justificativa solicita��o'. * * @param document * @param request * @param response * @throws Exception * @author renato.jesus */ public void preencherComboJustificativa(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { JustificativaSolicitacaoService justificativaSolicitacaoService = (JustificativaSolicitacaoService)ServiceLocator.getInstance().getService(JustificativaSolicitacaoService.class, null); Collection<JustificativaSolicitacaoDTO> colJustificativas = justificativaSolicitacaoService.listAtivasParaViagem(); HTMLSelect comboJustificativa = (HTMLSelect) document.getSelectById("idMotivoViagem"); comboJustificativa.removeAllOptions(); comboJustificativa.removeAllOptions(); comboJustificativa.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); if (colJustificativas != null){ comboJustificativa.addOptions(colJustificativas, "idJustificativa", "descricaoJustificativa", null); } } /** * Preenche combo de 'Tipo de despesa'. * * @param document * @param request * @param response * @throws Exception * @author renato.jesus */ public void preencherComboTipoDespesa(DocumentHTML document,HttpServletRequest request, HttpServletResponse response)throws Exception{ TipoMovimFinanceiraViagemService tipoService = (TipoMovimFinanceiraViagemService) ServiceLocator.getInstance().getService(TipoMovimFinanceiraViagemService.class, null); String classificacao = ""; List<TipoMovimFinanceiraViagemDTO> listaTipoMovimentacaoFinanceiraViagem = new ArrayList<TipoMovimFinanceiraViagemDTO>(); HTMLSelect comboDespesa = document.getSelectById("tipoDespesa"); comboDespesa.removeAllOptions(); comboDespesa.addOption("", "" + UtilI18N.internacionaliza(request, "citcorpore.comum.selecione") + ""); for(Enumerados.ClassificacaoMovFinViagem classificacaoItem : Enumerados.ClassificacaoMovFinViagem.values()){ classificacao = UtilStrings.removeCaracteresEspeciais(classificacaoItem.getDescricao()); listaTipoMovimentacaoFinanceiraViagem = tipoService.listByClassificacao(classificacao); for(TipoMovimFinanceiraViagemDTO tipoMov : listaTipoMovimentacaoFinanceiraViagem) { comboDespesa.addOption(tipoMov.getIdtipoMovimFinanceiraViagem().toString(), classificacao.trim() + " (" + (tipoMov.getNome()).trim() + ")"); } } } /** * Preenche combo de 'Moeda'. * * @param document * @param request * @param response * @throws Exception * @author renato.jesus */ public void preencherComboMoeda(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ MoedaService moedaService = (MoedaService) ServiceLocator.getInstance().getService(MoedaService.class, null); HTMLSelect comboMoeda = (HTMLSelect) document.getSelectById("idMoedaAux"); comboMoeda.removeAllOptions(); comboMoeda.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); Collection colMoedas = moedaService.findAllAtivos(); if(colMoedas != null && !colMoedas.isEmpty()){ comboMoeda.addOptions(colMoedas, "idMoeda", "nomeMoeda", null); } document.getElementById("idMoeda").setValue("1"); comboMoeda.setValue("1"); comboMoeda.setDisabled(true); } /** * Preenche combo de 'Forma de pagamento'. * * @param document * @param request * @param response * @throws Exception * @author renato.jesus */ public void preencherComboFormaPagamento(DocumentHTML document,HttpServletRequest request, HttpServletResponse response)throws Exception{ FormaPagamentoService formaPagamentoService = (FormaPagamentoService) ServiceLocator.getInstance().getService(FormaPagamentoService.class, null); HTMLSelect comboFormaPagamento = document.getSelectById("idFormaPagamento"); comboFormaPagamento.removeAllOptions(); comboFormaPagamento.addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todos") + " --"); Collection colTipoMovimentacaoFinanceira = formaPagamentoService.list(); if(colTipoMovimentacaoFinanceira!=null){ comboFormaPagamento.addOptions(colTipoMovimentacaoFinanceira, "idFormaPagamento", "nomeFormaPagamento", null); } } @Override public Class getBeanClass() { return DespesaViagemDTO.class; } /** * Retorna a cidade conforme idcidade passado * * @param idCidade * @return * @throws Exception * @author renato.jesus */ public String recuperaCidade(Integer idCidade) throws Exception { CidadesDTO cidadeDto = new CidadesDTO(); CidadesService cidadesService = (CidadesService) ServiceLocator.getInstance().getService(CidadesService.class, null); if (idCidade != null) { cidadeDto = (CidadesDTO) cidadesService.findCidadeUF(idCidade); return cidadeDto.getNomeCidade() + " - " + cidadeDto.getNomeUf(); } return null; } /** * Remove o bot�o adicionar itens caso o usuario n�o tenha permiss�o * * @param document * @param request * @param response * @throws Exception * @author renato.jesus */ private void removeBotoesDaTela(DocumentHTML document,HttpServletRequest request, HttpServletResponse response, UsuarioDTO usuario, DespesaViagemDTO despesaViagemDTO) throws Exception { SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); SolicitacaoServicoDTO solicitacaoServicoDTO = new SolicitacaoServicoDTO(); solicitacaoServicoDTO.setIdSolicitacaoServico(despesaViagemDTO.getIdSolicitacaoServico()); solicitacaoServicoDTO = (SolicitacaoServicoDTO) solicitacaoServicoService.restore(solicitacaoServicoDTO); FluxoDTO fluxoDTO = solicitacaoServicoService.recuperaFluxo(solicitacaoServicoDTO); PermissoesFluxoService permissoesFluxoService = (PermissoesFluxoService) ServiceLocator.getInstance().getService(PermissoesFluxoService.class, null); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); UsuarioDTO usuarioDTO = (UsuarioDTO) (new UsuarioDao()).restore(usuario); usuarioDTO.setColGrupos(grupoService.getGruposByEmpregado(usuarioDTO.getIdEmpregado())); PermissoesFluxoDTO permissoesFluxoDTO = permissoesFluxoService.findByUsuarioAndFluxo(usuarioDTO, fluxoDTO); if(permissoesFluxoDTO == null || (permissoesFluxoDTO != null && !permissoesFluxoDTO.getExecutar().equalsIgnoreCase("S"))) { document.executeScript("$('#add_itens').remove();$('.btn-editar-item-despesa').remove();$('.btn-excluir-item-despesa').remove();"); } } /** * Restaura a justificativa informada quando a autoriza��o � negada. * * @param document * @param request * @param response * @throws ServiceException * @throws Exception */ public void restoreTitulo(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception { RequisicaoViagemService reqViagemService = (RequisicaoViagemService) ServiceLocator.getInstance().getService(RequisicaoViagemService.class, null); ParecerService parecerService = (ParecerService) ServiceLocator.getInstance().getService(ParecerService.class, null); JustificativaParecerService justificativaParecerService = (JustificativaParecerService) ServiceLocator.getInstance().getService(JustificativaParecerService.class, null); ParecerDTO parecerDTO = new ParecerDTO(); JustificativaParecerDTO justificativaParecerDTO = new JustificativaParecerDTO(); DespesaViagemDTO despesaViagemDTO = (DespesaViagemDTO) document.getBean(); RequisicaoViagemDTO requisicaoViagemDTO = reqViagemService.recuperaRequisicaoPelaSolicitacao(despesaViagemDTO.getIdSolicitacaoServico()); if(requisicaoViagemDTO != null && requisicaoViagemDTO.getIdAprovacao() != null){ parecerDTO.setIdParecer(requisicaoViagemDTO.getIdAprovacao()); parecerDTO = (ParecerDTO) parecerService.restore(parecerDTO); if(parecerDTO != null && parecerDTO.getAprovado().equalsIgnoreCase("N")){ document.getElementById("titulo").setValue(UtilI18N.internacionaliza(request, "requisicaoViagem.replanejamentoReservasViagem")); justificativaParecerDTO.setIdJustificativa(parecerDTO.getIdJustificativa()); justificativaParecerDTO = (JustificativaParecerDTO) justificativaParecerService.restore(justificativaParecerDTO); StringBuilder html = new StringBuilder(); html.append("<label><b>"+UtilI18N.internacionaliza(request, "citcorpore.comum.justificativa")+":</b> "); html.append(justificativaParecerDTO.getDescricaoJustificativa()); if(parecerDTO.getComplementoJustificativa() != null && !parecerDTO.getComplementoJustificativa().equalsIgnoreCase("")){ html.append(" ("+parecerDTO.getComplementoJustificativa()+")"); } html.append("</label>"); document.executeScript("$('#divNaoAprovada').show()"); document.getElementById("naoAprovada").setInnerHTML(html.toString()); }else{ document.getElementById("titulo").setValue(UtilI18N.internacionaliza(request, "requisicaoViagem.planejamentoReservasViagem")); document.executeScript("$('#divNaoAprovada').hide()"); } }else{ document.getElementById("titulo").setValue(UtilI18N.internacionaliza(request, "requisicaoViagem.planejamentoReservasViagem")); document.executeScript("$('#divNaoAprovada').hide()"); } } }