package gcom.gui.faturamento;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.FaturamentoAtivCronRota;
import gcom.faturamento.FaturamentoAtividade;
import gcom.faturamento.FaturamentoAtividadeCronograma;
import gcom.faturamento.FiltroFaturamentoAtivCronRota;
import gcom.faturamento.FiltroFaturamentoAtividadeCronograma;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Este caso de uso permite alterar ou excluir um comando de atividade de faturamento
*
* [UC0104] Manter Comando Atividade de Faturamento
*
* @author Roberta Costa
* @date 20/07/2006
*/
public class ExibirAtualizarComandoAtividadeFaturamentoDadosAction extends
GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("atualizarComandoAtividadeFaturamentoDados");
// Carrega a instancia da fachada
Fachada fachada = Fachada.getInstancia();
// Carrega o objeto sessao
HttpSession sessao = httpServletRequest.getSession(false);
// Inst�ncia do formul�rio que est� sendo utilizado
InserirComandoAtividadeFaturamentoActionForm inserirComandoAtividadeFaturamentoActionForm = (InserirComandoAtividadeFaturamentoActionForm) actionForm;
// Faturamento Cronograma Atividade selecionado
String faturamentoCronogramaAtividadeID = httpServletRequest
.getParameter("faturamentoAtividadeCronogramaID");
if (faturamentoCronogramaAtividadeID != null
&& !faturamentoCronogramaAtividadeID.equalsIgnoreCase("")) {
//Removendo a condicional referente ao campo de vencimento do grupo
//Tem como fun��o ocultar ou n�o o campo citado acima
sessao.removeAttribute("exibirCampoVencimentoGrupo");
// Gerando o objeto faturamentoCronogramaAtividade a partir do ID recebido
Collection colecaoFaturamentoCronogramaAtividade;
FaturamentoAtividadeCronograma faturamentoAtividadeCronograma;
FiltroFaturamentoAtividadeCronograma filtroFaturamentoAtividadeCronograma =
new FiltroFaturamentoAtividadeCronograma();
// Objetos que ser�o retornados pelo hibernate
filtroFaturamentoAtividadeCronograma
.adicionarCaminhoParaCarregamentoEntidade("faturamentoAtividade");
filtroFaturamentoAtividadeCronograma
.adicionarCaminhoParaCarregamentoEntidade("faturamentoGrupoCronogramaMensal.faturamentoGrupo");
filtroFaturamentoAtividadeCronograma
.adicionarParametro(new ParametroSimples(
FiltroFaturamentoAtividadeCronograma.ID,
faturamentoCronogramaAtividadeID));
colecaoFaturamentoCronogramaAtividade = fachada.pesquisar(
filtroFaturamentoAtividadeCronograma,
FaturamentoAtividadeCronograma.class.getName());
faturamentoAtividadeCronograma = (FaturamentoAtividadeCronograma) Util
.retonarObjetoDeColecao(colecaoFaturamentoCronogramaAtividade);
SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
// Dados do comando que ser�o disponibilizados na tela
// Grupo
inserirComandoAtividadeFaturamentoActionForm
.setGrupoFaturamentoID(faturamentoAtividadeCronograma
.getFaturamentoGrupoCronogramaMensal().getFaturamentoGrupo().getDescricao());
sessao.setAttribute("faturamentoGrupoId", faturamentoAtividadeCronograma
.getFaturamentoGrupoCronogramaMensal().getFaturamentoGrupo().getId());
// Ano e M�s de referencia
inserirComandoAtividadeFaturamentoActionForm.setReferenciaFaturamento(
Util.formatarAnoMesParaMesAno(faturamentoAtividadeCronograma
.getFaturamentoGrupoCronogramaMensal()
.getAnoMesReferencia().intValue()));
// Atividade
inserirComandoAtividadeFaturamentoActionForm
.setAtividadeFaturamentoID(faturamentoAtividadeCronograma
.getFaturamentoAtividade().getDescricao());
// Data de vencimento do grupo
/*
* A data de vencimento do grupo (formatar a partir do m�s
* seguinte ao m�s de refer�ncia do faturamento e do dia de
* vencimento do grupo (FTGR_NNDIAVENCIMENTO da tabela
* FATURAMENTO_GRUPO para FTGR_ID=Grupo selecionado)) caso a
* atividade de faturamento selecionada corresponda � atividade
* faturar grupo, permitindo que seja alterada; caso contr�rio,
* este campo deve ser ocultado
*/
if( FaturamentoAtividade.FATURAR_GRUPO.equals(faturamentoAtividadeCronograma
.getFaturamentoAtividade().getId())
&& faturamentoAtividadeCronograma.getFaturamentoGrupoCronogramaMensal()
.getFaturamentoGrupo().getDiaVencimento() != null ){
/*int diaVencimentoGrupo = faturamentoAtividadeCronograma.getFaturamentoGrupoCronogramaMensal()
.getFaturamentoGrupo().getDiaVencimento().intValue();
String mesVencimentoGrupo = String.valueOf(
faturamentoAtividadeCronograma.getFaturamentoGrupoCronogramaMensal()
.getFaturamentoGrupo().getAnoMesReferencia()
.intValue()).substring(4, 6);
String anoVencimentoGrupo = String.valueOf(
faturamentoAtividadeCronograma
.getFaturamentoGrupoCronogramaMensal().getFaturamentoGrupo()
.getAnoMesReferencia().intValue()).substring(0, 4);
Calendar dataVencimentoGrupo = new GregorianCalendar(
new Integer(anoVencimentoGrupo).intValue(),
new Integer(mesVencimentoGrupo).intValue(), diaVencimentoGrupo);
inserirComandoAtividadeFaturamentoActionForm
.setVencimentoGrupo(Util.formatarData(dataVencimentoGrupo.getTime()));
sessao.setAttribute(
"exibirCampoVencimentoGrupo", formatoData.format(dataVencimentoGrupo.getTime()));
*/
/** alterado por pedro alexandre dia 27/06/2007 */
//[UC0618] Obter Data de Vencimento do Grupo
// Date dataVencimentoGrupo = fachada.obterDataVencimentoGrupo(faturamentoAtividadeCronograma
// .getFaturamentoGrupoCronogramaMensal().getFaturamentoGrupo()
// .getId(), null);
FiltroFaturamentoAtivCronRota filtroFaturamentoAtivCronRota = new FiltroFaturamentoAtivCronRota();
filtroFaturamentoAtivCronRota.adicionarParametro(new ParametroSimples(
FiltroFaturamentoAtivCronRota.COMP_ID_FATURAMENTO_ATIVIDADE_CRONOGRAMA_ID, faturamentoAtividadeCronograma.getId()));
Collection colecaoFaturamentoAtivCronRota = fachada.pesquisar(filtroFaturamentoAtivCronRota, FaturamentoAtivCronRota.class.getName());
FaturamentoAtivCronRota faturamentoAtivCronRota = (FaturamentoAtivCronRota) Util.retonarObjetoDeColecao(colecaoFaturamentoAtivCronRota);
Date dataVencimentoGrupo = faturamentoAtivCronRota.getDataContaVencimento();
inserirComandoAtividadeFaturamentoActionForm.setVencimentoGrupo(Util.formatarData(dataVencimentoGrupo));
sessao.setAttribute("exibirCampoVencimentoGrupo", formatoData.format(dataVencimentoGrupo));
/** fim altera��o */
}
/*
* N�mero m�nimo de dias (PARM_NNMINIMODIASEMISSAOVENCIMENTO da
* tabela SISTEMA_PARAMETROS)
*/
SistemaParametro sistemaParametro = fachada
.pesquisarParametrosDoSistema();
if (sessao.getAttribute("dataCorrente") == null
&& sistemaParametro != null) {
if (sistemaParametro.getNumeroMinimoDiasEmissaoVencimento() != null) {
Calendar dataCorrente = new GregorianCalendar();
dataCorrente.add(Calendar.DATE, sistemaParametro
.getNumeroMinimoDiasEmissaoVencimento().intValue());
sessao.setAttribute("dataCorrente", formatoData
.format(dataCorrente.getTime()));
}
}
/*
* Lista das rotas do comando de atividade de faturamento
*/
FiltroFaturamentoAtivCronRota filtroFaturamentoAtividadeCronogramaRota =
new FiltroFaturamentoAtivCronRota();
filtroFaturamentoAtividadeCronogramaRota.setCampoOrderBy(
FiltroFaturamentoAtivCronRota.FATURAMENTO_GRUPO_ID,
FiltroFaturamentoAtivCronRota.GERENCIA_REGIONAL_NOME_ABREVIADO,
FiltroFaturamentoAtivCronRota.LOCALIDADE_DESCRICAO,
FiltroFaturamentoAtivCronRota.SETOR_COMERCIAL_CODIGO,
FiltroFaturamentoAtivCronRota.COMP_ID_ROTA_ID);
filtroFaturamentoAtividadeCronogramaRota.adicionarCaminhoParaCarregamentoEntidade(FiltroFaturamentoAtivCronRota.UNIDADE_NEGOCIO);
filtroFaturamentoAtividadeCronogramaRota.setConsultaSemLimites(true);
// Objetos que ser�o retornados pelo hibernate.
filtroFaturamentoAtividadeCronogramaRota
.adicionarCaminhoParaCarregamentoEntidade("faturamentoAtividadeCronograma.faturamentoGrupoCronogramaMensal.faturamentoGrupo");
filtroFaturamentoAtividadeCronogramaRota
.adicionarCaminhoParaCarregamentoEntidade("rota.setorComercial.localidade.gerenciaRegional");
filtroFaturamentoAtividadeCronogramaRota
.adicionarParametro(new ParametroSimples(
FiltroFaturamentoAtivCronRota.COMP_ID_FATURAMENTO_ATIVIDADE_CRONOGRAMA_ID,
faturamentoAtividadeCronograma.getId()));
filtroFaturamentoAtividadeCronogramaRota
.adicionarParametro(new ParametroSimples(
FiltroFaturamentoAtivCronRota.COMP_ID_FATURAMENTO_ATIVIDADE_CRONOGRAMA_FATURAMENTO_GRUPO_CRONOGRAMA_MENSAL_ANO_MES_REFERENCIA,
faturamentoAtividadeCronograma
.getFaturamentoGrupoCronogramaMensal()
.getAnoMesReferencia()));
Collection colecaoFaturamentoAtividadeCronogramaRota = fachada
.pesquisar(filtroFaturamentoAtividadeCronogramaRota,
FaturamentoAtivCronRota.class.getName());
// [FS0001] - Verificar exist�ncia de dados
if (colecaoFaturamentoAtividadeCronogramaRota == null
|| colecaoFaturamentoAtividadeCronogramaRota.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhum_registro_tabela", null,
"FATURAMENTO_ATIV_CRON_ROTA");
} else {
sessao.setAttribute("faturamentoAtividadeCronograma",
faturamentoAtividadeCronograma);
sessao.setAttribute(
"colecaoFaturamentoAtividadeCronogramaRota",
colecaoFaturamentoAtividadeCronogramaRota);
}
}
return retorno;
}
}