package gcom.gui.cobranca; import gcom.arrecadacao.pagamento.GuiaPagamento; import gcom.cadastro.geografico.Municipio; import gcom.cobranca.bean.ContaValoresHelper; import gcom.cobranca.bean.GuiaPagamentoValoresHelper; import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper; import gcom.fachada.Fachada; import gcom.faturamento.conta.Conta; import gcom.faturamento.credito.CreditoARealizar; import gcom.faturamento.debito.DebitoACobrar; import gcom.gui.GcomAction; import gcom.relatorio.cobranca.RelatorioEmitirDeclaracaoTransferenciaDebito; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * Esta classe tem por finalidade realizar a transfer�ncia de d�bitos e cr�ditos entre * os im�veis de origem e destino * * @author Raphael Rossiter * @date 12/06/2007 */ public class TransferirDebitoCreditoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("telaSucesso"); TransferenciaDebitoCreditoDadosImovelActionForm form = (TransferenciaDebitoCreditoDadosImovelActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); Integer idRa = new Integer(form.getIdRegistroAtendimento()); Integer idImovelDestino = new Integer(form.getIdImovelDestino()); // Valida��o dos dados informados referentes aos im�veis de origem e destino fachada.validarTransferenciaDebitoCreditoDadosImoveis(idRa, idImovelDestino); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); String idsContas = httpServletRequest.getParameter("conta"); String idsDebitos = httpServletRequest.getParameter("debito"); String idsCreditos = httpServletRequest.getParameter("credito"); String idsGuias = httpServletRequest.getParameter("guiaPagamento"); //[SB0001] - Apresentar D�bitos/Cr�ditos do Im�vel de Origem ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = fachada.apresentarDebitoCreditoImovelOrigem(new Integer(form.getIdImovelOrigem())); Collection<Conta> colecaoContas = this.obterContasSelecionadas(idsContas, obterDebitoImovelOuClienteHelper.getColecaoContasValoresImovel()); Collection<DebitoACobrar> colecaoDebitos = this.obterDebitosSelecionados(idsDebitos, obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar()); Collection<CreditoARealizar> colecaoCreditos = this.obterCreditosSelecionadas(idsCreditos, obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar()); Collection<GuiaPagamento> colecaoGuiaPagamentos = this.obterGuiasSelecionadas(idsGuias, obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores()); String idEmitir = httpServletRequest.getParameter("indicadorEmissao"); fachada.transferirDebitosCreditos(idImovelDestino, colecaoContas, colecaoDebitos, colecaoCreditos, colecaoGuiaPagamentos, usuarioLogado, idRa, idsContas); if(idEmitir.equals("true")){ BigDecimal novoValor = BigDecimal.ZERO; novoValor = novoValor .add(this.obterValorContasSelecionadas(idsContas, obterDebitoImovelOuClienteHelper.getColecaoContasValoresImovel())) .add(this.obterValorDebitosSelecionados(idsDebitos, obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar())) .add(this.obterValorCreditosSelecionadas(idsCreditos, obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar())) .add(this.obterValorGuiasSelecionadas(idsGuias, obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores())); this.gerarRelatorio(novoValor,form,httpServletRequest); montarPaginaSucesso(httpServletRequest, "Transfer�ncia realizada com sucesso.", "Transfer�ncia de D�bitos/Cr�ditos", "exibirTransferenciaDebitoCreditoDadosImovelAction.do?menu=sim", "gerarRelatorioEmitirDeclaracaoTransferenciaDebitoCredito.do", "Emitir Declara��o de Transfer�ncia de D�bitos/Cr�ditos"); }else{ montarPaginaSucesso(httpServletRequest, "Transfer�ncia realizada com sucesso.", "Transfer�ncia de D�bitos/Cr�ditos", "exibirTransferenciaDebitoCreditoDadosImovelAction.do?menu=sim"); } return retorno; } private void gerarRelatorio (BigDecimal novoValor, TransferenciaDebitoCreditoDadosImovelActionForm form,HttpServletRequest httpServletRequest){ String indicadorTipoEmissao = form.getIndicadorTipoEmissao(); String clienteUsuarioDestino = this.getFachada().consultarClienteUsuarioImovel(Integer.parseInt(form.getIdImovelDestino())); String clienteUsuarioOrigem = this.getFachada().consultarClienteUsuarioImovel(Integer.parseInt(form.getIdImovelOrigem())); String valorNovaConta = Util.formatarBigDecimalParaStringComVirgula(novoValor); String diaMesAno = Util.retornaDataPorExtenso(new Date()); Municipio municipio = this.getFachada().pesquisarMunicipioImovel(Integer.parseInt(form.getIdImovelDestino())); // cria uma inst�ncia da classe do relat�rio RelatorioEmitirDeclaracaoTransferenciaDebito relatorioEmitirDeclaracaoTransferenciaDebito = new RelatorioEmitirDeclaracaoTransferenciaDebito(this.getUsuarioLogado(httpServletRequest)); relatorioEmitirDeclaracaoTransferenciaDebito.addParametro("clienteUsuarioDestino", clienteUsuarioDestino); relatorioEmitirDeclaracaoTransferenciaDebito.addParametro("clienteUsuarioOrigem", clienteUsuarioOrigem); relatorioEmitirDeclaracaoTransferenciaDebito.addParametro("valorNovaConta", valorNovaConta); relatorioEmitirDeclaracaoTransferenciaDebito.addParametro("indicadorTipoEmissao", indicadorTipoEmissao); relatorioEmitirDeclaracaoTransferenciaDebito.addParametro("diaMesAno", diaMesAno); relatorioEmitirDeclaracaoTransferenciaDebito.addParametro("municipio", municipio.getNome()); this.getSessao(httpServletRequest).setAttribute("declaracaoTransferencia", relatorioEmitirDeclaracaoTransferenciaDebito); } private Collection<Conta> obterContasSelecionadas(String idsContas, Collection colecaoContasBase){ Collection<Conta> colecaoContas = null; if (idsContas != null && !idsContas.equals("")){ colecaoContas = new ArrayList(); Iterator itColecaoContas = colecaoContasBase.iterator(); ContaValoresHelper contaValoresHelper = null; String[] idsContasArray = idsContas.split(","); while (itColecaoContas.hasNext()){ contaValoresHelper = (ContaValoresHelper) itColecaoContas.next(); for(int x=0; x<idsContasArray.length; x++){ if (contaValoresHelper.getConta().getId().equals(new Integer(idsContasArray[x]))){ colecaoContas.add(contaValoresHelper.getConta()); } } } } return colecaoContas; } private Collection<DebitoACobrar> obterDebitosSelecionados(String idsDebitos, Collection colecaoDebitosBase){ Collection<DebitoACobrar> colecaoDebitos = null; if (idsDebitos != null && !idsDebitos.equals("")){ colecaoDebitos = new ArrayList(); Iterator itColecaoDebitos = colecaoDebitosBase.iterator(); DebitoACobrar debitoACobrar = null; String[] idsDebitosArray = idsDebitos.split(","); while (itColecaoDebitos.hasNext()){ debitoACobrar = (DebitoACobrar) itColecaoDebitos.next(); for(int x=0; x<idsDebitosArray.length; x++){ if (debitoACobrar.getId().equals(new Integer(idsDebitosArray[x]))){ colecaoDebitos.add(debitoACobrar); } } } } return colecaoDebitos; } private Collection<CreditoARealizar> obterCreditosSelecionadas(String idsCreditos, Collection colecaoCreditosBase){ Collection<CreditoARealizar> colecaoCreditos = null; if (idsCreditos != null && !idsCreditos.equals("")){ colecaoCreditos = new ArrayList(); Iterator itColecaoCreditos = colecaoCreditosBase.iterator(); CreditoARealizar creditoARealizar = null; String[] idsCreditosArray = idsCreditos.split(","); while (itColecaoCreditos.hasNext()){ creditoARealizar = (CreditoARealizar) itColecaoCreditos.next(); for(int x=0; x<idsCreditosArray.length; x++){ if (creditoARealizar.getId().equals(new Integer(idsCreditosArray[x]))){ colecaoCreditos.add(creditoARealizar); } } } } return colecaoCreditos; } private Collection<GuiaPagamento> obterGuiasSelecionadas(String idsGuias, Collection colecaoGuiasBase){ Collection<GuiaPagamento> colecaoGuias = null; if (idsGuias != null && !idsGuias.equals("")){ colecaoGuias = new ArrayList(); Iterator itColecaoGuias = colecaoGuiasBase.iterator(); GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = null; String[] idsGuiasArray = idsGuias.split(","); while (itColecaoGuias.hasNext()){ guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) itColecaoGuias.next(); for(int x=0; x<idsGuiasArray.length; x++){ if (guiaPagamentoValoresHelper.getGuiaPagamento().getId().equals(new Integer(idsGuiasArray[x]))){ colecaoGuias.add(guiaPagamentoValoresHelper.getGuiaPagamento()); } } } } return colecaoGuias; } private BigDecimal obterValorContasSelecionadas(String idsContas, Collection colecaoContasBase){ BigDecimal retorno = BigDecimal.ZERO; if (idsContas != null && !idsContas.equals("")){ Iterator itColecaoContas = colecaoContasBase.iterator(); ContaValoresHelper contaValoresHelper = null; String[] idsContasArray = idsContas.split(","); while (itColecaoContas.hasNext()){ contaValoresHelper = (ContaValoresHelper) itColecaoContas.next(); for(int x=0; x<idsContasArray.length; x++){ if (contaValoresHelper.getConta().getId().equals(new Integer(idsContasArray[x]))){ retorno = retorno.add(contaValoresHelper.getValorTotalConta().add(contaValoresHelper.getValorTotalContaValoresParcelamento())); } } } } return retorno; } private BigDecimal obterValorDebitosSelecionados(String idsDebitos, Collection colecaoDebitosBase){ BigDecimal retorno = BigDecimal.ZERO; if (idsDebitos != null && !idsDebitos.equals("")){ Iterator itColecaoDebitos = colecaoDebitosBase.iterator(); DebitoACobrar debitoACobrar = null; String[] idsDebitosArray = idsDebitos.split(","); while (itColecaoDebitos.hasNext()){ debitoACobrar = (DebitoACobrar) itColecaoDebitos.next(); for(int x=0; x<idsDebitosArray.length; x++){ if (debitoACobrar.getId().equals(new Integer(idsDebitosArray[x]))){ retorno = retorno.add(debitoACobrar.getValorTotalComBonus()); } } } } return retorno; } private BigDecimal obterValorCreditosSelecionadas(String idsCreditos, Collection colecaoCreditosBase){ BigDecimal retorno = BigDecimal.ZERO; if (idsCreditos != null && !idsCreditos.equals("")){ Iterator itColecaoCreditos = colecaoCreditosBase.iterator(); CreditoARealizar creditoARealizar = null; String[] idsCreditosArray = idsCreditos.split(","); while (itColecaoCreditos.hasNext()){ creditoARealizar = (CreditoARealizar) itColecaoCreditos.next(); for(int x=0; x<idsCreditosArray.length; x++){ if (creditoARealizar.getId().equals(new Integer(idsCreditosArray[x]))){ retorno = retorno.add(creditoARealizar.getValorTotalComBonus()); } } } } return retorno; } private BigDecimal obterValorGuiasSelecionadas(String idsGuias, Collection colecaoGuiasBase){ BigDecimal retorno = BigDecimal.ZERO; if (idsGuias != null && !idsGuias.equals("")){ Iterator itColecaoGuias = colecaoGuiasBase.iterator(); GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = null; String[] idsGuiasArray = idsGuias.split(","); while (itColecaoGuias.hasNext()){ guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) itColecaoGuias.next(); for(int x=0; x<idsGuiasArray.length; x++){ if (guiaPagamentoValoresHelper.getGuiaPagamento().getId().equals(new Integer(idsGuiasArray[x]))){ retorno = retorno.add(guiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito()); } } } } return retorno; } }