From 64f9dfe40fe27ab5c224cf724fffd30918981a43 Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 29 May 2015 21:07:07 +0000 Subject: [PATCH] =?UTF-8?q?PRICING=20-=20Ocupa=C3=A7=C3=A3o=20|=20Antecipa?= =?UTF-8?q?=C3=A7=C3=A3o=20(fixes=20bug=20#5836)=20Tempo:=2009=20horas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@44543 d1611594-4594-4d17-8e1d-87c2c4800839 --- .classpath | 1 + ...cingOcupaAntecipaAutomaticoController.java | 113 +++++++++++++----- .../StringDecimalToDecimalConverter.java | 3 - web/WEB-INF/i3-label_es_MX.label | 1 + web/WEB-INF/i3-label_pt_BR.label | 1 + 5 files changed, 84 insertions(+), 35 deletions(-) diff --git a/.classpath b/.classpath index 2f736ff72..9388d5964 100644 --- a/.classpath +++ b/.classpath @@ -103,5 +103,6 @@ + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingOcupaAntecipaAutomaticoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingOcupaAntecipaAutomaticoController.java index af55854fe..0e30d13ad 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingOcupaAntecipaAutomaticoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/pricing/EditarPricingOcupaAntecipaAutomaticoController.java @@ -21,6 +21,7 @@ import org.zkoss.zul.Radio; import com.rjconsultores.ventaboletos.entidad.Pricing; import com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa; +import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.service.PricingOcupaAntecipaService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.ConstraintPorcentagem; @@ -45,9 +46,11 @@ public class EditarPricingOcupaAntecipaAutomaticoController extends MyGenericFor private Intbox ocupacioninicial; private Intbox ocupacionfinal; private Intbox cantdiasmin; + private MyTextboxDecimal porcentaje; + private List lsPricingOcupaAntecipa; - private List novaListaPricingOcupaAntecipa; + private Radio rdOcupacao; private Boolean hasNoElements; @@ -63,26 +66,33 @@ public class EditarPricingOcupaAntecipaAutomaticoController extends MyGenericFor /* * Transformar a tabela (valores de exemplo) : * - * Qtd. Dias Qtd. Dias Ocup. Min. Ocup. Máx. Porcentagem Minimo Máximo - * - * 12 * 0% 20% -30% 12 * 21% 80% -15% 12 * 81% 90% -10% 8 11 0% 80% -15% 8 11 81% 90% -10% 4 7 0% 90% -10% - * + * Qtd. Dias Qtd. Dias Ocup. Min. Ocup. Máx. Porcentagem + * Minimo Máximo + * + * 12 * 0% 20% -30% + * 12 * 21% 80% -15% + * 12 * 81% 90% -10% + * 8 11 0% 80% -15% + * 8 11 81% 90% -10% + * 4 7 0% 90% -10% + * * Na forma: * - * 12 dias ----> 30% (ocupação de 0% -> 20%) 08 dias ----> 15% (ocupação de 21% -> 80%) 04 dias ----> 10% (ocupação de 81% -> 90%) + * 12 dias ----> 30% (ocupação de 0% -> 20%) + * 08 dias ----> 15% (ocupação de 21% -> 80%) + * 04 dias ----> 10% (ocupação de 81% -> 90%) + * */ - + argList = (List) Executions.getCurrent().getArg().get("clasePricingOcupaAntecipaList"); parentPricingOcupaAntecipaList = (MyListbox) Executions.getCurrent().getArg().get("pricingOcupaAntecipaList"); pricing = (Pricing) Executions.getCurrent().getArg().get("pricing"); pricingOcupaAntecipaList.setItemRenderer(new RenderPricingOcupaAntecipa()); lsPricingOcupaAntecipa = new ArrayList(); - novaListaPricingOcupaAntecipa = new ArrayList(); try { Collections.sort(argList, Collections.reverseOrder(new PricingOcupaAntecipaComparator())); } catch (Exception e) { - e.printStackTrace(); Messagebox.show(Labels.getLabel("editarPricingOcupaAntecipaAutomaticoController.MSG.FormatoDados"), Labels.getLabel("editarPricingController.windowOcupacion.title"), Messagebox.OK, Messagebox.EXCLAMATION); @@ -93,13 +103,9 @@ public class EditarPricingOcupaAntecipaAutomaticoController extends MyGenericFor int diaMin = -1; for (PricingOcupaAntecipa p : argList) { - if (p.getCantdiasmin() != null) { - if (diaMin != p.getCantdiasmin()) { - lsPricingOcupaAntecipa.add(p); - diaMin = p.getCantdiasmin(); - } - } else { + if (diaMin != p.getCantdiasmin()) { lsPricingOcupaAntecipa.add(p); + diaMin = p.getCantdiasmin(); } } @@ -122,19 +128,46 @@ public class EditarPricingOcupaAntecipaAutomaticoController extends MyGenericFor } } + private void apagarRegistros() throws BusinessException { + for (PricingOcupaAntecipa poa : argList) { + if ((poa.getOcupacioninicial() != null && poa.getOcupacioninicial().doubleValue() > 0) || (poa.getCantasientosmin() != null && poa.getCantasientosmin().intValue() > 0)) { + pricingOcupaAntecipaService.borrar(poa); + } + } + } + public void onClick$btnAdicionarOcupaAntecipa(Event ev) throws Exception { + List parentList = new ArrayList(); + calculaCantDiasMax(); try { - - for (PricingOcupaAntecipa poa : novaListaPricingOcupaAntecipa) { - - if (poa.getPricingocupaantecipaId() == null) { - pricingOcupaAntecipaService.suscribir(poa); + apagarRegistros(); + for (int i = 0; i < lsPricingOcupaAntecipa.size(); i++) { + lsPricingOcupaAntecipa.get(i).setOcupacioninicial(new BigDecimal(0)); + if (lsPricingOcupaAntecipa.get(i).getPricingocupaantecipaId() == null) { + pricingOcupaAntecipaService.suscribir(lsPricingOcupaAntecipa.get(i)); } else { - pricingOcupaAntecipaService.actualizacion(poa); + pricingOcupaAntecipaService.actualizacion(lsPricingOcupaAntecipa.get(i)); + } + + parentList.add(lsPricingOcupaAntecipa.get(i)); + + for (int j = i + 1; j < lsPricingOcupaAntecipa.size(); j++) { + PricingOcupaAntecipa p = new PricingOcupaAntecipa(); + p.setPricingocupaantecipaId(lsPricingOcupaAntecipa.get(j).getPricingocupaantecipaId()); + p.setCantasientosmax(lsPricingOcupaAntecipa.get(j).getCantasientosmax()); + p.setCantasientosmin(lsPricingOcupaAntecipa.get(j).getCantasientosmin()); + p.setCantdiasmax(lsPricingOcupaAntecipa.get(i).getCantdiasmax()); + p.setCantdiasmin(lsPricingOcupaAntecipa.get(i).getCantdiasmin()); + p.setOcupacionfinal(lsPricingOcupaAntecipa.get(j).getOcupacionfinal()); + p.setOcupacioninicial(lsPricingOcupaAntecipa.get(j).getOcupacioninicial()); + p.setPorcentaje(lsPricingOcupaAntecipa.get(j).getPorcentaje()); + p.setPricing(pricing); + pricingOcupaAntecipaService.suscribir(p); + parentList.add(p); } } - parentPricingOcupaAntecipaList.setData(lsPricingOcupaAntecipa); + parentPricingOcupaAntecipaList.setData(parentList); closeWindow(); } catch (Exception e) { Messagebox.show(e.getLocalizedMessage(), @@ -145,23 +178,41 @@ public class EditarPricingOcupaAntecipaAutomaticoController extends MyGenericFor private class PricingOcupaAntecipaComparator implements Comparator { public int compare(PricingOcupaAntecipa pricing, PricingOcupaAntecipa outroPricing) { - if (pricing.getCantdiasmin() != null && outroPricing.getCantdiasmin() != null) { - return pricing.getCantdiasmin().compareTo(outroPricing.getCantdiasmin()); - } else if (pricing.getOcupacioninicial() != null && outroPricing.getOcupacioninicial() != null) { - return pricing.getOcupacioninicial().compareTo(outroPricing.getOcupacioninicial()); + return pricing.getCantdiasmin(). + compareTo(outroPricing.getCantdiasmin()); + } + } + + private void calculaCantDiasMax() { + Collections.sort(lsPricingOcupaAntecipa, Collections.reverseOrder(new PricingOcupaAntecipaComparator())); + PricingOcupaAntecipa poa; + int cantDiasMinAnterior = lsPricingOcupaAntecipa.get(0).getCantdiasmin(); + for (int i = 0; i < lsPricingOcupaAntecipa.size(); i++) { + poa = lsPricingOcupaAntecipa.get(i); + if (i == 0) { + poa.setCantdiasmax(CANTDIASMAXDEFAULT); + } else { + poa.setCantdiasmax(cantDiasMinAnterior - 1); + cantDiasMinAnterior = poa.getCantdiasmin(); } - return -1; } } public void onClick$btnlancar(Event ev) throws Exception { + + for (PricingOcupaAntecipa poa : lsPricingOcupaAntecipa) { + if (poa.getCantdiasmin().equals(cantdiasmin.getValue())) { + Messagebox.show(Labels.getLabel("editarPricingAutomaticoController.msg.cantDias.erro"), + Labels.getLabel("editarPricingController.windowOcupacion.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + return; + } + } + PricingOcupaAntecipa poa = new PricingOcupaAntecipa(); poa.setPricing(pricing); poa.setCantdiasmin(cantdiasmin.getValue()); poa.setPorcentaje(porcentaje.getValueDecimal()); - - poa.setCantdiasmax(CANTDIASMAXDEFAULT); - if (rdOcupacao.isChecked()) { poa.setOcupacioninicial(new BigDecimal(ocupacioninicial.getValue())); poa.setOcupacionfinal(new BigDecimal(ocupacionfinal.getValue())); @@ -170,8 +221,6 @@ public class EditarPricingOcupaAntecipaAutomaticoController extends MyGenericFor poa.setCantasientosmax(ocupacionfinal.getValue()); } - novaListaPricingOcupaAntecipa.add(poa); - lsPricingOcupaAntecipa.add(poa); pricingOcupaAntecipaList.setData(lsPricingOcupaAntecipa); } diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/StringDecimalToDecimalConverter.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/StringDecimalToDecimalConverter.java index 85694c0e1..fb9b4fc2a 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/StringDecimalToDecimalConverter.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/StringDecimalToDecimalConverter.java @@ -37,9 +37,6 @@ public class StringDecimalToDecimalConverter implements TypeConverter { } if (val instanceof String) { - - System.out.println(val.toString()); - return (val.toString().trim().isEmpty()) ? (BigDecimal) null : new BigDecimal(val.toString().replace(".", "").replace(",", ".")); } return null; diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index b6bb50888..5e02a3399 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -2420,6 +2420,7 @@ editarPricingAutomaticoController.columnaPorcentaje.label = Porcentaje editarPricingAutomaticoController.columnaOcupacionMin.label = Ocupación Min. editarPricingAutomaticoController.columnaOcupacionMax.label = Ocupación Máx. editarPricingAutomaticoController.windowOcupacion.title = Ocupación automática +editarPricingAutomaticoController.msg.cantDias.erro = Ya existe en el sistema es la misma cantidad de días registrados # Editar Pricing Especifico Ocupacion editarPricingEspecificoOcupacionController.tarifa.label=Tasa diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index d833e7d5e..f05a6ed2a 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -2475,6 +2475,7 @@ editarPricingAutomaticoController.columnaPorcentaje.label = Porcentagem editarPricingAutomaticoController.columnaOcupacionMin.label = Ocup. Min. editarPricingAutomaticoController.columnaOcupacionMax.label = Ocup. Máx. editarPricingAutomaticoController.windowOcupacion.title = Ocupação Automática +editarPricingAutomaticoController.msg.cantDias.erro = Já existe no sistema está mesma quantidade de dias cadastrada # Editar Pricing Especifico Ocupacion editarPricingEspecificoOcupacionController.tarifa.label=Tarifa