diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingEspecificoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingEspecificoController.java index 60ab9b3d3..6feb65cfb 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingEspecificoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingEspecificoController.java @@ -39,6 +39,7 @@ import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; import com.rjconsultores.ventaboletos.entidad.PricingEspecificoAgencia; import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCanalVendas; +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCategoria; import com.rjconsultores.ventaboletos.entidad.PricingEspecificoOcupacion; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta; @@ -50,6 +51,7 @@ import com.rjconsultores.ventaboletos.service.MonedaService; import com.rjconsultores.ventaboletos.service.ParadaService; import com.rjconsultores.ventaboletos.service.PricingEspecificoAgenciaService; import com.rjconsultores.ventaboletos.service.PricingEspecificoCanalVendasService; +import com.rjconsultores.ventaboletos.service.PricingEspecificoCategoriaService; import com.rjconsultores.ventaboletos.service.PricingEspecificoOcupacionService; import com.rjconsultores.ventaboletos.service.PricingEspecificoService; import com.rjconsultores.ventaboletos.service.PuntoVentaService; @@ -60,6 +62,7 @@ import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingAgencia; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingCanal; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingEspecificoCategoria; import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingEspecificoOcupacion; /** @@ -92,6 +95,8 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer private CorridaCtrlService corridaCtrlService; @Autowired private PricingEspecificoOcupacionService pricingEspecificoOcupacionService; + @Autowired + private PricingEspecificoCategoriaService pricingEspecificoCategoriaService; @Autowired private PuntoVentaService puntoVenService; @Autowired @@ -99,7 +104,6 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer @Autowired private PricingEspecificoCanalVendasService pricingEspecificoCanalVendasService; - private PricingEspecifico pricingEspecifico; private MyListbox pricingList; private Combobox cmbPtovta; @@ -125,10 +129,12 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer private MyListbox pricingListEspOcupacion; private MyListbox pricingListEspAgencia; + private MyListbox pricingListEspCategoria; private MyListbox pricingListEspCanal; private MyComboboxPuntoVenta cmbPuntoVenta; private List pricingEspecificoADesativar; private List pricingEspecificoADesativarAgencia; + private List pricingEspecificoADesativarCategoria; private List pricingEspecificoADesativarCanal; @@ -144,11 +150,13 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pricingEspecificoADesativar = new ArrayList(); pricingEspecificoADesativarAgencia = new ArrayList(); pricingEspecificoADesativarCanal = new ArrayList(); + pricingEspecificoADesativarCategoria = new ArrayList(); super.doAfterCompose(comp); pricingListEspOcupacion.setItemRenderer(new RenderPricingEspecificoOcupacion()); pricingListEspAgencia.setItemRenderer(new RenderPricingAgencia()); pricingListEspCanal.setItemRenderer(new RenderPricingCanal()); + pricingListEspCategoria.setItemRenderer(new RenderPricingEspecificoCategoria()); if (pricingEspecifico.getPricingespecificoId() == null) { btnApagar.setVisible(Boolean.FALSE); @@ -178,7 +186,7 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pricingListEspCanal.setData(pricingEspecifico.getPricingEspecificoCanalListActivos()); - + pricingListEspCategoria.setData(pricingEspecifico.getPricingEspecificoCategoriaList()); } fechaInicio.focus(); @@ -200,6 +208,25 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer verPricingEspecificoOcupacion(new PricingEspecificoOcupacion(), false); } + public void onClick$btnNovoPricingCategoria(Event ev) throws InterruptedException { + if (cmbCategoria.getSelectedItem() == null) { + return; + } + PricingEspecificoCategoria pricingCategoria = new PricingEspecificoCategoria((Categoria) cmbCategoria.getSelectedItem().getValue(), pricingEspecifico, UsuarioLogado.getUsuarioLogado().getUsuarioId()); + + if (pricingEspecifico.getPricingEspecificoCategoriaList().contains(pricingCategoria)) { + Messagebox.show( + Labels.getLabel("editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoCategoriaJaCadastrado"), + Labels.getLabel("busquedaPricingEspecificoController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + } else { + pricingListEspCategoria.addItemNovo(pricingCategoria); + pricingEspecifico.getPricingEspecificoCategoriaList().add(pricingCategoria); + } + + cmbCategoria.setValue(""); + } + public void onClick$btnNovoPricingAgencia(Event ev) throws InterruptedException { if(cmbPuntoVenta.getSelectedItem() == null){ return; @@ -309,6 +336,29 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer } } + public void onClick$btnApagarPricingEspCategoria(Event ev) throws InterruptedException { + if (pricingListEspCategoria.getSelected() == null) { + Messagebox.show(Labels.getLabel("editarPricingController.MSG.selectItem"), + Labels.getLabel("editarPricingController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + } else { + int resp = Messagebox.show(Labels.getLabel("editarPricingEspecificoCategoriaController.MSG.borrarPergunta"), + Labels.getLabel("busquedaPricingEspecificoController.window.title"), + Messagebox.YES | Messagebox.NO, Messagebox.QUESTION); + if (resp == Messagebox.YES) { + PricingEspecificoCategoria pricingCategoria = (PricingEspecificoCategoria) pricingListEspCategoria.getSelected(); + pricingListEspCategoria.removeItem(pricingCategoria); + + if(pricingCategoria.getPricingEspecificoCategoriaId() != null){ + pricingCategoria.setActivo(false); + pricingEspecificoADesativarCategoria.add(pricingCategoria); + }else{ + removerPricingCategoria(pricingCategoria); + } + } + } + } + public void onClick$btnApagarPricingEspAgencia(Event ev) throws InterruptedException { if (pricingListEspAgencia.getSelected() == null) { Messagebox.show(Labels.getLabel("editarPricingController.MSG.selectItem"), @@ -387,6 +437,11 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pricingEspecifico.getPricingEspecificoOcupacionsList().remove(index - 1); } } + private void removerPricingCategoria(PricingEspecificoCategoria especificoCategoria){ + if(especificoCategoria.getPricingEspecificoCategoriaId() != null){ + pricingEspecifico.getPricingEspecificoCategoriaList().remove(especificoCategoria); + } + } private void removerPricingAgencia(PricingEspecificoAgencia especificoAgencia) { if (especificoAgencia.getPricingEspecificoAgenciaId() != null) { @@ -453,6 +508,13 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer } pricingEspecifico.setPricingEspecificoOcupacionsList(pricingEspecificoOcupacionList); + List pec = (List) pricingListEspCategoria.getModel(); + for(PricingEspecificoCategoria pricingEspecificoCategoria : pec){ + if(!pricingEspecificoCategoria.getActivo()){ + pec.remove(pricingEspecificoCategoria); + } + } + List pecv = (List) pricingListEspCanal.getModel(); for (PricingEspecificoCanalVendas pricingEspecificoCanalVendas : pecv) { if(pricingEspecificoCanalVendas.getActivo().equals(Boolean.FALSE)){ @@ -466,20 +528,18 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pea.remove(pricingEspecificoAgencia); } } - + pricingEspecifico.setPricingEspecificoCategoriaList(pec); pricingEspecifico.setPricingEspecificoAgenciasList(pea); pricingEspecifico.setPricingEspecificoCanalVendasList(pecv); - - if (pricingEspecifico.getCategoria() == null) { + if(pricingEspecifico.getPricingEspecificoCategoriaList().isEmpty()){ Messagebox.show(Labels.getLabel("editarPricingController.MSG.categoria"), Labels.getLabel("busquedaPricingEspecificoController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION); - return; } - + if (pricingEspecifico.getClaseServicio() == null) { Messagebox.show(Labels.getLabel("editarPricingController.MSG.claseServicio"), Labels.getLabel("busquedaPricingEspecificoController.window.title"), @@ -647,6 +707,7 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pricingList.updateItem(pricingEspecifico); } + desativarPricingEspecificoCategoria(); desativarPricingEspecificoOcupacionDesativados(); desativarPricingEspecificoAgenciaDesativados(); desativarPricingEspecificoCanalDesativados(); @@ -665,6 +726,13 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer } + private void desativarPricingEspecificoCategoria(){ + for(PricingEspecificoCategoria p : pricingEspecificoADesativarCategoria){ + p.setActivo(Boolean.FALSE); + pricingEspecificoCategoriaService.actualizacion(p); + } + } + private void desativarPricingEspecificoOcupacionDesativados() { for (PricingEspecificoOcupacion p : pricingEspecificoADesativar) { p.setActivo(Boolean.FALSE); @@ -1102,5 +1170,4 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer } - } diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/ModificacionMasivaPricingEspecificoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/ModificacionMasivaPricingEspecificoController.java index 0535e5993..3353ec1c3 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/ModificacionMasivaPricingEspecificoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/ModificacionMasivaPricingEspecificoController.java @@ -11,6 +11,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -40,6 +41,7 @@ import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCategoria; import com.rjconsultores.ventaboletos.service.ClaseServicioService; import com.rjconsultores.ventaboletos.service.ParadaService; import com.rjconsultores.ventaboletos.service.PricingEspecificoService; @@ -343,7 +345,7 @@ public class ModificacionMasivaPricingEspecificoController extends MyGenericForw row.createCell(1).setCellValue(pricing.getNombPricing()); row.createCell(2).setCellValue(pricing.getCorridaId() != null ? pricing.getCorridaId().toString() : ""); // row.createCell(3).setCellValue(pricing.getTipoPtovta().getDesctipo()); - row.createCell(4).setCellValue(pricing.getCategoria().getDesccategoria()); + row.createCell(4).setCellValue(categoriasToString(pricing.getPricingEspecificoCategoriaList())); row.createCell(5).setCellValue(pricing.getClaseServicio().getDescclase()); row.createCell(6).setCellValue(pricing.getMarca().getDescmarca()); row.createCell(7).setCellValue(pricing.getParada().getDescparada()); @@ -358,4 +360,13 @@ public class ModificacionMasivaPricingEspecificoController extends MyGenericForw sheet1.autoSizeColumn(i); } } + + private String categoriasToString(List pricingEspecificoCategoriaList) { + String result = ""; + + for (PricingEspecificoCategoria p : pricingEspecificoCategoriaList) { + result += p.getCategoria().getDesccategoria() + "-"; + } + return result.isEmpty() ? "" : result.substring(0, result.length() - 1); + } } diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingEspecifico.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingEspecifico.java index 8df9c36e6..fb6146c2b 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingEspecifico.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingEspecifico.java @@ -5,10 +5,14 @@ package com.rjconsultores.ventaboletos.web.utilerias.render; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCategoria; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; + +import java.util.List; + import org.zkoss.zul.Listcell; /** @@ -32,7 +36,7 @@ public class RenderPricingEspecifico implements ListitemRenderer { lc = new Listcell(pe.getMoneda().getDescmoneda()); lc.setParent(lstm); - lc = new Listcell(pe.getCategoria().getDesccategoria()); + lc = new Listcell(categoriasToString(pe.getPricingEspecificoCategoriaList())); lc.setParent(lstm); lc = new Listcell(pe.getClaseServicio().getDescclase()); @@ -54,4 +58,13 @@ public class RenderPricingEspecifico implements ListitemRenderer { lstm.setAttribute("data", pe); } + + private String categoriasToString(List pricingEspecificoCategoriaList) { + String result = ""; + + for (PricingEspecificoCategoria p : pricingEspecificoCategoriaList) { + result += p.getCategoria().getDesccategoria() + "-"; + } + return result.isEmpty() ? "" : result.substring(0, result.length() - 1); + } } diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingEspecificoCategoria.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingEspecificoCategoria.java new file mode 100644 index 000000000..fe68dfb17 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingEspecificoCategoria.java @@ -0,0 +1,26 @@ +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.PricingEspecificoCategoria; + +public class RenderPricingEspecificoCategoria implements ListitemRenderer { + + public void render(Listitem lstm, Object o) throws Exception { + PricingEspecificoCategoria pec = (PricingEspecificoCategoria) o; + + if (!pec.getActivo()) { + return; + } + + Listcell lc = new Listcell(pec.getCategoria().getCategoriaId().toString()); + lc.setParent(lstm); + + lc = new Listcell(pec.getCategoria().getDesccategoria()); + lc.setParent(lstm); + + } + +} diff --git a/src/java/spring-config.xml b/src/java/spring-config.xml index 38dfb8b50..d1677e790 100644 --- a/src/java/spring-config.xml +++ b/src/java/spring-config.xml @@ -467,7 +467,8 @@ com.rjconsultores.ventaboletos.entidad.MensagemRecusa com.rjconsultores.ventaboletos.entidad.OrgaoEmpParam com.rjconsultores.ventaboletos.entidad.ComissaoReceita - com.rjconsultores.ventaboletos.entidad.IntegracaoTotvs + com.rjconsultores.ventaboletos.entidad.IntegracaoTotvs + com.rjconsultores.ventaboletos.entidad.PricingEspecificoCategoria diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index 67240994d..cb52423b6 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -3234,6 +3234,7 @@ editarPricingController.anticipacionErrada = Anticipación informada se traslapa editarPricingController.MSG.tipoPtoVta = Necesita informar un canal de venta editarPricingController.MSG.categoria = Necesita informar un tipo pasajero editarPricingController.MSG.claseServicio = Necesita informar un tipo de servicio +editarPricingController.MSG.categoria= Necessita informar pelo menos um tipo de passageiro. editarPricingController.MSG.marca = Necesita informar una marca editarPricingController.MSG.origen = Necesita informar un origen editarPricingController.MSG.destino = Necesita informar un destino @@ -3263,16 +3264,23 @@ editarPricingEspecificoOcupacionController.ocupacionFinal.label=Ocupación Final editarPricingEspecificoOcupacionController.MSG.borrarPergunta = Desea eliminar ocupacion? editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoCanalJaCadastrado=Canal de ventas ya registrado editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoAgenciaJaCadastrado=Agência ya registrado +editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoCategoriaJaCadastrado=Tipo de Passageiro já registrado editarPricingEspecificoOcupacionController.ocupacao.label = Ocupacion editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoOcupacion = Ocupación no informado. editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionInicial = La lista de ocupaciones debería comenzar con la ocupación inicial igual a 1. editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionNoSubsequente = La lista de ocupaciones debe ser posterior. editarPricingEspecificoAgenciaController.MSG.borrarPergunta = Deseja Eliminar Agência? +editarPricingEspecificoCategoriaController.MSG.borrarPergunta=Deseja Eliminar Tipo de Passageiro? editarPricingEspecificoCanalVendaController.MSG.borrarPergunta = Deseja Eliminar Canal Venda? editarPricingEspecificoAgenciaController.MSG.perguntaAdicionarTodosAgencia = Agência está vazio! Deseja adicionar "Todas"? editarPricingEspecificoAgenciaController.MSG.agenciaVazio = Agência está vazia! Favor adicionar Agência. editarPricingEspecificoCanalVendaController.MSG.perguntaAdicionarTodosCanalVendas = Canal de vendas está vazio! Deseja adicionar "Todos"? editarPricingEspecificoCanalVendaController.MSG.canalVendasVazio = Canal de vendas está vazio! Favor adicionar canal de vendas +editarPricingEspecificoController.tabGen.label = Geral +editarPricingEspecificoController.tabCat.label = Tipo de Passageiro +editarPricingEspecificoController.tabAge.label = Agência +editarPricingEspecificoController.categoria.label = Tipo Passageiro + # Editar Pricing Classe Tarifaria editarPricingClasseTarifariaController.window.title = Pricing Clases Arancelarias diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 5c24544b2..d19dba752 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -3430,6 +3430,7 @@ editarPricingController.anticipacionErrada = Antecipação informada se sobrepõ editarPricingController.MSG.tipoPtoVta = Necessita informar um canal de Venda editarPricingController.MSG.categoria = Necessita informar um tipo passageiro editarPricingController.MSG.claseServicio = Necessita informar um tipo de corrida +editarPricingController.MSG.categoria= Necessita informar pelo menos um tipo de passageiro. editarPricingController.MSG.marca = Necessita informar uma marca editarPricingController.MSG.origen = Necessita informar um origem editarPricingController.MSG.destino = Necessita informar um destino @@ -3462,21 +3463,26 @@ editarPricingEspecificoOcupacionController.ocupacionFinal.label=Ocupação Final editarPricingEspecificoOcupacionController.MSG.borrarPergunta = Deseja Eliminar Ocupação? editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoCanalJaCadastrado=Canal de Vendas já cadastrado editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoAgenciaJaCadastrado=Agência já registrada +editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoCategoriaJaCadastrado=Tipo de Passageiro já registrado editarPricingEspecificoAgenciaController.MSG.borrarPergunta = Deseja Eliminar Agência? +editarPricingEspecificoCategoriaController.MSG.borrarPergunta=Deseja Eliminar Tipo de Passageiro? editarPricingEspecificoCanalVendaController.MSG.borrarPergunta = Deseja Eliminar Canal Venda? editarPricingEspecificoAgenciaController.MSG.perguntaAdicionarTodosAgencia = Agência está vazio! Deseja adicionar "Todas"? editarPricingEspecificoAgenciaController.MSG.agenciaVazio = Agência está vazia! Favor adicionar Agência. editarPricingEspecificoCanalVendaController.MSG.perguntaAdicionarTodosCanalVendas = Canal de vendas está vazio! Deseja adicionar "Todos"? editarPricingEspecificoCanalVendaController.MSG.canalVendasVazio = Canal de vendas está vazio! Favor adicionar canal de vendas. editarPricingEspecificoOcupacionController.ocupacao.label = Ocupação -editarPricingEspecificoOcupacionController.agencia.label = Agência +editarPricingEspecificoOcupacionController.categoria.label = Tipo Passageiro editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoOcupacion = Ocupação não informado. editarPricingEspecificoAgenciaController.MSG.noPricingEspecificoAgencia = Agência não informada. editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionInicial = A primeira ocupação deverá ter valor de ocupação inicial igual a 1. editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionNoSubsequente = Já existe ocupação cadastrada que contempla o intervalo de ocupação. editarPricingEspecificoOcupacionController.exibirVenda.label=Exibir na Venda? editarPricingEspecificoController.tabGen.label = Geral +editarPricingEspecificoController.tabCat.label = Tipo de Passageiro editarPricingEspecificoController.tabAge.label = Agência +editarPricingEspecificoController.categoria.label = Tipo Passageiro + # Editar Pricing Classe Tarifaria editarPricingClasseTarifariaController.window.title = Pricing Classes Tarifarias diff --git a/web/gui/pricing/editarPricingEspecifico.zul b/web/gui/pricing/editarPricingEspecifico.zul index f5d416924..4b83e4983 100644 --- a/web/gui/pricing/editarPricingEspecifico.zul +++ b/web/gui/pricing/editarPricingEspecifico.zul @@ -39,8 +39,10 @@ + label="${c:l('editarPricingEspecificoController.tabCat.label')}" /> + @@ -83,15 +85,7 @@ - - +