package gcom.gui.cobranca;
import gcom.cobranca.CobrancaAcao;
import gcom.cobranca.CobrancaAtividade;
import gcom.cobranca.CobrancaCriterio;
import gcom.cobranca.FiltroCobrancaAcao;
import gcom.cobranca.FiltroCobrancaAtividade;
import gcom.cobranca.FiltroCobrancaCriterio;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Calendar;
import java.util.Collection;
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;
/**
* [UC0243] Inserir Comando de A��o de Conbran�a - Tipo de Comando Cronograma
* @author Rafael Santos
* @since 24/01/2006
*/
public class ExibirInserirComandoAcaoCobrancaEventualCriterioComandoAction 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("exibirInserirComandoAcaoCobrancaEventualCriterioComando");
InserirComandoAcaoCobrancaEventualCriterioComandoActionForm inserirComandoAcaoCobrancaEventualCriterioComandoActionForm = (InserirComandoAcaoCobrancaEventualCriterioComandoActionForm) actionForm;
//Mudar isso quando implementar a parte de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
String idCobrancaAtividade = httpServletRequest.getParameter("idCobrancaAtividade");
String idCobrancaAcao = httpServletRequest.getParameter("idCobrancaAcao");
String anoMesContaInicial = inserirComandoAcaoCobrancaEventualCriterioComandoActionForm.getPeriodoInicialConta();
String anoMesContaFinal = inserirComandoAcaoCobrancaEventualCriterioComandoActionForm.getPeriodoFinalConta();
String anoMesVencimentoInicial = inserirComandoAcaoCobrancaEventualCriterioComandoActionForm.getPeriodoVencimentoContaInicial();
String anoMesVencimentoFinal = inserirComandoAcaoCobrancaEventualCriterioComandoActionForm.getPeriodoVencimentoContaFinal();
String idComandoSelecionado = httpServletRequest.getParameter("idComandoSelecionado");
if(idComandoSelecionado != null){
sessao.setAttribute("idCobrancaCriterio",idComandoSelecionado);
}
//[FS0012] - Verificar refer�ncia final menor que refer�ncia inicial
if( (anoMesContaInicial != null && !anoMesContaInicial.equals("")) && (anoMesContaFinal != null && !anoMesContaFinal.equals("")) ){
String anoInicial = anoMesContaInicial.substring(3,7);
String mesInicial = anoMesContaInicial.substring(0,2);
String anoFinal = anoMesContaFinal.substring(3,7);
String mesFinal = anoMesContaFinal.substring(0,2);
boolean valida = Util.validarAnoMes(anoMesContaInicial);
if(valida){
throw new ActionServletException(
"errors.invalid",null,"Per�odo Inicial da Conta");
}
valida = Util.validarAnoMes(anoMesContaFinal);
if(valida){
throw new ActionServletException(
"errors.invalid",null,"Per�odo Final da Conta");
}
Calendar periodoInicial = new GregorianCalendar();
periodoInicial.set(Calendar.DATE,1);
periodoInicial.set(Calendar.MONTH,(new Integer(mesInicial).intValue()+1));
periodoInicial.set(Calendar.YEAR,new Integer(anoInicial).intValue());
Calendar periodoFinal = new GregorianCalendar();
periodoFinal.set(Calendar.DATE,1);
periodoFinal.set(Calendar.MONTH,(new Integer(mesFinal).intValue()+1));
periodoFinal.set(Calendar.YEAR,new Integer(anoFinal).intValue());
if(periodoInicial.compareTo(periodoFinal) > 0){
throw new ActionServletException(//Refer�ncia Final do Per�odo � anterior � Refer�ncia Inicial do Per�odo
"atencao.referencia_inicial.maior.referencia_final");
}
}
//[FS0014] - Verificar data final menos que data inicial
if( (anoMesVencimentoInicial != null && !anoMesVencimentoInicial.equals("")) && (anoMesVencimentoFinal != null && !anoMesVencimentoFinal.equals("")) ){
String anoInicial = anoMesVencimentoInicial.substring(6,10);
String mesInicial = anoMesVencimentoInicial.substring(3,5);
String diaInicial = anoMesVencimentoInicial.substring(0,2);
String anoFinal = anoMesVencimentoFinal.substring(6,10);
String mesFinal = anoMesVencimentoFinal.substring(3,5);
String diaFinal = anoMesVencimentoInicial.substring(0,2);
boolean valida = Util.validarDiaMesAno(anoMesVencimentoInicial);
if(valida){
throw new ActionServletException(
"errors.invalid",null,"Per�odo Inicial do Vencimento da Conta");
}
valida = Util.validarDiaMesAno(anoMesVencimentoFinal);
if(valida){
throw new ActionServletException(
"errors.invalid",null,"Per�odo Final do Vencimento da Conta");
}
Calendar periodoInicial = new GregorianCalendar();
periodoInicial.set(Calendar.DATE,new Integer(diaInicial).intValue());
periodoInicial.set(Calendar.MONTH,(new Integer(mesInicial).intValue()+1));
periodoInicial.set(Calendar.YEAR,new Integer(anoInicial).intValue());
Calendar periodoFinal = new GregorianCalendar();
periodoFinal.set(Calendar.DATE,new Integer(diaFinal).intValue());
periodoFinal.set(Calendar.MONTH,(new Integer(mesFinal).intValue()+1));
periodoFinal.set(Calendar.YEAR,new Integer(anoFinal).intValue());
if(periodoInicial.compareTo(periodoFinal) > 0){
throw new ActionServletException(//Data Final do Per�odo � anterior � Data Inicial do Per�odo
"atencao.data_inicial.maior.data_final");
}
}
//[SB0003] - Selecionar Cret�rio do Comando
//pesquisar cobranca atividade
if(idCobrancaAtividade != null && !idCobrancaAtividade.equals("")){
FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade();
filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.ID,idCobrancaAtividade));
Collection colecaoCobrancaAtividade = fachada.pesquisar(filtroCobrancaAtividade,CobrancaAtividade.class.getName());
if(colecaoCobrancaAtividade != null && !colecaoCobrancaAtividade.isEmpty()){
CobrancaAtividade cobrancaAtividade = (CobrancaAtividade)colecaoCobrancaAtividade.iterator().next();
if(cobrancaAtividade.getIndicadorExecucao().intValue() == 1){
httpServletRequest.setAttribute("habilitarExecutar","true");
}else{
httpServletRequest.setAttribute("habilitarExecutar","false");
}
}
}
//pesquisar cobranca a��o
if(idCobrancaAcao != null && !idCobrancaAcao.equals("")){
FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao();
filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID,idCobrancaAcao));
Collection colecaoCobrancaAcao = fachada.pesquisar(filtroCobrancaAcao,CobrancaAcao.class.getName());
if(colecaoCobrancaAcao != null && !colecaoCobrancaAcao.isEmpty()){
CobrancaAcao cobrancaAcao = (CobrancaAcao)colecaoCobrancaAcao.iterator().next();
inserirComandoAcaoCobrancaEventualCriterioComandoActionForm.setDescricaoAcaoCobranca(cobrancaAcao.getDescricaoCobrancaAcao());
}
FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio();
//filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID_COBRANCA_ACAO,idCobrancaAcao));
Collection colecaoCriterioCobranca = null;
colecaoCriterioCobranca = fachada.pesquisar(filtroCobrancaCriterio,CobrancaCriterio.class.getName());
if(colecaoCriterioCobranca == null || colecaoCriterioCobranca.isEmpty()){
throw new ActionServletException("atencao.pesquisa.nenhum_registro_tabela",
null, "Tabela Cobran�a Crit�rio");
}
sessao.setAttribute("colecaoCriterioCobranca",colecaoCriterioCobranca);
}
//carregar criterios de cobranca
if(sessao.getAttribute("inserirComandoAcaoCobrancaEventualCriterioComandoActionForm") == null)
sessao.setAttribute("inserirComandoAcaoCobrancaEventualCriterioComandoActionForm",
inserirComandoAcaoCobrancaEventualCriterioComandoActionForm);
return retorno;
}
}