package gcom.gui.faturamento.conta;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.faturamento.debito.DebitoTipo;
import gcom.faturamento.debito.FiltroDebitoTipo;
import gcom.financeiro.FinanciamentoTipo;
import gcom.seguranca.acesso.PermissaoEspecial;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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 ExibirAdicionarDebitoCobradoContaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirAdicionarDebitoCobradoConta");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
//Inst�ncia do formul�rio que est� sendo utilizado
AdicionarDebitoCobradoContaActionForm adicionarDebitoCobradoContaActionForm =
(AdicionarDebitoCobradoContaActionForm) actionForm;
/*
* Costante que informa o ano limite para o campo anoMesReferencia da conta
*/
httpServletRequest.setAttribute("anoLimite", ConstantesSistema.ANO_LIMITE);
//Recebimento da matricula do im�vel selecionado
String idImovel = (String) httpServletRequest.getParameter("imovel");
if (idImovel == null || idImovel.equalsIgnoreCase("")){
throw new ActionServletException(
"atencao.adicionar_debito_imovel_obrigatorio");
}
else{
//O id do im�vel ser� utilizado no action de inser��o dos d�bitos cobrados.
adicionarDebitoCobradoContaActionForm.setImovelID(idImovel);
}
//Carregar tipo do d�bito
if (sessao.getAttribute("colecaoAdicionarDebitoTipo") == null){
FiltroDebitoTipo filtroDebitoTipo = new FiltroDebitoTipo(FiltroDebitoTipo.DESCRICAO_ABREVIADA);
filtroDebitoTipo.setConsultaSemLimites(true);
filtroDebitoTipo.adicionarParametro(new ParametroSimples(FiltroDebitoTipo.FINANCIAMENTO_TIPO, FinanciamentoTipo.SERVICO_NORMAL));
filtroDebitoTipo.adicionarParametro(new ParametroSimples(FiltroDebitoTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroDebitoTipo.setCampoOrderBy(FiltroDebitoTipo.DESCRICAO);
Collection colecaoAdicionarDebitoTipo = fachada.pesquisar(filtroDebitoTipo,
DebitoTipo.class.getName());
if (colecaoAdicionarDebitoTipo == null || colecaoAdicionarDebitoTipo.isEmpty()){
throw new ActionServletException(
"atencao.pesquisa.nenhum_registro_tabela", null,
"DEBITO_TIPO");
}
// Disponibiliza a cole��o pela sess�o
sessao.setAttribute("colecaoAdicionarDebitoTipo", colecaoAdicionarDebitoTipo);
}
if (adicionarDebitoCobradoContaActionForm.getDebitoTipoID() != null && !adicionarDebitoCobradoContaActionForm.getDebitoTipoID().trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
FiltroDebitoTipo filtroDebitoTipo = new FiltroDebitoTipo();
filtroDebitoTipo.adicionarParametro(new ParametroSimples(FiltroDebitoTipo.ID, adicionarDebitoCobradoContaActionForm.getDebitoTipoID()));
Collection colecaoDebitoTipo = fachada.pesquisar(filtroDebitoTipo, DebitoTipo.class.getName());
DebitoTipo debitoTipo = (DebitoTipo) Util.retonarObjetoDeColecao(colecaoDebitoTipo);
adicionarDebitoCobradoContaActionForm.setValorDebito(Util.formatarMoedaReal(debitoTipo.getValorSugerido()));
} else {
adicionarDebitoCobradoContaActionForm.setValorDebito("");
}
boolean alterarValorSugeridoEmTipoDebito = Fachada
.getInstancia()
.verificarPermissaoEspecial(
PermissaoEspecial.ALTERAR_VALOR_SUGERIDO_EM_TIPO_DEBITO,
this.getUsuarioLogado(httpServletRequest));
httpServletRequest.setAttribute("alterarValorSugeridoEmTipoDebito",
alterarValorSugeridoEmTipoDebito);
if (adicionarDebitoCobradoContaActionForm.getValorDebito() == null
|| adicionarDebitoCobradoContaActionForm.getValorDebito()
.equals("")) {
httpServletRequest.setAttribute("alterarValorSugeridoEmTipoDebito",
true);
}
return retorno;
}
}