package gcom.gui.cobranca.spcserasa;
import gcom.cobranca.Negativador;
import gcom.cobranca.NegativadorContrato;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.interceptor.RegistradorOperacao;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoEfetuada;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
import gcom.spcserasa.FiltroNegativadorContrato;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
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;
/**
* Processamento para inserir o contrato do negativador
*
*
* @author Yara Taciane de Souza
* @date 18/12/2007
*/
public class InserirContratoNegativadorAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
InserirContratoNegativadorActionForm inserirContratoNegativadorActionForm = (InserirContratoNegativadorActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
// Usuario logado no sistema
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// ------------ REGISTRAR TRANSA��O ----------------
RegistradorOperacao registradorOperacao = new RegistradorOperacao(
Operacao.OPERACAO_INSERIR_CONTRATO_NEGATIVADOR,
new UsuarioAcaoUsuarioHelper(usuario,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_INSERIR_CONTRATO_NEGATIVADOR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
// ------------ REGISTRAR TRANSA��O ----------------
Fachada fachada = Fachada.getInstancia();
Integer idNegativadorContrato = null;
Collection collNegativadorContrato = null;
// cria o objeto negativador contrato para ser inserido
NegativadorContrato negativadorContrato = new NegativadorContrato();
if (inserirContratoNegativadorActionForm.getIdNegativador() != null && !inserirContratoNegativadorActionForm.getIdNegativador().equals("")) {
Negativador negativador = new Negativador();
negativador.setId(new Integer(inserirContratoNegativadorActionForm.getIdNegativador()));
negativadorContrato.setNegativador(negativador);
} else {
throw new ActionServletException("atencao.required", null,"Negativador");
}
String idNegativador = (String)inserirContratoNegativadorActionForm.getIdNegativador();
if (inserirContratoNegativadorActionForm.getDescricaoEmailEnvioArquivo() != null
&& !inserirContratoNegativadorActionForm.getDescricaoEmailEnvioArquivo().equals("")) {
String descricaoEmailEnvioArquivo = inserirContratoNegativadorActionForm.getDescricaoEmailEnvioArquivo();
negativadorContrato.setDescricaoEmailEnvioArquivo(descricaoEmailEnvioArquivo);
}
if (inserirContratoNegativadorActionForm.getCodigoConvenio() != null
&& !inserirContratoNegativadorActionForm.getCodigoConvenio().equals("")) {
String codigoConvenio = inserirContratoNegativadorActionForm.getCodigoConvenio();
negativadorContrato.setCodigoConvenio(codigoConvenio);
}
if (inserirContratoNegativadorActionForm.getValorContrato() != null
&& !inserirContratoNegativadorActionForm.getValorContrato()
.equals("")) {
BigDecimal valorContrato = new BigDecimal(
inserirContratoNegativadorActionForm.getValorContrato().replace(".", "").replace(",", "."));
negativadorContrato.setValorContrato(valorContrato);
} else {
throw new ActionServletException("atencao.required", null,
"Valor do Contrato");
}
if (inserirContratoNegativadorActionForm.getValorTarifaInclusao() != null
&& !inserirContratoNegativadorActionForm.getValorTarifaInclusao()
.equals("")) {
BigDecimal valorTarifaInclusao = new BigDecimal(
inserirContratoNegativadorActionForm.getValorTarifaInclusao().replace(".", "").replace(",", "."));
negativadorContrato.setValorTarifaInclusao(valorTarifaInclusao);
} else {
throw new ActionServletException("atencao.required", null,
"Valor do Tarifa para Inclus�o");
}
if (inserirContratoNegativadorActionForm.getNumeroPrazoInclusao() != null
&& !inserirContratoNegativadorActionForm.getNumeroPrazoInclusao()
.equals("")) {
short numeroPrazoInclusao = Short.parseShort(inserirContratoNegativadorActionForm.getNumeroPrazoInclusao());
negativadorContrato.setNumeroPrazoInclusao(numeroPrazoInclusao);
} else {
throw new ActionServletException("atencao.required", null,
"Prazo Para Negativa��o");
}
// Data Fim anterior a Data In�cio
Date dataContratoInicio = null;
if (inserirContratoNegativadorActionForm.getDataContratoInicio() != null
&& !inserirContratoNegativadorActionForm.getDataContratoInicio().equals("")) {
String dataContrato = inserirContratoNegativadorActionForm.getDataContratoInicio();
if (Util.validarDiaMesAno(dataContrato)) {
throw new ActionServletException(
"atencao.data.inicio.Contrato.invalida");
}
dataContratoInicio = Util.converteStringParaDate(dataContrato);
Date dataAtualSemHora = Util.formatarDataSemHora(new Date());
if(Util.compararData(dataContratoInicio, dataAtualSemHora) == - 1){
String dataAtual = Util.formatarData(new Date());
throw new ActionServletException(
"atencao.data.inicio.nao.superior.data.corrente", null,
dataAtual);
}
negativadorContrato.setDataContratoInicio(dataContratoInicio);
} else {
throw new ActionServletException("atencao.required", null,
"Data de In�cio do Contrato");
}
Date dataContratoFim = null;
if (inserirContratoNegativadorActionForm.getDataContratoFim() != null
&& !inserirContratoNegativadorActionForm.getDataContratoFim().equals("")) {
String dataContrato = inserirContratoNegativadorActionForm.getDataContratoFim();
if (Util.validarDiaMesAno(dataContrato)) {
throw new ActionServletException(
"atencao.data.fim.Contrato.invalida");
}
dataContratoFim = Util.converteStringParaDate(dataContrato);
//Se data inicio maior que data fim
if(Util.compararData(dataContratoInicio, dataContratoFim) == 1){
String dataInicio = Util.formatarData(dataContratoInicio);
String dataFim = Util.formatarData(dataContratoFim);
throw new ActionServletException(
"atencao.data_inicial_maior_data_final",dataInicio,dataFim);
}
negativadorContrato.setDataContratoFim(dataContratoFim);
} else {
throw new ActionServletException("atencao.required", null,
"Data do Fim do Contrato");
}
FiltroNegativadorContrato filtroNegativadorContrato = new FiltroNegativadorContrato();
//Verificar exist�ncia do n�mero do contrato
if (inserirContratoNegativadorActionForm.getNumeroContrato() != null
&& !inserirContratoNegativadorActionForm.getNumeroContrato().equals("")) {
String numeroContrato = inserirContratoNegativadorActionForm.getNumeroContrato();
filtroNegativadorContrato.limparListaParametros();
filtroNegativadorContrato.adicionarParametro(new ParametroSimples(FiltroNegativadorContrato.NEGATIVADOR_ID, idNegativador));
filtroNegativadorContrato.adicionarParametro(new ParametroSimples(FiltroNegativadorContrato.NUMERO_CONTRATO, numeroContrato));
collNegativadorContrato = null;
collNegativadorContrato = fachada.pesquisar(filtroNegativadorContrato,
NegativadorContrato.class.getName());
if(collNegativadorContrato != null && !collNegativadorContrato.isEmpty()){
throw new ActionServletException("atencao.negativador_associado_numero_contrato");
}
negativadorContrato.setNumeroContrato(numeroContrato);
} else {
throw new ActionServletException("atencao.required", null,
"numero do contrato");
}
negativadorContrato.setIndicadorControleNsaRetorno(ConstantesSistema.SIM);
// Verificar exist�ncia de contrato vigente para o negativador
filtroNegativadorContrato.limparListaParametros();
filtroNegativadorContrato.adicionarParametro(new ParametroSimples(FiltroNegativadorContrato.NEGATIVADOR_ID,idNegativador));
collNegativadorContrato = fachada.pesquisar(filtroNegativadorContrato, NegativadorContrato.class.getName());
NegativadorContrato negativadorContratoBanco = (NegativadorContrato) Util.retonarObjetoDeColecao(collNegativadorContrato);
if(negativadorContratoBanco != null){
Date dataEncerramento = negativadorContratoBanco.getDataContratoEncerramento();
Date dataFimContrato = negativadorContratoBanco.getDataContratoFim();
Date dataCorrente = Util.formatarDataSemHora(new Date());
if((Util.compararData(dataFimContrato, dataCorrente) == 0 || Util.compararData(dataFimContrato, dataCorrente) == 1) && dataEncerramento == null ){
//Existe um contrato em vigencia
throw new ActionServletException("atencao.contrato_negativador_vigente");
}
}
//------------ REGISTRAR TRANSA��O ----------------
negativadorContrato.setOperacaoEfetuada(operacaoEfetuada);
negativadorContrato.adicionarUsuario(usuario,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
registradorOperacao.registrarOperacao(negativadorContrato);
// ------------ REGISTRAR TRANSA��O ----------------
if (negativadorContrato != null) {
negativadorContrato.setUltimaAlteracao(new Date());
idNegativadorContrato = (Integer) fachada.inserir(negativadorContrato);
} else {
throw new ActionServletException(
"atencao.informar.linha.criterio.cobranca");
}
montarPaginaSucesso(httpServletRequest, "Contrato do Negativador "
+ idNegativadorContrato + " inserido com sucesso.",
"Inserir outro Contrato do Negativador",
"exibirInserirContratoNegativadorAction.do?menu=sim",
"exibirAtualizarContratoNegativadorAction.do?idRegistroAtualizacao="
+ idNegativadorContrato, "Atualizar Contrato do Negativador Inserido");
return retorno;
}
}