package gcom.gui.faturamento;
import gcom.fachada.Fachada;
import gcom.faturamento.FaturamentoAtividadeCronograma;
import gcom.faturamento.FaturamentoGrupo;
import gcom.faturamento.FaturamentoGrupoCronogramaMensal;
import gcom.faturamento.FiltroFaturamentoGrupo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
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;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class AtualizarFaturamentoCronogramaAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
FaturamentoActionForm faturamentoActionForm = (FaturamentoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
//Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
//Variavel para testar se o campo naum obrigatorio esta vazio
// String testeFaturamentoNaoObrigatorio = "0";
// String idFaturamentoGrupoCronograma = (String) sessao
// .getAttribute("idGrupoFaturamento");
//Estava sendo usado pelo trecho comentado por Anderson Italo
//data:20/04/2010
//SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO);
String mesAno = faturamentoActionForm.getMesAno();
if(mesAno == null){
mesAno = (String)sessao.getAttribute("mesAno");
}
// Collection faturamentoAtividades = (Collection) sessao
// .getAttribute("faturamentoAtividades");
// Collection faturamentoAtividadeCronogramasVelhas = (Collection) sessao
// .getAttribute("faturamentoAtividadeCronogramas");
Collection colecaoFaturamentoAtividadeCronograma = (Collection) sessao
.getAttribute("colecaoFaturamentoAtividadeCronograma");
Collection faturamentoAtividadeCronogramas = new ArrayList();
//Colecao para guadar todas as atividades inclusive as que n�o v�o ser inseridas ou alteradas
Collection colecaoTodasAtividades = new ArrayList();
FaturamentoAtividadeCronograma faturamentoAtividadeCronograma = null;
FaturamentoGrupoCronogramaMensal faturamentoGrupoCronogramaMensal = (FaturamentoGrupoCronogramaMensal)sessao.getAttribute("faturamentoGrupoCronogramaMensalSessao");
//Instancia objeto FaturamenatoGrupo
FiltroFaturamentoGrupo filtroFaturamentoGrupoObjeto = new FiltroFaturamentoGrupo();
filtroFaturamentoGrupoObjeto.adicionarParametro(new ParametroSimples(FiltroFaturamentoGrupo.ID, faturamentoGrupoCronogramaMensal
.getFaturamentoGrupo().getId()));
Collection colecaoFaturamentoGrupoObjeto = fachada.pesquisar(filtroFaturamentoGrupoObjeto, FaturamentoGrupo.class.getName());
FaturamentoGrupo faturamentoGrupo = (FaturamentoGrupo) Util.retonarObjetoDeColecao(colecaoFaturamentoGrupoObjeto);
// faturamentoGrupo.setId(faturamentoGrupoCronogramaMensal
// .getFaturamentoGrupo().getId());
//Concatena ano mes para insercao
String mes = mesAno.substring(0, 2);
String ano = mesAno.substring(3, 7);
mesAno = ano + "" + mes;
Iterator iteratorFaturamentoAtividadeCronogramas = colecaoFaturamentoAtividadeCronograma.iterator();
while (iteratorFaturamentoAtividadeCronogramas.hasNext()) {
FaturamentoAtividadeAtualizarHelp fatAtividadeAtualizarHelp = (FaturamentoAtividadeAtualizarHelp)
iteratorFaturamentoAtividadeCronogramas.next();
faturamentoAtividadeCronograma = fatAtividadeAtualizarHelp.
getFaturamentoAtividadeCronograma();
String dataPrevista = (String) httpServletRequest.getParameter("n"
+ fatAtividadeAtualizarHelp.getIdFaturamentoAtividade().toString());
if ( dataPrevista != null && !dataPrevista.equals("") && Util.validarDiaMesAno(dataPrevista) ) {
throw new ActionServletException("atencao.anomesreferencia.invalida", null , ""+dataPrevista);
}
//String dataPrevista = fatAtividadeAtualizarHelp.getDataPrevista();
SimpleDateFormat data = new SimpleDateFormat("dd/MM/yyyy");
try {
if (dataPrevista != null && !dataPrevista.trim().equalsIgnoreCase("")) {
faturamentoAtividadeCronograma.setDataPrevista(data
.parse(dataPrevista));
faturamentoAtividadeCronogramas
.add(faturamentoAtividadeCronograma);
colecaoTodasAtividades.add(faturamentoAtividadeCronograma);
} else if (faturamentoAtividadeCronograma
.getFaturamentoAtividade()
.getIndicadorObrigatoriedadeAtividade().intValue() == 1 &&
(dataPrevista == null || dataPrevista.trim().equalsIgnoreCase(""))) {
throw new ActionServletException(
"atencao.campos_obrigatorios_cronograma_nao_preenchidos");
}else if (faturamentoAtividadeCronograma
.getFaturamentoAtividade()
.getIndicadorObrigatoriedadeAtividade().intValue() == 1) {
// testeFaturamentoNaoObrigatorio = "1";
colecaoTodasAtividades.add(faturamentoAtividadeCronograma);
}else{
faturamentoAtividadeCronograma.setDataPrevista(null);
colecaoTodasAtividades.add(faturamentoAtividadeCronograma);
faturamentoAtividadeCronogramas.add(faturamentoAtividadeCronograma);
}
//se foi marcado o check de comandar a atividade
//sera atribuido o valor de comando
//este valor ser� igual ao da data prevista
String comandar = (String) httpServletRequest.getParameter("c"
+ faturamentoAtividadeCronograma.getId().toString());
if(comandar != null && !comandar.trim().equals("")
&& dataPrevista != null && !dataPrevista.trim().equals("")){
/* comentado por: Anderson Italo
* analista que solicitou: Aryede Lins
* motivo: Adequar-se ao que estava descrito no UC
* 4.2.1. Atualiza a data e hora do comando (FTAC_TMCOMANDO=CURRENT TIMESTAMP)
* data: 20/04/2010*/
/*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));
faturamentoAtividadeCronograma.setComando(Util.converteStringParaDate(formatoData.format(dataVencimento)));
*/
faturamentoAtividadeCronograma.setComando(new Date());
}else{
faturamentoAtividadeCronograma.setComando(null);
}
} catch (ParseException ex) {
throw new ActionServletException("errors.date", null,
"data prevista");
}
}
//Valida��o das seguencia das datas no cronograma e predecessora
fachada.validarFaturamentoCronogramaAtividadeMaiorQueMesAnoCronograma((new Integer(mesAno)).intValue(), colecaoTodasAtividades);
fachada.validarFaturamentoCronograma(colecaoTodasAtividades);
/*if (faturamentoAtividadeCronogramas.size() < 5
|| (faturamentoAtividadeCronogramas.size() == 5 && testeFaturamentoNaoObrigatorio
.trim().equalsIgnoreCase("0"))) {
throw new ActionServletException(
"atencao.campos_obrigatorios_cronograma_nao_preenchidos");
}*/
fachada.atualizarFaturamentoGrupoCronogramaMensal(
faturamentoGrupoCronogramaMensal,
faturamentoAtividadeCronogramas, colecaoTodasAtividades,usuarioLogado);
FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo();
filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples(FiltroFaturamentoGrupo.ID, faturamentoGrupo.getId()));
Collection colecaoFaturamentoGrupo = fachada.pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName());
FaturamentoGrupo faturamentoGrupoDescricao = new FaturamentoGrupo();
if(!colecaoFaturamentoGrupo.isEmpty()){
faturamentoGrupoDescricao = (FaturamentoGrupo)colecaoFaturamentoGrupo.iterator().next();
}
sessao.removeAttribute("faturamentoAtividades");
sessao.removeAttribute("idGrupoFaturamento");
montarPaginaSucesso(httpServletRequest,
"Cronograma de Faturamento do grupo "+ faturamentoGrupoDescricao.getId()
+" referente ao m�s/ano: " + faturamentoGrupoCronogramaMensal.getMesAno() +" atualizado com sucesso.",
"Realizar outra Manuten��o de Cronograma de Faturamento",
"exibirFiltrarFaturamentoCronogramaAction.do");
return retorno;
}
}