package gcom.gui.faturamento;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.FaturamentoAtividade;
import gcom.faturamento.FaturamentoGrupo;
import gcom.faturamento.FiltroFaturamentoAtividade;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
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 java.util.Iterator;
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;
public class ExibirInserirComandoAtividadeFaturamentoAction extends GcomAction {
/**
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirInserirComandoAtividadeFaturamento");
//Carrega a instancia da fachada
Fachada fachada = Fachada.getInstancia();
//Carrega o objeto sessao
HttpSession sessao = httpServletRequest.getSession(false);
// Remove a cole��o de rotas n�o habilitadas
sessao.removeAttribute("colecaoRotasNaoHabilitadas");
//Inst�ncia do formul�rio que est� sendo utilizado
InserirComandoAtividadeFaturamentoActionForm inserirComandoAtividadeFaturamentoActionForm = (InserirComandoAtividadeFaturamentoActionForm) actionForm;
Collection colecaoFaturamentoGrupo;
Collection colecaoAtividadeFaturamento;
// Grupo de faturamento (Carregar cole��o)
if (sessao.getAttribute("colecaoGrupoFaturamento") == null) {
colecaoFaturamentoGrupo = fachada.pesquisarFaturamentoGrupoComCronogramaMensalParaMesCorrente();
sessao.setAttribute("colecaoGrupoFaturamento", colecaoFaturamentoGrupo);
}
SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
/*
* 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()));
}
}
// Grupo selecionado
String grupoFaturamentoJSP = inserirComandoAtividadeFaturamentoActionForm
.getGrupoFaturamentoID();
// Atividade selecionado
String atividadeFaturamentoJSP = inserirComandoAtividadeFaturamentoActionForm
.getAtividadeFaturamentoID();
if (grupoFaturamentoJSP != null
&& !grupoFaturamentoJSP.equalsIgnoreCase("")
&& !grupoFaturamentoJSP.equalsIgnoreCase(String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) {
colecaoFaturamentoGrupo = (Collection) sessao
.getAttribute("colecaoGrupoFaturamento");
FaturamentoGrupo faturamentoGrupo = obterFaturamentoGrupoSelecionado(
grupoFaturamentoJSP, colecaoFaturamentoGrupo);
// [FS0003] - Verificar exist�ncia do cronograma para o grupo
//fachada.verificarExistenciaCronogramaGrupo(faturamentoGrupo);
// Atividade de faturamento (Carregar cole��o)
// [SB0001] - Selecionar atividade de faturamento
colecaoAtividadeFaturamento = fachada
.selecionarAtividadeFaturamentoQuePodeSerComandada(faturamentoGrupo);
httpServletRequest.setAttribute("colecaoAtividadeFaturamento",
colecaoAtividadeFaturamento);
// O sistema apresenta na tela:
//Refer�ncia Faturamento
/*
* A refer�ncia do faturamento (FTGR_AMREFERENCIA da tabela
* FATURAMENTO_GRUPO para FTGR_ID=Grupo selecionado)
*/
if (faturamentoGrupo.getAnoMesReferencia() != null) {
inserirComandoAtividadeFaturamentoActionForm
.setReferenciaFaturamento(Util.formatarAnoMesParaMesAno(faturamentoGrupo.getAnoMesReferencia()
.intValue()));
String pesquisarAtividade = httpServletRequest.getParameter("pesquisa");
//Data de vencimento do grupo
/*
* 3.2. 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 (atividadeFaturamentoJSP != null
&& !atividadeFaturamentoJSP.equalsIgnoreCase("")
&& pesquisarAtividade != null && !pesquisarAtividade.equalsIgnoreCase("")) {
/*
* Alterado por Raphael Rossiter - Analista: Aryed Lins
* A data do vencimento ser� exibida caso a atividade tamb�m seja GERAR E ENVIAR ARQU. LEITURA
* (Pr�-Faturamento)
*/
if ((atividadeFaturamentoJSP.equalsIgnoreCase(String.valueOf(FaturamentoAtividade.FATURAR_GRUPO)) ||
atividadeFaturamentoJSP.equalsIgnoreCase(String.valueOf(FaturamentoAtividade.GERAR_ARQUIVO_LEITURA)))
&& faturamentoGrupo.getDiaVencimento() != null) {
/** alterado por pedro alexandre dia 26/06/2007 */
/*int diaVencimento = faturamentoGrupo.getDiaVencimento()
.intValue();
String mesVencimento = String.valueOf(
faturamentoGrupo.getAnoMesReferencia()
.intValue()).substring(4, 6);
String anoVencimento = String.valueOf(
faturamentoGrupo.getAnoMesReferencia()
.intValue()).substring(0, 4);
* Colocado por Raphael Rossiter em 05/05/2007
* Obtendo a data de vencimento do grupo
Date dataVencimento = fachada.obterDataVencimentoFaturamentoGrupo(diaVencimento,
new Integer(mesVencimento), new Integer(anoVencimento));*/
//[UC0618] Obter Data de Vencimento do Grupo
Date dataVencimento = fachada.obterDataVencimentoGrupo(faturamentoGrupo.getId(), null);
/** fim altera��o */
inserirComandoAtividadeFaturamentoActionForm
.setVencimentoGrupo(formatoData.format(dataVencimento));
sessao.setAttribute("exibirCampoVencimentoGrupo", formatoData
.format(dataVencimento));
//Colocar o foco no campo vencimento do grupo
httpServletRequest.setAttribute("nomeCampo", "vencimentoGrupo");
}
else{
sessao.removeAttribute("exibirCampoVencimentoGrupo");
//Colocar o foco no bot�o exibir rotas n�o habilitadas
httpServletRequest.setAttribute("nomeCampo", "popupRotasNaoHabilitadas");
}
//Obter objeto FaturamentoAtividade a partir do ID
// -------------------
FiltroFaturamentoAtividade filtroFaturamentoAtividade = new FiltroFaturamentoAtividade();
filtroFaturamentoAtividade.setConsultaSemLimites(true);
filtroFaturamentoAtividade
.adicionarParametro(new ParametroSimples(
FiltroFaturamentoAtividade.ID,
atividadeFaturamentoJSP));
filtroFaturamentoAtividade
.adicionarParametro(new ParametroSimples(
FiltroFaturamentoAtividade.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoFaturamentoAtividade = fachada.pesquisar(
filtroFaturamentoAtividade,
FaturamentoAtividade.class.getName());
FaturamentoAtividade faturamentoAtividade = (FaturamentoAtividade) Util
.retonarObjetoDeColecao(colecaoFaturamentoAtividade);
//--------------------------------------------------------------------
// [FS0008] - Verificar exist�ncia da atividade no
// cronograma do grupo do m�s corrente
//fachada.verificarExistenciaCronogramaAtividadeGrupo(
// faturamentoAtividade, faturamentoGrupo);
// Lista as rotas "habilitadas" do grupo
// [FS0006] - Verificar exist�ncia de rotas para o grupo
Collection colecaoRotasGrupo = fachada
.verificarExistenciaRotaGrupo(faturamentoGrupo);
if (faturamentoAtividade != null) {
//[SB0002] - Verificar Situa��o da Atividade para a Rota
// true = Rotas habilitadas
Collection colecaoRotasSituacao = fachada
.verificarSituacaoAtividadeRota(colecaoRotasGrupo,
faturamentoAtividade, faturamentoGrupo,
true);
//[FS0007] - Verificar sele��o de pelo menos uma rota
// habilitada
if (colecaoRotasSituacao == null
|| colecaoRotasSituacao.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhuma.rota_habilitada_grupo");
}
// Passa a colecao de rotas habilitadas pelo request
httpServletRequest.setAttribute("colecaoRotasHabilitadas",
colecaoRotasSituacao);
}else {
// Passa a colecao de rotas habilitadas pelo request
httpServletRequest.setAttribute("colecaoRotasHabilitadas",
null);
}
}
else{
inserirComandoAtividadeFaturamentoActionForm.setVencimentoGrupo("");
inserirComandoAtividadeFaturamentoActionForm.setAtividadeFaturamentoID(
String.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO));
//Colocar o foco no campo de atividades
httpServletRequest.setAttribute("nomeCampo", "atividadeFaturamentoID");
}
}
} else {
// Limpa o restante dos campos do formul�rio.
inserirComandoAtividadeFaturamentoActionForm
.setReferenciaFaturamento("");
inserirComandoAtividadeFaturamentoActionForm.setVencimentoGrupo("");
}
return retorno;
}
/**
* Retorna o objeto FaturamentoGrupo selecionado
*
* @param id
* @param colecao
* @return
*/
private FaturamentoGrupo obterFaturamentoGrupoSelecionado(String id,
Collection colecao) {
FaturamentoGrupo retorno = null;
Iterator colecaoIterator = colecao.iterator();
while (colecaoIterator.hasNext()) {
retorno = (FaturamentoGrupo) colecaoIterator.next();
if (retorno.getId().equals(new Integer(id))) {
break;
}
}
return retorno;
}
/**
* Retorna o objeto FaturamentoAtividade selecionado
*
* @param id
* @param colecao
* @return
*/
/*private FaturamentoAtividade obterFaturamentoAtividadeSelecionado(
String id, Collection colecao) {
FaturamentoAtividade retorno = null;
Iterator colecaoIterator = colecao.iterator();
while (colecaoIterator.hasNext()) {
retorno = (FaturamentoAtividade) colecaoIterator.next();
if (retorno.getId().equals(new Integer(id))) {
break;
}
}
return retorno;
}*/
}