diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarConfiguracionCategoriaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarConfiguracionCategoriaController.java index fbc0dffd3..c45c4cbde 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarConfiguracionCategoriaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarConfiguracionCategoriaController.java @@ -6,10 +6,13 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.configuracioneccome import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -26,7 +29,6 @@ import org.zkoss.zul.Checkbox; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; import org.zkoss.zul.Decimalbox; -import org.zkoss.zul.Hbox; import org.zkoss.zul.Intbox; import org.zkoss.zul.Label; import org.zkoss.zul.Radio; @@ -598,6 +600,43 @@ public class EditarConfiguracionCategoriaController extends MyGenericForwardComp Messagebox.ERROR); } } + + private Boolean validarCampoAssentosReservados() throws InterruptedException{ + + //Verifica se o campo possui números separados por ponto e vírgula. + //Não permite que outros caracteres sejam digitados. + if (!asientosReservados.getValue().equals("") && !asientosReservados.getValue().toString().matches("(([1-9]([0-9])+;)|([1-9]([0-9])+)|([1-9];)|([1-9][1-9][1-9])|[1-9])+")){ + Messagebox.show( + Labels.getLabel("editarConfiguracionCategoriaController.msg.validacaoAssentosReservadosPontoeVirgula"), + Labels.getLabel("editarConfiguracionCategoriaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + return false; + } + //Verifica se a quantidade de assentos reservados é menor que a quantidade de assentos autorizados. + String assentosReservados[] = asientosReservados.getValue().toString().split(";"); + if(assentosReservados.length > cantAutorizada.getValue()){ + Messagebox.show( + Labels.getLabel("editarConfiguracionCategoriaController.msg.validacaoAssentosReservados"), + Labels.getLabel("editarConfiguracionCategoriaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + return false; + } + + //Retira possíveis assentos em duplicidade utilizando Set + if(!asientosReservados.getValue().equals("") && assentosReservados.length > 0){ + Set assentosSemDuplicacao = new HashSet(); + StringBuilder assentos = new StringBuilder(); + assentosSemDuplicacao.addAll(Arrays.asList(assentosReservados)); + assentosReservados = assentosSemDuplicacao.toArray(new String[assentosSemDuplicacao.size()]); + for(String assento :assentosReservados){ + assentos.append(assento.trim()).append(";"); + } + assentos.replace(assentos.length()-1, assentos.length(),""); + asientosReservados.setValue(assentos.toString()); + } + + return true; + } public void onClick$btnAdicionarDesconto(Event ev) throws InterruptedException { if (cmbCategorias.getSelectedItem() == null) { @@ -639,65 +678,67 @@ public class EditarConfiguracionCategoriaController extends MyGenericForwardComp } if (!existe) { - CategoriaDescuento cDescuento = new CategoriaDescuento(); - cDescuento.setCategoriaCtrl(categoriaCtrl); - cDescuento.setActivo(Boolean.TRUE); - cDescuento.setFecmodif(Calendar.getInstance().getTime()); - cDescuento.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - cDescuento.setCategoria((Categoria) cmbCategorias.getSelectedItem().getValue()); - cDescuento.setCantautorizada(cantAutorizada.getValue()); - cDescuento.setDescuentoimporte(descuentoImporte.getValue()); - cDescuento.setDescuentoporc(descuentoPorc.getValue()); - cDescuento.setIndImporteOutros(chkPrecoOutros.isChecked()); - cDescuento.setIndImportePedagio(chkPrecoPedagio.isChecked()); - cDescuento.setIndImporteSeguro(chkPrecoSeguro.isChecked()); - cDescuento.setIndImporteTxEmbarque(chkPrecoTxEmbarque.isChecked()); - cDescuento.setIndVentaAbierto(rdVendeAbertoSim.isSelected()); - cDescuento.setIndLiberacionSolamenteEnvasado(chkLiberacionSolamenteEnvasado.isChecked()); - cDescuento.setAsientosReservados(asientosReservados.getValue()); + if(validarCampoAssentosReservados()){ + CategoriaDescuento cDescuento = new CategoriaDescuento(); + cDescuento.setCategoriaCtrl(categoriaCtrl); + cDescuento.setActivo(Boolean.TRUE); + cDescuento.setFecmodif(Calendar.getInstance().getTime()); + cDescuento.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + cDescuento.setCategoria((Categoria) cmbCategorias.getSelectedItem().getValue()); + cDescuento.setCantautorizada(cantAutorizada.getValue()); + cDescuento.setDescuentoimporte(descuentoImporte.getValue()); + cDescuento.setDescuentoporc(descuentoPorc.getValue()); + cDescuento.setIndImporteOutros(chkPrecoOutros.isChecked()); + cDescuento.setIndImportePedagio(chkPrecoPedagio.isChecked()); + cDescuento.setIndImporteSeguro(chkPrecoSeguro.isChecked()); + cDescuento.setIndImporteTxEmbarque(chkPrecoTxEmbarque.isChecked()); + cDescuento.setIndVentaAbierto(rdVendeAbertoSim.isSelected()); + cDescuento.setIndLiberacionSolamenteEnvasado(chkLiberacionSolamenteEnvasado.isChecked()); + cDescuento.setAsientosReservados(asientosReservados.getValue()); - if (rdVendaAntecipadaSi.isChecked()) { - cDescuento.setTiempoDesactivar(spnHora.getValue(), spnMinuto.getValue()); - } else { - cDescuento.setTiempoActivar(spnHora.getValue(), spnMinuto.getValue()); - } - - if (cmbIndGeneraFeriado.getSelectedItem() != null) { - cDescuento.setIndAplicaFeriado((String) cmbIndGeneraFeriado.getSelectedItem().getValue()); - } - - if (radioImprimePassagem.isSelected()) { - cDescuento.setIndImprimeBoleto(Boolean.TRUE); - } else if (radioNaoImprimePassagem.isSelected()) { - cDescuento.setIndImprimeBoleto(Boolean.FALSE); - } - - cDescuento.setIndCuota(false); - cDescuento.setIndCuotaTramo(false); - - if (rdCuotaSi.isChecked()) { - if (timeTempoPermitir.getValue() == null) { - throw new WrongValueException(timeTempoPermitir, Labels.getLabel("MSG.CONSTRAINT.CONSTRAINTNUMBERBDOBLIGATORIO")); + if (rdVendaAntecipadaSi.isChecked()) { + cDescuento.setTiempoDesactivar(spnHora.getValue(), spnMinuto.getValue()); + } else { + cDescuento.setTiempoActivar(spnHora.getValue(), spnMinuto.getValue()); } - cDescuento.setIndCuota(true); - cDescuento.setIndCuotaTramo(rdTrecho.isChecked()); - cDescuento.setTiempoCuota(timeTempoPermitir.getValue()); - } + if (cmbIndGeneraFeriado.getSelectedItem() != null) { + cDescuento.setIndAplicaFeriado((String) cmbIndGeneraFeriado.getSelectedItem().getValue()); + } - lsCategoriaDescuento.add(cDescuento); - categoriaDescuentoList.addItemNovo(cDescuento); - categoriaCtrl.setCategoriaDescuentoList(lsCategoriaDescuento); + if (radioImprimePassagem.isSelected()) { + cDescuento.setIndImprimeBoleto(Boolean.TRUE); + } else if (radioNaoImprimePassagem.isSelected()) { + cDescuento.setIndImprimeBoleto(Boolean.FALSE); + } - cmbCategorias.setSelectedItem(null); - cantAutorizada.setRawValue(null); - if (radioImp.isChecked()) { - onClick$radioImp(null); - } else { - onClick$radioPor(null); - } - onClick$rdVendaAntecipadaNo(null); - rdVendaAntecipadaNo.setChecked(true); + cDescuento.setIndCuota(false); + cDescuento.setIndCuotaTramo(false); + + if (rdCuotaSi.isChecked()) { + if (timeTempoPermitir.getValue() == null) { + throw new WrongValueException(timeTempoPermitir, Labels.getLabel("MSG.CONSTRAINT.CONSTRAINTNUMBERBDOBLIGATORIO")); + } + + cDescuento.setIndCuota(true); + cDescuento.setIndCuotaTramo(rdTrecho.isChecked()); + cDescuento.setTiempoCuota(timeTempoPermitir.getValue()); + } + + lsCategoriaDescuento.add(cDescuento); + categoriaDescuentoList.addItemNovo(cDescuento); + categoriaCtrl.setCategoriaDescuentoList(lsCategoriaDescuento); + + cmbCategorias.setSelectedItem(null); + cantAutorizada.setRawValue(null); + if (radioImp.isChecked()) { + onClick$radioImp(null); + } else { + onClick$radioPor(null); + } + onClick$rdVendaAntecipadaNo(null); + rdVendaAntecipadaNo.setChecked(true); + } } else { Messagebox.show( Labels.getLabel("MSG.Registro.Existe"), diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarConfiguracionCategoriaDatosCategoriaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarConfiguracionCategoriaDatosCategoriaController.java index 474b4dd70..9e1a0e23a 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarConfiguracionCategoriaDatosCategoriaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/configuracioneccomerciales/EditarConfiguracionCategoriaDatosCategoriaController.java @@ -5,6 +5,9 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.configuracioneccomerciales; import java.math.BigDecimal; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; @@ -17,6 +20,7 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; +import org.zkoss.zul.Intbox; import org.zkoss.zul.Label; import org.zkoss.zul.Radio; import org.zkoss.zul.Row; @@ -62,6 +66,8 @@ public class EditarConfiguracionCategoriaDatosCategoriaController extends MyGene private Radio radioNaoVentaSolamenteReserva; private Row linhaLiberarPoltronasQuandoOnibus; private Row linhaAssentosReservados; + private Textbox asientosReservados; + private Intbox cantAutorizada; @Override public void doAfterCompose(Component comp) throws Exception { @@ -132,9 +138,13 @@ public class EditarConfiguracionCategoriaDatosCategoriaController extends MyGene rdVendaAbertoNao.setChecked(true); } - linhaLiberarPoltronasQuandoOnibus.setVisible(false); - linhaAssentosReservados.setVisible(false); - + if(categoriaDescuento.getIndCuota()== true){ + linhaLiberarPoltronasQuandoOnibus.setVisible(true); + linhaAssentosReservados.setVisible(true); + }else{ + linhaLiberarPoltronasQuandoOnibus.setVisible(false); + linhaAssentosReservados.setVisible(false); + } } private void preencherDataHora(Integer tiempoMinutos){ if (tiempoMinutos != null){ @@ -190,9 +200,51 @@ public class EditarConfiguracionCategoriaDatosCategoriaController extends MyGene categoriaDescuento.setTiempoCuota(timeTempoPermitir.getValue()); } + if(!validarCampoAssentosReservados()){ + return; + } + + categoriaDescuento.setAsientosReservados(asientosReservados.getValue()); + categoriaDescuentoList.updateItem(categoriaDescuento); this.closeWindow(); } + + private Boolean validarCampoAssentosReservados() throws InterruptedException{ + //Verifica se o campo possui números separados por ponto e vírgula. + //Não permite que outros caracteres sejam digitados. + if (!asientosReservados.getValue().equals("") && !asientosReservados.getValue().toString().matches("(([1-9]([0-9])+;)|([1-9]([0-9])+)|([1-9];)|([1-9][1-9][1-9])|[1-9])+")){ + Messagebox.show( + Labels.getLabel("editarConfiguracionCategoriaController.msg.validacaoAssentosReservadosPontoeVirgula"), + Labels.getLabel("editarConfiguracionCategoriaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + return false; + } + //Verifica se a quantidade de assentos reservados é menor que a quantidade de assentos autorizados. + String assentosReservados[] = asientosReservados.getValue().toString().split(";"); + if(assentosReservados.length > cantAutorizada.getValue()){ + Messagebox.show( + Labels.getLabel("editarConfiguracionCategoriaController.msg.validacaoAssentosReservados"), + Labels.getLabel("editarConfiguracionCategoriaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + return false; + } + + //Retira possíveis assentos em duplicidade utilizando Set + if(!asientosReservados.getValue().equals("") && assentosReservados.length > 0){ + Set assentosSemDuplicacao = new HashSet(); + StringBuilder assentos = new StringBuilder(); + assentosSemDuplicacao.addAll(Arrays.asList(assentosReservados)); + assentosReservados = assentosSemDuplicacao.toArray(new String[assentosSemDuplicacao.size()]); + for(String assento :assentosReservados){ + assentos.append(assento.trim()).append(";"); + } + assentos.replace(assentos.length()-1, assentos.length(),""); + asientosReservados.setValue(assentos.toString()); + } + + return true; + } public CategoriaDescuento getCategoriaDescuento() { return categoriaDescuento; diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 37392c275..10fea90f8 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -1511,6 +1511,9 @@ editarConfiguracionCategoriaController.lblSimVentaSolamenteReserva.value = Si editarConfiguracionCategoriaController.lblNaoVentaSolamenteReserva.value = No editarConfiguracionCategoriaController.lblHeaderVentaSolamenteReserva.value = V. So. Reserva +editarConfiguracionCategoriaController.msg.validacaoAssentosReservados = O número de assentos reservados não pode ser maior que a quantidade autorizada +editarConfiguracionCategoriaController.msg.validacaoAssentosReservadosPontoeVirgula = Digite assentos separados por ponto e virgula. Assentos não devem conter zeros à esquerda + # Detener a pantalla de Búsqueda busquedaCatalogoDeParadaController.window.title = Parada busquedaCatalogoDeParadaController.btnRefresh.tooltiptext = Actualizar diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 61da2d546..821ed1526 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -1550,6 +1550,9 @@ editarConfiguracionCategoriaController.lblSimVentaSolamenteReserva.value = Sim editarConfiguracionCategoriaController.lblNaoVentaSolamenteReserva.value = Não editarConfiguracionCategoriaController.lblHeaderVentaSolamenteReserva.value = V. So. Reserva +editarConfiguracionCategoriaController.msg.validacaoAssentosReservados = O número de assentos reservados não pode ser maior que a quantidade autorizada +editarConfiguracionCategoriaController.msg.validacaoAssentosReservadosPontoeVirgula = Digite assentos separados por ponto e virgula. Assentos não devem conter zeros à esquerda + # Detener a pantalla de Pesquisa busquedaCatalogoDeParadaController.window.title = Localidade busquedaCatalogoDeParadaController.btnRefresh.tooltiptext = Atualizar