From 9093ec4e92a32d0491b426dbaa10efaf30b511a8 Mon Sep 17 00:00:00 2001 From: "bruno.neves" Date: Mon, 24 Jul 2017 20:35:16 +0000 Subject: [PATCH] fix bug #0009072 - Adicionada funcionalidade de multiplas agencias no pricing git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@71822 d1611594-4594-4d17-8e1d-87c2c4800839 --- ...ricingEspecificoCanalVendasController.java | 166 +++++++ .../EditarPricingEspecificoController.java | 106 +++- .../utilerias/render/RenderPricingCanal.java | 28 ++ src/java/spring-config.xml | 1 + web/gui/pricing/editarPricingEspecifico.zul | 452 ++++++++++-------- .../editarPricingEspecificoAgencia.zul | 17 +- .../editarPricingEspecificoCanalVendas.zul | 45 ++ 7 files changed, 592 insertions(+), 223 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingEspecificoCanalVendasController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingCanal.java create mode 100644 web/gui/pricing/editarPricingEspecificoCanalVendas.zul diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingEspecificoCanalVendasController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingEspecificoCanalVendasController.java new file mode 100644 index 000000000..dd322cb68 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingEspecificoCanalVendasController.java @@ -0,0 +1,166 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.pricing; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import org.apache.log4j.Logger; +import org.hibernate.Hibernate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Combobox; + +import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCanalVendas; +import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta; +import com.rjconsultores.ventaboletos.service.PricingEspecificoCanalVendasService; +import com.rjconsultores.ventaboletos.service.PricingEspecificoService; +import com.rjconsultores.ventaboletos.service.TipoPuntoVentaService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; + +@Controller("editarPricingEspecificoCanalVendasController") +@Scope("prototype") +public class EditarPricingEspecificoCanalVendasController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + private static Logger log = Logger.getLogger(EditarPricingEspecificoCanalVendasController.class); + + private PricingEspecifico pricingEspecifico; + private PricingEspecificoCanalVendas pricingEspecificoCanal; + private MyListbox pricingListEspCanalVenda; + private List lspricingCanal; + private List lsPtovata; + + public List getLsPtovata() { + return lsPtovata; + } + + public void setLsPtovata(List lsPtovata) { + this.lsPtovata = lsPtovata; + } + @Autowired + private PricingEspecificoService pricingEspecificoService; + @Autowired + private TipoPuntoVentaService puntoVentaService; + + private Combobox cmbPtovta; + + @Autowired + private PricingEspecificoCanalVendasService pricingEspecificoCanalService; + + private Boolean isEdicao; + + @Override + public void doAfterCompose(Component comp) throws Exception { + lsPtovata = puntoVentaService.obtenerTodos(); + pricingEspecifico = (PricingEspecifico) Executions.getCurrent().getArg().get("pricingEspecifico"); + if(pricingEspecifico.getPricingespecificoId() != null){ + pricingEspecifico = pricingEspecificoService.obtenerID(pricingEspecifico.getPricingespecificoId()); + lspricingCanal = pricingEspecifico.getPricingEspecificoCanalVendasList(); + + } + + pricingEspecificoCanal = (PricingEspecificoCanalVendas) Executions.getCurrent().getArg().get("pricingEspecificoCanal"); + pricingListEspCanalVenda = (MyListbox) Executions.getCurrent().getArg().get("pricingListEspCanal"); + isEdicao = (Boolean) Executions.getCurrent().getArg().get("isEdicao"); + + + super.doAfterCompose(comp); + Locale locale = new Locale("pt", "BR"); + + + } + + public void onClick$btnAdicionarPricingEspCanal(Event ev) throws Exception { + PricingEspecificoCanalVendas pricingCanal = new PricingEspecificoCanalVendas((TipoPuntoVenta)cmbPtovta.getSelectedItem().getValue(), pricingEspecifico, UsuarioLogado.getUsuarioLogado().getUsuarioId()); + + List peoList = null; + if (lspricingCanal == null || lspricingCanal.isEmpty()) { + peoList = new ArrayList(); + } else { + peoList = pricingEspecifico.getPricingEspecificoCanalVendasList(); + } + Hibernate.initialize(pricingEspecifico); + Hibernate.initialize(pricingEspecificoCanal); + + if (pricingEspecificoCanal.getPricingEspecificoCanalId() != null && peoList.contains(pricingCanal)) { + int index = peoList.indexOf(pricingCanal); + if(index >= 0) { + peoList.set(index, pricingCanal); + } + } else { + peoList.add(pricingCanal); + } + if (pricingEspecifico != null && pricingEspecifico.getPricingespecificoId() != null) { + pricingEspecifico = pricingEspecificoService.obtenerID(pricingEspecifico.getPricingespecificoId().longValue()); + } + + pricingEspecificoCanal.setActivo(Boolean.TRUE); + pricingEspecifico.setPricingEspecificoCanalVendasList(peoList); + pricingListEspCanalVenda.addItemNovo(pricingCanal); + if(pricingListEspCanalVenda.getSize()>1){ + TipoPuntoVenta tpv = puntoVentaService.obtenerID(new Short("-1")); + PricingEspecificoCanalVendas pecv = new PricingEspecificoCanalVendas(); + pecv.setTipoPtovta(tpv); + pecv.setActivo(Boolean.TRUE); + pecv.setPricingEspecifico(pricingEspecifico); + pricingListEspCanalVenda.removeItem(pecv); + } + + closeWindow(); + } + public void onClick$btnApagarPricingEspCanal(Event ev) throws Exception { + PricingEspecificoCanalVendas pricingCanal = new PricingEspecificoCanalVendas((TipoPuntoVenta)cmbPtovta.getSelectedItem().getValue(), pricingEspecifico, UsuarioLogado.getUsuarioLogado().getUsuarioId()); + + List peoList = null; + if (lspricingCanal == null || lspricingCanal.isEmpty()) { + peoList = new ArrayList(); + } else { + peoList = pricingEspecifico.getPricingEspecificoCanalVendasList(); + } + Hibernate.initialize(pricingEspecifico); + Hibernate.initialize(pricingEspecificoCanal); + + if (pricingEspecificoCanal.getPricingEspecificoCanalId() != null && peoList.contains(pricingCanal)) { + int index = peoList.indexOf(pricingCanal); + if(index >= 0) { + peoList.set(index, pricingCanal); + } + } else { + peoList.add(pricingCanal); + } + if (pricingEspecifico != null && pricingEspecifico.getPricingespecificoId() != null) { + pricingEspecifico = pricingEspecificoService.obtenerID(pricingEspecifico.getPricingespecificoId().longValue()); + } + + pricingEspecificoCanal.setActivo(Boolean.TRUE); + pricingEspecifico.setPricingEspecificoCanalVendasList(peoList); + pricingListEspCanalVenda.addItemNovo(pricingCanal); + closeWindow(); + } + + public PricingEspecifico getPricingEspecifico() { + return pricingEspecifico; + } + + public void setPricingEspecifico(PricingEspecifico pricingEspecifico) { + this.pricingEspecifico = pricingEspecifico; + } + + public Combobox getCmbPtovta() { + return cmbPtovta; + } + + public void setCmbPtovta(Combobox cmbPtovta) { + this.cmbPtovta = cmbPtovta; + } + + + +} 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 60f62d165..e324c48bf 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 @@ -37,6 +37,7 @@ import com.rjconsultores.ventaboletos.entidad.Moneda; 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.PricingEspecificoOcupacion; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta; @@ -47,6 +48,7 @@ import com.rjconsultores.ventaboletos.service.MarcaService; 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.PricingEspecificoOcupacionService; import com.rjconsultores.ventaboletos.service.PricingEspecificoService; import com.rjconsultores.ventaboletos.service.PuntoVentaService; @@ -55,6 +57,7 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; 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.RenderPricingEspecificoOcupacion; /** @@ -90,6 +93,9 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer private PuntoVentaService puntoVenService; @Autowired private PricingEspecificoAgenciaService pricingEspecificoAgenciaService; + @Autowired + private PricingEspecificoCanalVendasService pricingEspecificoCanalVendasService; + private PricingEspecifico pricingEspecifico; private MyListbox pricingList; @@ -116,8 +122,11 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer private MyListbox pricingListEspOcupacion; private MyListbox pricingListEspAgencia; + private MyListbox pricingListEspCanal; private List pricingEspecificoADesativar; private List pricingEspecificoADesativarAgencia; + + private List pricingEspecificoADesativarCanal; @Override public void doAfterCompose(Component comp) throws Exception { @@ -130,11 +139,12 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pricingList = (MyListbox) Executions.getCurrent().getArg().get("pricingList"); pricingEspecificoADesativar = new ArrayList(); pricingEspecificoADesativarAgencia = new ArrayList(); - + pricingEspecificoADesativarCanal = new ArrayList(); super.doAfterCompose(comp); pricingListEspOcupacion.setItemRenderer(new RenderPricingEspecificoOcupacion()); pricingListEspAgencia.setItemRenderer(new RenderPricingAgencia()); + pricingListEspCanal.setItemRenderer(new RenderPricingCanal()); if (pricingEspecifico.getPricingespecificoId() == null) { btnApagar.setVisible(Boolean.FALSE); @@ -169,6 +179,17 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer verPricingEspecificoAgencia(especificoAgencia, true); } }); + + + pricingListEspCanal.setData(pricingEspecifico.getPricingEspecificoCanalListActivos()); + pricingListEspCanal.addEventListener("onDoubleClick", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + PricingEspecificoCanalVendas especificoCanalVendas = (PricingEspecificoCanalVendas) pricingListEspCanal.getSelected(); + verPricingEspecificoCanal(especificoCanalVendas, true); + } + }); } fechaInicio.focus(); @@ -198,6 +219,18 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer openWindow("/gui/pricing/editarPricingEspecificoAgencia.zul", Labels.getLabel("editarPricingController.window.title"), args, MODAL); } + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void verPricingEspecificoCanal(PricingEspecificoCanalVendas especificoCanalVendas, Boolean isEdicao) { + + Map args = new HashMap(); + args.put("pricingEspecifico", pricingEspecifico); + args.put("pricingEspecificoCanal", especificoCanalVendas); + args.put("isEdicao", isEdicao); + args.put("pricingListEspCanal", pricingListEspCanal); + + openWindow("/gui/pricing/editarPricingEspecificoCanalVendas.zul", + Labels.getLabel("editarPricingController.window.title"), args, MODAL); + } public void onClick$btnNovoPricingEspOcup(Event ev) throws InterruptedException { verPricingEspecificoOcupacion(new PricingEspecificoOcupacion(), false); @@ -206,6 +239,9 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer public void onClick$btnNovoPricingAgencia(Event ev) throws InterruptedException { verPricingEspecificoAgencia(new PricingEspecificoAgencia(), false); } + public void onClick$btnNovoPricingCanal(Event ev) throws InterruptedException { + verPricingEspecificoCanal(new PricingEspecificoCanalVendas(), false); + } public void onClick$btnApagarPricingEspOcup(Event ev) throws InterruptedException { if (pricingListEspOcupacion.getSelected() == null) { @@ -253,6 +289,29 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer } } } + public void onClick$btnApagarPricingEspCanal(Event ev) throws InterruptedException { + if (pricingListEspCanal.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("editarPricingEspecificoAgenciaController.MSG.borrarPergunta"), + Labels.getLabel("busquedaPricingEspecificoController.window.title"), + Messagebox.YES | Messagebox.NO, Messagebox.QUESTION); + if (resp == Messagebox.YES) { + PricingEspecificoCanalVendas pricingEspecificoCanal = (PricingEspecificoCanalVendas) pricingListEspCanal.getSelected(); + + if (pricingEspecificoCanal.getPricingEspecificoCanalId() != null) { + pricingEspecificoCanal.setActivo(false); + pricingListEspCanal.removeItem(pricingEspecificoCanal); + pricingEspecificoADesativarCanal.add(pricingEspecificoCanal); + } else { + pricingListEspOcupacion.removeSelectedItem(); + removerPricingCanalVendas(pricingEspecificoCanal); + } + } + } + } private void removerPricingOcupacion(PricingEspecificoOcupacion especificoOcupacion) { if (especificoOcupacion.getPricingEspecificoOcupacionId() != null) { @@ -285,6 +344,11 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pricingEspecifico.getPricingEspecificoAgenciasList().remove(especificoAgencia); } } + private void removerPricingCanalVendas(PricingEspecificoCanalVendas especificoCanalVendas) { + if (especificoCanalVendas.getPricingEspecificoCanalId() != null) { + pricingEspecifico.getPricingEspecificoAgenciasList().remove(especificoCanalVendas); + } + } public void onClick$btnModificarPricingEspOcup(Event ev) { PricingEspecificoOcupacion especificoOcupacion = (PricingEspecificoOcupacion) pricingListEspOcupacion.getSelected(); @@ -341,7 +405,10 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer } } - + List pecv = (List) pricingListEspCanal.getModel(); + List pea = (List) pricingListEspAgencia.getModel(); + pricingEspecifico.setPricingEspecificoAgenciasList(pea); + pricingEspecifico.setPricingEspecificoCanalVendasList(pecv); if (pricingEspecifico.getTipoPtovta() == null) { Messagebox.show(Labels.getLabel("editarPricingController.MSG.tipoPtoVta"), Labels.getLabel("busquedaPricingEspecificoController.window.title"), @@ -458,16 +525,31 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pricingEspecifico.setPricingEspecificoAgenciasList(new ArrayList()); } if (pricingEspecifico.getPricingEspecificoAgenciasList().isEmpty()){ - PricingEspecificoAgencia pea = new PricingEspecificoAgencia(); - pea.setPricingEspecifico(pricingEspecifico); + PricingEspecificoAgencia pea1 = new PricingEspecificoAgencia(); + pea1.setPricingEspecifico(pricingEspecifico); PuntoVenta pv = puntoVenService.obtenerID(-1); - pea.setPuntoVenta(pv); - pea.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - pea.setFecmodif(new Date()); - pea.setActivo(Boolean.TRUE); + pea1.setPuntoVenta(pv); + pea1.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + pea1.setFecmodif(new Date()); + pea1.setActivo(Boolean.TRUE); pricingEspecifico.setPricingEspecificoAgenciasList(new ArrayList()); - pricingEspecifico.getPricingEspecificoAgenciasList().add(pea); + pricingEspecifico.getPricingEspecificoAgenciasList().add(pea1); } + if(pricingEspecifico.getPricingEspecificoCanalVendasList() == null ){ + pricingEspecifico.setPricingEspecificoCanalVendasList(new ArrayList()); + } + if (pricingEspecifico.getPricingEspecificoCanalVendasList().isEmpty()){ + PricingEspecificoCanalVendas pea1 = new PricingEspecificoCanalVendas(); + pea1.setPricingEspecifico(pricingEspecifico); + TipoPuntoVenta tpv = puntoVentaService.obtenerID(new Short("-1")); + pea1.setTipoPtovta(tpv); + pea1.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + pea1.setFecmodif(new Date()); + pea1.setActivo(Boolean.TRUE); + pricingEspecifico.setPricingEspecificoCanalVendasList(new ArrayList()); + pricingEspecifico.getPricingEspecificoCanalVendasList().add(pea1); + } + if (pricingEspecifico.getPricingespecificoId() == null) { pricingEspecificoService.suscribir(pricingEspecifico); pricingList.addItemNovo(pricingEspecifico); @@ -503,6 +585,11 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer pricingEspecificoAgenciaService.actualizacion(p); } } + private void desativarPricingEspecificoCanalDesativados() { + for (PricingEspecificoCanalVendas p : pricingEspecificoADesativarCanal) { + pricingEspecificoCanalVendasService.actualizacion(p); + } + } /** * Valida se a lista de ocupações são subsequentes e se a primeira ocupação possui ocupação inicial igual a 1. @@ -909,6 +996,7 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer public void setRdExibirVendaNo(Radio rdExibirVendaNo) { this.rdExibirVendaNo = rdExibirVendaNo; } + @SuppressWarnings({ "rawtypes", "unchecked" }) public void onClick$btnCopiar(Event ev) throws InterruptedException { diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingCanal.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingCanal.java new file mode 100644 index 000000000..9e5b03dd3 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderPricingCanal.java @@ -0,0 +1,28 @@ +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.PricingEspecificoCanalVendas; + +public class RenderPricingCanal implements ListitemRenderer { + + public void render(Listitem lstm, Object o) throws Exception { + PricingEspecificoCanalVendas pea = (PricingEspecificoCanalVendas) o; + + if (!pea.getActivo()) { + return; + } + + Listcell lc = new Listcell(pea.getTipoPtovta().getTipoptovtaId().toString()); + lc.setParent(lstm); + + lc = new Listcell(pea.getTipoPtovta().getDesctipo().toString()); + lc.setParent(lstm); + + + + } + +} diff --git a/src/java/spring-config.xml b/src/java/spring-config.xml index 4b55d12d5..4e21941ba 100644 --- a/src/java/spring-config.xml +++ b/src/java/spring-config.xml @@ -224,6 +224,7 @@ com.rjconsultores.ventaboletos.entidad.PricingEspecifico com.rjconsultores.ventaboletos.entidad.PricingEspecificoOcupacion com.rjconsultores.ventaboletos.entidad.PricingEspecificoAgencia + com.rjconsultores.ventaboletos.entidad.PricingEspecificoCanalVendas com.rjconsultores.ventaboletos.entidad.PricingClasseTarifaria com.rjconsultores.ventaboletos.entidad.PricingRuta com.rjconsultores.ventaboletos.entidad.ProductoServicio diff --git a/web/gui/pricing/editarPricingEspecifico.zul b/web/gui/pricing/editarPricingEspecifico.zul index 8ffcee2d7..4d45da1ce 100644 --- a/web/gui/pricing/editarPricingEspecifico.zul +++ b/web/gui/pricing/editarPricingEspecifico.zul @@ -16,18 +16,18 @@