package gcom.gui.faturamento.conta; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.Subcategoria; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.bean.CalcularValoresAguaEsgotoHelper; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import java.math.BigDecimal; 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 CalcularValoresContaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("exibirInserirConta"); Fachada fachada = Fachada.getInstancia(); //Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); //Inst�ncia do formul�rio que est� sendo utilizado InserirContaActionForm inserirContaActionForm = (InserirContaActionForm) actionForm; //Recebendo os dados enviados pelo formul�rio String imovelID = inserirContaActionForm.getIdImovel(); String mesAnoConta = inserirContaActionForm.getMesAnoConta(); Integer situacaoAguaConta = new Integer(inserirContaActionForm .getSituacaoAguaConta()); Integer situacaoEsgotoConta = new Integer(inserirContaActionForm .getSituacaoEsgotoConta()); String consumoAgua = inserirContaActionForm.getConsumoAgua(); String consumoEsgoto = inserirContaActionForm.getConsumoEsgoto(); String percentualEsgoto = inserirContaActionForm.getPercentualEsgoto(); //Carrega as cole��es de acordo com os objetos da sess�o Collection colecaoDebitoCobrado = null; if (sessao.getAttribute("colecaoDebitoCobrado") != null){ colecaoDebitoCobrado = (Collection) sessao.getAttribute("colecaoDebitoCobrado"); } Collection colecaoCategoriaOUSubcategoria = null; if (sessao.getAttribute("colecaoCategoria") != null){ colecaoCategoriaOUSubcategoria = (Collection) sessao.getAttribute("colecaoCategoria"); this.atualizarQuantidadeEconomiasCategoria(colecaoCategoriaOUSubcategoria, httpServletRequest); } else{ colecaoCategoriaOUSubcategoria = (Collection) sessao.getAttribute("colecaoSubcategoria"); this.atualizarQuantidadeEconomiasSubcategoria(colecaoCategoriaOUSubcategoria, httpServletRequest); } Collection<CalcularValoresAguaEsgotoHelper> valoresConta = null; //[SF0001] - Determinar Valores para Faturamento de �gua e/ou Esgoto Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO); valoresConta = fachada.calcularValoresConta(mesAnoConta, imovelID, situacaoAguaConta, situacaoEsgotoConta, colecaoCategoriaOUSubcategoria, consumoAgua, consumoEsgoto, percentualEsgoto, null, usuarioLogado); //C�lcula o valor total dos d�bitos de uma conta de acordo com o informado pelo usu�rio BigDecimal valorTotalDebitosConta = fachada.calcularValorTotalDebitoConta(colecaoDebitoCobrado, httpServletRequest.getParameterMap()); //Totalizando os valores de �gua e esgoto BigDecimal valorTotalAgua = new BigDecimal("0"); BigDecimal valorTotalEsgoto = new BigDecimal("0"); if (valoresConta != null && !valoresConta.isEmpty()){ Iterator valoresContaIt = valoresConta.iterator(); CalcularValoresAguaEsgotoHelper valoresContaObjeto = null; while (valoresContaIt.hasNext()){ valoresContaObjeto = (CalcularValoresAguaEsgotoHelper) valoresContaIt.next(); //Valor Faturado de �gua if (valoresContaObjeto.getValorFaturadoAguaCategoria() != null){ valorTotalAgua = valorTotalAgua.add(valoresContaObjeto.getValorFaturadoAguaCategoria()); } //Valor Faturado de Esgoto if (valoresContaObjeto.getValorFaturadoEsgotoCategoria() != null){ valorTotalEsgoto = valorTotalEsgoto.add(valoresContaObjeto.getValorFaturadoEsgotoCategoria()); } } } if(valoresConta != null){ // Consumo de Esgoto Integer consumoAgua2 = fachada.calcularConsumoTotalAguaOuEsgotoPorCategoria( valoresConta, ConstantesSistema.CALCULAR_AGUA); if(consumoAgua2 != null) { inserirContaActionForm.setConsumoAgua(consumoAgua2.toString()); } Integer consumoEsgoto2 = fachada.calcularConsumoTotalAguaOuEsgotoPorCategoria( valoresConta, ConstantesSistema.CALCULAR_ESGOTO); if(consumoEsgoto2 != null) { inserirContaActionForm.setConsumoEsgoto(consumoEsgoto2.toString()); } } BigDecimal valorTotalConta = new BigDecimal("0"); valorTotalConta = valorTotalConta.add(valorTotalAgua); valorTotalConta = valorTotalConta.add(valorTotalEsgoto); valorTotalConta = valorTotalConta.add(valorTotalDebitosConta); // [FS0008] - Verificar valor da conta igual a zero if (valorTotalConta.equals(new BigDecimal("0.00"))) { throw new ActionServletException("atencao.valor_conta_igual_zero"); } //Arredondando os valores obtidos para duas casas decimais valorTotalAgua.setScale(2, BigDecimal.ROUND_HALF_UP); valorTotalEsgoto.setScale(2, BigDecimal.ROUND_HALF_UP); valorTotalDebitosConta.setScale(2, BigDecimal.ROUND_HALF_UP); valorTotalConta.setScale(2, BigDecimal.ROUND_HALF_UP); //Exibindo os valores calculados inserirContaActionForm.setValorAgua(Util.formatarMoedaReal(valorTotalAgua)); inserirContaActionForm.setValorEsgoto(Util.formatarMoedaReal(valorTotalEsgoto)); inserirContaActionForm.setValorDebito(Util.formatarMoedaReal(valorTotalDebitosConta)); inserirContaActionForm.setValorTotal(Util.formatarMoedaReal(valorTotalConta)); //setando o valor do percentual httpServletRequest.setAttribute("percentualEsgoto", Util.formatarMoedaRealparaBigDecimal(percentualEsgoto).toString().replace('.',',')); /* * Colocado por Raphael Rossiter em 17/04/2007 * Objetivo: Manipula��o dos objetos que ser�o exibidos no formul�rio de acordo com a empresa */ SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); httpServletRequest.setAttribute("empresaNome", sistemaParametro.getNomeAbreviadoEmpresa().trim()); return retorno; } private Integer atualizarQuantidadeEconomiasCategoria(Collection colecaoCategorias, HttpServletRequest httpServletRequest){ /* * Atualizando a quantidade de economias por categoria de acordo com o * informado pelo usu�rio */ Integer qtdEconnomia = 0; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()){ Iterator colecaoCategoriaIt = colecaoCategorias.iterator(); Categoria categoria; Map<String, String[]> requestMap = httpServletRequest.getParameterMap(); String qtdPorEconomia; while (colecaoCategoriaIt.hasNext()) { categoria = (Categoria) colecaoCategoriaIt.next(); if (requestMap.get("categoria" + categoria.getId().intValue()) != null) { qtdPorEconomia = (requestMap.get("categoria" + categoria.getId().intValue()))[0]; if (qtdPorEconomia == null || qtdPorEconomia.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.campo_texto.obrigatorio", null, "Quantidade de economias"); } categoria.setQuantidadeEconomiasCategoria(new Integer( qtdPorEconomia)); qtdEconnomia = Util.somaInteiros(qtdEconnomia,new Integer(qtdPorEconomia)); } } } return qtdEconnomia; } private Integer atualizarQuantidadeEconomiasSubcategoria(Collection colecaoSubcategorias, HttpServletRequest httpServletRequest){ /* * Atualizando a quantidade de economias por subcategoria de acordo com o * informado pelo usu�rio */ Integer qtdEconnomia = 0; if (colecaoSubcategorias != null && !colecaoSubcategorias.isEmpty()){ Iterator colecaoSubcategoriaIt = colecaoSubcategorias.iterator(); Subcategoria subcategoria; Map<String, String[]> requestMap = httpServletRequest.getParameterMap(); String qtdPorEconomia; while (colecaoSubcategoriaIt.hasNext()) { subcategoria = (Subcategoria) colecaoSubcategoriaIt.next(); if (requestMap.get("subcategoria" + subcategoria.getId().intValue()) != null) { qtdPorEconomia = (requestMap.get("subcategoria" + subcategoria.getId().intValue()))[0]; if (qtdPorEconomia == null || qtdPorEconomia.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.campo_texto.obrigatorio", null, "Quantidade de economias"); } subcategoria.setQuantidadeEconomias(new Integer( qtdPorEconomia)); qtdEconnomia = Util.somaInteiros(qtdEconnomia,new Integer(qtdPorEconomia)); } } } return qtdEconnomia; } }