package gcom.gui.cobranca;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao;
import gcom.cobranca.CobrancaCriterio;
import gcom.cobranca.CobrancaSituacao;
import gcom.cobranca.CriterioSituacaoCobranca;
import gcom.cobranca.CriterioSituacaoCobrancaPK;
import gcom.cobranca.CriterioSituacaoLigacaoAgua;
import gcom.cobranca.CriterioSituacaoLigacaoAguaPK;
import gcom.cobranca.CriterioSituacaoLigacaoEsgoto;
import gcom.cobranca.CriterioSituacaoLigacaoEsgotoPK;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import java.math.BigDecimal;
import java.util.ArrayList;
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 atualizar o crit�rio da cobran�a e as linhas do criterio
* da cobran�a
*
* @author S�vio Luiz
* @date 11/05/2006
*/
public class AtualizarCriterioCobrancaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
CriterioCobrancaActionForm criterioCobrancaActionForm = (CriterioCobrancaActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
Collection criteriosSituacaoCobranca = new ArrayList();
Collection criteriosSituacaoLigacaoAgua = new ArrayList();
Collection criteriosSituacaoLigacaoEsgoto = new ArrayList();
// cria o objeto criterio cobran�a para ser inserido
CobrancaCriterio cobrancaCriterio = (CobrancaCriterio) sessao
.getAttribute("cobrancaCriterio");
String campoDesabilitado = (String) sessao.getAttribute("desabilita");
Collection colecaoCobrancaCriterioLinha = (Collection) sessao
.getAttribute("colecaoCobrancaCriterioLinha");
Collection colecaoCobrancaCriterioLinhaRemovidas = (Collection) sessao
.getAttribute("colecaoCobrancaCriterioLinhaRemovidas");
if (criterioCobrancaActionForm.getDescricaoCriterio() != null
&& !criterioCobrancaActionForm.getDescricaoCriterio()
.equals("")) {
cobrancaCriterio
.setDescricaoCobrancaCriterio(criterioCobrancaActionForm
.getDescricaoCriterio());
} else {
throw new ActionServletException("atencao.required", null,
"Descri��o do Crit�rio de Cobran�a");
}
// caso campoDesabilitado esteja nulo ent�o todos os campos podem de
// crit�rio
// cobran�a podem ser atualizados,caso seja diferente de nulo s� o campo
// descri��o e
// indicador de uso pode ser alterados
if (campoDesabilitado == null || campoDesabilitado.equals("")) {
Date dataInicio = null;
if (criterioCobrancaActionForm.getDataInicioVigencia() != null
&& !criterioCobrancaActionForm.getDataInicioVigencia()
.equals("")) {
String dataInicioVigencia = criterioCobrancaActionForm
.getDataInicioVigencia();
if (Util.validarDiaMesAno(dataInicioVigencia)) {
throw new ActionServletException(
"atencao.data.inicio.Vigencia.invalida");
}
dataInicio = Util.converteStringParaDate(dataInicioVigencia);
if (!cobrancaCriterio.getDataInicioVigencia()
.equals(dataInicio)) {
Date dataAtualSemHora = Util
.formatarDataSemHora(new Date());
if (dataInicio.before(dataAtualSemHora)) {
String dataAtual = Util.formatarData(new Date());
throw new ActionServletException(
"atencao.data.inicio.nao.superior.data.corrente",
null, dataAtual);
}
}
} else {
throw new ActionServletException("atencao.required", null,
"Data de In�cio de Vig�ncia do Crit�rio");
}
cobrancaCriterio.setDataInicioVigencia(dataInicio);
if (criterioCobrancaActionForm.getNumeroAnoContaAntiga() != null
&& !criterioCobrancaActionForm.getNumeroAnoContaAntiga()
.equals("")) {
boolean valorNaoNumerico = Util
.validarValorNaoNumerico(criterioCobrancaActionForm
.getNumeroAnoContaAntiga());
if (!valorNaoNumerico) {
cobrancaCriterio.setNumeroContaAntiga(new Short(
criterioCobrancaActionForm
.getNumeroAnoContaAntiga()));
} else {
throw new ActionServletException("atencao.integer", null,
"N�mero de Anos para Determinar Conta Antiga");
}
} else {
throw new ActionServletException("atencao.required", null,
"N�mero de Anos para Determinar Conta Antiga");
}
if (criterioCobrancaActionForm.getValorLimitePrioridade() != null &&
!criterioCobrancaActionForm.getValorLimitePrioridade().equals("") ){
BigDecimal valorLimitePrioridade =
new BigDecimal(criterioCobrancaActionForm.getValorLimitePrioridade()
.replace(".", "").replace(",", "."));
cobrancaCriterio.setValorLimitePrioridade(valorLimitePrioridade);
}else{
throw new ActionServletException("atencao.required", null,
"Valor Limite para Prioridade");
}
if (criterioCobrancaActionForm.getPercentualValorMinimoPagoParceladoCancelado() != null &&
!criterioCobrancaActionForm.getPercentualValorMinimoPagoParceladoCancelado().equals("") ){
BigDecimal percentualValorMinimoPagoParceladoCancelado =
new BigDecimal(criterioCobrancaActionForm.getPercentualValorMinimoPagoParceladoCancelado()
.replace(".", "").replace(",", "."));
cobrancaCriterio.setPercentualValorMinimoPagoParceladoCancelado(percentualValorMinimoPagoParceladoCancelado);
}else{
throw new ActionServletException("atencao.required", null,
"Percentual Valor");
}
if (criterioCobrancaActionForm.getPercentualQuantidadeMinimoPagoParceladoCancelado() != null &&
!criterioCobrancaActionForm.getPercentualQuantidadeMinimoPagoParceladoCancelado().equals("") ){
BigDecimal percentualQuantidadeMinimoPagoParceladoCancelado =
new BigDecimal(criterioCobrancaActionForm.getPercentualQuantidadeMinimoPagoParceladoCancelado()
.replace(".", "").replace(",", "."));
cobrancaCriterio.setPercentualQuantidadeMinimoPagoParceladoCancelado(percentualQuantidadeMinimoPagoParceladoCancelado);
}else{
throw new ActionServletException("atencao.required", null,
"Percentual Quantidade de Itens");
}
if (criterioCobrancaActionForm.getOpcaoAcaoImovelSitEspecial() != null
&& !criterioCobrancaActionForm
.getOpcaoAcaoImovelSitEspecial().equals("")) {
cobrancaCriterio
.setIndicadorEmissaoImovelParalisacao(new Short(
criterioCobrancaActionForm
.getOpcaoAcaoImovelSitEspecial()));
} else {
throw new ActionServletException("atencao.required", null,
"Emiss�o da A��o para Im�vel com Sit. Especial de Cobran�a");
}
if (criterioCobrancaActionForm.getOpcaoAcaoImovelSit() != null
&& !criterioCobrancaActionForm.getOpcaoAcaoImovelSit()
.equals("")) {
cobrancaCriterio
.setIndicadorEmissaoImovelSituacaoCobranca(new Short(
criterioCobrancaActionForm
.getOpcaoAcaoImovelSit()));
} else {
throw new ActionServletException("atencao.required", null,
"Emiss�o da A��o para Im�vel com Sit. de Cobran�a");
}
if (criterioCobrancaActionForm.getOpcaoContasRevisao() != null
&& !criterioCobrancaActionForm.getOpcaoContasRevisao()
.equals("")) {
cobrancaCriterio.setIndicadorEmissaoContaRevisao(new Short(
criterioCobrancaActionForm
.getOpcaoAcaoImovelSitEspecial()));
} else {
throw new ActionServletException("atencao.required", null,
"Considerar Contas em Revis�o");
}
if (criterioCobrancaActionForm.getOpcaoAcaoImovelDebitoMesConta() != null
&& !criterioCobrancaActionForm
.getOpcaoAcaoImovelDebitoMesConta().equals("")) {
cobrancaCriterio.setIndicadorEmissaoDebitoContaMes(new Short(
criterioCobrancaActionForm
.getOpcaoAcaoImovelDebitoMesConta()));
} else {
throw new ActionServletException("atencao.required", null,
"Emiss�o da A��o para Im�vel com D�bito s� da Conta do M�s");
}
if (criterioCobrancaActionForm
.getOpcaoAcaoInquilinoDebitoMesConta() != null
&& !criterioCobrancaActionForm
.getOpcaoAcaoInquilinoDebitoMesConta().equals("")) {
cobrancaCriterio
.setIndicadorEmissaoInquilinoDebitoContaMes(new Short(
criterioCobrancaActionForm
.getOpcaoAcaoInquilinoDebitoMesConta()));
} else {
throw new ActionServletException(
"atencao.required",
null,
"Emiss�o da A��o para Inquilino Com D�bito s� da Conta do M�s Independentemente do Valor da Conta");
}
if (criterioCobrancaActionForm
.getOpcaoAcaoImovelDebitoContasAntigas() != null
&& !criterioCobrancaActionForm
.getOpcaoAcaoImovelDebitoContasAntigas().equals("")) {
cobrancaCriterio
.setIndicadorEmissaoDebitoContaAntiga(new Short(
criterioCobrancaActionForm
.getOpcaoAcaoImovelDebitoContasAntigas()));
} else {
throw new ActionServletException("atencao.required", null,
"Emiss�o da A��o para Im�vel com D�bito s� de Contas Antigas");
}
if (colecaoCobrancaCriterioLinha == null
|| colecaoCobrancaCriterioLinha.isEmpty()) {
throw new ActionServletException(
"atencao.informar.linha.criterio.cobranca");
}
// Verificando se houve situacoes de cobranca escolhidas para o criterio
if (criterioCobrancaActionForm.getOpcaoAcaoImovelSit() != null &&
criterioCobrancaActionForm.getOpcaoAcaoImovelSit().equals("1") &&
criterioCobrancaActionForm.getIdsCobrancaSituacao() != null &&
criterioCobrancaActionForm.getIdsCobrancaSituacao().length > 0){
for (int i = 0; i < criterioCobrancaActionForm.getIdsCobrancaSituacao().length; i++) {
CriterioSituacaoCobranca csc = new CriterioSituacaoCobranca();
CriterioSituacaoCobrancaPK cscPK = new CriterioSituacaoCobrancaPK();
CobrancaSituacao cobSit = new CobrancaSituacao();
cobSit.setId(new Integer(criterioCobrancaActionForm.getIdsCobrancaSituacao()[i]));
cscPK.setCobrancaSituacao(cobSit);
cscPK.setCobrancaCriterio(cobrancaCriterio);
csc.setComp_id(cscPK);
criteriosSituacaoCobranca.add(csc);
}
}
// verificando se houveram situacoes de ligacao de agua para este criterio
if (criterioCobrancaActionForm.getIdsSituacaoLigacaoAgua() != null &&
criterioCobrancaActionForm.getIdsSituacaoLigacaoAgua().length > 0){
for (int i = 0; i < criterioCobrancaActionForm.getIdsSituacaoLigacaoAgua().length; i++) {
CriterioSituacaoLigacaoAgua csla = new CriterioSituacaoLigacaoAgua();
CriterioSituacaoLigacaoAguaPK cslaPK = new CriterioSituacaoLigacaoAguaPK();
LigacaoAguaSituacao ligAguaSit = new LigacaoAguaSituacao();
ligAguaSit.setId(new Integer(criterioCobrancaActionForm.getIdsSituacaoLigacaoAgua()[i]));
cslaPK.setLigacaoAguaSituacao(ligAguaSit);
cslaPK.setCobrancaCriterio(cobrancaCriterio);
csla.setComp_id(cslaPK);
criteriosSituacaoLigacaoAgua.add(csla);
}
}
// verificando se houveram situacoes de ligacao de esgoto para este criterio
if (criterioCobrancaActionForm.getIdsSituacaoLigacaoEsgoto() != null &&
criterioCobrancaActionForm.getIdsSituacaoLigacaoEsgoto().length > 0){
for (int i = 0; i < criterioCobrancaActionForm.getIdsSituacaoLigacaoEsgoto().length; i++) {
CriterioSituacaoLigacaoEsgoto csle = new CriterioSituacaoLigacaoEsgoto();
CriterioSituacaoLigacaoEsgotoPK cslePK = new CriterioSituacaoLigacaoEsgotoPK();
LigacaoEsgotoSituacao ligEsgotoSit = new LigacaoEsgotoSituacao();
ligEsgotoSit.setId(new Integer(criterioCobrancaActionForm.getIdsSituacaoLigacaoEsgoto()[i]));
cslePK.setLigacaoEsgotoSituacao(ligEsgotoSit);
cslePK.setCobrancaCriterio(cobrancaCriterio);
csle.setComp_id(cslePK);
criteriosSituacaoLigacaoEsgoto.add(csle);
}
}
}
cobrancaCriterio.setIndicadorUso(new Short(criterioCobrancaActionForm
.getIndicadorUso()));
fachada.atualizarCobrancaCriterio(cobrancaCriterio,
colecaoCobrancaCriterioLinha,
colecaoCobrancaCriterioLinhaRemovidas,
criteriosSituacaoCobranca, criteriosSituacaoLigacaoAgua,
criteriosSituacaoLigacaoEsgoto,
this.getUsuarioLogado(httpServletRequest));
sessao.removeAttribute("colecaoCobrancaCriterioLinha");
sessao.removeAttribute("colecaoCobrancaCriterioLinhaRemovidas");
sessao.removeAttribute("cobrancaCriterio");
sessao.getAttribute("desabilita");
sessao.removeAttribute("indicadorAtualizar");
sessao.removeAttribute("voltar");
montarPaginaSucesso(httpServletRequest, "Crit�rio de Cobran�a "
+ cobrancaCriterio.getId() + " atualizado com sucesso.",
"Realizar outra Manuten��o de Crit�rio de Cobran�a",
"exibirFiltrarCriterioCobrancaAction.do?menu=sim");
return retorno;
}
}