From 004d5dd2a82cf433929f51c18e5a4d10392bed87 Mon Sep 17 00:00:00 2001 From: edgar Date: Thu, 8 Sep 2016 14:26:47 +0000 Subject: [PATCH] fixes bug #7867 - indice pegadagio por classe git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@60095 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../BusquedaOrgaoConcedenteController.java | 9 +- .../EditarOrgaoConcedenteController.java | 135 +++++++++++--- .../tarifas/CalcularPeajeController.java | 24 ++- .../render/RenderClasseIndicePeaj.java | 24 +++ .../V20160901_1030__classeindicepeaj.sql | 11 ++ src/java/spring-config.xml | 1 + web/WEB-INF/i3-label_es_MX.label | 2 +- web/WEB-INF/i3-label_pt_BR.label | 2 + web/gui/catalogos/editarOrgaoConcedente.zul | 170 ++++++++++++------ 9 files changed, 281 insertions(+), 97 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderClasseIndicePeaj.java create mode 100644 src/java/db/migration/V20160901_1030__classeindicepeaj.sql diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaOrgaoConcedenteController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaOrgaoConcedenteController.java index fa5c8a3be..9d96303f7 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaOrgaoConcedenteController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/BusquedaOrgaoConcedenteController.java @@ -62,12 +62,11 @@ public class BusquedaOrgaoConcedenteController extends MyGenericForwardComposer args.put("orgaoConcedenteList", orgaoConcedenteList); openWindow("/gui/catalogos/editarOrgaoConcedente.zul", - Labels.getLabel("editarOrgaoConcedenteController.window.title"), args, MODAL); + Labels.getLabel("editarOrgaoConcedenteController.window.title"), args, MODAL); } private void refreshLista() { - HibernateSearchObject orgaoConcedenteBusqueda = - new HibernateSearchObject(OrgaoConcedente.class, pagingOrgaoConcedente.getPageSize()); + HibernateSearchObject orgaoConcedenteBusqueda = new HibernateSearchObject(OrgaoConcedente.class, pagingOrgaoConcedente.getPageSize()); orgaoConcedenteBusqueda.addFilterILike("descOrgao", "%" + txtNome.getText().trim().concat("%")); @@ -80,8 +79,8 @@ public class BusquedaOrgaoConcedenteController extends MyGenericForwardComposer if (orgaoConcedenteList.getData().length == 0) { try { Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), - Labels.getLabel("busquedaOrgaoConcedenteController.window.title"), - Messagebox.OK, Messagebox.INFORMATION); + Labels.getLabel("busquedaOrgaoConcedenteController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); } catch (InterruptedException ex) { } } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOrgaoConcedenteController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOrgaoConcedenteController.java index c148b2e9c..8e0e47b87 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOrgaoConcedenteController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/catalogos/EditarOrgaoConcedenteController.java @@ -1,10 +1,14 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.catalogos; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Calendar; import java.util.List; import org.apache.commons.lang.StringUtils; +import org.apache.poi.ss.usermodel.Textbox; +import org.apache.xerces.impl.dtd.models.CMBinOp; +import org.flywaydb.core.internal.dbsupport.mysql.MySQLSqlStatementBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; @@ -14,18 +18,25 @@ import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Event; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Messagebox; +import org.zkoss.zul.api.Combobox; +import com.rjconsultores.ventaboletos.dao.ClasseServicoDAO; +import com.rjconsultores.ventaboletos.entidad.ClaseServicio; +import com.rjconsultores.ventaboletos.entidad.ClasseIndicePeaje; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.OrgaoCancelacion; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; +import com.rjconsultores.ventaboletos.service.ClaseServicioService; import com.rjconsultores.ventaboletos.service.OrgaoCancelacionService; import com.rjconsultores.ventaboletos.service.OrgaoConcedenteService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEmpresa; +import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox; import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderClasseIndicePeaj; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderOrgaoCancelacion; @Controller("editarOrgaoConcedenteController") @@ -33,12 +44,19 @@ import com.rjconsultores.ventaboletos.web.utilerias.render.RenderOrgaoCancelacio public class EditarOrgaoConcedenteController extends MyGenericForwardComposer { private static final long serialVersionUID = 1L; + @Autowired private OrgaoConcedenteService orgaoConcedenteService; private OrgaoConcedente orgaoConcedente; + @Autowired private OrgaoCancelacionService orgaoCancelacionService; + + @Autowired + private ClaseServicioService claseServicioService; + private MyListbox orgaoConcedenteList; + private MyListbox listBoxIndicePeaj; private MyListbox orgaoCancelacionList; private MyTextbox txtNome; private MyTextboxDecimal txtPorcMulta; @@ -47,10 +65,17 @@ public class EditarOrgaoConcedenteController extends MyGenericForwardComposer { private MyTextbox txtTiempoLimiteCambio; private Checkbox chkIndnaopermitetransferencia; private MyComboboxEmpresa cmbEmpresa; - private MyTextboxDecimal txtIndicePeaje; + private MyTextboxDecimal txtIndicePeaje; + private MyTextboxDecimal txtIndicePeajClasse; + + private MyComboboxEstandar cmbClasseServicio; + + private List lsClasseServico; private List lsOrgaoCancelacion; - + + private List lsClasseIndicePeajes; + public OrgaoConcedente getOrgaoConcedente() { return orgaoConcedente; } @@ -62,30 +87,42 @@ public class EditarOrgaoConcedenteController extends MyGenericForwardComposer { @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - orgaoConcedente = (OrgaoConcedente) Executions.getCurrent().getArg().get("orgaoConcedente"); + Integer orgaoConcedenteId = ((OrgaoConcedente) Executions.getCurrent().getArg().get("orgaoConcedente")).getOrgaoConcedenteId(); + + orgaoConcedente = orgaoConcedenteService.obtenerID(orgaoConcedenteId); + orgaoConcedenteList = (MyListbox) Executions.getCurrent().getArg().get("orgaoConcedenteList"); orgaoCancelacionList.setItemRenderer(new RenderOrgaoCancelacion()); lsOrgaoCancelacion = orgaoCancelacionService.buscarPorOrgao(orgaoConcedente); orgaoCancelacionList.setData(lsOrgaoCancelacion); + + lsClasseServico = claseServicioService.obtenerTodos(); + listBoxIndicePeaj.setItemRenderer(new RenderClasseIndicePeaj()); + + lsClasseIndicePeajes = orgaoConcedente.getClassesIndicePeaje(); + listBoxIndicePeaj.setData(lsClasseIndicePeajes); + txtIndicePeaje.setValue(orgaoConcedente.getIndicePeaje() != null ? orgaoConcedente.getIndicePeaje().toString().replace(".", ",") : ""); txtNome.focus(); } public void onClick$btnSalvar(Event ev) throws InterruptedException { - if(txtIndicePeaje != null && txtIndicePeaje.getValueDecimal() != null){ + if (txtIndicePeaje != null && txtIndicePeaje.getValueDecimal() != null) { BigDecimal bg = new BigDecimal(txtIndicePeaje.getValueDecimal().doubleValue()); - if(bg.equals(new BigDecimal(0))){ + if (bg.equals(new BigDecimal(0))) { Messagebox.show( Labels.getLabel("editarOrgaoConcedenteController.MSG.indicePeajeZeroInvalido"), Labels.getLabel("editarOrgaoConcedenteController.window.title"), Messagebox.OK, Messagebox.INFORMATION); return; - }else{ + } else { orgaoConcedente.setIndicePeaje(txtIndicePeaje.getValueDecimal()); } - }else{ + } else { orgaoConcedente.setIndicePeaje(txtIndicePeaje.getValueDecimal()); } + + orgaoConcedente.setClassesIndicePeaje(lsClasseIndicePeajes); orgaoConcedenteService.actualizacion(orgaoConcedente); orgaoConcedenteList.updateItem(orgaoConcedente); @@ -96,27 +133,27 @@ public class EditarOrgaoConcedenteController extends MyGenericForwardComposer { closeWindow(); } - - private Boolean parametroRepetido(Empresa empresa){ - for (OrgaoCancelacion o : lsOrgaoCancelacion){ - if (o.getEmpresa().equals(empresa)){ + + private Boolean parametroRepetido(Empresa empresa) { + for (OrgaoCancelacion o : lsOrgaoCancelacion) { + if (o.getEmpresa().equals(empresa)) { return true; } } return false; } - + public void onClick$btnAdicionarParametros(Event ev) throws InterruptedException { - if (parametroRepetido((Empresa)cmbEmpresa.getSelectedItem().getValue())){ + if (parametroRepetido((Empresa) cmbEmpresa.getSelectedItem().getValue())) { Messagebox.show( Labels.getLabel("editarOrgaoConcedenteController.MSG.parametroRepetido"), Labels.getLabel("editarOrgaoConcedenteController.window.title"), Messagebox.OK, Messagebox.INFORMATION); return; } - + OrgaoCancelacion oc = new OrgaoCancelacion(); - oc.setEmpresa((Empresa)cmbEmpresa.getSelectedItem().getValue()); + oc.setEmpresa((Empresa) cmbEmpresa.getSelectedItem().getValue()); oc.setOrgao(orgaoConcedente); oc.setPorccambio(txtPorcCambio.getValueDecimal()); oc.setPorcmulta(txtPorcMulta.getValueDecimal()); @@ -124,29 +161,85 @@ public class EditarOrgaoConcedenteController extends MyGenericForwardComposer { oc.setFecmodif(Calendar.getInstance().getTime()); oc.setTiempolimite(new Integer(txtTiempoLimite.getValue())); oc.setIndnaopermitetransferencia(chkIndnaopermitetransferencia.isChecked()); - - if(StringUtils.isNotBlank(txtTiempoLimiteCambio.getValue())) { + + if (StringUtils.isNotBlank(txtTiempoLimiteCambio.getValue())) { oc.setTiempolimiteCambio(new Integer(txtTiempoLimiteCambio.getValue())); } oc.setActivo(Boolean.TRUE); - + oc = orgaoCancelacionService.suscribirActualizacion(oc); lsOrgaoCancelacion.add(oc); orgaoCancelacionList.setData(lsOrgaoCancelacion); } - + public void onClick$btnRemoverParametros(Event ev) throws InterruptedException { - OrgaoCancelacion oc = (OrgaoCancelacion)orgaoCancelacionList.getSelected(); + OrgaoCancelacion oc = (OrgaoCancelacion) orgaoCancelacionList.getSelected(); orgaoCancelacionService.borrar(oc); lsOrgaoCancelacion.remove(oc); orgaoCancelacionList.setData(lsOrgaoCancelacion); } + public void onClick$btnAdicionarClassePeaje(Event ev) throws InterruptedException { + cmbClasseServicio.setConstraint("no empty"); + txtIndicePeajClasse.setConstraint("no empty,no negative, /[0-9]+(\\,[0-9][0-9]?)?|/ "); + + if (!classeExistente((ClaseServicio) cmbClasseServicio.getSelectedItem().getValue()) + && txtIndicePeajClasse.getValueDecimal() != null) { + + ClasseIndicePeaje classeIndicePeaje = new ClasseIndicePeaje(); + classeIndicePeaje.setActivo(true); + classeIndicePeaje.setClasseServicio((ClaseServicio) cmbClasseServicio.getSelectedItem().getValue()); + classeIndicePeaje.setOrgaoConcedente(orgaoConcedente); + classeIndicePeaje.setIndicePeaje(txtIndicePeajClasse.getValueDecimal()); + + cmbClasseServicio.setConstraint(""); + txtIndicePeajClasse.setConstraint(""); + + lsClasseIndicePeajes.add(classeIndicePeaje); + listBoxIndicePeaj.addItemNovo(classeIndicePeaje); + cmbClasseServicio.setSelectedItem(null); + txtIndicePeajClasse.setText(""); + } + } + + private boolean classeExistente(ClaseServicio claseServicio) throws InterruptedException { + List classesIndicePeajes = listBoxIndicePeaj.getListData(); + for (Object o : classesIndicePeajes) { + ClasseIndicePeaje classeIndice = (ClasseIndicePeaje) o; + if (classeIndice.getClasseServicio().equals(claseServicio)) { + Messagebox.show( + Labels.getLabel("editarOrgaoConcedenteController.MSG.classeExistente"), + Labels.getLabel("editarOrgaoConcedenteController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + return true; + } + } + return false; + } + + public void onClick$btnRemoverClassePeaje(Event ev) throws InterruptedException { + if (listBoxIndicePeaj.getSelectedItem() != null) { + ClasseIndicePeaje classeIndicePeaje = (ClasseIndicePeaje) listBoxIndicePeaj.getSelected(); + listBoxIndicePeaj.removeItem(classeIndicePeaje); + + if (classeIndicePeaje.getId() == null) { + lsClasseIndicePeajes.remove(classeIndicePeaje); + } else { + classeIndicePeaje.setActivo(false); + } + } + } + public MyTextboxDecimal getTxtIndicePeaje() { return txtIndicePeaje; } public void setTxtIndicePeaje(MyTextboxDecimal txtIndicePeaje) { this.txtIndicePeaje = txtIndicePeaje; - } + } + + public List getLsClasseServico() { + return lsClasseServico; + } + } \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/CalcularPeajeController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/CalcularPeajeController.java index 2969f37cd..161426128 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/CalcularPeajeController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/tarifas/CalcularPeajeController.java @@ -11,6 +11,7 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zul.Combobox; import org.zkoss.zul.Messagebox; import com.rjconsultores.ventaboletos.constantes.Constantes; +import com.rjconsultores.ventaboletos.entidad.ClasseIndicePeaje; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.service.CalcularPeajeService; @@ -51,7 +52,7 @@ public class CalcularPeajeController extends MyGenericForwardComposer { @Override public void doAfterCompose(Component comp) throws Exception { - super.doAfterCompose(comp); + super.doAfterCompose(comp); lsOrgaoConcedente = new ArrayList(); for (Integer orgaoConcedenteId : Constantes.ORGAOS_CONCEDENTES_CALCULO_ANTT) { @@ -64,42 +65,39 @@ public class CalcularPeajeController extends MyGenericForwardComposer { public void onClick$btnCalcularPeaje(Event ev) throws InterruptedException { OrgaoConcedente orgao = ((OrgaoConcedente) cmbOrgaoConcedente.getSelectedItem().getValue()); - if (orgao.getIndicePeaje() != null) { List lsRuta = rutaService.buscaRutasFromOrgao(orgao); try { calcularPeajeService.gerarSQLInserirPeajes(lsRuta, orgao); - + Messagebox.show(Labels.getLabel("calcularPeajeController.MSG.suscribirOK"), Labels.getLabel("indexController.mniCalculoPeaje.label"), Messagebox.OK, Messagebox.INFORMATION); - } - catch (RuntimeException e) { + } catch (RuntimeException e) { // TODO throw: especific exception should be created String error[] = e.getMessage().split(";"); - - if (error.length == 2){ + + if (error.length == 2) { String type = error[0]; String ruta = error[1]; - + if ("rutaSemQtdEixos".equals(type)) { Messagebox.show( Labels.getLabel("calcularPeajeController.MSG.rutaSemQtdEixos", new Object[] { ruta }), Labels.getLabel("indexController.mniCalculoPeaje.label"), Messagebox.NO, Messagebox.ERROR); - }else if("rutaSemQtdAsientos".equals(type)) { + } else if ("rutaSemQtdAsientos".equals(type)) { Messagebox.show( Labels.getLabel("calcularPeajeController.MSG.rutaSemQtdAsientos", new Object[] { ruta }), Labels.getLabel("indexController.mniCalculoPeaje.label"), Messagebox.NO, Messagebox.ERROR); } - - }else{ + + } else { Messagebox.show( Labels.getLabel("MSG.Error"), Labels.getLabel("indexController.mniCalculoPeaje.label"), Messagebox.NO, Messagebox.ERROR); } // TODO else: show some generic error for unexpected error } - } - else { + } else { Messagebox.show( Labels.getLabel("calcularPeajeController.MSG.orgaoSemIndice", new Object[] { orgao.getOrgaoConcedenteId() }), Labels.getLabel("indexController.mniCalculoPeaje.label"), Messagebox.NO, Messagebox.ERROR); diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderClasseIndicePeaj.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderClasseIndicePeaj.java new file mode 100644 index 000000000..dcbce19f8 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderClasseIndicePeaj.java @@ -0,0 +1,24 @@ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.entidad.ClasseIndicePeaje; + +public class RenderClasseIndicePeaj implements ListitemRenderer { + + @Override + public void render(Listitem arg0, Object arg1) throws Exception { + ClasseIndicePeaje classeIndicePeaje = (ClasseIndicePeaje) arg1; + + Listcell lc = new Listcell(classeIndicePeaje.getClasseServicio().getDescclase()); + lc.setParent(arg0); + + lc = new Listcell(classeIndicePeaje.getIndicePeaje().toString()); + lc.setParent(arg0); + + arg0.setAttribute("data", classeIndicePeaje); + } + +} diff --git a/src/java/db/migration/V20160901_1030__classeindicepeaj.sql b/src/java/db/migration/V20160901_1030__classeindicepeaj.sql new file mode 100644 index 000000000..270a4880a --- /dev/null +++ b/src/java/db/migration/V20160901_1030__classeindicepeaj.sql @@ -0,0 +1,11 @@ +CREATE TABLE CLASSE_INDICE_PEAJE ( + CLASSE_INDICE_PEAJE_ID INTEGER PRIMARY KEY, + ACTIVO NUMERIC(1), + CLASSE_SERVICIO_ID INTEGER, + ORGAOCONCEDENTE_ID INTEGER, + INDICE_PEAJE INTEGER, + FOREIGN KEY (CLASSE_SERVICIO_ID) REFERENCES CLASE_SERVICIO (CLASESERVICIO_ID), + FOREIGN KEY (ORGAOCONCEDENTE_ID) REFERENCES ORGAO_CONCEDENTE (ORGAOCONCEDENTE_ID) +); + +CREATE SEQUENCE "CLASSE_INDICE_PEAJE_SEQ" MINVALUE 1 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ; \ No newline at end of file diff --git a/src/java/spring-config.xml b/src/java/spring-config.xml index f5d97883c..6142d800a 100644 --- a/src/java/spring-config.xml +++ b/src/java/spring-config.xml @@ -424,6 +424,7 @@ com.rjconsultores.ventaboletos.entidad.MensajeEmpresa com.rjconsultores.ventaboletos.entidad.MensajeUsuario com.rjconsultores.ventaboletos.entidad.Mensaje + com.rjconsultores.ventaboletos.entidad.ClasseIndicePeaje diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 205bd7f66..7807910c0 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -5,7 +5,7 @@ # Formato da clav # Control ZUL. Identificación del Componente. Propiedad = XXX # . . = XXX -indexController.app.nome=Administracion de la Venta +indexController.app.nome=Administracion de la Venta # MSG Defaut: diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 45004e013..e34c91566 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -5102,6 +5102,7 @@ editarConfRestricaoCanalVentaController.MSG.selecionarrestricaoPtovta = Selecion editarConfRestricaoCanalVentaController.MSG.bloqueoExistente = Bloqueio já existente. # Busqueda Orgao Concedente +editarOrgaoConcedenteController.MSG.classeExistente=Existe um índice de pedágio para a classe selecionada! busquedaOrgaoConcedenteController.window.title = Órgão Concedente busquedaOrgaoConcedenteController.btnRefresh.tooltiptext = Atualizar busquedaOrgaoConcedenteController.btnCerrar.tooltiptext = Fechar @@ -5111,6 +5112,7 @@ busquedaOrgaoConcedenteController.indDefaultSeguro.label = Seguro Default busquedaOrgaoConcedenteController.indSubSeguro.label = Sub Seguro busquedaOrgaoConcedenteController.indNomDocObligatorio.label=Doc. Obrigatorio busquedaOrgaoConcedenteController.indicePeaje.label = Índice Pedágio +busquedaOrgaoConcedenteController.classe.label=Classe # Editar Orgao Concedente editarOrgaoConcedenteController.window.title = Órgão Concedente diff --git a/web/gui/catalogos/editarOrgaoConcedente.zul b/web/gui/catalogos/editarOrgaoConcedente.zul index 579f4a89b..2e2797d29 100644 --- a/web/gui/catalogos/editarOrgaoConcedente.zul +++ b/web/gui/catalogos/editarOrgaoConcedente.zul @@ -6,8 +6,8 @@ @@ -62,13 +62,48 @@ checked="@{winEditarOrgaoConcedente$composer.orgaoConcedente.indNomDocObligatorio}" /> - + + + +