package gcom.gui.cobranca;
import gcom.arrecadacao.pagamento.FiltroPagamentoSituacao;
import gcom.arrecadacao.pagamento.Pagamento;
import gcom.arrecadacao.pagamento.PagamentoSituacao;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.cobranca.CobrancaDocumento;
import gcom.cobranca.bean.ContaValoresHelper;
import gcom.cobranca.bean.DebitoCreditoParcelamentoHelper;
import gcom.cobranca.bean.GuiaPagamentoValoresHelper;
import gcom.cobranca.bean.IndicadoresParcelamentoHelper;
import gcom.cobranca.bean.NegociacaoOpcoesParcelamentoHelper;
import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper;
import gcom.cobranca.bean.ObterOpcoesDeParcelamentoHelper;
import gcom.cobranca.parcelamento.Parcelamento;
import gcom.fachada.Fachada;
import gcom.faturamento.credito.CreditoARealizar;
import gcom.faturamento.debito.DebitoACobrar;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.PermissaoEspecial;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class ExibirDebitoCreditoDadosSelecaoExtratoAction extends GcomAction {
public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) {
ActionForward retorno = mapping.findForward("debitoCreditoDadosSelecaoExtrato");
DebitoCreditoDadosSelecaoExtratoActionForm form = (DebitoCreditoDadosSelecaoExtratoActionForm) actionForm;
HttpSession sessao = request.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
Fachada fachada = Fachada.getInstancia();
boolean temPermissaoIncluirAcrescimoImpontualidadeNoExtratoDeDebitosComDesconto = fachada.verificarPermissaoIncluirAcrescimoImpontualidadeNoExtratoDeDebitosComDesconto(usuarioLogado);
request.setAttribute("temPermissaoIncluirAcrescExtratoComDesconto", temPermissaoIncluirAcrescimoImpontualidadeNoExtratoDeDebitosComDesconto);
boolean temPermissaoRetirarTaxaCobrancaDoExtratoDeDebitos = false;
Short indicadorCobrarTaxaExtrato = fachada.pesquisarParametrosDoSistema().getIndicadorCobrarTaxaExtrato();
if (indicadorCobrarTaxaExtrato.equals(ConstantesSistema.SIM)) {
temPermissaoRetirarTaxaCobrancaDoExtratoDeDebitos = fachada.verificarPermissaoRetirarTaxaCobrancaDoExtratoDeDebitos(usuarioLogado);
request.setAttribute("temPermissaoRetirarTaxaCobrancaDoExtratoDeDebitos", temPermissaoRetirarTaxaCobrancaDoExtratoDeDebitos);
}
if (request.getParameter("menu") == null) {
request.setAttribute("habilitaIncluirDebito", 1);
} else {
if (temPermissaoRetirarTaxaCobrancaDoExtratoDeDebitos) {
form.setIndicadorTaxaCobranca(ConstantesSistema.SIM.toString());
} else {
form.setIndicadorTaxaCobranca(ConstantesSistema.NAO.toString());
}
form.setIdsConta(null);
form.setIdsDebito(null);
form.setIdsCredito(null);
form.setIdsGuia(null);
form.setIdsParcelamento(null);
}
String idImovel = form.getIdImovel();
if (request.getParameter("reloadPage") == null) {
sessao.removeAttribute("colecaoConta");
sessao.removeAttribute("colecaoContaNormais");
sessao.removeAttribute("colecaoContaPreteritos");
sessao.removeAttribute("colecaoDebitoACobrar");
sessao.removeAttribute("colecaoCreditoARealizar");
sessao.removeAttribute("colecaoGuiaPagamento");
sessao.removeAttribute("colecaoDebitoCreditoParcelamento");
sessao.removeAttribute("idImovel");
sessao.removeAttribute("colecaoPagamentosImovelContaInconformes");
sessao.removeAttribute("colecaoPagamentosInconformesAtuais");
sessao.removeAttribute("colecaoPagamentosInconformesPreteritos");
form.setTotalDebitoSelecionado("0");
form.setTotalDebitoAtualizadoSelecionado("0");
form.setIndicadorIncluirAcrescimosImpontualidade(CobrancaDocumento.INCLUIR_ACRESCIMOS);
request.removeAttribute("habilitaIncluirDebito");
if (idImovel != null && !idImovel.equals("")) {
String inscricaoImovel = fachada.pesquisarInscricaoImovel(new Integer(idImovel));
if (inscricaoImovel == null) {
form.setInscricaoImovel("IMOVEL INEXISTENTE");
request.setAttribute("corImovelDestino", "exception");
form.setDescricaoLigacaoAguaSituacaoImovel("");
form.setDescricaoLigacaoEsgotoSituacaoImovel("");
form.setNomeClienteUsuarioImovel("");
form.setCpfCnpj("");
} else {
// INSCRICAO IMOVEL
form.setInscricaoImovel(inscricaoImovel);
sessao.setAttribute("idImovel", idImovel);
// CLIENTE USUARIO DO IMOVEL
Cliente cliente = fachada.pesquisarClienteUsuarioImovel(new Integer(idImovel));
form.setNomeClienteUsuarioImovel(cliente.getNome());
// sessao.setAttribute("nomeCliente",cliente.getNome());
// CPF ou CNPJ do Cliente
if (cliente.getCpf() != null) {
form.setCpfCnpj(cliente.getCpfFormatado());
} else if (cliente.getCnpj() != null) {
form.setCpfCnpj(cliente.getCnpjFormatado());
}
// LIGACAO AGUA SITUACAO
LigacaoAguaSituacao ligacaoAguaSituacao = fachada.pesquisarLigacaoAguaSituacao(new Integer(idImovel));
form.setDescricaoLigacaoAguaSituacaoImovel(ligacaoAguaSituacao.getDescricao());
form.setIdLigacaoAguaSituacaoImovel(ligacaoAguaSituacao.getId().toString());
// LIGACAO ESGOTO SITUACAO
LigacaoEsgotoSituacao ligacaoEsgotoSituacao = fachada.pesquisarLigacaoEsgotoSituacao(new Integer(idImovel));
form.setDescricaoLigacaoEsgotoSituacaoImovel(ligacaoEsgotoSituacao.getDescricao());
form.setIdLigacaoEsgotoSituacaoImovel(ligacaoEsgotoSituacao.getId().toString());
// CONTAS INCONFORMES
FiltroPagamentoSituacao filtroPagamentoSituacao = new FiltroPagamentoSituacao();
filtroPagamentoSituacao.adicionarParametro(new ParametroSimples(FiltroPagamentoSituacao.DESCRICAO_ABREVIADA, "NCONF"));
PagamentoSituacao pagamentoSituacao = (PagamentoSituacao) Util.retonarObjetoDeColecao(fachada.pesquisar(filtroPagamentoSituacao, PagamentoSituacao.class.getName()));
Object[] colecaoContasInconformes = fachada.pesquisarPagamentoInconformeImovel(idImovel.trim());
Collection<Pagamento> colecaoPagamentosInconformesAtuais = (Collection<Pagamento>) colecaoContasInconformes[0];
Collection<Pagamento> colecaoPagamentosInconformesPreteritas = (Collection<Pagamento>) colecaoContasInconformes[1];
Collection<Pagamento> colecaoPagamentosImovelContaInconformes = new ArrayList<Pagamento>();
colecaoPagamentosImovelContaInconformes.addAll(colecaoPagamentosInconformesAtuais);
colecaoPagamentosImovelContaInconformes.addAll(colecaoPagamentosInconformesPreteritas);
sessao.setAttribute("colecaoPagamentosImovelContaInconformes", colecaoPagamentosImovelContaInconformes);
sessao.setAttribute("colecaoPagamentosInconformesAtuais", colecaoPagamentosInconformesAtuais);
sessao.setAttribute("colecaoPagamentosInconformesPreteritos", colecaoPagamentosInconformesPreteritas);
ObterDebitoImovelOuClienteHelper helper = fachada.apresentarDebitoCreditoImovelExtratoDebito(new Integer(idImovel), false);
Collection<ContaValoresHelper> colecaoConta = new ArrayList<ContaValoresHelper>();
colecaoConta.addAll(helper.getColecaoContasValoresImovel());
colecaoConta.addAll(helper.getColecaoContasValoresPreteritos());
sessao.setAttribute("colecaoConta", colecaoConta);
sessao.setAttribute("colecaoContaNormais", helper.getColecaoContasValoresImovel());
sessao.setAttribute("colecaoContaPreteritos", helper.getColecaoContasValoresPreteritos());
sessao.setAttribute("colecaoDebitoACobrar", helper.getColecaoDebitoACobrar());
sessao.setAttribute("colecaoGuiaPagamento", helper.getColecaoGuiasPagamentoValoresSemFichaCompensacao());
sessao.setAttribute("colecaoDebitoCreditoParcelamento", helper.getColecaoDebitoCreditoParcelamentoHelper());
request.setAttribute("habilitaIncluirDebito", 1);
}
}
} else {
String[] idsContas = request.getParameterValues("conta");
form.setIdsConta(Arrays.toString(idsContas).replace("[", "").replace("]", ""));
String[] idsDebitos = request.getParameterValues("debito");
if (sessao.getAttribute("idDebitoACobrarInserido") != null) {
if (idsDebitos == null) {
form.setIdsDebito((String) sessao.getAttribute("idDebitoACobrarInserido"));
} else {
String debitos = Arrays.toString(idsDebitos).replace("[", "").replace("]", "");
debitos = debitos + "," + (String) sessao.getAttribute("idDebitoACobrarInserido");
form.setIdsDebito(debitos);
}
} else {
form.setIdsDebito(Arrays.toString(idsDebitos).replace("[", "").replace("]", ""));
}
String[] idsCreditos = request.getParameterValues("credito");
form.setIdsCredito(Arrays.toString(idsCreditos).replace("[", "").replace("]", ""));
String[] idsguias = request.getParameterValues("guiaPagamento");
form.setIdsGuia(Arrays.toString(idsguias).replace("[", "").replace("]", ""));
String[] idsParcelamentos = request.getParameterValues("parcelamento");
form.setIdsParcelamento(Arrays.toString(idsParcelamentos).replace("[", "").replace("]", ""));
}
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
if (sistemaParametro.getResolucaoDiretoria() != null) {
if (idImovel != null && !idImovel.equals("")) {
if (form.getIdLigacaoAguaSituacaoImovel().equals(LigacaoAguaSituacao.SUPRIMIDO.toString())
|| form.getIdLigacaoAguaSituacaoImovel().equals(LigacaoAguaSituacao.SUPR_PARC.toString())
|| form.getIdLigacaoAguaSituacaoImovel().equals(LigacaoAguaSituacao.SUPR_PARC_PEDIDO.toString())) {
boolean temPermissaoResolucaoDiretoria = fachada.verificarPermissaoEspecial(PermissaoEspecial.USAR_PLANO_PAI_PARA_ORGAO_PUBLICO,
usuarioLogado);
if (!temPermissaoResolucaoDiretoria) {
form.setIndicadorRestabelecimento("2");
}
request.setAttribute("temPermissaoResolucaoDiretoria", temPermissaoResolucaoDiretoria);
} else {
form.setIndicadorRestabelecimento("2");
}
request.setAttribute("botaoCalcularDesconto", true);
form.setIndicadorIncluirAcrescimosImpontualidade(CobrancaDocumento.INCLUIR_ACRESCIMOS);
}
if (form.getIndicadorRestabelecimento() == null) {
form.setIndicadorRestabelecimento("2");
}
}
if (request.getParameter("calcularDesconto") != null) {
calcularDescontos(form, request, sessao, fachada, sistemaParametro, usuarioLogado);
}
request.setAttribute("nomeCampo", "idImovel");
return retorno;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private Object[] obterContasSelecionadas(String idsContas, HttpSession sessao) {
Object[] retorno = null;
Collection<ContaValoresHelper> colecaoContas = null;
BigDecimal valorTotalConta = BigDecimal.ZERO;
BigDecimal valorTotalAcrescimoImpontualidade = BigDecimal.ZERO;
BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00");
BigDecimal valorJurosMora = new BigDecimal("0.00");
BigDecimal valorMulta = new BigDecimal("0.00");
if (idsContas != null && !idsContas.equals("")) {
retorno = new Object[6];
colecaoContas = new ArrayList();
Collection colecaoContasSessao = (Collection) sessao.getAttribute("colecaoConta");
Iterator itColecaoContasSessao = colecaoContasSessao.iterator();
ContaValoresHelper contaValoresHelper = null;
String[] idsContasArray = idsContas.split(",");
while (itColecaoContasSessao.hasNext()) {
contaValoresHelper = (ContaValoresHelper) itColecaoContasSessao.next();
for (int x = 0; x < idsContasArray.length; x++) {
if (contaValoresHelper.getConta().getId().equals(new Integer(idsContasArray[x]))) {
colecaoContas.add(contaValoresHelper);
valorTotalConta = valorTotalConta.add(contaValoresHelper.getValorTotalConta());
valorTotalAcrescimoImpontualidade = valorTotalAcrescimoImpontualidade.add(contaValoresHelper.getValorTotalContaValoresParcelamento());
if (contaValoresHelper.getConta().getValorImposto() != null) {
valorTotalConta = valorTotalConta.subtract(contaValoresHelper.getConta().getValorImposto());
}
if (contaValoresHelper.getValorAtualizacaoMonetaria() != null && !contaValoresHelper.getValorAtualizacaoMonetaria().equals("")) {
valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO);
valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(contaValoresHelper.getValorAtualizacaoMonetaria().setScale(
Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO));
}
if (contaValoresHelper.getValorJurosMora() != null && !contaValoresHelper.getValorJurosMora().equals("")) {
valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO);
valorJurosMora = valorJurosMora.add(contaValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,
Parcelamento.TIPO_ARREDONDAMENTO));
}
if (contaValoresHelper.getValorMulta() != null && !contaValoresHelper.getValorMulta().equals("")) {
valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO);
valorMulta = valorMulta.add(contaValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,
Parcelamento.TIPO_ARREDONDAMENTO));
}
}
}
}
retorno[0] = colecaoContas;
retorno[1] = valorTotalConta;
retorno[2] = valorTotalAcrescimoImpontualidade;
retorno[3] = valorAtualizacaoMonetaria;
retorno[4] = valorJurosMora;
retorno[5] = valorMulta;
}
return retorno;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private Object[] obterDebitosSelecionados(String idsDebitos, HttpSession sessao) {
Object[] retorno = null;
Collection<DebitoACobrar> colecaoDebitos = null;
BigDecimal valorTotalDebitoACobrar = BigDecimal.ZERO;
if (idsDebitos != null && !idsDebitos.equals("")) {
retorno = new Object[2];
colecaoDebitos = new ArrayList();
Collection colecaoDebitosSessao = (Collection) sessao.getAttribute("colecaoDebitoACobrar");
Iterator itColecaoDebitosSessao = colecaoDebitosSessao.iterator();
DebitoACobrar debitoACobrar = null;
String[] idsDebitosArray = idsDebitos.split(",");
while (itColecaoDebitosSessao.hasNext()) {
debitoACobrar = (DebitoACobrar) itColecaoDebitosSessao.next();
for (int x = 0; x < idsDebitosArray.length; x++) {
if (debitoACobrar.getId().equals(new Integer(idsDebitosArray[x]))) {
colecaoDebitos.add(debitoACobrar);
valorTotalDebitoACobrar = valorTotalDebitoACobrar.add(debitoACobrar.getValorTotalComBonus());
}
}
}
retorno[0] = colecaoDebitos;
retorno[1] = valorTotalDebitoACobrar;
}
return retorno;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private Object[] obterCreditosSelecionadas(String idsCreditos, HttpSession sessao) {
Object[] retorno = null;
Collection<CreditoARealizar> colecaoCreditos = null;
BigDecimal valorTotalCreditoARealizar = BigDecimal.ZERO;
if (idsCreditos != null && !idsCreditos.equals("")) {
retorno = new Object[2];
colecaoCreditos = new ArrayList();
Collection colecaoCreditosSessao = (Collection) sessao.getAttribute("colecaoCreditoARealizar");
Iterator itColecaoCreditosSessao = colecaoCreditosSessao.iterator();
CreditoARealizar creditoARealizar = null;
String[] idsCreditosArray = idsCreditos.split(",");
while (itColecaoCreditosSessao.hasNext()) {
creditoARealizar = (CreditoARealizar) itColecaoCreditosSessao.next();
for (int x = 0; x < idsCreditosArray.length; x++) {
if (creditoARealizar.getId().equals(new Integer(idsCreditosArray[x]))) {
colecaoCreditos.add(creditoARealizar);
valorTotalCreditoARealizar = valorTotalCreditoARealizar.add(creditoARealizar.getValorTotalComBonus());
}
}
}
retorno[0] = colecaoCreditos;
retorno[1] = valorTotalCreditoARealizar;
}
return retorno;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private Object[] obterGuiasSelecionadas(String idsGuias, HttpSession sessao) {
Object[] retorno = null;
Collection<GuiaPagamentoValoresHelper> colecaoGuias = null;
BigDecimal valorTotalGuiaPagamento = BigDecimal.ZERO;
BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00");
BigDecimal valorJurosMora = new BigDecimal("0.00");
BigDecimal valorMulta = new BigDecimal("0.00");
if (idsGuias != null && !idsGuias.equals("")) {
retorno = new Object[5];
colecaoGuias = new ArrayList();
Collection colecaoGuiasSessao = (Collection) sessao.getAttribute("colecaoGuiaPagamento");
Iterator itColecaoGuiasSessao = colecaoGuiasSessao.iterator();
GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = null;
String[] idsGuiasArray = idsGuias.split(",");
while (itColecaoGuiasSessao.hasNext()) {
guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) itColecaoGuiasSessao.next();
for (int x = 0; x < idsGuiasArray.length; x++) {
if (guiaPagamentoValoresHelper.getGuiaPagamento().getId().equals(new Integer(idsGuiasArray[x]))) {
colecaoGuias.add(guiaPagamentoValoresHelper);
valorTotalGuiaPagamento = valorTotalGuiaPagamento.add(guiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito());
if (guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null
&& !guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) {
valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO);
valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().setScale(
Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO));
}
if (guiaPagamentoValoresHelper.getValorJurosMora() != null && !guiaPagamentoValoresHelper.getValorJurosMora().equals("")) {
valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO);
valorJurosMora = valorJurosMora.add(guiaPagamentoValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS,
Parcelamento.TIPO_ARREDONDAMENTO));
}
if (guiaPagamentoValoresHelper.getValorMulta() != null && !guiaPagamentoValoresHelper.getValorMulta().equals("")) {
valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO);
valorMulta = valorMulta.add(guiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS,
Parcelamento.TIPO_ARREDONDAMENTO));
}
}
}
}
retorno[0] = colecaoGuias;
retorno[1] = valorTotalGuiaPagamento;
retorno[2] = valorAtualizacaoMonetaria;
retorno[3] = valorJurosMora;
retorno[4] = valorMulta;
}
return retorno;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private Object[] obterParcelamentosSelecionados(String idsParcelamentos, HttpSession sessao) {
Object[] retorno = null;
Collection<DebitoACobrar> colecaoDebitoFinal = null;
Collection<CreditoARealizar> colecaoCreditoFinal = null;
BigDecimal valorTotalDebito = BigDecimal.ZERO;
BigDecimal valorTotalCredito = BigDecimal.ZERO;
if (idsParcelamentos != null && !idsParcelamentos.equals("")) {
retorno = new Object[4];
colecaoDebitoFinal = new ArrayList();
colecaoCreditoFinal = new ArrayList();
Collection colecaoDebitoCreditoParcelamentoSessao = (Collection) sessao.getAttribute("colecaoDebitoCreditoParcelamento");
Iterator itColecaoDebitoCreditoParcelamentoSessao = colecaoDebitoCreditoParcelamentoSessao.iterator();
DebitoCreditoParcelamentoHelper debitoCreditoParcelamentoHelper = null;
String[] idsParcelamentoArray = idsParcelamentos.split(",");
while (itColecaoDebitoCreditoParcelamentoSessao.hasNext()) {
debitoCreditoParcelamentoHelper = (DebitoCreditoParcelamentoHelper) itColecaoDebitoCreditoParcelamentoSessao.next();
for (int x = 0; x < idsParcelamentoArray.length; x++) {
if (debitoCreditoParcelamentoHelper.getParcelamento().getId().equals(new Integer(idsParcelamentoArray[x]))) {
Collection<DebitoACobrar> colecaoDebito = null;
Collection<CreditoARealizar> colecaoCredito = null;
if (debitoCreditoParcelamentoHelper.getColecaoCreditoARealizarParcelamento() != null
&& !debitoCreditoParcelamentoHelper.getColecaoCreditoARealizarParcelamento().isEmpty()) {
colecaoCredito = debitoCreditoParcelamentoHelper.getColecaoCreditoARealizarParcelamento();
Iterator iterCredito = colecaoCredito.iterator();
while (iterCredito.hasNext()) {
CreditoARealizar creditoARealizar = (CreditoARealizar) iterCredito.next();
colecaoCreditoFinal.add(creditoARealizar);
valorTotalCredito = valorTotalCredito.add(creditoARealizar.getValorTotalComBonus());
}
}
if (debitoCreditoParcelamentoHelper.getColecaoDebitoACobrarParcelamento() != null
&& !debitoCreditoParcelamentoHelper.getColecaoDebitoACobrarParcelamento().isEmpty()) {
colecaoDebito = debitoCreditoParcelamentoHelper.getColecaoDebitoACobrarParcelamento();
Iterator iterDebito = colecaoDebito.iterator();
while (iterDebito.hasNext()) {
DebitoACobrar debitoACobrar = (DebitoACobrar) iterDebito.next();
colecaoDebitoFinal.add(debitoACobrar);
valorTotalDebito = valorTotalDebito.add(debitoACobrar.getValorTotalComBonus());
}
}
}
}
}
retorno[0] = colecaoDebitoFinal;
retorno[1] = valorTotalDebito;
retorno[2] = colecaoCreditoFinal;
retorno[3] = valorTotalCredito;
}
return retorno;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private void calcularDescontos(DebitoCreditoDadosSelecaoExtratoActionForm form, HttpServletRequest httpServletRequest, HttpSession sessao, Fachada fachada,
SistemaParametro sistemaParametro, Usuario usuarioLogado) {
String indicadorIncluirAcrescimosImpontualidade = form.getIndicadorIncluirAcrescimosImpontualidade();
Collection<ContaValoresHelper> colecaoContas = null;
Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamento = null;
Collection<DebitoACobrar> colecaoDebitosACobrar = null;
Collection<CreditoARealizar> colecaoCreditoARealizar = null;
Collection<DebitoACobrar> colecaoDebitosACobrarParcelamento = null;
Collection<CreditoARealizar> colecaoCreditoARealizarParcelamento = null;
BigDecimal valorAcrescimosImpontualidade = new BigDecimal("0.00");
BigDecimal valorDebitoTotalAtualizado = new BigDecimal("0.00");
String idsContas = httpServletRequest.getParameter("conta");
String idsDebitos = httpServletRequest.getParameter("debito");
String idsCreditos = httpServletRequest.getParameter("credito");
String idsGuias = httpServletRequest.getParameter("guiaPagamento");
String idsParcelamentos = httpServletRequest.getParameter("parcelamento");
Object[] contas = this.obterContasSelecionadas(idsContas, sessao);
Object[] debitos = this.obterDebitosSelecionados(idsDebitos, sessao);
Object[] creditos = this.obterCreditosSelecionadas(idsCreditos, sessao);
Object[] guias = this.obterGuiasSelecionadas(idsGuias, sessao);
Object[] parcelamentos = this.obterParcelamentosSelecionados(idsParcelamentos, sessao);
// ANTECIPA��O DE PARCELAS DE PARCELAMENTO
Map<String, String[]> requestAntecipacaoParcelasMap = httpServletRequest.getParameterMap();
Object[] parcelasAntecipacaoParcelamento = this.obterAntecipacaoParcelasParcelamentosSelecionados(sessao, requestAntecipacaoParcelasMap, fachada);
/*
* TOTALIZANDO O VALOR DE CADA TIPO DE DOCUMENTO SELECIONADO, EM
* SEPARADO
*/
BigDecimal valorTotalConta = BigDecimal.ZERO;
BigDecimal valorTotalDebitoACobrar = BigDecimal.ZERO;
BigDecimal valorTotalCreditoARealizar = BigDecimal.ZERO;
BigDecimal valorTotalGuiaPagamento = BigDecimal.ZERO;
BigDecimal valorTotalDebitoParcelamento = BigDecimal.ZERO;
BigDecimal valorTotalCreditoParcelamento = BigDecimal.ZERO;
BigDecimal valorTotalAntecipacaoDebitoParcelamento = BigDecimal.ZERO;
BigDecimal valorTotalAntecipacaoCreditoParcelamento = BigDecimal.ZERO;
BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00");
BigDecimal valorJurosMora = new BigDecimal("0.00");
BigDecimal valorMulta = new BigDecimal("0.00");
// CONTAS
if (contas != null) {
colecaoContas = (Collection) contas[0];
valorTotalConta = (BigDecimal) contas[1];
if (contas[2] != null && !indicadorIncluirAcrescimosImpontualidade.equals(CobrancaDocumento.NAO_INCLUIR_ACRESCIMOS)) {
valorAcrescimosImpontualidade = (BigDecimal) contas[2];
}
valorAtualizacaoMonetaria = (BigDecimal) contas[3];
valorJurosMora = (BigDecimal) contas[4];
valorMulta = (BigDecimal) contas[5];
}
// D�BITOS A COBRAR
if (debitos != null) {
colecaoDebitosACobrar = (Collection) debitos[0];
valorTotalDebitoACobrar = (BigDecimal) debitos[1];
}
// CR�DITOS A REALIZAR
if (creditos != null) {
colecaoCreditoARealizar = (Collection) creditos[0];
valorTotalCreditoARealizar = (BigDecimal) creditos[1];
}
// GUIAS DE PAGAMENTO
if (guias != null) {
colecaoGuiasPagamento = (Collection) guias[0];
valorTotalGuiaPagamento = (BigDecimal) guias[1];
valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add((BigDecimal) guias[2]);
valorJurosMora = valorJurosMora.add((BigDecimal) guias[3]);
valorMulta = valorMulta.add((BigDecimal) guias[4]);
}
// PARCELAMENTOS
if (parcelamentos != null) {
colecaoDebitosACobrarParcelamento = (Collection) parcelamentos[0];
valorTotalDebitoParcelamento = (BigDecimal) parcelamentos[1];
if (colecaoDebitosACobrarParcelamento != null) {
if (colecaoDebitosACobrar == null) {
colecaoDebitosACobrar = new ArrayList();
}
colecaoDebitosACobrar.addAll(colecaoDebitosACobrarParcelamento);
}
colecaoCreditoARealizarParcelamento = (Collection) parcelamentos[2];
valorTotalCreditoParcelamento = (BigDecimal) parcelamentos[3];
if (colecaoCreditoARealizarParcelamento != null) {
if (colecaoCreditoARealizar == null) {
colecaoCreditoARealizar = new ArrayList();
}
colecaoCreditoARealizar.addAll(colecaoCreditoARealizarParcelamento);
}
}
// ANTECIPA��O PARCELAS DE PARCELAMENTO
if (parcelasAntecipacaoParcelamento != null) {
valorTotalAntecipacaoDebitoParcelamento = (BigDecimal) parcelasAntecipacaoParcelamento[1];
valorTotalAntecipacaoCreditoParcelamento = (BigDecimal) parcelasAntecipacaoParcelamento[3];
}
// TOTALIZANDO O VALOR DO D�BITO TOTAL
valorDebitoTotalAtualizado = valorTotalConta.add(valorTotalDebitoACobrar);
valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalGuiaPagamento);
valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalDebitoParcelamento);
valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorAcrescimosImpontualidade);
valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalAntecipacaoDebitoParcelamento);
valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.subtract(valorTotalCreditoARealizar);
valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.subtract(valorTotalCreditoParcelamento);
valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.subtract(valorTotalAntecipacaoCreditoParcelamento);
// TOTALIZANDO O VALOR DOS CR�DITOS A REALIZAR
BigDecimal valorCreditoDocumento = valorTotalCreditoARealizar.add(valorTotalCreditoParcelamento);
valorCreditoDocumento = valorCreditoDocumento.add(valorTotalAntecipacaoCreditoParcelamento);
ImovelPerfil imovelPerfil = fachada.obterImovelPerfil(new Integer(form.getIdImovel()));
Short numeroReparcelamentoConsecutivos = fachada.consultarNumeroReparcelamentoConsecutivosImovel(new Integer(form.getIdImovel()));
if (numeroReparcelamentoConsecutivos == null) {
numeroReparcelamentoConsecutivos = new Short("0");
}
IndicadoresParcelamentoHelper indicadoresParcelamentoHelper = new IndicadoresParcelamentoHelper();
indicadoresParcelamentoHelper.setIndicadorDebitosACobrar(new Integer("1"));
indicadoresParcelamentoHelper.setIndicadorCreditoARealizar(new Integer("1"));
indicadoresParcelamentoHelper.setIndicadorGuiasPagamento(new Integer("1"));
indicadoresParcelamentoHelper.setIndicadorAcrescimosImpotualidade(new Integer("1"));
indicadoresParcelamentoHelper.setIndicadorContasRevisao(new Integer("1"));
indicadoresParcelamentoHelper.setIndicadorDividaAtiva(new Integer("3"));
String indicadorRestabelecimento = form.getIndicadorRestabelecimento();
if (indicadorRestabelecimento == null) {
indicadorRestabelecimento = "2";
}
// CARREGANDO O HELPER COM AS INFORMA��ES DO PARCELAMENTO
ObterOpcoesDeParcelamentoHelper helper = new ObterOpcoesDeParcelamentoHelper(sistemaParametro.getResolucaoDiretoria().getId(), new Integer(
form.getIdImovel()), new BigDecimal("0.00"), new Integer(form.getIdLigacaoAguaSituacaoImovel()), new Integer(
form.getIdLigacaoEsgotoSituacaoImovel()), imovelPerfil.getId(), "01/0001", new Integer(indicadorRestabelecimento), colecaoContas,
valorDebitoTotalAtualizado, valorMulta, valorJurosMora, valorAtualizacaoMonetaria, new Integer(numeroReparcelamentoConsecutivos.toString()),
colecaoGuiasPagamento, usuarioLogado, valorTotalDebitoParcelamento, Util.formatarMesAnoComBarraParaAnoMes("01/0001"),
Util.formatarMesAnoComBarraParaAnoMes("12/9999"), indicadoresParcelamentoHelper, valorCreditoDocumento);
NegociacaoOpcoesParcelamentoHelper negociacaoOpcoesParcelamentoHelper = fachada.calcularValorDosDescontosPagamentoAVista(helper);
BigDecimal valorTotalDescontoPagamentoAVista = negociacaoOpcoesParcelamentoHelper.getValorTotalDescontoPagamentoAVista();
BigDecimal valorPagamentoAVista = valorDebitoTotalAtualizado.subtract(valorTotalDescontoPagamentoAVista);
form.setValorDescontoPagamentoAVista(Util.formatarMoedaReal(valorTotalDescontoPagamentoAVista));
form.setValorPagamentoAVista(Util.formatarMoedaReal(valorPagamentoAVista));
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private Object[] obterAntecipacaoParcelasParcelamentosSelecionados(HttpSession sessao, Map<String, String[]> requestMap, Fachada fachada) {
Object[] retorno = null;
// PARCELAMENTOS DISPONIBILIZADOS PARA O USU�RIO SELECIONAR
Collection colecaoDebitoCreditoParcelamentoSessao = (Collection) sessao.getAttribute("colecaoDebitoCreditoParcelamento");
if (colecaoDebitoCreditoParcelamentoSessao != null && !colecaoDebitoCreditoParcelamentoSessao.isEmpty()) {
Iterator itColecaoDebitoCreditoParcelamentoSessao = colecaoDebitoCreditoParcelamentoSessao.iterator();
DebitoCreditoParcelamentoHelper debitoCreditoParcelamentoHelper = null;
BigDecimal valorTotalDebito = BigDecimal.ZERO;
BigDecimal valorTotalCredito = BigDecimal.ZERO;
Collection<DebitoCreditoParcelamentoHelper> colecaoAntecipacaoDebitos = new ArrayList();
Collection<DebitoCreditoParcelamentoHelper> colecaoAntecipacaoCreditos = new ArrayList();
while (itColecaoDebitoCreditoParcelamentoSessao.hasNext()) {
debitoCreditoParcelamentoHelper = (DebitoCreditoParcelamentoHelper) itColecaoDebitoCreditoParcelamentoSessao.next();
if (requestMap.get("parc" + debitoCreditoParcelamentoHelper.getParcelamento().getId()) != null) {
// QUANTIDADE DE PARCELAS QUE SER�O ANTECIPADAS
String qtdAntecipacaoParcelas = (requestMap.get("parc" + debitoCreditoParcelamentoHelper.getParcelamento().getId()))[0];
if (qtdAntecipacaoParcelas != null && !qtdAntecipacaoParcelas.equals("")) {
// INICIALIZANDO O OBJETO DE RETORNO
if (retorno == null) {
retorno = new Object[4];
}
// QUANTIDADE DE PARCELAS QUE SER�O ANTECIPADAS
debitoCreditoParcelamentoHelper.setQuantidadeAntecipacaoParcelas(Integer.valueOf(qtdAntecipacaoParcelas));
/*
* SELECIONANDO OS D�BITOS RELACIONADOS AO PARCELAMENTO
* E CALCULANDO O VALOR QUE SER� COLOCADO NO EXTRATO DE
* ACORDO COM A QUANTIDADE DE PARCELAS QUE FOI INFORMADA
* PARA ANTECIPA��O.
*/
if (debitoCreditoParcelamentoHelper.getColecaoDebitoACobrarParcelamento() != null
&& !debitoCreditoParcelamentoHelper.getColecaoDebitoACobrarParcelamento().isEmpty()) {
Collection colecaoDebito = debitoCreditoParcelamentoHelper.getColecaoDebitoACobrarParcelamento();
Iterator iterDebito = colecaoDebito.iterator();
while (iterDebito.hasNext()) {
DebitoACobrar debitoACobrar = (DebitoACobrar) iterDebito.next();
/*
* [UC0630] Solicitar Emiss�o do Extrato de
* D�bitos [FS0003] � Quantidade de Parcelas
* Informadas Inv�lida
*/
fachada.verificarQuantidadeParcelasInformada(debitoACobrar, Short.valueOf(qtdAntecipacaoParcelas));
// CALCULANDO O VALOR QUE SER� ANTECIPADO
valorTotalDebito = valorTotalDebito.add(debitoACobrar.getValorAntecipacaoParcela(Integer.valueOf(qtdAntecipacaoParcelas)));
}
// D�BITOS A COBRAR QUE FAR�O PARTE DO EXTRATO DE
// D�BITO
colecaoAntecipacaoDebitos.add(debitoCreditoParcelamentoHelper);
}
/*
* SELECIONANDO OS CR�DITOS RELACIONADOS AO PARCELAMENTO
* E CALCULANDO O VALOR QUE SER� COLOCADO NO EXTRATO DE
* ACORDO COM A QUANTIDADE DE PARCELAS QUE FOI INFORMADA
* PARA ANTECIPA��O.
*/
if (debitoCreditoParcelamentoHelper.getColecaoCreditoARealizarParcelamento() != null
&& !debitoCreditoParcelamentoHelper.getColecaoCreditoARealizarParcelamento().isEmpty()) {
Collection colecaoCredito = debitoCreditoParcelamentoHelper.getColecaoCreditoARealizarParcelamento();
Iterator iterCredito = colecaoCredito.iterator();
while (iterCredito.hasNext()) {
CreditoARealizar creditoARealizar = (CreditoARealizar) iterCredito.next();
// CALCULANDO O VALOR QUE SER� ANTECIPADO
valorTotalCredito = valorTotalCredito.add(creditoARealizar.getValorAntecipacaoParcela(Integer.valueOf(qtdAntecipacaoParcelas)));
}
// CR�DITOS A REALIZAR QUE FAR�O PARTE DO EXTRATO DE
// D�BITO
colecaoAntecipacaoCreditos.add(debitoCreditoParcelamentoHelper);
}
}
}
}
if (retorno != null) {
retorno[0] = colecaoAntecipacaoDebitos;
retorno[1] = valorTotalDebito;
retorno[2] = colecaoAntecipacaoCreditos;
retorno[3] = valorTotalCredito;
}
}
return retorno;
}
}