package gcom.gui.faturamento.credito;
import gcom.fachada.Fachada;
import gcom.faturamento.credito.CreditoTipo;
import gcom.faturamento.credito.FiltroCreditoTipo;
import gcom.financeiro.lancamento.FiltroLancamentoItemContabil;
import gcom.financeiro.lancamento.LancamentoItemContabil;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
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;
public class InserirTipoCreditoAction extends GcomAction {
/**
* Este caso de uso permite inserir um Tipo de Credito
*
* [UC0515] Inserir Tipo de Credito
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
* @author Thiago Ten�rio
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
// Obt�m a sess�o
HttpSession sessao = httpServletRequest.getSession(false);
// Usuario logado no sistema
Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO);
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
InserirTipoCreditoActionForm inserirTipoCreditoActionForm = (InserirTipoCreditoActionForm) actionForm;
String descricao = inserirTipoCreditoActionForm.getDescricao();
String abreviatura = inserirTipoCreditoActionForm.getAbreviatura();
String tipoLancamentoContabil = inserirTipoCreditoActionForm
.getTipoLancamentoContabil();
String indicadorgeracaoAutomaica = inserirTipoCreditoActionForm
.getIndicadorgeracaoAutomaica();
String valorLimiteCredito = inserirTipoCreditoActionForm
.getValorLimiteCredito();
CreditoTipo tipoCreditoInserir = new CreditoTipo();
Collection colecaoPesquisa = null;
sessao.removeAttribute("tipoPesquisaRetorno");
if (Util.validarNumeroMaiorQueZERO(inserirTipoCreditoActionForm
.getTipoLancamentoContabil())) {
// Constr�i o filtro para pesquisa do Tipo do Lan�amento do Item Cont�bil
FiltroLancamentoItemContabil filtroLancamentoItemContabil = new FiltroLancamentoItemContabil();
filtroLancamentoItemContabil
.adicionarParametro(new ParametroSimples(
FiltroCreditoTipo.LANCAMENTO_ITEM_CONTABIL,
inserirTipoCreditoActionForm
.getTipoLancamentoContabil()));
}
// Descri��o do Tipo de Cr�dito � obrigat�rio.
if (descricao == null || descricao.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null,
"Descri��o do Tipo de Cr�dito");
}
// Descri��o do Tipo de Cr�dito Abreviada
if (abreviatura != null && !abreviatura.equalsIgnoreCase("")) {
tipoCreditoInserir.setDescricaoAbreviada(abreviatura);
}
// Valor Limite do Cr�dito � obrigat�rio.
if (valorLimiteCredito == null
|| valorLimiteCredito.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null,
"Valor Limite do Cr�dito");
}
// indicador de Gera��o Autom�tica do Cr�dito � obrigat�rio.
if (indicadorgeracaoAutomaica == null
|| indicadorgeracaoAutomaica.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null,
"indicador de Gera��o Autom�tica do Cr�dito");
}
tipoCreditoInserir.setDescricao(descricao);
tipoCreditoInserir.setDescricaoAbreviada(abreviatura);
tipoCreditoInserir.setIndicadorGeracaoAutomatica(new Short(
indicadorgeracaoAutomaica));
valorLimiteCredito = valorLimiteCredito.replace(".","");
valorLimiteCredito = valorLimiteCredito.replace(",",".");
tipoCreditoInserir.setValorLimite(new BigDecimal(valorLimiteCredito));
// Tipo do Lan�amento do Item Cont�bil
LancamentoItemContabil lancamentoItemContabil = new LancamentoItemContabil();
if (tipoLancamentoContabil != null
&& !tipoLancamentoContabil.equalsIgnoreCase(String
.valueOf(ConstantesSistema.NUMERO_NAO_INFORMADO))) {
FiltroLancamentoItemContabil filtroLancamentoItemContabil = new FiltroLancamentoItemContabil();
filtroLancamentoItemContabil
.adicionarParametro(new ParametroSimples(
FiltroLancamentoItemContabil.ID,
tipoLancamentoContabil));
filtroLancamentoItemContabil
.adicionarParametro(new ParametroSimples(
FiltroLancamentoItemContabil.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Retorna Tipo do Lan�amento do Item Cont�bil
colecaoPesquisa = fachada.pesquisar(filtroLancamentoItemContabil,
LancamentoItemContabil.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa_elo_nao_inexistente");
} else {
lancamentoItemContabil = (LancamentoItemContabil) Util
.retonarObjetoDeColecao(colecaoPesquisa);
if (lancamentoItemContabil.getId().intValue() != lancamentoItemContabil
.getId().intValue()) {
throw new ActionServletException(
"atencao.localidade_nao_e_elo");
} else {
tipoCreditoInserir
.setLancamentoItemContabil(lancamentoItemContabil);
}
}
}
CreditoTipo creditoTipo = new CreditoTipo();
creditoTipo.setLancamentoItemContabil(lancamentoItemContabil);
// Ultima altera��o
tipoCreditoInserir.setUltimaAlteracao(new Date());
// Pesquisa se a descri��o informada j� foi cadastrada
FiltroCreditoTipo filtroCreditoTipo = new FiltroCreditoTipo();
filtroCreditoTipo.adicionarParametro(new ParametroSimples(
FiltroCreditoTipo.DESCRICAO, descricao));
Collection colCreditoTipo = fachada.pesquisar(filtroCreditoTipo, CreditoTipo.class
.getName());
if (colCreditoTipo != null && !colCreditoTipo.isEmpty()) {
throw new ActionServletException(
"atencao.credito_tipo.descricao_ja_existente", null,
descricao);
}
//*****************************************************
// Pesquisa se a descri��o abreviada informada j� foi cadastrada
filtroCreditoTipo = new FiltroCreditoTipo();
filtroCreditoTipo.adicionarParametro(new ParametroSimples(
FiltroCreditoTipo.DESCRICAO_ABREVIADA, abreviatura));
colCreditoTipo = fachada.pesquisar(filtroCreditoTipo, CreditoTipo.class
.getName());
if (colCreditoTipo != null && !colCreditoTipo.isEmpty()) {
throw new ActionServletException(
"atencao.credito_tipo.abreviatura_ja_existente", null,
abreviatura);
}
// *****************************************************
Integer idTipoCredito = null;
tipoCreditoInserir.setIndicadorUso( 1 );
idTipoCredito = fachada.inserirTipoCredito(tipoCreditoInserir, usuarioLogado);
montarPaginaSucesso(httpServletRequest, "Tipo de Cr�dito de c�digo "
+ tipoCreditoInserir.getId() + " inserido com sucesso.",
"Inserir outro Tipo de Cr�dito",
"exibirInserirTipoCreditoAction.do?menu=sim",
"exibirAtualizarTipoCreditoAction.do?idRegistroAtualizacao="
+ idTipoCredito, "Atualizar Tipo de Cr�dito Inserido");
// }
// devolve o mapeamento de retorno
return retorno;
}
}