package gcom.gui.cobranca.contratoparcelamento;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.ClienteTipo;
import gcom.cadastro.cliente.FiltroClienteRelacaoTipo;
import gcom.cobranca.CobrancaForma;
import gcom.cobranca.CobrancaSituacao;
import gcom.cobranca.DocumentoTipo;
import gcom.cobranca.FiltroCobrancaForma;
import gcom.cobranca.bean.ContaValoresHelper;
import gcom.cobranca.bean.GuiaPagamentoValoresHelper;
import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper;
import gcom.cobranca.contratoparcelamento.ComparatorParcela;
import gcom.cobranca.contratoparcelamento.ComparatorPrestacaoContratoParcelamento;
import gcom.cobranca.contratoparcelamento.ContratoParcelamento;
import gcom.cobranca.contratoparcelamento.ContratoParcelamentoCliente;
import gcom.cobranca.contratoparcelamento.ContratoParcelamentoRD;
import gcom.cobranca.contratoparcelamento.FiltroContratoParcelamento;
import gcom.cobranca.contratoparcelamento.FiltroContratoParcelamentoRD;
import gcom.cobranca.contratoparcelamento.FiltroQuantidadePrestacoes;
import gcom.cobranca.contratoparcelamento.FiltroTipoRelacao;
import gcom.cobranca.contratoparcelamento.InserirContratoParcelamentoValoresParcelasHelper;
import gcom.cobranca.contratoparcelamento.PrestacaoContratoParcelamento;
import gcom.cobranca.contratoparcelamento.QuantidadePrestacoes;
import gcom.cobranca.contratoparcelamento.QuantidadePrestacoesRDHelper;
import gcom.cobranca.contratoparcelamento.TipoRelacao;
import gcom.cobranca.parcelamento.Parcelamento;
import gcom.cobranca.parcelamento.ParcelamentoSituacao;
import gcom.fachada.Fachada;
import gcom.faturamento.credito.CreditoARealizar;
import gcom.faturamento.credito.CreditoOrigem;
import gcom.faturamento.debito.DebitoACobrar;
import gcom.faturamento.debito.DebitoTipo;
import gcom.financeiro.FinanciamentoTipo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.PermissaoEspecial;
import gcom.seguranca.acesso.usuario.FiltroUsuario;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
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;
/**
* Action que define o pr�-processamento da p�gina de Inserir Contrato Parcelamento por Cliente
*
* @author Paulo Diniz
* @created 16/03/2011
*/
public class ExibirInserirContratoParcelamentoPorClienteAction extends GcomAction {
/**
* Este caso de uso permite a inclus�o de um contrato parcelamento por cliente
*
* [UC1136] Inserir Contrato de Parcelamento por Cliente
*
*
* @author Paulo Diniz, Mariana Victor
* @date 04/04/2011, 30/06/2011
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o retorno
ActionForward retorno = actionMapping.findForward("exibirInserir");
String method = httpServletRequest.getParameter("method");
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
//Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
InserirContratoParcelamentoPorClienteActionForm form = (InserirContratoParcelamentoPorClienteActionForm) actionForm;
sessao.removeAttribute("mensagemAlerta");
Collection collTipoRelacao = (Collection) sessao.getAttribute("collTipoRelacao");
if(collTipoRelacao == null){
FiltroTipoRelacao filtroTipoRelacao = new FiltroTipoRelacao();
filtroTipoRelacao.adicionarParametro(new ParametroSimples(FiltroTipoRelacao.INDICADOR_USO, 1));
collTipoRelacao = fachada.pesquisar(filtroTipoRelacao, TipoRelacao.class.getName());
}
sessao.setAttribute("collTipoRelacao", collTipoRelacao);
Collection collRelacaoCliente = (Collection) sessao.getAttribute("collRelacaoCliente");
if(collRelacaoCliente == null){
FiltroClienteRelacaoTipo filtroClienteRelacTipo = new FiltroClienteRelacaoTipo("descricao");
filtroClienteRelacTipo.adicionarParametro(new ParametroSimples(FiltroClienteRelacaoTipo.INDICADOR_USO, 1));
collRelacaoCliente = fachada.pesquisar(filtroClienteRelacTipo, ClienteRelacaoTipo.class.getName());
}
sessao.setAttribute("collRelacaoCliente", collRelacaoCliente);
boolean permissaoEspecial = Fachada.getInstancia().verificarPermissaoEspecial(
PermissaoEspecial.CONSULTAR_DEBITOS_ATUAL_DO_IMOVEL_OU_TODOS,
usuarioLogado);
sessao.setAttribute("permissaoEspecial", permissaoEspecial);
boolean permissaoEspecialDebitoAcrescimos = Fachada.getInstancia().verificarPermissaoEspecial(
PermissaoEspecial.PARCELAR_SEM_INCLUIR_ACRESCIMOS_POR_IMPONTUALIDADE,
usuarioLogado);
sessao.setAttribute("permissaoEspecialDebitoAcrescimos", permissaoEspecialDebitoAcrescimos);
ContratoParcelamento contratoCadastrar = (ContratoParcelamento) sessao.getAttribute("contratoCadastrar");
if (contratoCadastrar == null) {
sessao.setAttribute("etapa", "primeira");
contratoCadastrar = new ContratoParcelamento();
contratoCadastrar.setDataContrato(new Date());
contratoCadastrar.setAnoMesDebitoFinal(this.getSistemaParametro().getAnoMesArrecadacao());
GregorianCalendar dataVencPrimeiraParc = new GregorianCalendar();
if(dataVencPrimeiraParc.get(Calendar.DAY_OF_MONTH) > 28){
dataVencPrimeiraParc.set(Calendar.MONTH, dataVencPrimeiraParc.get(Calendar.MONTH) + 1);
dataVencPrimeiraParc.set(Calendar.DAY_OF_MONTH, 28);
}else{
dataVencPrimeiraParc.set(Calendar.DAY_OF_MONTH, 28);
}
contratoCadastrar.setIndicadorDebitosAcrescimos(new Short("1"));
contratoCadastrar.setIndicadorParcelamentoJuros(new Short("1"));
contratoCadastrar.setIndicadorPermiteInformarValorParcel(new Short("2"));
contratoCadastrar.setDataVencimentoPrimParcela(dataVencPrimeiraParc.getTime());
}
if (httpServletRequest.getParameter("consulta") != null
&& httpServletRequest.getParameter("consulta").toString().trim().equalsIgnoreCase("usuario")) {
carregarCamposDoFormulario(form, sessao);
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN, form.getLoginUsuario()));
Collection colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName());
// [FS0009] - Verificar exist�ncia do usu�rio
if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) {
Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario);
form.setNomeUsuario(usuario.getNomeUsuario());
form.setLoginUsuario(usuario.getLogin());
contratoCadastrar.setUsuarioResponsavel(usuario);
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
sessao.setAttribute("usuarioEncontrado","true");
} else {
sessao.removeAttribute("usuarioEncontrado");
form.setLoginUsuario("");
form.setNomeUsuario("Usu�rio Inexistente");
contratoCadastrar.setUsuarioResponsavel(null);
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
}
sessao.setAttribute("etapa", "primeira");
} else if (httpServletRequest.getParameter("consulta") != null
&& httpServletRequest.getParameter("consulta").toString().trim().equalsIgnoreCase("contratoAnterior")) {
carregarCamposDoFormulario(form, sessao);
FiltroContratoParcelamento filtro = new FiltroContratoParcelamento();
filtro.adicionarCaminhoParaCarregamentoEntidade("parcelamentoSituacao");
filtro.adicionarParametro(new ComparacaoTexto(FiltroContratoParcelamento.NUMERO, form.getNumeroContratoAnt()));
Collection<ContratoParcelamento> contratos = fachada.pesquisar(filtro, ContratoParcelamento.class.getName());
// [FS0008] � Verificar exist�ncia do contrato anterior
if(contratos == null || contratos.isEmpty()){
form.setNumeroContratoAnt("");
contratoCadastrar.setContratoAnterior(null);
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
throw new ActionServletException(
"atencao.numero.contrato.nao.existe");
} else {
// [FS0036] - Verificar situa��o do contrato anterior
ContratoParcelamento contrato = (ContratoParcelamento) Util.retonarObjetoDeColecao(contratos);
if(contrato.getParcelamentoSituacao().getId().compareTo(ParcelamentoSituacao.NORMAL) == 0){
throw new ActionServletException(
"atencao.contrato.parcelamento.anterior.nao.encerrado");
}
contratoCadastrar.setContratoAnterior(contrato);
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
}
sessao.setAttribute("etapa", "primeira");
} else if(method == null || method.equals("")){
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
} else if(method != null && method.equals("desfazerContrato")){
sessao.removeAttribute("clienteContrato");
sessao.removeAttribute("clienteSuperiorContrato");
sessao.removeAttribute("listaDeParcelas");
sessao.removeAttribute("listaValoresDistintos");
sessao.removeAttribute("listaDeParcelasPopUp");
sessao.removeAttribute("listaValoresDistintosPopUp");
sessao.removeAttribute("numeroParcelasPopUp");
sessao.removeAttribute("colecaoQuantidadePrestacoesRDHelper");
sessao.removeAttribute("finalizou");
sessao.setAttribute("etapa", "primeira");
form.setLoginUsuario("");
form.setNomeUsuario("");
contratoCadastrar = new ContratoParcelamento();
contratoCadastrar.setDataContrato(new Date());
contratoCadastrar.setAnoMesDebitoFinal(this.getSistemaParametro().getAnoMesArrecadacao());
GregorianCalendar dataVencPrimeiraParc = new GregorianCalendar();
if(dataVencPrimeiraParc.get(Calendar.DAY_OF_MONTH) > 28){
dataVencPrimeiraParc.set(Calendar.MONTH, dataVencPrimeiraParc.get(Calendar.MONTH) + 1);
dataVencPrimeiraParc.set(Calendar.DAY_OF_MONTH, 28);
}else{
dataVencPrimeiraParc.set(Calendar.DAY_OF_MONTH, 28);
}
contratoCadastrar.setIndicadorDebitosAcrescimos(new Short("1"));
contratoCadastrar.setIndicadorParcelamentoJuros(new Short("1"));
contratoCadastrar.setIndicadorPermiteInformarValorParcel(new Short("2"));
contratoCadastrar.setDataVencimentoPrimParcela(dataVencPrimeiraParc.getTime());
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
}else if(method != null && method.equals("mostrarPrimeiraEtapa")){
carregarCamposDoFormulario(form, sessao);
//validarCampos(form, sessao, method);
sessao.setAttribute("etapa", "primeira");
}else if(method != null && method.equals("mostrarSegundaEtapa")){
carregarCamposDoFormulario(form, sessao);
validarCampos(form, sessao, method);
calcularDebitosCliente(sessao);
sessao.setAttribute("etapa", "segunda");
} else if (httpServletRequest.getParameter("method") != null
&& httpServletRequest.getParameter("method")
.toString().trim().equalsIgnoreCase("limparTotalizacaoParcelas")) {
carregarCamposDoFormulario(form, sessao);
this.removerValoresParcelas(sessao, form, false);
} else if (httpServletRequest.getParameter("method") != null
&& httpServletRequest.getParameter("method")
.toString().trim().equalsIgnoreCase("limparListaParcelas")) {
carregarCamposDoFormulario(form, sessao);
this.removerValoresParcelas(sessao, form, true);
} else if(method != null && method.equals("mostrarTerceiraEtapa")){
carregarCamposDoFormulario(form, sessao);
if(sessao.getAttribute("collResolucoesDiretoria") == null){
FiltroContratoParcelamentoRD filtro = new FiltroContratoParcelamentoRD(FiltroContratoParcelamentoRD.NUMERO);
Collection<ContratoParcelamentoRD> resolucoesDiretoria = fachada.pesquisar(filtro, ContratoParcelamentoRD.class.getName());
sessao.setAttribute("collResolucoesDiretoria", resolucoesDiretoria);
}
if(sessao.getAttribute("collFormaPgto") == null){
FiltroCobrancaForma filtroCobranca = new FiltroCobrancaForma();
filtroCobranca.adicionarParametro(new ParametroSimples(FiltroCobrancaForma.IC_USO_CONTRATO_PARCEL_CLIENTE, "1"));
Collection coll = fachada.pesquisar(filtroCobranca, CobrancaForma.class.getName());
sessao.setAttribute("collFormaPgto", coll);
}
if(sessao.getAttribute("finalizou") == null){
sessao.setAttribute("finalizou", true);
}
List<QuantidadePrestacoesRDHelper> colecaoQuantidadePrestacoesRDHelper = (List<QuantidadePrestacoesRDHelper>) sessao.getAttribute("colecaoQuantidadePrestacoesRDHelper");
if(form.getPacerlaAdd() != null && !form.getPacerlaAdd().equals("") &&
(colecaoQuantidadePrestacoesRDHelper == null || colecaoQuantidadePrestacoesRDHelper.size() == 0)){
List<PrestacaoContratoParcelamento> listaDeParcelas = (List<PrestacaoContratoParcelamento>) sessao.getAttribute("listaDeParcelas");
//[FS0029]
if(contratoCadastrar.getResolucaoDiretoria() != null){
verificaNumeroParcelasComRD(listaDeParcelas, contratoCadastrar.getResolucaoDiretoria(), form, sessao, "terceira");
}else{
verificaNumeroParcelasSemRD(listaDeParcelas, form, sessao, "terceira");
}
calcularListaParcelasDiretoTela(form, sessao);
}else{
sessao.removeAttribute("listaDeParcelas");
sessao.removeAttribute("listaValoresDistintos");
}
String numeroParcelasPopUp = httpServletRequest.getParameter("numeroParcelasPopUp");
if(numeroParcelasPopUp != null && !numeroParcelasPopUp.equals("") ){
sessao.setAttribute("numeroParcelasPopUp", form.getNumeroParcelasPopUp());
sessao.setAttribute("etapa", "informarParcela");
}
String indicadorTela = httpServletRequest.getParameter("indicadorTela");
if(indicadorTela != null && indicadorTela.equals("popup")){
sessao.setAttribute("etapa", "informarParcela");
sessao.removeAttribute("listaDeParcelasPopUp");
sessao.removeAttribute("listaValoresDistintosPopUp");
sessao.setAttribute("valorParcelTotal", new BigDecimal(0));
}else{
sessao.setAttribute("etapa", "terceira");
}
String escolheuRD = httpServletRequest.getParameter("escolheuRD");
if(escolheuRD != null && !escolheuRD.equals("") && escolheuRD.equals("true")){
contratoCadastrar.setValorTotalParcelado(null);
contratoCadastrar.setValorParcelamentoACobrar(null);
}
}else if(method != null && method.equals("inserirParcela")){
carregarCamposDoFormulario(form, sessao);
String parcelaInicial = httpServletRequest.getParameter("parcelaInicial");
String parcelaFinal = httpServletRequest.getParameter("parcelaFinal");
String valorParcela = httpServletRequest.getParameter("valorParcela");
String numeroParcelasPopUp = httpServletRequest.getParameter("numeroParcelasPopUp");
List<PrestacaoContratoParcelamento> listaDeParcelasPopUp = (List<PrestacaoContratoParcelamento>) sessao.getAttribute("listaDeParcelasPopUp");
if(listaDeParcelasPopUp == null){
listaDeParcelasPopUp = new ArrayList<PrestacaoContratoParcelamento>();
}
//[FS0024]
verificaNumeroParcelas(numeroParcelasPopUp, parcelaInicial, parcelaFinal, listaDeParcelasPopUp, sessao);
List<Float> listaValoresDistintosPopUp = (List<Float>) sessao.getAttribute("listaValoresDistintosPopUp");
if(listaValoresDistintosPopUp == null){
listaValoresDistintosPopUp = new ArrayList<Float>();
}
if(!listaDeParcelasPopUp.isEmpty()){
//verifica se a(s) parcelas a serem adicionas estao na sequencia correta, comparando com a ultima parcela da lista
if(listaDeParcelasPopUp.get(listaDeParcelasPopUp.size()-1).getNumero() +1 == Integer.parseInt(parcelaInicial)){
int numeroParcelInicial = Integer.parseInt(parcelaInicial);
int numeroParcelFinal = Integer.parseInt(parcelaFinal);
valorParcela = valorParcela.replace(".", "");
valorParcela = valorParcela.replace(",", ".");
for(;numeroParcelInicial <= numeroParcelFinal; numeroParcelInicial++){
PrestacaoContratoParcelamento prestacao = new PrestacaoContratoParcelamento();
prestacao.setNumero(numeroParcelInicial);
BigDecimal valorParcelaBigDec = new BigDecimal("0");
try{
valorParcelaBigDec = new BigDecimal(valorParcela);
}catch (Exception e) {
ActionServletException ex = new ActionServletException(
"atencao.campo.numero.parcelas.invalido", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "terceira");
throw ex;
}
prestacao.setValor(valorParcelaBigDec);
listaDeParcelasPopUp.add(prestacao);
}
if(listaValoresDistintosPopUp.isEmpty() || new BigDecimal(valorParcela).floatValue() != listaValoresDistintosPopUp.get(listaValoresDistintosPopUp.size()-1)){
listaValoresDistintosPopUp.add(new BigDecimal(valorParcela).floatValue());
}
}else{
ActionServletException ex = new ActionServletException("atencao.lista.parcelas.descontinuas",null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "informarParcela");
throw ex;
}
}else{
int numeroParcelInicial = Integer.parseInt(parcelaInicial);
int numeroParcelFinal = Integer.parseInt(parcelaFinal);
if(numeroParcelInicial != 1){
ActionServletException ex = new ActionServletException("atencao.lista.parcelas.descontinuas",null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "informarParcela");
throw ex;
}
valorParcela = valorParcela.replace(".", "");
valorParcela = valorParcela.replace(",", ".");
for(;numeroParcelInicial <= numeroParcelFinal; numeroParcelInicial++){
PrestacaoContratoParcelamento prestacao = new PrestacaoContratoParcelamento();
prestacao.setNumero(numeroParcelInicial);
BigDecimal valorParcelaBigDec = new BigDecimal("0");
try{
valorParcelaBigDec = new BigDecimal(valorParcela);
}catch (Exception e) {
ActionServletException ex = new ActionServletException(
"atencao.campo.numero.parcelas.invalido", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "terceira");
throw ex;
}
prestacao.setValor(valorParcelaBigDec);
listaDeParcelasPopUp.add(prestacao);
}
listaValoresDistintosPopUp.add(new BigDecimal(valorParcela).floatValue());
}
Collections.sort(listaDeParcelasPopUp, new ComparatorPrestacaoContratoParcelamento());
BigDecimal valorParcelTotal = new BigDecimal(0);
for (PrestacaoContratoParcelamento prestacaoContratoParcelamento : listaDeParcelasPopUp) {
valorParcelTotal = valorParcelTotal.add(prestacaoContratoParcelamento.getValor());
}
sessao.setAttribute("listaDeParcelasPopUp", listaDeParcelasPopUp);
sessao.setAttribute("numeroParcelasPopUp", numeroParcelasPopUp);
sessao.setAttribute("listaValoresDistintosPopUp", listaValoresDistintosPopUp);
sessao.setAttribute("etapa", "informarParcela");
sessao.setAttribute("valorParcelTotal", valorParcelTotal);
}else if(method != null && method.equals("cancelarParcela")){
carregarCamposDoFormulario(form, sessao);
sessao.removeAttribute("listaDeParcelasPopUp");
sessao.removeAttribute("listaValoresDistintosPopUp");
sessao.removeAttribute("numeroParcelasPopUp");
sessao.setAttribute("valorParcelTotal", new BigDecimal(0));
sessao.setAttribute("etapa", "terceira");
}else if(method != null && method.equals("removerParcela")){
carregarCamposDoFormulario(form, sessao);
String parcelaInicial = httpServletRequest.getParameter("parcelaInicial");
String parcelaFinal = httpServletRequest.getParameter("parcelaFinal");
String grupoValoresRemover = httpServletRequest.getParameter("grupoValoresRemover");
List<PrestacaoContratoParcelamento> listaDeParcelasPopUp = (List<PrestacaoContratoParcelamento>) sessao.getAttribute("listaDeParcelasPopUp");
int numInicial = Integer.parseInt(parcelaInicial);
int numFinal = Integer.parseInt(parcelaFinal);
for(int i = 0; i < listaDeParcelasPopUp.size(); i++){
if(listaDeParcelasPopUp.get(i).getNumero().intValue() >= numInicial
&& listaDeParcelasPopUp.get(i).getNumero().intValue() <= numFinal){
listaDeParcelasPopUp.remove(i);
i--;
}
}
List<Float> listaValoresDistintosPopUp = (List<Float>) sessao.getAttribute("listaValoresDistintosPopUp");
listaValoresDistintosPopUp.remove(Integer.parseInt(grupoValoresRemover));
Collections.sort(listaDeParcelasPopUp, new ComparatorPrestacaoContratoParcelamento());
BigDecimal valorParcelTotal = new BigDecimal(0);
for (PrestacaoContratoParcelamento prestacaoContratoParcelamento : listaDeParcelasPopUp) {
valorParcelTotal = valorParcelTotal.add(prestacaoContratoParcelamento.getValor());
}
sessao.setAttribute("listaDeParcelasPopUp", listaDeParcelasPopUp);
sessao.setAttribute("listaValoresDistintosPopUp", listaValoresDistintosPopUp);
sessao.setAttribute("etapa", "informarParcela");
sessao.setAttribute("valorParcelTotal", valorParcelTotal);
}else if(method != null && method.equals("informarParcela")){
carregarCamposDoFormulario(form, sessao);
List<PrestacaoContratoParcelamento> listaDeParcelasPopUp = (List<PrestacaoContratoParcelamento>) sessao.getAttribute("listaDeParcelasPopUp");
List<Float> listaValoresDistintosPopUp = (List<Float>) sessao.getAttribute("listaValoresDistintosPopUp");
BigDecimal valorParcelado = null;
valorParcelado = (BigDecimal) sessao.getAttribute("valorContaSelecaoTotal");
//[FS0025]
verificaValorParceladoTotal(listaDeParcelasPopUp, valorParcelado);
//[FS0026]
verificaContinuidadeParcelas(listaDeParcelasPopUp);
//[FS0029]
if(contratoCadastrar.getResolucaoDiretoria() != null){
verificaNumeroParcelasComRD(listaDeParcelasPopUp, contratoCadastrar.getResolucaoDiretoria(), form, sessao, "informarParcela");
}else{
verificaNumeroParcelasSemRD(listaDeParcelasPopUp, form, sessao, "informarParcela");
}
contratoCadastrar.setValorTotalParcelado(valorParcelado);
contratoCadastrar.setValorParcelamentoACobrar(valorParcelado);
sessao.setAttribute("listaDeParcelas", listaDeParcelasPopUp);
sessao.setAttribute("listaValoresDistintos", listaValoresDistintosPopUp);
sessao.setAttribute("etapa", "informouParcelas");
}
if(form.getSelecionouContas() == null || !form.getSelecionouContas().trim().equalsIgnoreCase("sim")) {
form.setContasSelecao(null);
sessao.removeAttribute("listaDebitos");
}
if(form.getSelecionouDebitosACobrar() == null || !form.getSelecionouDebitosACobrar().trim().equalsIgnoreCase("sim")) {
form.setDebitosACobrar(null);
sessao.removeAttribute("listaDebitosACobrar");
}
if (contratoCadastrar != null
&& (contratoCadastrar.getResolucaoDiretoria() != null
&& sessao.getAttribute("colecaoQuantidadePrestacoesRDHelper") != null
&& !sessao.getAttribute("colecaoQuantidadePrestacoesRDHelper").equals(""))) {
sessao.setAttribute("numeroParcelasDesabilitada", true);
} else {
sessao.removeAttribute("numeroParcelasDesabilitada");
}
if (contratoCadastrar.getIndicadorParcelamentoJuros() == null
|| contratoCadastrar.getIndicadorParcelamentoJuros().compareTo(ConstantesSistema.NAO) == 0
|| (contratoCadastrar.getResolucaoDiretoria() != null && contratoCadastrar.getResolucaoDiretoria().getId() != null
&& sessao.getAttribute("colecaoQuantidadePrestacoesRDHelper") != null && !sessao.getAttribute("colecaoQuantidadePrestacoesRDHelper").toString().trim().equals(""))) {
sessao.setAttribute("taxaJurosDesabilitada", true);
} else {
sessao.removeAttribute("taxaJurosDesabilitada");
}
return retorno;
}
/**Inicio dos metodos privados**/
private void carregarCamposDoFormulario(InserirContratoParcelamentoPorClienteActionForm form, HttpSession sessao){
ContratoParcelamento contratoCadastrar = (ContratoParcelamento) sessao.getAttribute("contratoCadastrar");
Fachada fachada = Fachada.getInstancia();
if(form.getSelecionouContas() == null || !form.getSelecionouContas().trim().equalsIgnoreCase("sim")) {
form.setContasSelecao(null);
sessao.removeAttribute("listaDebitos");
}
if(form.getSelecionouDebitosACobrar() == null || !form.getSelecionouDebitosACobrar().trim().equalsIgnoreCase("sim")) {
form.setDebitosACobrar(null);
sessao.removeAttribute("listaDebitosACobrar");
}
if (contratoCadastrar == null) {
contratoCadastrar = new ContratoParcelamento();
}
if (form.getNumeroContrato() != null && !"".equals(form.getNumeroContrato())){
contratoCadastrar.setNumero(form.getNumeroContrato());
}else{
contratoCadastrar.setNumero(null);
}
if (form.getNumeroContratoAnt() != null && !"".equals(form.getNumeroContratoAnt())){
FiltroContratoParcelamento filtro = new FiltroContratoParcelamento();
filtro.adicionarParametro(new ComparacaoTexto(FiltroContratoParcelamento.NUMERO, form.getNumeroContratoAnt()));
Collection<ContratoParcelamento> contratos = fachada.pesquisar(filtro, ContratoParcelamento.class.getName());
if(contratos != null && contratos.size() == 1){
contratoCadastrar.setContratoAnterior(contratos.iterator().next());
}
if(form.getRelacaoAnterior() != null && !form.getRelacaoAnterior().equals("")){
TipoRelacao relacao = new TipoRelacao();
relacao.setId(Integer.parseInt(form.getRelacaoAnterior()));
contratoCadastrar.setRelacaoAnterior(relacao);
}
}else{
contratoCadastrar.setContratoAnterior(null);
}
if (form.getDataContrato() != null && !"".equals(form.getDataContrato())){
contratoCadastrar.setDataContrato(Util.converteStringParaDate(form.getDataContrato()));
}else{
contratoCadastrar.setDataContrato(null);
}
if (form.getLoginUsuario() != null && !form.getLoginUsuario().toString().trim().equals("")){
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN, form.getLoginUsuario()));
Collection colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName());
if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) {
Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario);
contratoCadastrar.setUsuarioResponsavel(usuario);
} else {
contratoCadastrar.setUsuarioResponsavel(null);
}
}else{
contratoCadastrar.setUsuarioResponsavel(null);
}
if (form.getAutocompleteCliente() != null && !"".equals(form.getAutocompleteCliente())
&& form.getAutocompleteCliente().contains("-")){
ContratoParcelamentoCliente clienteContrato = new ContratoParcelamentoCliente();
int id = Integer.parseInt(form.getAutocompleteCliente().split(" - ")[0].trim());
Cliente cliente = fachada.pesquisarClienteDigitado(id);
clienteContrato.setCliente(cliente);
sessao.setAttribute("clienteContrato", clienteContrato);
sessao.setAttribute("tipoConsulta", "cliente");
form.setAutocompleteCliente("");
}else{
sessao.removeAttribute("clienteContrato");
sessao.removeAttribute("tipoConsulta");
}
if (form.getAutocompleteClienteSuperior() != null && !"".equals(form.getAutocompleteClienteSuperior())
&& form.getAutocompleteClienteSuperior().contains("-")){
ContratoParcelamentoCliente clienteSuperiorContrato = new ContratoParcelamentoCliente();
int id = Integer.parseInt(form.getAutocompleteClienteSuperior().split(" - ")[0].trim());
Cliente cliente = fachada.pesquisarClienteDigitado(id);
clienteSuperiorContrato.setCliente(cliente);
sessao.setAttribute("clienteSuperiorContrato", clienteSuperiorContrato);
sessao.setAttribute("tipoConsulta", "clienteSuperior");
form.setAutocompleteClienteSuperior("");
}else{
sessao.removeAttribute("clienteSuperiorContrato");
sessao.removeAttribute("tipoConsulta");
}
if(form.getRelacaoCliente() != null && !form.getRelacaoCliente().equals("") ){
ClienteRelacaoTipo relacaoCliente = new ClienteRelacaoTipo();
if(form.getRelacaoCliente().equals("" + ClienteRelacaoTipo.PROPRIETARIO)){
relacaoCliente.setId(ClienteRelacaoTipo.PROPRIETARIO.intValue());
}else if(form.getRelacaoCliente().equals("" + ClienteRelacaoTipo.RESPONSAVEL)){
relacaoCliente.setId(ClienteRelacaoTipo.RESPONSAVEL.intValue());
}else if(form.getRelacaoCliente().equals("" + ClienteRelacaoTipo.USUARIO)){
relacaoCliente.setId(ClienteRelacaoTipo.USUARIO.intValue());
}
contratoCadastrar.setRelacaoCliente(relacaoCliente);
}else{
contratoCadastrar.setRelacaoCliente(null);
}
if(form.getIndicadorResponsavel() != null && !form.getIndicadorResponsavel().equals("")){
if(form.getIndicadorResponsavel().equals("" + ContratoParcelamento.RESP_ATUAL_DO_IMOVEL)){
contratoCadastrar.setIndicadorResponsavel(ContratoParcelamento.RESP_ATUAL_DO_IMOVEL);
}else if(form.getIndicadorResponsavel().equals("" + ContratoParcelamento.RESP_INDICADOR_NA_CONTA)){
contratoCadastrar.setIndicadorResponsavel(ContratoParcelamento.RESP_INDICADOR_NA_CONTA);
}else if(form.getIndicadorResponsavel().equals("" + ContratoParcelamento.RESP_TODOS)){
contratoCadastrar.setIndicadorResponsavel(ContratoParcelamento.RESP_TODOS);
}
}
if(form.getDataVencimentoInicio() != null && !form.getDataVencimentoInicio().equals("")){
Date dataVencimentoInicio = Util.converteStringParaDate(form.getDataVencimentoInicio());
contratoCadastrar.setDataVencimentoInicio(dataVencimentoInicio);
}else{
contratoCadastrar.setDataVencimentoInicio(null);
}
if(form.getDataVencimentoFinal() != null && !form.getDataVencimentoFinal().equals("")){
Date dataVencimentoFinal = Util.converteStringParaDate(form.getDataVencimentoFinal());
contratoCadastrar.setDataVencimentoFinal(dataVencimentoFinal);
}else{
contratoCadastrar.setDataVencimentoFinal(null);
}
if(form.getAnoMesDebitoInicio() != null && !form.getAnoMesDebitoInicio().equals("")){
boolean mesAnoValido = Util.validarMesAno(form.getAnoMesDebitoInicio());
if(mesAnoValido){
String anoMes = form.getAnoMesDebitoInicio().replace("/", "");
anoMes = anoMes.substring(2,6) + anoMes.substring(0,2);
contratoCadastrar.setAnoMesDebitoInicio(Integer.parseInt(anoMes));
}
}else{
contratoCadastrar.setAnoMesDebitoInicio(null);
}
if(form.getAnoMesDebitoFinal() != null && !form.getAnoMesDebitoFinal().equals("")){
boolean mesAnoValido = Util.validarMesAno(form.getAnoMesDebitoFinal());
if(mesAnoValido){
String anoMes = form.getAnoMesDebitoFinal().replace("/", "");
anoMes = anoMes.substring(2,6) + anoMes.substring(0,2);
contratoCadastrar.setAnoMesDebitoFinal(Integer.parseInt(anoMes));
}
}else{
contratoCadastrar.setAnoMesDebitoFinal(null);
}
if(form.getObservacao() != null && !form.getObservacao().equals("")){
contratoCadastrar.setObservacao(form.getObservacao());
}else{
contratoCadastrar.setObservacao(null);
}
//[SB0002] ? Informar D�bitos do Cliente
// 3. Usu�rio seleciona os itens que ir�o compor o d�bito a ser negociado
// 3.1. O sistema cria uma lista de d�bitos com os itens selecionados pelo usu�rio
// para composi��o do d�bito a ser negociado com os seguintes dados:
BigDecimal valorContaSelecaoTotal = BigDecimal.ZERO;
BigDecimal valorContaAcrescimoSelecaoTotal = BigDecimal.ZERO;
if(form.getContasSelecao() != null && form.getContasSelecao().length > 0){
Collection<ContaValoresHelper> colecaoContaValores = (Collection<ContaValoresHelper>) sessao.getAttribute("colecaoContaValores");
BigDecimal valorConta = new BigDecimal(0);
BigDecimal valorAcresc = new BigDecimal(0);
List<DebitosClienteHelper> listaDebitos = new ArrayList<DebitosClienteHelper>();
String contasPagasAMenor = "";
if(colecaoContaValores != null){
for (ContaValoresHelper contaValoresHelper : colecaoContaValores) {
if(form.verificaContaSelecionada(contaValoresHelper.getConta().getId().intValue())){
if (contaValoresHelper.getValorPago() != null && contaValoresHelper.getValorPago().compareTo(BigDecimal.ZERO) > 0) {
contasPagasAMenor += contaValoresHelper.getConta().getImovel().getId()
+ " - " + contaValoresHelper.getConta().getReferenciaFormatada() + ", ";
}
DebitosClienteHelper debito = new DebitosClienteHelper();
//3.1.1. Tipo do Documento
debito.setTipoDocumento(DocumentoTipo.CONTA);
//3.1.2. Identifica��o do Item
debito.setIdentificadorItem(contaValoresHelper.getConta().getId());
//3.1.3. Valor do Item
debito.setValorItem(contaValoresHelper.getConta().getValorTotal());
//3.1.4. Valor Atualiza��o Monet�ria do Item
debito.setValorAcrescImpont(contaValoresHelper.getValorTotalContaValores());
listaDebitos.add(debito);
valorConta = valorConta.add(contaValoresHelper.getConta().getValorTotal());
valorAcresc = valorAcresc.add(contaValoresHelper.getValorTotalContaValores());
}
}
if (contasPagasAMenor != null && !contasPagasAMenor.trim().equals("")) {
contasPagasAMenor = contasPagasAMenor.substring(0, contasPagasAMenor.length() - 2);
throw new ActionServletException(
"atencao.contas.pagas.a.menor", contasPagasAMenor);
}
valorContaSelecaoTotal = valorContaSelecaoTotal.add(valorConta);
valorContaAcrescimoSelecaoTotal = valorContaAcrescimoSelecaoTotal.add(valorAcresc.add(valorConta));
sessao.setAttribute("listaDebitos",listaDebitos);
sessao.setAttribute("valorContaSelecao",valorConta);
sessao.setAttribute("valorAcrescimoSelecao",valorAcresc);
sessao.setAttribute("valorContaAcrescimoSelecao",valorAcresc.add(valorConta));
}
}else{
sessao.removeAttribute("listaDebitos");
sessao.setAttribute("valorContaSelecao",BigDecimal.ZERO);
sessao.setAttribute("valorAcrescimoSelecao",BigDecimal.ZERO);
sessao.setAttribute("valorContaAcrescimoSelecao",BigDecimal.ZERO);
}
if(form.getDebitosACobrar() != null && form.getDebitosACobrar().length > 0){
Collection<DebitoACobrar> colecaoDebitoACobrar = (Collection<DebitoACobrar>) sessao.getAttribute("colecaoDebitoACobrar");
BigDecimal valorDebitosACobrarSelecao = new BigDecimal(0);
List<DebitosClienteHelper> listaDebitosACobrar = new ArrayList<DebitosClienteHelper>();
if(colecaoDebitoACobrar != null){
String debitosPagosAMenor = "";
for (DebitoACobrar debitoACobrar : colecaoDebitoACobrar) {
if(form.verificaDebitoACobrarSelecionado(debitoACobrar.getId().intValue())){
Object[] dadosDebitoPagoAMenor = fachada.obterDadosDebitoACobrarPagoAMenor(
debitoACobrar.getId());
if (dadosDebitoPagoAMenor != null) {
debitosPagosAMenor += dadosDebitoPagoAMenor[0]
+ " - " + dadosDebitoPagoAMenor[1] + ", ";
}
DebitosClienteHelper debito = new DebitosClienteHelper();
//3.1.1. Tipo do Documento
debito.setTipoDocumento(DocumentoTipo.DEBITO_A_COBRAR);
//3.1.2. Identifica��o do Item
debito.setIdentificadorItem(debitoACobrar.getId());
//3.1.3. Valor do Item
debito.setValorItem(debitoACobrar.getValorTotal());
//3.1.4. Valor Atualiza��o Monet�ria do Item
debito.setValorAcrescImpont(null);
listaDebitosACobrar.add(debito);
valorDebitosACobrarSelecao = valorDebitosACobrarSelecao.add(debitoACobrar.getValorTotal());
}
}
valorContaSelecaoTotal = valorContaSelecaoTotal.add(valorDebitosACobrarSelecao);
valorContaAcrescimoSelecaoTotal = valorContaAcrescimoSelecaoTotal.add(valorDebitosACobrarSelecao);
sessao.setAttribute("listaDebitosACobrar",listaDebitosACobrar);
sessao.setAttribute("valorDebitosACobrarSelecao",valorDebitosACobrarSelecao);
if (debitosPagosAMenor != null && !debitosPagosAMenor.trim().equals("")) {
debitosPagosAMenor = debitosPagosAMenor.substring(0, debitosPagosAMenor.length() - 2);
throw new ActionServletException(
"atencao.debito_a_cobrar.pagos.a.menor", debitosPagosAMenor);
}
}
} else {
sessao.removeAttribute("listaDebitosACobrar");
sessao.setAttribute("valorDebitosACobrarSelecao",BigDecimal.ZERO);
}
sessao.setAttribute("valorContaSelecaoTotal",valorContaSelecaoTotal);
sessao.setAttribute("valorContaAcrescimoSelecaoTotal",valorContaAcrescimoSelecaoTotal);
if(form.getResolucaoDiretoria() != null && !form.getResolucaoDiretoria().equals("")){
ContratoParcelamentoRD resolucao = fachada.pesquisarContratoParcelamentoRDPorNumero(form.getResolucaoDiretoria());
contratoCadastrar.setResolucaoDiretoria(resolucao);
contratoCadastrar.setIndicadorDebitosAcrescimos(resolucao.getIndicadorDebitoAcrescimo());
contratoCadastrar.setIndicadorParcelamentoJuros(resolucao.getIndicadorParcelamentoJuros());
contratoCadastrar.setIndicadorPermiteInformarValorParcel(resolucao.getIndicadorInformarParcela());
contratoCadastrar.setCobrancaForma(resolucao.getCobrancaForma());
List<QuantidadePrestacoes> parcelas = null;
FiltroQuantidadePrestacoes filtroQtdPrestacoes = new FiltroQuantidadePrestacoes(FiltroQuantidadePrestacoes.QTD_FATURAS_PARCELADAS);
filtroQtdPrestacoes.adicionarParametro(new ComparacaoTexto(
FiltroQuantidadePrestacoes.CONTRATO_PARCELAMENTO_RD_NUMERO, contratoCadastrar.getResolucaoDiretoria().getNumero().toUpperCase()));
parcelas = new ArrayList<QuantidadePrestacoes>(fachada.pesquisar(filtroQtdPrestacoes,QuantidadePrestacoes.class.getName()));
Collections.sort(parcelas, new ComparatorParcela());
if(parcelas == null || parcelas.size() <= 0){
sessao.removeAttribute("colecaoQuantidadePrestacoesRDHelper");
} else {
Iterator iterator = parcelas.iterator();
BigDecimal valorContaSelecao = (BigDecimal) sessao.getAttribute("valorContaSelecaoTotal");
BigDecimal valorContaComAcrescimo = (BigDecimal) sessao.getAttribute("valorContaAcrescimoSelecaoTotal");
Collection<QuantidadePrestacoesRDHelper> colecaoQuantidadePrestacoesRDHelper =
new ArrayList<QuantidadePrestacoesRDHelper>();
while(iterator.hasNext()) {
QuantidadePrestacoes quantidadePrestacoes = (QuantidadePrestacoes) iterator.next();
QuantidadePrestacoesRDHelper quantidadePrestacoesRDHelper = new QuantidadePrestacoesRDHelper();
InserirContratoParcelamentoValoresParcelasHelper helper = fachada
.calcularValoresParcelasContratoParcelamentoRD(valorContaSelecao, valorContaComAcrescimo,
form.getIndicadorDebitoAcresc(), form.getIndicadorParcelJuros(), contratoCadastrar,
quantidadePrestacoes);
quantidadePrestacoesRDHelper.setIdQuantidadePrestacoes(quantidadePrestacoes.getId());
quantidadePrestacoesRDHelper.setTaxaJuros(quantidadePrestacoes.getTaxaJuros());
quantidadePrestacoesRDHelper.setQuantidadeParcelas(quantidadePrestacoes.getQtdFaturasParceladas());
quantidadePrestacoesRDHelper.setValorDaParcela(
helper.getValorParcelado().divide(new BigDecimal(
quantidadePrestacoes.getQtdFaturasParceladas())));
colecaoQuantidadePrestacoesRDHelper.add(quantidadePrestacoesRDHelper);
}
sessao.setAttribute("colecaoQuantidadePrestacoesRDHelper", colecaoQuantidadePrestacoesRDHelper);
}
sessao.removeAttribute("listaDeParcelas");
sessao.removeAttribute("listaValoresDistintos");
}else{
contratoCadastrar.setResolucaoDiretoria(null);
sessao.removeAttribute("colecaoQuantidadePrestacoesRDHelper");
if(form.getIndicadorDebitoAcresc() != null && !form.getIndicadorDebitoAcresc().equals("")){
contratoCadastrar.setIndicadorDebitosAcrescimos(Short.parseShort(form.getIndicadorDebitoAcresc()));
}
if(form.getIndicadorParcelJuros() != null && !form.getIndicadorParcelJuros().equals("")){
contratoCadastrar.setIndicadorParcelamentoJuros(Short.parseShort(form.getIndicadorParcelJuros()));
}
if(form.getIndicadorInfoVlParcel() != null && !form.getIndicadorInfoVlParcel().equals("")){
contratoCadastrar.setIndicadorPermiteInformarValorParcel(Short.parseShort(form.getIndicadorInfoVlParcel()));
}
if(form.getFormaPgto() != null && !form.getFormaPgto().equals("")){
FiltroCobrancaForma filtroCobranca = new FiltroCobrancaForma();
filtroCobranca.adicionarParametro(new ParametroSimples(FiltroCobrancaForma.ID, form.getFormaPgto()));
Collection<CobrancaForma> formasPagto = fachada.pesquisar(filtroCobranca, CobrancaForma.class.getName());
for (CobrancaForma formaPgto : formasPagto) {
if(formaPgto.getId() == Integer.parseInt(form.getFormaPgto())){
contratoCadastrar.setCobrancaForma(formaPgto);
}
}
}else{
contratoCadastrar.setCobrancaForma(null);
}
}
if(form.getDataVencimentoPrimParcela() != null && !form.getDataVencimentoPrimParcela().equals("")){
Date dataVencimentoPrimParcela = Util.converteStringParaDate(form.getDataVencimentoPrimParcela());
contratoCadastrar.setDataVencimentoPrimParcela(dataVencimentoPrimParcela);
}
if(form.getNumeroEntreVencParcelas() != null && !form.getNumeroEntreVencParcelas().equals("")){
contratoCadastrar.setNumeroDiasEntreVencimentoParcel(Integer.parseInt(form.getNumeroEntreVencParcelas()));
}else{
contratoCadastrar.setNumeroDiasEntreVencimentoParcel(null);
}
List<QuantidadePrestacoesRDHelper> colecaoQuantidadePrestacoesRDHelper = (List<QuantidadePrestacoesRDHelper>) sessao.getAttribute("colecaoQuantidadePrestacoesRDHelper");
if(form.getPacerlaAdd() != null && !form.getPacerlaAdd().equals("")
&& (colecaoQuantidadePrestacoesRDHelper == null || colecaoQuantidadePrestacoesRDHelper.size() == 0)){
contratoCadastrar.setNumeroPrestacoes(Integer.parseInt(form.getPacerlaAdd()));
}else{
contratoCadastrar.setNumeroPrestacoes(null);
}
if(form.getTaxaJurosAdd() != null && !form.getTaxaJurosAdd().equals("")
&& (colecaoQuantidadePrestacoesRDHelper == null || colecaoQuantidadePrestacoesRDHelper.size() == 0)){
String juros = form.getTaxaJurosAdd().replace(".", ",");
juros = juros.replace(",", ".");
try{
BigDecimal jurosBigDec = new BigDecimal(juros);
contratoCadastrar.setTaxaJuros(jurosBigDec);
}catch (Exception e) {
contratoCadastrar.setTaxaJuros(null);
}
}else{
contratoCadastrar.setTaxaJuros(null);
}
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
}
private void calcularDebitosCliente(HttpSession sessao) throws ActionServletException{
Fachada fachada = Fachada.getInstancia();
ArrayList<ObterDebitoImovelOuClienteHelper> colecaoClientesDebitosImoveis = new ArrayList<ObterDebitoImovelOuClienteHelper>();
ContratoParcelamentoCliente clienteContrato = (ContratoParcelamentoCliente) sessao.getAttribute("clienteContrato");
ContratoParcelamentoCliente clienteSuperiorContrato = (ContratoParcelamentoCliente) sessao.getAttribute("clienteSuperiorContrato");
ContratoParcelamento contratoCadastrar = (ContratoParcelamento) sessao.getAttribute("contratoCadastrar");
// Para auxiliar na formata��o de uma data
SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
Date dataVencimentoDebitoI;
Date dataVencimentoDebitoF;
try {
dataVencimentoDebitoI = formatoData.parse(contratoCadastrar.getDataVencimentoInicioFormatada());
} catch (ParseException ex) {
dataVencimentoDebitoI = null;
}
try {
dataVencimentoDebitoF = formatoData.parse(contratoCadastrar.getDataVencimentoFinalFormatada());
} catch (ParseException ex) {
dataVencimentoDebitoF = null;
}
String referenciaInicial = "01/0001";
String referenciaFinal = "12/9999";
String anoMesInicial = contratoCadastrar.getAnoMesDebitoInicio()+"";
String anoMesFinal = contratoCadastrar.getAnoMesDebitoFinal()+"";
if(contratoCadastrar.getAnoMesDebitoInicio() == null || contratoCadastrar.getAnoMesDebitoFinal() == null){
String mesInicial = referenciaInicial.substring(0, 2);
String anoInicial = referenciaInicial.substring(3, referenciaInicial.length());
// Para auxiliar na formata��o de uma data
String mesFinal = referenciaFinal.substring(0, 2);
String anoFinal = referenciaFinal.substring(3, referenciaFinal.length());
anoMesInicial = anoInicial + mesInicial;
anoMesFinal = anoFinal + mesFinal;
}
if(dataVencimentoDebitoF == null || dataVencimentoDebitoI == null){
try {
dataVencimentoDebitoI = formatoData.parse("01/01/0001");
} catch (ParseException ex) {
dataVencimentoDebitoI = null;
}
try {
dataVencimentoDebitoF = formatoData.parse("31/12/9999");
} catch (ParseException ex) {
dataVencimentoDebitoF = null;
}
}
// seta valores constantes para chamar o metodo que consulta debitos do imovel
Integer indicadorPagamento = new Integer(1);
Integer indicadorContaRevisao = new Integer(1);
Integer indicadorDebito = new Integer(1);
Integer indicadorCredito = new Integer(2);//Modificado
Integer indicadorNotas = new Integer(2);//Modificado
Integer indicadorGuias = new Integer(2);//Modificado
Integer indicadorAtualizar = new Integer(1);
Short relacaoTipo = null;
Integer tipoImovel = null;
if(clienteContrato != null){
if(contratoCadastrar.getRelacaoCliente() != null ){
if(contratoCadastrar.getRelacaoCliente().getId().intValue() == ClienteRelacaoTipo.PROPRIETARIO){
relacaoTipo = ClienteRelacaoTipo.PROPRIETARIO;
}else if(contratoCadastrar.getRelacaoCliente().getId().intValue() == ClienteRelacaoTipo.RESPONSAVEL){
relacaoTipo = ClienteRelacaoTipo.RESPONSAVEL;
}else if(contratoCadastrar.getRelacaoCliente().getId().intValue() == ClienteRelacaoTipo.USUARIO){
relacaoTipo = ClienteRelacaoTipo.USUARIO;
}
}
if(relacaoTipo == null || relacaoTipo.equals(ClienteRelacaoTipo.RESPONSAVEL)){
if(contratoCadastrar.getIndicadorResponsavel() != null && contratoCadastrar.getIndicadorResponsavel().intValue() == ContratoParcelamento.RESP_TODOS){
tipoImovel = new Integer(4);
}else if(contratoCadastrar.getIndicadorResponsavel() != null && contratoCadastrar.getIndicadorResponsavel().intValue() == ContratoParcelamento.RESP_ATUAL_DO_IMOVEL){
tipoImovel = new Integer(3);
}else{
tipoImovel = new Integer(2);
}
}else{
tipoImovel = new Integer(2);
}
// Obtendo os d�bitos do imovel
if(contratoCadastrar.getIndicadorResponsavel().intValue() == ContratoParcelamento.RESP_INDICADOR_NA_CONTA
|| contratoCadastrar.getIndicadorResponsavel().intValue() == ContratoParcelamento.RESP_ATUAL_DO_IMOVEL
|| contratoCadastrar.getIndicadorResponsavel().intValue() == ContratoParcelamento.RESP_TODOS){
ObterDebitoImovelOuClienteHelper colecao = fachada.obterDebitoImovelOuCliente(
tipoImovel.intValue(), null, "" + clienteContrato.getCliente().getId(), relacaoTipo,
anoMesInicial, anoMesFinal, dataVencimentoDebitoI,
dataVencimentoDebitoF, indicadorPagamento.intValue(),
indicadorContaRevisao.intValue(), indicadorDebito.intValue(),
indicadorCredito.intValue(), indicadorNotas.intValue(),
indicadorGuias.intValue(), indicadorAtualizar.intValue(),
null);
colecaoClientesDebitosImoveis.add(colecao);
}
}else{
if(contratoCadastrar.getIndicadorResponsavel().intValue() == ContratoParcelamento.RESP_ATUAL_DO_IMOVEL){
tipoImovel = new Integer(3);//Modificado
ObterDebitoImovelOuClienteHelper colecao = fachada.obterDebitoImovelOuCliente(
tipoImovel.intValue(), null, ""+clienteSuperiorContrato.getCliente().getId(), new Short("99"),
anoMesInicial, anoMesFinal, dataVencimentoDebitoI,
dataVencimentoDebitoF, indicadorPagamento.intValue(),
indicadorContaRevisao.intValue(), indicadorDebito.intValue(),
indicadorCredito.intValue(), indicadorNotas.intValue(),
indicadorGuias.intValue(), indicadorAtualizar.intValue(),
null);
colecaoClientesDebitosImoveis.add(colecao);
}
}
/////////////////////////////////////////CARREGA VALORES DEFAULT PARA TODAS VARIAVEIS ////////////////////////////////////////////
//Criando uma lista para adicao de todas colecoesContaValores para todos Clientes (Caso selecione Cliente Superior)
Collection<ContaValoresHelper> colecaoContaValoresTotal = new ArrayList<ContaValoresHelper>();
//Criando uma lista para adicao de todas colecaoDebitoACobrar para todos Clientes (Caso selecione Cliente Superior)
Collection<DebitoACobrar> colecaoDebitoACobrarTotal = new ArrayList<DebitoACobrar>();
//Criando uma lista para adicao de todas colecaoCreditoARealizar para todos Clientes (Caso selecione Cliente Superior)
Collection<CreditoARealizar> colecaoCreditoARealizarTotal = new ArrayList<CreditoARealizar>();
//Criando uma lista para adicao de todas colecaoGuiaPagamentoValores para todos Clientes (Caso selecione Cliente Superior)
Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValoresTotal = new ArrayList<GuiaPagamentoValoresHelper>();
//pesquisa todas as situa��es de cobran�a ativa do imovel
Collection colecaoCobrancaSituacao = new ArrayList<CobrancaSituacao>();
ContaValoresHelper dadosConta = null;
BigDecimal valorConta = new BigDecimal("0.00");
BigDecimal valorAcrescimo = new BigDecimal("0.00");
BigDecimal valorAgua = new BigDecimal("0.00");
BigDecimal valorEsgoto = new BigDecimal("0.00");
BigDecimal valorDebito = new BigDecimal("0.00");
BigDecimal valorCredito = new BigDecimal("0.00");
BigDecimal valorImposto = new BigDecimal("0.00");
BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00");
BigDecimal valorJurosMora = new BigDecimal("0.00");
BigDecimal valorMulta = new BigDecimal("0.00");
BigDecimal valorDebitoACobrar = new BigDecimal("0.00");
BigDecimal valorDebitoACobrarSemJurosParcelamento = new BigDecimal("0.00");
DebitoACobrar dadosDebito = null;
BigDecimal valorRestanteACobrar = new BigDecimal("0.00");
BigDecimal valorTotalRestanteParcelamentosACobrarCurtoPrazo = new BigDecimal("0.00");
BigDecimal valorTotalRestanteParcelamentosACobrarLongoPrazo = new BigDecimal("0.00");
BigDecimal valorTotalDebito = new BigDecimal("0.00");
int indiceCurtoPrazo = 0;
int indiceLongoPrazo = 1;
BigDecimal valorCreditoARealizar = new BigDecimal("0.00");
BigDecimal valorCreditoARealizarSemDescontosParcelamento = new BigDecimal("0.00");
CreditoARealizar dadosCredito = null;
BigDecimal valorGuiaPagamento = new BigDecimal("0.00");
GuiaPagamentoValoresHelper dadosGuiaPagamentoValoresHelper = null;
/////////////////////////////////////////FIM - CARREGA VALORES DEFAULT PARA TODAS VARIAVEIS ////////////////////////////////////////////
for (ObterDebitoImovelOuClienteHelper colecaoDebitoImovel : colecaoClientesDebitosImoveis) {
//////////////////////ITERACAO NA COLECAO DE CONTAVALORES////////////////////////////////////
Collection<ContaValoresHelper> colecaoContaValores = new ArrayList<ContaValoresHelper>();
if(colecaoDebitoImovel.getColecaoContasValores() != null){
colecaoContaValoresTotal.addAll(colecaoDebitoImovel.getColecaoContasValores());
colecaoContaValores.addAll(colecaoDebitoImovel.getColecaoContasValores());
}
if (!colecaoContaValores.isEmpty()) {
java.util.Iterator<ContaValoresHelper> colecaoContaValoresIterator = colecaoContaValores.iterator();
// percorre a colecao de conta somando o valor para obter um valor total
while (colecaoContaValoresIterator.hasNext()) {
dadosConta = (ContaValoresHelper) colecaoContaValoresIterator.next();
valorConta = valorConta.add(dadosConta.getConta().getValorTotal());
valorAcrescimo = valorAcrescimo.add(dadosConta.getValorTotalContaValores());
valorAgua = valorAgua.add(dadosConta.getConta().getValorAgua());
valorEsgoto = valorEsgoto.add(dadosConta.getConta().getValorEsgoto());
valorDebito = valorDebito.add(dadosConta.getConta().getDebitos());
valorCredito = valorCredito.add(dadosConta.getConta().getValorCreditos());
valorImposto = valorImposto.add(dadosConta.getConta().getValorImposto());
if (dadosConta.getValorAtualizacaoMonetaria() != null && !dadosConta.getValorAtualizacaoMonetaria().equals("")) {
valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO);
valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(dadosConta.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO));
}
if (dadosConta.getValorJurosMora() != null && !dadosConta.getValorJurosMora().equals("")) {
valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO);
valorJurosMora = valorJurosMora.add(dadosConta.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO));
}
if (dadosConta.getValorMulta() != null && !dadosConta.getValorMulta().equals("")) {
valorMulta.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO);
valorMulta = valorMulta.add(dadosConta.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO));
}
}
}
valorTotalDebito = valorTotalDebito.add(valorConta);
//////////////////////FIM ITERACAO NA COLECAO DE CONTAVALORES////////////////////////////////////
//////////////////////ITERACAO NA COLECAO DE DEBITOACOBRAR////////////////////////////////////
Collection<DebitoACobrar> colecaoDebitoACobrar = new ArrayList<DebitoACobrar>();
if(colecaoDebitoImovel.getColecaoDebitoACobrar() != null){
colecaoDebitoACobrar.addAll(colecaoDebitoImovel.getColecaoDebitoACobrar());
colecaoDebitoACobrarTotal.addAll(colecaoDebitoImovel.getColecaoDebitoACobrar());
}
if (!colecaoDebitoACobrar.isEmpty()) {
java.util.Iterator<DebitoACobrar> colecaoDebitoACobrarIterator = colecaoDebitoACobrar.iterator();
// percorre a colecao de debito a cobrar somando o valor para obter um valor total
while (colecaoDebitoACobrarIterator.hasNext()) {
dadosDebito = (DebitoACobrar) colecaoDebitoACobrarIterator.next();
valorDebitoACobrar = valorDebitoACobrar.add(dadosDebito.getValorTotalComBonus());
if (dadosDebito.getDebitoTipo() != null &&
!dadosDebito.getDebitoTipo().getId().equals(DebitoTipo.JUROS_SOBRE_PARCELAMENTO)){
valorDebitoACobrarSemJurosParcelamento = valorDebitoACobrarSemJurosParcelamento.add(dadosDebito.getValorTotalComBonus());
}
//Debitos A Cobrar - Parcelamento
if (dadosDebito.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_AGUA)
|| dadosDebito.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_ESGOTO)
|| dadosDebito.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_SERVICO)) {
// [SB0001] Obter Valores de Curto e Longo Prazo
valorRestanteACobrar = dadosDebito.getValorTotalComBonus();
BigDecimal[] valoresDeCurtoELongoPrazo = fachada.obterValorCurtoELongoPrazo(
dadosDebito.getNumeroPrestacaoDebito(),
dadosDebito.getNumeroPrestacaoCobradasMaisBonus(),
valorRestanteACobrar);
valorTotalRestanteParcelamentosACobrarCurtoPrazo.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO);
valorTotalRestanteParcelamentosACobrarCurtoPrazo = valorTotalRestanteParcelamentosACobrarCurtoPrazo.add(valoresDeCurtoELongoPrazo[indiceCurtoPrazo]);
valorTotalRestanteParcelamentosACobrarLongoPrazo.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO);
valorTotalRestanteParcelamentosACobrarLongoPrazo = valorTotalRestanteParcelamentosACobrarLongoPrazo.add(valoresDeCurtoELongoPrazo[indiceLongoPrazo]);
}
}
}
valorTotalDebito = valorTotalDebito.add(valorDebitoACobrar);
//////////////////////FIM ITERACAO NA COLECAO DE DEBITOACOBRAR////////////////////////////////////
//////////////////////ITERACAO NA COLECAO DE CREDITOAREALIZAR////////////////////////////////////
Collection<CreditoARealizar> colecaoCreditoARealizar = new ArrayList<CreditoARealizar>();
if(colecaoDebitoImovel.getColecaoCreditoARealizar() != null){
colecaoCreditoARealizar.addAll(colecaoDebitoImovel.getColecaoCreditoARealizar());
colecaoCreditoARealizarTotal.addAll(colecaoDebitoImovel.getColecaoCreditoARealizar());
}
if (!colecaoCreditoARealizar.isEmpty()) {
java.util.Iterator<CreditoARealizar> colecaoCreditoARealizarIterator = colecaoCreditoARealizar.iterator();
// percorre a colecao de credito a realizar somando o valor para obter um valor total
while (colecaoCreditoARealizarIterator.hasNext()) {
dadosCredito = (CreditoARealizar) colecaoCreditoARealizarIterator.next();
valorCreditoARealizar = valorCreditoARealizar.add(dadosCredito.getValorTotalComBonus());
if (dadosCredito.getCreditoOrigem() != null &&
!dadosCredito.getCreditoOrigem().getId().equals(CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO)){
valorCreditoARealizarSemDescontosParcelamento = valorCreditoARealizarSemDescontosParcelamento.add(dadosCredito.getValorTotalComBonus());
}
}
}
//////////////////////FIM ITERACAO NA COLECAO DE CREDITOAREALIZAR////////////////////////////////////
//////////////////////ITERACAO NA COLECAO DE GUIASPAGAMENTOVALORES////////////////////////////////////
Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValores = new ArrayList<GuiaPagamentoValoresHelper>();
if(colecaoDebitoImovel.getColecaoGuiasPagamentoValores() != null){
colecaoGuiaPagamentoValores.addAll(colecaoDebitoImovel.getColecaoGuiasPagamentoValores());
colecaoGuiaPagamentoValoresTotal.addAll(colecaoDebitoImovel.getColecaoGuiasPagamentoValores());
}
if (!colecaoGuiaPagamentoValores.isEmpty()) {
java.util.Iterator<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValoresHelperIterator = colecaoGuiaPagamentoValores.iterator();
// percorre a colecao de guia de pagamento somando o valor para obter um valor total
while (colecaoGuiaPagamentoValoresHelperIterator.hasNext()) {
dadosGuiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) colecaoGuiaPagamentoValoresHelperIterator.next();
valorGuiaPagamento = valorGuiaPagamento.add(dadosGuiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito());
if (dadosGuiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !dadosGuiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) {
valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO);
valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(dadosGuiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO));
}
if (dadosGuiaPagamentoValoresHelper.getValorJurosMora() != null && !dadosGuiaPagamentoValoresHelper.getValorJurosMora().equals("")) {
valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO);
valorJurosMora = valorJurosMora.add(dadosGuiaPagamentoValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO));
}
if (dadosGuiaPagamentoValoresHelper.getValorMulta() != null && !dadosGuiaPagamentoValoresHelper.getValorMulta().equals("")) {
valorMulta.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO);
valorMulta = valorMulta.add(dadosGuiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO));
}
}
}
//////////////////////FIM ITERACAO NA COLECAO DE GUIASPAGAMENTOVALORES////////////////////////////////////
if(dadosConta != null){
Collection<CobrancaSituacao> situacoesCobranca = fachada.pesquisarImovelCobrancaSituacaoPorImovel(dadosConta.getConta().getImovel().getId());
if(situacoesCobranca != null && !situacoesCobranca.isEmpty()){
colecaoCobrancaSituacao.addAll(situacoesCobranca);
}
}
}
if (colecaoContaValoresTotal.isEmpty() && colecaoDebitoACobrarTotal.isEmpty()
&& colecaoCreditoARealizarTotal.isEmpty() && colecaoGuiaPagamentoValoresTotal.isEmpty()) {
if (colecaoContaValoresTotal.isEmpty()){
sessao.removeAttribute("colecaoContaValores");
sessao.removeAttribute("valorConta");
sessao.removeAttribute("valorAcrescimo");
sessao.removeAttribute("valorAgua");
sessao.removeAttribute("valorEsgoto");
sessao.removeAttribute("valorDebito");
sessao.removeAttribute("valorCredito");
sessao.removeAttribute("valorContaAcrescimo");
sessao.removeAttribute("valorImposto");
sessao.removeAttribute("valorTotalSemAcrescimo");
sessao.removeAttribute("valorTotalComAcrescimo");
sessao.removeAttribute("valorToralSemAcrescimoESemJurosParcelamento");
}
if (colecaoDebitoACobrarTotal.isEmpty()){
sessao.removeAttribute("colecaoDebitoACobrar");
sessao.removeAttribute("valorDebitoACobrar");
}
if (colecaoCreditoARealizarTotal.isEmpty()){
sessao.removeAttribute("colecaoCreditoARealizar");
sessao.removeAttribute("valorCreditoARealizar");
sessao.removeAttribute("valorCreditoARealizarSemDescontosParcelamento");
}
if (colecaoGuiaPagamentoValoresTotal.isEmpty()){
sessao.removeAttribute("colecaoGuiaPagamentoValores");
sessao.removeAttribute("valorGuiaPagamento");
}
if(colecaoCobrancaSituacao.isEmpty()){
sessao.removeAttribute("colecaoCobrancaSituacao");
}
sessao.removeAttribute("valorTotalDebito");
sessao.removeAttribute("valorTotalDebitoAtualizado");
ActionServletException ex = new ActionServletException(
"atencao.cliente.sem.debitos", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "primeira");
throw ex;
// if(colecaoDadosNegativacaoRetorno == null){
// sessao.removeAttribute("colecaoDadosNegativacaoRetorno");
// }
} else {
// Manda a colecao pelo request
sessao.setAttribute("colecaoContaValores",colecaoContaValoresTotal);
// Manda a colecao e os valores total de conta pelo request
sessao.setAttribute("colecaoDebitoACobrar",colecaoDebitoACobrarTotal);
sessao.setAttribute("valorConta", Util.formatarMoedaReal(valorConta));
sessao.setAttribute("valorAcrescimo", Util.formatarMoedaReal(valorAcrescimo));
sessao.setAttribute("valorAgua", Util.formatarMoedaReal(valorAgua));
sessao.setAttribute("valorEsgoto", Util.formatarMoedaReal(valorEsgoto));
sessao.setAttribute("valorDebito", Util.formatarMoedaReal(valorDebito));
sessao.setAttribute("valorCredito", Util.formatarMoedaReal(valorCredito));
sessao.setAttribute("valorContaAcrescimo", Util.formatarMoedaReal(valorConta.add(valorAcrescimo)));
sessao.setAttribute("valorImposto", Util.formatarMoedaReal(valorImposto));
// Manda a colecao e o valor total de DebitoACobrar pelo request
sessao.setAttribute("colecaoDebitoACobrar",colecaoDebitoACobrarTotal);
sessao.setAttribute("valorDebitoACobrar", Util.formatarMoedaReal(valorDebitoACobrar));
// Manda a colecao e o valor total de CreditoARealizar pelo request
sessao.setAttribute("colecaoCreditoARealizar",colecaoCreditoARealizarTotal);
sessao.setAttribute("valorCreditoARealizar", Util.formatarMoedaReal(valorCreditoARealizar));
sessao.setAttribute("valorCreditoARealizarSemDescontosParcelamento",Util.formatarMoedaReal(valorCreditoARealizarSemDescontosParcelamento));
// Manda a colecao e o valor total de GuiaPagamento pelo request
sessao.setAttribute("colecaoGuiaPagamentoValores",colecaoGuiaPagamentoValoresTotal);
sessao.setAttribute("valorGuiaPagamento", Util.formatarMoedaReal(valorGuiaPagamento));
// 1.10.1. Total do D�bito
sessao.setAttribute("valorTotalDebito", Util.formatarMoedaReal(valorTotalDebito));
// 1.10.2. Total do D�bito Atualizado
sessao.setAttribute("valorTotalDebitoAtualizado", Util.formatarMoedaReal(valorTotalDebito.add(valorAcrescimo)));
// Soma o valor total dos debitos e subtrai dos creditos
BigDecimal valorTotalSemAcrescimo = valorConta.add(valorDebitoACobrar);
valorTotalSemAcrescimo = valorTotalSemAcrescimo.add(valorGuiaPagamento);
valorTotalSemAcrescimo = valorTotalSemAcrescimo.subtract(valorCreditoARealizar);
BigDecimal valorTotalComAcrescimo = valorTotalSemAcrescimo.add(valorAcrescimo);
BigDecimal valorToralSemAcrescimoESemJurosParcelamento =
valorConta.add(valorDebitoACobrarSemJurosParcelamento);
valorToralSemAcrescimoESemJurosParcelamento =
valorToralSemAcrescimoESemJurosParcelamento.add(valorGuiaPagamento);
sessao.setAttribute("valorTotalSemAcrescimo", Util
.formatarMoedaReal(valorTotalSemAcrescimo));
sessao.setAttribute("valorTotalComAcrescimo", Util
.formatarMoedaReal(valorTotalComAcrescimo));
sessao.setAttribute("valorToralSemAcrescimoESemJurosParcelamento",
Util.formatarMoedaReal(valorToralSemAcrescimoESemJurosParcelamento));
sessao.setAttribute("colecaoCobrancaSituacao", colecaoCobrancaSituacao);
}
}
private void validarCampos(InserirContratoParcelamentoPorClienteActionForm form, HttpSession sessao, String method) throws ActionServletException{
ActionServletException ex = null;
Fachada fachada = Fachada.getInstancia();
if (form.getNumeroContrato() == null || "".equals(form.getNumeroContrato())){
ex = new ActionServletException(
"atencao.required", null, "N�mero");
}else{
FiltroContratoParcelamento filtro = new FiltroContratoParcelamento();
filtro.adicionarParametro(new ComparacaoTexto(FiltroContratoParcelamento.NUMERO, form.getNumeroContrato()));
Collection<ContratoParcelamento> contratos = fachada.pesquisar(filtro, ContratoParcelamento.class.getName());
if(contratos != null && contratos.size() > 0){
ex = new ActionServletException(
"atencao.numero.contrato.existente",null, "");
}
}
if (ex == null && form.getNumeroContratoAnt() != null && !"".equals(form.getNumeroContratoAnt()) ){
FiltroContratoParcelamento filtro = new FiltroContratoParcelamento();
filtro.adicionarCaminhoParaCarregamentoEntidade("parcelamentoSituacao");
filtro.adicionarParametro(new ComparacaoTexto(FiltroContratoParcelamento.NUMERO, form.getNumeroContratoAnt()));
Collection<ContratoParcelamento> contratos = fachada.pesquisar(filtro, ContratoParcelamento.class.getName());
if(contratos == null || contratos.size() == 0){
ex = new ActionServletException(
"atencao.numero.contrato.nao.existe",null, "");
}else if(contratos != null && contratos.size() == 1){
ContratoParcelamento contrato = contratos.iterator().next();
if(contrato.getParcelamentoSituacao().getId().intValue() == ParcelamentoSituacao.NORMAL.intValue()){
ex = new ActionServletException(
"atencao.contrato.parcelamento.anterior.nao.encerrado",null, "");
}
if(ex == null && (form.getRelacaoAnterior() == null || "".equals(form.getRelacaoAnterior()))){
ex = new ActionServletException(
"atencao.informe.a.relacao.anterior.contrato",null, "");
}
}
}
if (ex == null && (form.getDataContrato() == null || "".equals(form.getDataContrato()))){
ex = new ActionServletException(
"atencao.required", null, "Data do Contrato");
}else if(ex == null && !"".equals(form.getDataContrato())){
boolean dtValida = Util.validarDiaMesAnoSemBarraNovo(form.getDataContrato().replace("/", ""));
if(!dtValida){
ex = new ActionServletException(
"atencao.data.invalida",null, "Data");
}else if(Util.converteStringParaDate(form.getDataContrato()).after(new Date())){
ex = new ActionServletException(
"atencao.contrato.superio.data.corrente", null, Util.formatarData(new Date()));
}
}
if (ex == null && (form.getLoginUsuario() == null || "".equals(form.getLoginUsuario()))){
ex = new ActionServletException(
"atencao.required", null, "Usu�rio Respons�vel");
}
if(ex == null && (form.getDataVencimentoInicio()!= null && !"".equals(form.getDataVencimentoInicio())
&& !Util.validarDiaMesAnoSemBarraNovo(form.getDataVencimentoInicio().replace("/", "")))){
ex = new ActionServletException(
"atencao.data.invalida",null, "Data");
}
if (ex == null && form.getDataVencimentoFinal()!= null && !"".equals(form.getDataVencimentoFinal()) && !Util.validarDiaMesAnoSemBarraNovo(form.getDataVencimentoFinal().replace("/", ""))){
ex = new ActionServletException(
"atencao.data.invalida",null, "Data");
}else{
if (ex == null
&& form.getDataVencimentoFinal()!= null
&& !form.getDataVencimentoFinal().toString().trim().equals("")
&& Util.converteStringParaDate(form.getDataVencimentoFinal()).after(new Date())){
ex = new ActionServletException(
"atencao.data.vencimento.final.superior.data.atual" ,null,Util.formatarData(new Date()));
}
}
if (ex == null && form.getDataVencimentoFinal()!= null && !"".equals(form.getDataVencimentoFinal())){
Date dataInicial = Util.converteStringParaDate(form.getDataVencimentoInicio());
Date dataFinal = Util.converteStringParaDate(form.getDataVencimentoFinal());
if(dataInicial != null && dataFinal != null){
if(dataFinal.before(dataInicial)){
ex = new ActionServletException(
"atencao.data.intervalo.invalido",null, "");
}
}
}
if(ex == null && form.getAnoMesDebitoInicio()!= null && !"".equals(form.getAnoMesDebitoInicio())){
boolean mesAnoValido = Util.validarMesAno(form.getAnoMesDebitoInicio());
if(!mesAnoValido){
ex = new ActionServletException(
"atencao.referencia.debito.invalida",null, "");
}
}
if(ex == null && form.getAnoMesDebitoFinal()!= null && !"".equals(form.getAnoMesDebitoFinal())){
boolean mesAnoValido = Util.validarMesAno(form.getAnoMesDebitoFinal());
if(!mesAnoValido){
ex = new ActionServletException(
"atencao.referencia.debito.invalida",null, "");
}else{
boolean anoMesFinalMenor = (Util.formatarMesAnoComBarraParaAnoMes(form.getAnoMesDebitoFinal()) <= Util.recuperaAnoMesDaData(new Date()));
if(!anoMesFinalMenor){
ex = new ActionServletException(
"atencao.referencia.final.superior.data.atual",null, Util.formatarMesAnoReferencia(Util.recuperaAnoMesDaData(new Date())));
}
}
}
if(ex == null && form.getAnoMesDebitoInicio()!= null && !"".equals(form.getAnoMesDebitoInicio())
&& form.getAnoMesDebitoFinal()!= null && !"".equals(form.getAnoMesDebitoFinal())){
int anoMesIni = Integer.parseInt(form.getAnoMesDebitoInicio().substring(3,7) + form.getAnoMesDebitoInicio().substring(0,2));
int anoMesFim = Integer.parseInt(form.getAnoMesDebitoFinal().substring(3,7) + form.getAnoMesDebitoFinal().substring(0,2));
if(anoMesFim < anoMesIni){
ex = new ActionServletException(
"atencao.ano.mes.intervalo.invalido",null, "");
}
}
ContratoParcelamentoCliente clienteContrato = (ContratoParcelamentoCliente) sessao.getAttribute("clienteContrato");
if(ex == null && clienteContrato != null && clienteContrato.getCliente() != null){
if(clienteContrato.getCliente().getClienteTipo().getIndicadorPessoaFisicaJuridica().intValue() != ClienteTipo.INDICADOR_PESSOA_JURIDICA.intValue()){
ex = new ActionServletException(
"atencao.cliente.nao.juridico",null, "");
}else if(clienteContrato.getCliente().getCnpj() == null || clienteContrato.getCliente().getCnpj().equals("")){
ex = new ActionServletException(
"atencao.cliente.sem.cnpj", null, "");
}
}
ContratoParcelamentoCliente clienteContratoSuperior = (ContratoParcelamentoCliente) sessao.getAttribute("clienteSuperiorContrato");
if (ex == null && clienteContratoSuperior != null && clienteContratoSuperior.getCliente() != null){
if(clienteContratoSuperior.getCliente().getClienteTipo().getIndicadorPessoaFisicaJuridica().intValue() != ClienteTipo.INDICADOR_PESSOA_JURIDICA.intValue()){
ex = new ActionServletException(
"atencao.cliente.superior.nao.juridico",null, "");
}else if(clienteContratoSuperior.getCliente().getCnpj() == null || clienteContratoSuperior.getCliente().getCnpj().equals("")){
ex = new ActionServletException(
"atencao.cliente.superior.sem.cnpj", null, "");
}
Integer qtdClientes = fachada.pesquisarQtdClientesAssociadosResponsavelNaoJuridica(clienteContratoSuperior.getCliente().getId().intValue());
if(ex == null && qtdClientes != 0 && !method.equals("mostrarPrimeiraEtapa") ){
sessao.setAttribute("etapa", "segunda");
sessao.setAttribute("mensagemAlerta",
"H� clientes vinculados ao cliente "
+ clienteContratoSuperior.getCliente().getNome()
+ " que n�o s�o pessoas jur�dicas e/ou que n�o t�m o CNPJ informado no sistema.");
}
}
if(ex == null && (clienteContratoSuperior == null || clienteContratoSuperior.getCliente() == null)
&& (clienteContrato == null || clienteContrato.getCliente() == null)){
ex = new ActionServletException(
"atencao.informe.cliente.ou.clientesuperior", null, "");
}
if(ex == null && (form.getDataVencimentoPrimParcela() == null || form.getDataVencimentoPrimParcela().equals("") )){
ex = new ActionServletException(
"atencao.data.invalida",null, "Data");
}else{
int dataVencPrimParcel = Integer.parseInt(Util.recuperaAnoMesDiaDaData(Util.converteStringParaDate(form.getDataVencimentoPrimParcela())));
int dataAtual = Integer.parseInt(Util.recuperaAnoMesDiaDaData(new Date()));
if(dataVencPrimParcel < dataAtual){
ex = new ActionServletException(
"atencao.data.vencimento.primeira.parcel.anterior.corrente",null, form.getDataVencimentoPrimParcela());
sessao.setAttribute("etapa", "terceira");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
throw ex;
}
}
if(ex != null){
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "primeira");
throw ex;
}
}
//[FS0024]
private void verificaNumeroParcelas(String numeroParcelasPopUp, String parcelaInicial, String parcelaFinal, List<PrestacaoContratoParcelamento> listaDeParcelas, HttpSession sessao){
int total = Integer.parseInt(numeroParcelasPopUp);
int parcelIni = Integer.parseInt(parcelaInicial);
int parcelFim = Integer.parseInt(parcelaFinal);
int novas = parcelFim - parcelIni + 1;
if(novas + listaDeParcelas.size() > total ){
sessao.setAttribute("etapa", "informarParcela");
ActionServletException ex = new ActionServletException("atencao.lista.parcelas.quantidade.nao.corresponde",novas + listaDeParcelas.size()+"", total+"");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
throw ex;
}
}
//[FS0026]
private void verificaContinuidadeParcelas(List<PrestacaoContratoParcelamento> listaDeParcelas){
ActionServletException ex = new ActionServletException("atencao.lista.parcelas.descontinuas", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
if(listaDeParcelas.size() > 1){
for (int i = 1; i < listaDeParcelas.size(); i++) {
if(listaDeParcelas.get(i).getNumero().intValue() != listaDeParcelas.get(i - 1).getNumero().intValue() + 1){
throw ex;
}
}
}else{
if(listaDeParcelas.get(0).getNumero().intValue() != 1){
throw ex;
}
}
}
//[FS0025]
private void verificaValorParceladoTotal(List<PrestacaoContratoParcelamento> listaDeParcelas, BigDecimal valorParceladoTotal){
BigDecimal valorParcelTotal = new BigDecimal("0");
for (PrestacaoContratoParcelamento prestacaoContratoParcelamento : listaDeParcelas) {
valorParcelTotal = valorParcelTotal.add(prestacaoContratoParcelamento.getValor());
}
if(valorParcelTotal.floatValue() != valorParceladoTotal.floatValue()){
ActionServletException ex = new ActionServletException("atencao.lista.parcelas.valor.total.nao.corresponde", Util.formatarMoedaReal(valorParcelTotal), Util.formatarMoedaReal(valorParceladoTotal));
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
throw ex;
}
}
//[FS0029]
private void verificaNumeroParcelasComRD(List<PrestacaoContratoParcelamento> listaDeParcelas, ContratoParcelamentoRD resolucao, InserirContratoParcelamentoPorClienteActionForm form, HttpSession sessao, String etapa){
if(etapa.equals("terceira")){
if( (listaDeParcelas != null && listaDeParcelas.size() > resolucao.getQtdFaturasParceladas().intValue()) ||
(form.getPacerlaAdd() != null && !form.getPacerlaAdd().equals("")
&& Integer.parseInt(form.getPacerlaAdd()) > resolucao.getQtdFaturasParceladas().intValue())){
ActionServletException ex = new ActionServletException("atencao.numero.parcelas.informado.superior.rd", null, resolucao.getQtdFaturasParceladas()+"");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", etapa);
throw ex;
}
}else {
if((listaDeParcelas != null && listaDeParcelas.size() > resolucao.getQtdFaturasParceladas().intValue()) ||
(form.getNumeroParcelasPopUp() != null && !form.getNumeroParcelasPopUp().equals("")
&& Integer.parseInt(form.getNumeroParcelasPopUp()) > resolucao.getQtdFaturasParceladas().intValue())){
ActionServletException ex = new ActionServletException("atencao.numero.parcelas.informado.superior.rd", null, resolucao.getQtdFaturasParceladas()+"");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", etapa);
throw ex;
}
}
}
//[FS0029]
private void verificaNumeroParcelasSemRD(List<PrestacaoContratoParcelamento> listaDeParcelas, InserirContratoParcelamentoPorClienteActionForm form, HttpSession sessao, String etapa){
int numeroMax = 0;
try{
numeroMax = this.getSistemaParametro().getNumeroMaximoParcelasContratosParcelamento();
}catch (Exception e) {
ActionServletException ex = new ActionServletException(
"atencao.numero.maximo.parcela.sistema.parametros.nao.cadastrado", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", etapa);
throw ex;
}
if(etapa.equals("terceira")){
if((listaDeParcelas != null && listaDeParcelas.size() > numeroMax) ||
(form.getPacerlaAdd() != null && !form.getPacerlaAdd().equals("")
&& Integer.parseInt(form.getPacerlaAdd()) > numeroMax)){
ActionServletException ex = new ActionServletException(
"atencao.numero.parcelas.superior.ao.maximo", null, numeroMax+"");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", etapa);
throw ex;
}
}else {
if((listaDeParcelas != null && listaDeParcelas.size() > numeroMax) ||
(form.getNumeroParcelasPopUp() != null && !form.getNumeroParcelasPopUp().equals("")
&& Integer.parseInt(form.getNumeroParcelasPopUp()) > numeroMax)){
ActionServletException ex = new ActionServletException(
"atencao.numero.parcelas.superior.ao.maximo", null, numeroMax+"");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", etapa);
throw ex;
}
}
}
private void calcularListaParcelasDiretoTela(InserirContratoParcelamentoPorClienteActionForm form, HttpSession sessao) throws ActionServletException{
List<PrestacaoContratoParcelamento> listaDeParcelas = (List<PrestacaoContratoParcelamento>) sessao.getAttribute("listaDeParcelas");
String etapa = (String) sessao.getAttribute("etapa") + "";
if(listaDeParcelas != null && etapa.equals("informouEtapa")){
ActionServletException ex = new ActionServletException(
"atencao.lista.parcelas.ja.informadas", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "terceira");
throw ex;
}else{
List<Float> listaValoresDistintos = new ArrayList<Float>();
listaDeParcelas = new ArrayList<PrestacaoContratoParcelamento>();
int numeroParcelInicial = 1;
int numeroParcelFinal = Integer.parseInt(form.getPacerlaAdd());
if(numeroParcelFinal <= 0){
ActionServletException ex = new ActionServletException(
"atencao.numero.parcelas.invalido", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "terceira");
throw ex;
}
int numeroMax = 0;
try{
numeroMax = this.getSistemaParametro().getNumeroMaximoParcelasContratosParcelamento();
}catch (Exception e) {
ActionServletException ex = new ActionServletException(
"atencao.numero.maximo.parcela.sistema.parametros.nao.cadastrado", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "terceira");
throw ex;
}
if(numeroParcelFinal > numeroMax){
ActionServletException ex = new ActionServletException(
"atencao.numero.parcelas.superior.ao.maximo", null, numeroMax+"");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "terceira");
throw ex;
}
String juros = form.getTaxaJurosAdd();
juros = juros.replace(",", ".");
BigDecimal jurosBigDec = new BigDecimal("0");
if((form.getResolucaoDiretoria() != null && !form.getResolucaoDiretoria().equals("")
&& (form.getTaxaJurosAdd() == null || form.getTaxaJurosAdd().equals("")))
|| (juros == null || juros.trim().equals(""))){
juros = "0";
}
try{
jurosBigDec = new BigDecimal(juros);
}catch (Exception e) {
ActionServletException ex = new ActionServletException(
"atencao.campo.taxa.juros.invalido", null, "");
ex.setUrlBotaoVoltar("/gsan/exibirInserirContratoParcelamentoClienteAction.do");
sessao.setAttribute("etapa", "terceira");
throw ex;
}
String indicadorDebitoAcresc = form.getIndicadorDebitoAcresc();
String indicadorParcelJuros = form.getIndicadorParcelJuros();
if (indicadorParcelJuros != null
&& indicadorParcelJuros.trim().equalsIgnoreCase(ConstantesSistema.SIM.toString())
&& (jurosBigDec == null || jurosBigDec.compareTo(BigDecimal.ZERO) == 0)) {
throw new ActionServletException(
"atencao.campo_selecionado.obrigatorio", "Taxa de Juros");
}
BigDecimal valorContaSelecaoTotal = (BigDecimal) sessao.getAttribute("valorContaSelecaoTotal");
BigDecimal acrescimo = (BigDecimal) sessao.getAttribute("valorContaAcrescimoSelecaoTotal");
BigDecimal valorParcelado = BigDecimal.ZERO;
InserirContratoParcelamentoValoresParcelasHelper helper = Fachada.getInstancia()
.calcularValoresParcelasContratoParcelamento(valorContaSelecaoTotal, acrescimo,
indicadorDebitoAcresc, indicadorParcelJuros, jurosBigDec, numeroParcelInicial, numeroParcelFinal);
valorParcelado = helper.getValorParcelado();
listaDeParcelas = helper.getListaDeParcelas();
listaValoresDistintos = helper.getListaValoresDistintos();
ContratoParcelamento contratoCadastrar = (ContratoParcelamento) sessao.getAttribute("contratoCadastrar");
contratoCadastrar.setValorTotalParcelado(valorParcelado);
contratoCadastrar.setValorParcelamentoACobrar(valorParcelado);
sessao.setAttribute("listaValoresDistintos", listaValoresDistintos);
sessao.setAttribute("listaDeParcelas", listaDeParcelas);
sessao.setAttribute("etapa","informouParcelas");
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
}
}
private void removerValoresParcelas(HttpSession sessao,
InserirContratoParcelamentoPorClienteActionForm form,
boolean removerApenasListas){
if (!removerApenasListas) {
ContratoParcelamento contratoCadastrar = (ContratoParcelamento) sessao.getAttribute("contratoCadastrar");
contratoCadastrar.setTaxaJuros(null);
contratoCadastrar.setNumeroPrestacoes(null);
sessao.setAttribute("contratoCadastrar", contratoCadastrar);
sessao.removeAttribute("numeroParcelasPopUp");
form.setPacerlaAdd(null);
form.setTaxaJurosAdd(null);
form.setNumeroParcelasPopUp(null);
}
sessao.removeAttribute("listaDeParcelas");
sessao.removeAttribute("listaValoresDistintos");
sessao.removeAttribute("listaDeParcelasPopUp");
sessao.removeAttribute("listaValoresDistintosPopUp");
sessao.removeAttribute("valorParcelTotal");
}
}