package gcom.gui.cadastro.tarifasocial;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteImovelEconomia;
import gcom.cadastro.imovel.AreaConstruidaFaixa;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelEconomia;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.tarifasocial.RendaTipo;
import gcom.cadastro.tarifasocial.TarifaSocialCartaoTipo;
import gcom.cadastro.tarifasocial.TarifaSocialDadoEconomia;
import gcom.cadastro.tarifasocial.TarifaSocialRevisaoMotivo;
import gcom.cadastro.tarifasocial.bean.TarifaSocialHelper;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import java.math.BigDecimal;
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 Rafael Corr�a
*/
public class AtualizarTarifaSocialAction 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("avancar");
Fachada fachada = Fachada.getInstancia();
// Pega uma instancia da sessao
HttpSession sessao = httpServletRequest.getSession(false);
AtualizarDadosTarifaSocialActionForm atualizarDadosTarifaSocialActionForm = (AtualizarDadosTarifaSocialActionForm) actionForm;
String concluir = httpServletRequest.getParameter("concluir");
if (concluir != null && !concluir.equals("")) {
retorno = actionMapping
.findForward("concluir");
}
Collection colecaoTarifaSocialHelper = (Collection) sessao.getAttribute("colecaoTarifaSocialHelper");
Imovel imovelSessao = (Imovel) sessao.getAttribute("imovelTarifa");
TarifaSocialHelper tarifaSocialHelperAtualizar = null;
if (sessao.getAttribute("tarifaSocialHelperAtualizar") != null) {
tarifaSocialHelperAtualizar = (TarifaSocialHelper) sessao.getAttribute("tarifaSocialHelperAtualizar");
} else {
tarifaSocialHelperAtualizar = new TarifaSocialHelper();
}
TarifaSocialDadoEconomia tarifaSocialDadoEconomia = new TarifaSocialDadoEconomia();
TarifaSocialHelper tarifaSocialHelper = (TarifaSocialHelper) sessao.getAttribute("tarifaSocialHelper");
// Seta os valores dentro do objeto
String numeroCartaoProgramaSocial = atualizarDadosTarifaSocialActionForm.getNumeroCartaoProgramaSocial();
String tipoCartaoProgramaSocial = atualizarDadosTarifaSocialActionForm.getTipoCartao();
String dataValidadeCartao = atualizarDadosTarifaSocialActionForm.getDataValidadeCartao();
String dataComparecimentoCarta = atualizarDadosTarifaSocialActionForm.getDataComparecimentoCarta();
String numeroParcelas = atualizarDadosTarifaSocialActionForm.getNumeroMesesAdesao();
String numeroContratoCompanhiaEletrica = atualizarDadosTarifaSocialActionForm.getNumeroContratoCelpe();
Long numeroContratoCompanhiaEletricaFormatado = null;
String consumoMedio = atualizarDadosTarifaSocialActionForm.getConsumoCelpe();
Integer consumoMedioFormatado = null;
String numeroIptu = atualizarDadosTarifaSocialActionForm.getNumeroIPTU();
String numeroIptuFormatado = null;
String areaConstruida = atualizarDadosTarifaSocialActionForm.getAreaConstruida();
BigDecimal areaConstruidaFormatada = null;
String idAreaConstruidaFaixa = atualizarDadosTarifaSocialActionForm.getAreaConstruidaFaixa();
String valorRenda = atualizarDadosTarifaSocialActionForm.getValorRendaFamiliar();
BigDecimal valorRendaFormatada = null;
String tipoRenda = atualizarDadosTarifaSocialActionForm.getRendaTipo();
String motivoRevisao = atualizarDadosTarifaSocialActionForm.getMotivoRevisao();
String numeroMoradores = atualizarDadosTarifaSocialActionForm.getNumeroMoradores();
Short numeroMoradoresFormatado = null;
Date dataCorrente = new Date();
Integer idImovelTarifaSocial = null;
// Id da Tarifa Social
tarifaSocialDadoEconomia.setId(tarifaSocialHelper.getTarifaSocialDadoEconomia().getId());
// Data de Implanta��o
tarifaSocialDadoEconomia.setDataImplantacao(tarifaSocialHelper.getTarifaSocialDadoEconomia().getDataImplantacao());
// N�mero do Cart�o do Programa Social
if (numeroCartaoProgramaSocial != null && !numeroCartaoProgramaSocial.trim().equals("")) {
tarifaSocialDadoEconomia.setNumeroCartaoProgramaSocial(new Long(numeroCartaoProgramaSocial));
}
// Tipo do Cart�o do Programa Social
if (tipoCartaoProgramaSocial != null && !tipoCartaoProgramaSocial.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
TarifaSocialCartaoTipo tarifaSocialCartaoTipo = new TarifaSocialCartaoTipo();
tarifaSocialCartaoTipo.setId(new Integer(tipoCartaoProgramaSocial));
tarifaSocialDadoEconomia.setTarifaSocialCartaoTipo(tarifaSocialCartaoTipo);
if (tarifaSocialHelper.getClienteImovel() != null) {
// [FS0016] - Verificar duplicidade do Cart�o do Programa Social
fachada.verificarDuplicidadeCartaoProgramaSocial(new Long(
numeroCartaoProgramaSocial), tarifaSocialCartaoTipo,
tarifaSocialHelper.getClienteImovel().getImovel().getId());
}
}
// Data de Validade do Cart�o
if (dataValidadeCartao != null && !dataValidadeCartao.trim().equals("")) {
Date dataValidadeCartaoFormatada = Util.converteStringParaDate(dataValidadeCartao);
if (dataCorrente.compareTo(dataValidadeCartaoFormatada) > 0) {
throw new ActionServletException("atencao.data_validade.menor.data_corrente");
}
tarifaSocialDadoEconomia.setDataValidadeCartao(dataValidadeCartaoFormatada);
}
if (dataComparecimentoCarta != null && !dataComparecimentoCarta.trim().equals("")) {
Date dataComparecimentoCartaFormatada = Util.converteStringParaDate(dataComparecimentoCarta);
if (Util.compararData(dataComparecimentoCartaFormatada,dataCorrente) == 1) {
throw new ActionServletException("atencao.tarifasocial.data_comparecimento_carta_maior_que_hoje");
}
tarifaSocialHelperAtualizar.setDataComparecimentoCarta(dataComparecimentoCartaFormatada);
}
// N�mero de Parcelas
if (numeroParcelas != null && !numeroParcelas.trim().equals("")) {
tarifaSocialDadoEconomia.setNumeroMesesAdesao(new Short(numeroParcelas));
}
// Consumo M�dio da Companhia de Energia El�trica
if (consumoMedio != null && !consumoMedio.trim().equals("")) {
consumoMedioFormatado = new Integer(consumoMedio);
tarifaSocialDadoEconomia.setConsumoCelpe(new Integer(consumoMedio));
}
// Valor da Renda Familiar
if (valorRenda != null && !valorRenda.trim().equals("")) {
valorRendaFormatada = Util.formatarMoedaRealparaBigDecimal(valorRenda);
tarifaSocialDadoEconomia.setValorRendaFamiliar(valorRendaFormatada);
}
// Tipo da Renda
if (tipoRenda != null && !tipoRenda.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
RendaTipo rendaTipo = new RendaTipo();
rendaTipo.setId(new Integer(tipoRenda));
if (tipoRenda.equals(RendaTipo.COMPROVADA.toString())) {
rendaTipo.setDescricao("COMPROVADA");
} else if (tipoRenda.equals(RendaTipo.DECLARADA.toString())) {
rendaTipo.setDescricao("DECLARADA");
}
tarifaSocialDadoEconomia.setRendaTipo(rendaTipo);
}
// Motivo de Revis�o
if (motivoRevisao != null && !motivoRevisao.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
TarifaSocialRevisaoMotivo tarifaSocialRevisaoMotivo = new TarifaSocialRevisaoMotivo();
tarifaSocialRevisaoMotivo.setId(new Integer(motivoRevisao));
tarifaSocialDadoEconomia.setTarifaSocialRevisaoMotivo(tarifaSocialRevisaoMotivo);
tarifaSocialDadoEconomia.setDataRevisao(new Date());
}
Integer idMunicipio = null;
Integer idImovel = null;
// Caso seja de uma economia
if (tarifaSocialHelper.getClienteImovel() != null) {
ClienteImovel clienteImovel = tarifaSocialHelper.getClienteImovel();
idImovelTarifaSocial = clienteImovel.getImovel().getId();
SetorComercial setorComercial = clienteImovel.getImovel().getSetorComercial();
idMunicipio = setorComercial.getMunicipio().getId();
Imovel imovel = fachada.pesquisarImovelComSituacaoAguaEsgoto(idImovelTarifaSocial);
imovel.setSetorComercial(setorComercial);
// N�mero do IPTU
if (numeroIptu != null && !numeroIptu.trim().equals("")) {
numeroIptuFormatado = Util.formatarIPTU(numeroIptu);
idImovel = fachada.verificarNumeroIptu(numeroIptuFormatado, idImovelTarifaSocial, null, idMunicipio);
if (idImovel != null) {
throw new ActionServletException("atencao.imovel.iptu_jacadastrado", null, idImovel.toString());
}
imovel.setNumeroIptu(numeroIptuFormatado);
} else {
imovel.setNumeroIptu(null);
}
// N�mero do Contrato da Companhia El�trica
if (numeroContratoCompanhiaEletrica != null && !numeroContratoCompanhiaEletrica.trim().equals("")) {
numeroContratoCompanhiaEletricaFormatado = new Long(numeroContratoCompanhiaEletrica);
idImovel = fachada.verificarNumeroCompanhiaEletrica(numeroContratoCompanhiaEletricaFormatado, idImovelTarifaSocial, null);
if (idImovel != null) {
throw new ActionServletException("atencao.imovel.numero_celpe_jacadastrado", null, idImovel.toString());
}
imovel.setNumeroCelpe(numeroContratoCompanhiaEletricaFormatado);
} else {
imovel.setNumeroCelpe(null);
}
// �rea Constru�da
if (areaConstruida != null && !areaConstruida.trim().equals("")) {
areaConstruidaFormatada = Util.formatarMoedaRealparaBigDecimal(areaConstruida);
imovel.setAreaConstruida(areaConstruidaFormatada);
} else {
imovel.setAreaConstruida(null);
}
// �rea Constru�da Faixa
if (idAreaConstruidaFaixa != null && !idAreaConstruidaFaixa.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
AreaConstruidaFaixa areaConstruidaFaixa = new AreaConstruidaFaixa();
areaConstruidaFaixa.setId(new Integer(idAreaConstruidaFaixa));
imovel.setAreaConstruidaFaixa(areaConstruidaFaixa);
} else {
imovel.setAreaConstruidaFaixa(null);
}
// N�mero de Moradores
if (numeroMoradores != null && !numeroMoradores.trim().equals("")) {
numeroMoradoresFormatado = new Short(numeroMoradores);
imovel.setNumeroMorador(numeroMoradoresFormatado);
} else {
imovel.setNumeroMorador(null);
}
tarifaSocialDadoEconomia.setImovel(imovel);
clienteImovel.setImovel(imovel);
tarifaSocialHelperAtualizar.setClienteImovel(clienteImovel);
// [FS0008] - Verificar Preenchimento dos Campos
fachada.verificarPreenchimentoManterDadosTarifaSocial(
numeroContratoCompanhiaEletricaFormatado,
areaConstruidaFormatada, numeroIptuFormatado,
idImovelTarifaSocial, numeroCartaoProgramaSocial,
dataValidadeCartao, numeroParcelas, consumoMedioFormatado,
valorRendaFormatada, tipoCartaoProgramaSocial, tipoRenda);
}
// Caso seja de m�ltiplas economias
else {
ClienteImovelEconomia clienteImovelEconomia = new ClienteImovelEconomia();
idImovelTarifaSocial = tarifaSocialHelper.getClienteImovelEconomia().getImovelEconomia().getId();
idMunicipio = tarifaSocialHelper.getClienteImovelEconomia()
.getImovelEconomia().getImovelSubcategoria().getComp_id()
.getImovel().getSetorComercial().getMunicipio().getId();
ImovelEconomia imovelEconomia = fachada.pesquisarImovelEconomiaPeloId(idImovelTarifaSocial);
imovelEconomia.setImovelSubcategoria(tarifaSocialHelper.getClienteImovelEconomia()
.getImovelEconomia().getImovelSubcategoria());
// N�mero do IPTU
if (numeroIptu != null && !numeroIptu.trim().equals("")) {
numeroIptuFormatado = Util.formatarIPTU(numeroIptu);
if (colecaoTarifaSocialHelper != null && !colecaoTarifaSocialHelper.isEmpty()) {
Iterator colecaoTarifaSocialHelperIterator = colecaoTarifaSocialHelper.iterator();
while (colecaoTarifaSocialHelperIterator.hasNext()) {
TarifaSocialHelper tarifaSocialHelperVerificacao = (TarifaSocialHelper) colecaoTarifaSocialHelperIterator
.next();
// Verifica se o n�mero de contrato da companhia j� foi usado em outra economia do im�vel
if (tarifaSocialHelperVerificacao
.getClienteImovelEconomia().getImovelEconomia()
.getNumeroIptu() != null
&& tarifaSocialHelperVerificacao
.getClienteImovelEconomia()
.getImovelEconomia()
.getNumeroIptu()
.equals(
numeroIptuFormatado)
&& !tarifaSocialHelperVerificacao
.getTarifaSocialDadoEconomia()
.getId()
.equals(
tarifaSocialDadoEconomia
.getId())) {
throw new ActionServletException("atencao.imovel.iptu_jacadastrado", null, imovelSessao.getId().toString());
}
}
}
idImovel = fachada.verificarNumeroIptu(numeroIptuFormatado, null, idImovelTarifaSocial, idMunicipio);
if (idImovel != null) {
throw new ActionServletException("atencao.imovel.iptu_jacadastrado", null, idImovel.toString());
}
imovelEconomia.setNumeroIptu(numeroIptuFormatado);
} else {
imovelEconomia.setNumeroIptu(null);
}
// N�mero do Contrato da Companhia El�trica
if (numeroContratoCompanhiaEletrica != null && !numeroContratoCompanhiaEletrica.trim().equals("")) {
numeroContratoCompanhiaEletricaFormatado = new Long(numeroContratoCompanhiaEletrica);
if (colecaoTarifaSocialHelper != null && !colecaoTarifaSocialHelper.isEmpty()) {
Iterator colecaoTarifaSocialHelperIterator = colecaoTarifaSocialHelper.iterator();
while (colecaoTarifaSocialHelperIterator.hasNext()) {
TarifaSocialHelper tarifaSocialHelperVerificacao = (TarifaSocialHelper) colecaoTarifaSocialHelperIterator
.next();
// Verifica se o n�mero de contrato da companhia j� foi usado em outra economia do im�vel
if (tarifaSocialHelperVerificacao
.getClienteImovelEconomia().getImovelEconomia()
.getNumeroCelpe() != null
&& tarifaSocialHelperVerificacao
.getClienteImovelEconomia()
.getImovelEconomia()
.getNumeroCelpe()
.equals(
numeroContratoCompanhiaEletricaFormatado)
&& !tarifaSocialHelperVerificacao
.getTarifaSocialDadoEconomia()
.getId()
.equals(tarifaSocialDadoEconomia
.getId())) {
throw new ActionServletException("atencao.imovel.numero_celpe_jacadastrado", null, imovelSessao.getId().toString());
}
}
}
idImovel = fachada.verificarNumeroCompanhiaEletrica(numeroContratoCompanhiaEletricaFormatado, idImovelTarifaSocial, null);
imovelEconomia.setNumeroCelpe(numeroContratoCompanhiaEletricaFormatado);
} else {
imovelEconomia.setNumeroCelpe(null);
}
// �rea Constru�da
if (areaConstruida != null && !areaConstruida.trim().equals("")) {
areaConstruidaFormatada = Util.formatarMoedaRealparaBigDecimal(areaConstruida);
imovelEconomia.setAreaConstruida(areaConstruidaFormatada);
} else {
imovelEconomia.setAreaConstruida(null);
}
// �rea Constru�da Faixa
if (idAreaConstruidaFaixa != null && !idAreaConstruidaFaixa.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
AreaConstruidaFaixa areaConstruidaFaixa = new AreaConstruidaFaixa();
areaConstruidaFaixa.setId(new Integer(idAreaConstruidaFaixa));
imovelEconomia.setAreaConstruidaFaixa(areaConstruidaFaixa);
} else {
imovelEconomia.setAreaConstruidaFaixa(null);
}
// N�mero de Moradores
if (numeroMoradores != null && !numeroMoradores.trim().equals("")) {
numeroMoradoresFormatado = new Short(numeroMoradores);
imovelEconomia.setNumeroMorador(numeroMoradoresFormatado);
} else {
imovelEconomia.setNumeroMorador(null);
}
Imovel imovel = (Imovel) sessao.getAttribute("imovelTarifa");
clienteImovelEconomia.setImovelEconomia(imovelEconomia);
tarifaSocialDadoEconomia.setImovelEconomia(imovelEconomia);
tarifaSocialDadoEconomia.setImovel(imovel);
tarifaSocialHelperAtualizar.setClienteImovelEconomia(clienteImovelEconomia);
// [FS0008] - Verificar Preenchimento dos Campos
fachada.verificarPreenchimentoManterDadosTarifaSocialMultiplasEconomias(
numeroContratoCompanhiaEletricaFormatado,
areaConstruidaFormatada, numeroIptuFormatado,
idImovelTarifaSocial, numeroCartaoProgramaSocial,
dataValidadeCartao, numeroParcelas, consumoMedioFormatado,
valorRendaFormatada, tipoCartaoProgramaSocial, tipoRenda);
}
httpServletRequest.setAttribute("telaLimpa", true);
tarifaSocialHelperAtualizar.setTarifaSocialDadoEconomia(tarifaSocialDadoEconomia);
sessao.setAttribute("tarifaSocialHelperAtualizar", tarifaSocialHelperAtualizar);
return retorno;
}
}