package gcom.gui.cobranca; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.ImovelPerfil; import gcom.cobranca.CobrancaCriterioLinha; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.Util; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import 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; /** * Processamento para adicionar a linha do criterio da cobran�a * * @author S�vio Luiz * @date 02/05/2006 */ public class AdicionarCriterioCobrancaLinhaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o retorno ActionForward retorno = actionMapping .findForward("adicionarCriterioCobrancaLinha"); CriterioCobrancaActionForm criterioCobrancaActionForm = (CriterioCobrancaActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); // recupera o par imovel perfil que tem o id e a descricao do imovel // perfil // separado por ; String[] parImovelPerfil = criterioCobrancaActionForm .getParImovelPerfil(); // String[] arrayImovelPerfil = parImovelPerfil.split(";"); Collection colecaoCobrancaCriterioLinha = null; if (sessao.getAttribute("colecaoCobrancaCriterioLinha") != null && !sessao.getAttribute("colecaoCobrancaCriterioLinha").equals( "")) { colecaoCobrancaCriterioLinha = (Collection) sessao .getAttribute("colecaoCobrancaCriterioLinha"); } else { colecaoCobrancaCriterioLinha = new ArrayList(); } if (parImovelPerfil != null && !parImovelPerfil.equals("")) { for (int i = 0; i < parImovelPerfil.length; i++) { // cria o imovel perfil para ser inserido na cobranca criterio // linha String[] arrayImovelPerfil = parImovelPerfil[i].split(";"); ImovelPerfil imovelPerfil = new ImovelPerfil(); imovelPerfil.setId(new Integer(arrayImovelPerfil[0])); imovelPerfil.setDescricao(arrayImovelPerfil[1]); // recupera o par categoria que tem o id e a descricao da // categoria // separado por ; String[] parCategoria = criterioCobrancaActionForm .getParCategoria(); if (parCategoria != null && !parCategoria.equals("")) { for (int j = 0; j < parCategoria.length; j++) { // cria a categoria para ser inserido na cobranca // criterio // linha String[] arrayCategoria = parCategoria[j].split(";"); Categoria categoria = new Categoria(); categoria.setId(new Integer(arrayCategoria[0])); categoria.setDescricao(arrayCategoria[1]); // faz um iterator para verificar se existe na cole��o o // imovel // perfil // e a categoria que foram escolhidos Iterator iteratorCobrancaCriterioLinha = colecaoCobrancaCriterioLinha .iterator(); while (iteratorCobrancaCriterioLinha.hasNext()) { CobrancaCriterioLinha cobrancaCriterioLinha = (CobrancaCriterioLinha) iteratorCobrancaCriterioLinha .next(); if (cobrancaCriterioLinha.getImovelPerfil().getId() .equals(imovelPerfil.getId()) && cobrancaCriterioLinha.getCategoria() .getId().equals(categoria.getId())) { throw new ActionServletException( "atencao.imovel.perfil.categoria.informados"); } } // cria a cobranca criterio linha para ser exibido na // tela // de // inserir // verifica se o valor maximo � menor que o m�nimo BigDecimal valorDebitoMinimo = null; if (criterioCobrancaActionForm.getValorDebitoMinimo() != null && !criterioCobrancaActionForm .getValorDebitoMinimo().equals("")) { valorDebitoMinimo = Util .formatarMoedaRealparaBigDecimal(criterioCobrancaActionForm .getValorDebitoMinimo()); } BigDecimal valorDebitoMaximo = null; if (criterioCobrancaActionForm.getValorDebitoMaximo() != null && !criterioCobrancaActionForm .getValorDebitoMaximo().equals("")) { valorDebitoMaximo = Util .formatarMoedaRealparaBigDecimal(criterioCobrancaActionForm .getValorDebitoMaximo()); } if (valorDebitoMinimo != null && valorDebitoMaximo != null) { if (valorDebitoMinimo.compareTo(valorDebitoMaximo) == 1) { throw new ActionServletException( "atencao.valor.maximo.debito.menor.valor.minimo.debito"); } } CobrancaCriterioLinha cobrancaCriterioLinha = new CobrancaCriterioLinha(); cobrancaCriterioLinha.setImovelPerfil(imovelPerfil); cobrancaCriterioLinha.setCategoria(categoria); cobrancaCriterioLinha .setValorMinimoDebito(valorDebitoMinimo); cobrancaCriterioLinha .setValorMaximoDebito(valorDebitoMaximo); Short qtdContasMinima = null; if (criterioCobrancaActionForm.getQtdContasMinima() != null && !criterioCobrancaActionForm .getQtdContasMinima().equals("")) { qtdContasMinima = new Short( criterioCobrancaActionForm .getQtdContasMinima()); } Short qtdContasMaxima = null; if (criterioCobrancaActionForm.getQtdContasMaxima() != null && !criterioCobrancaActionForm .getQtdContasMaxima().equals("")) { qtdContasMaxima = new Short( criterioCobrancaActionForm .getQtdContasMaxima()); } if (qtdContasMinima != null && qtdContasMaxima != null) { if (qtdContasMinima > qtdContasMaxima) { throw new ActionServletException( "atencao.quantidade.maxima.contas.menor.quantidade.minima.contas"); } } cobrancaCriterioLinha .setQuantidadeMinimaContas(qtdContasMinima); cobrancaCriterioLinha .setQuantidadeMaximaContas(qtdContasMaxima); if (criterioCobrancaActionForm .getVlMinimoDebitoCliente() != null && !criterioCobrancaActionForm .getVlMinimoDebitoCliente().equals("")) { cobrancaCriterioLinha .setValorMinimoDebitoDebitoAutomatico(Util .formatarMoedaRealparaBigDecimal(criterioCobrancaActionForm .getVlMinimoDebitoCliente())); } if (criterioCobrancaActionForm.getQtdMinContasCliente() != null && !criterioCobrancaActionForm .getQtdMinContasCliente().equals("")) { cobrancaCriterioLinha .setQuantidadeMinimaContasDebitoAutomatico(new Short( criterioCobrancaActionForm .getQtdMinContasCliente())); } if (criterioCobrancaActionForm.getVlMinimoContasMes() != null && !criterioCobrancaActionForm .getVlMinimoContasMes().equals("")) { cobrancaCriterioLinha .setValorMinimoContaMes(Util .formatarMoedaRealparaBigDecimal(criterioCobrancaActionForm .getVlMinimoContasMes())); } if (criterioCobrancaActionForm .getQuantidadeMinimaParcelasAtraso() != null && !criterioCobrancaActionForm .getQuantidadeMinimaParcelasAtraso() .equals("")) { cobrancaCriterioLinha .setQuantidadeMinimaContasParcelamento(new Short( criterioCobrancaActionForm .getQuantidadeMinimaParcelasAtraso())); } else { cobrancaCriterioLinha .setQuantidadeMinimaContasParcelamento(new Short( "0")); } cobrancaCriterioLinha.setUltimaAlteracao(new Date()); // adiciona a cobranca criterio linha na colecao colecaoCobrancaCriterioLinha.add(cobrancaCriterioLinha); } } else { throw new ActionServletException("atencao.informe_campo", null, "Categoria"); } } } else { throw new ActionServletException("atencao.informe_campo", null, "Perfil do Im�vel"); } sessao.setAttribute("colecaoCobrancaCriterioLinha", colecaoCobrancaCriterioLinha); httpServletRequest.setAttribute("fechaPopup", "true"); return retorno; } }