Correção cadastro de ocupação no pricing especifico ( fixes bug #5763 )

Tempo: 03 horas

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@39640 d1611594-4594-4d17-8e1d-87c2c4800839
master
wilian 2014-11-17 19:30:14 +00:00
parent 6d333ebe39
commit c924c83381
5 changed files with 118 additions and 6 deletions

View File

@ -4,7 +4,11 @@
*/ */
package com.rjconsultores.ventaboletos.web.gui.controladores.pricing; package com.rjconsultores.ventaboletos.web.gui.controladores.pricing;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -320,6 +324,10 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer
} }
} }
} }
if(!validarPricingEspecificoOcupacion()) {
return;
}
List<PricingEspecifico> lsPricing = pricingEspecificoService.buscarPorNome(pricingEspecifico); List<PricingEspecifico> lsPricing = pricingEspecificoService.buscarPorNome(pricingEspecifico);
boolean podeSalvar = false; boolean podeSalvar = false;
@ -356,6 +364,63 @@ public class EditarPricingEspecificoController extends MyGenericForwardComposer
} }
/**
* Valida se a lista de ocupações são subsequentes e se a primeira ocupação possui ocupação inicial igual a 1.
* @return
* @throws InterruptedException
*/
private boolean validarPricingEspecificoOcupacion() throws InterruptedException {
if(pricingEspecifico.getPricingEspecificoOcupacionsList() == null || pricingEspecifico.getPricingEspecificoOcupacionsList().isEmpty()) {
Messagebox.show(
Labels.getLabel("editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoOcupacion"),
Labels.getLabel("busquedaPricingEspecificoController.window.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
return false;
}
List<PricingEspecificoOcupacion> sOcupacionInicial = new ArrayList<PricingEspecificoOcupacion>(pricingEspecifico.getPricingEspecificoOcupacionsList());
Collections.sort(sOcupacionInicial,new Comparator<PricingEspecificoOcupacion>() {
@Override
public int compare(PricingEspecificoOcupacion o1, PricingEspecificoOcupacion o2) {
return o1.getOcupacioninicial().compareTo(o2.getOcupacioninicial());
}
});
if(sOcupacionInicial.iterator().next().getOcupacioninicial().intValue() != 1) {
Messagebox.show(
Labels.getLabel("editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionInicial"),
Labels.getLabel("busquedaPricingEspecificoController.window.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
return false;
}
boolean pricingEspecificoOcupacionNoSubsequente = false;
for (int i = 0; i < sOcupacionInicial.size(); i++) {
PricingEspecificoOcupacion pricingEspecificoOcupacion = sOcupacionInicial.get(i);
PricingEspecificoOcupacion pricingEspecificoOcupacionAnterior = null;
if(i > 0) {
pricingEspecificoOcupacionAnterior = sOcupacionInicial.get(i - 1);
}
if(pricingEspecificoOcupacionAnterior != null && pricingEspecificoOcupacionAnterior.getOcupacionfinal().add(new BigDecimal(1)).doubleValue() != pricingEspecificoOcupacion.getOcupacioninicial().doubleValue()) {
pricingEspecificoOcupacionNoSubsequente = true;
break;
}
}
if(pricingEspecificoOcupacionNoSubsequente) {
Messagebox.show(
Labels.getLabel("editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionNoSubsequente"),
Labels.getLabel("busquedaPricingEspecificoController.window.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
return false;
}
return true;
}
/** /**
* @return the pricingEspecificoService * @return the pricingEspecificoService
*/ */

View File

@ -3,6 +3,7 @@ package com.rjconsultores.ventaboletos.web.gui.controladores.pricing;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
import java.util.Locale;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -15,6 +16,7 @@ import org.zkoss.zk.ui.event.Event;
import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico;
import com.rjconsultores.ventaboletos.entidad.PricingEspecificoOcupacion; import com.rjconsultores.ventaboletos.entidad.PricingEspecificoOcupacion;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.BigDecimalUtil;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal; import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;
@ -43,9 +45,11 @@ public class EditarPricingEspecificoOcupacionController extends MyGenericForward
super.doAfterCompose(comp); super.doAfterCompose(comp);
if (pricingEspecificoOcupacion.getPricingEspecificoOcupacionId() != null) { if (pricingEspecificoOcupacion.getPricingEspecificoOcupacionId() != null) {
tarifa.setValue(pricingEspecificoOcupacion.getTarifa() == null ? StringUtils.EMPTY : pricingEspecificoOcupacion.getTarifa().toString()); Locale locale = new Locale("pt", "BR");
ocupacioninicial.setValue(pricingEspecificoOcupacion.getOcupacioninicial() == null ? StringUtils.EMPTY : pricingEspecificoOcupacion.getOcupacioninicial().toString());
ocupacionfinal.setValue(pricingEspecificoOcupacion.getOcupacionfinal() == null ? StringUtils.EMPTY : pricingEspecificoOcupacion.getOcupacionfinal().toString()); tarifa.setValue(pricingEspecificoOcupacion.getTarifa() == null ? StringUtils.EMPTY : BigDecimalUtil.getBigDecimalToStringDouble2CasasDecimaisFormatado(pricingEspecificoOcupacion.getTarifa(), locale));
ocupacioninicial.setValue(pricingEspecificoOcupacion.getOcupacioninicial() == null ? StringUtils.EMPTY : BigDecimalUtil.getBigDecimalToStringDouble2CasasDecimaisFormatado(pricingEspecificoOcupacion.getOcupacioninicial(), locale));
ocupacionfinal.setValue(pricingEspecificoOcupacion.getOcupacionfinal() == null ? StringUtils.EMPTY : BigDecimalUtil.getBigDecimalToStringDouble2CasasDecimaisFormatado(pricingEspecificoOcupacion.getOcupacionfinal(), locale));
} }
} }
@ -75,12 +79,13 @@ public class EditarPricingEspecificoOcupacionController extends MyGenericForward
peoList = new ArrayList<PricingEspecificoOcupacion>(); peoList = new ArrayList<PricingEspecificoOcupacion>();
else else
peoList = pricingEspecifico.getPricingEspecificoOcupacionsList(); peoList = pricingEspecifico.getPricingEspecificoOcupacionsList();
if (esEdicion) { if (esEdicion) {
int index = 0; int index = 0;
for (PricingEspecificoOcupacion peo : peoList) { for (PricingEspecificoOcupacion peo : peoList) {
if (peo.equals(pricingEspecificoOcupacion)) { if (peo.equals(pricingEspecificoOcupacion)) {
index = peoList.indexOf(peo); index = peoList.indexOf(peo);
break;
} }
} }
peoList.set(index, pricingEspecificoOcupacion); peoList.set(index, pricingEspecificoOcupacion);
@ -91,7 +96,6 @@ public class EditarPricingEspecificoOcupacionController extends MyGenericForward
pricingEspecifico.setPricingEspecificoOcupacionsList(peoList); pricingEspecifico.setPricingEspecificoOcupacionsList(peoList);
pricingListEspOcupacion.setData(peoList); pricingListEspOcupacion.setData(peoList);
pricingListEspOcupacion.updateItem(pricingEspecificoOcupacion);
closeWindow(); closeWindow();
@ -99,7 +103,7 @@ public class EditarPricingEspecificoOcupacionController extends MyGenericForward
log.error("Erro ao adicionar pricing Pricing Especifico Ocupacion: ", ex); log.error("Erro ao adicionar pricing Pricing Especifico Ocupacion: ", ex);
} }
} }
public MyTextboxDecimal getTarifa() { public MyTextboxDecimal getTarifa() {
return tarifa; return tarifa;
} }

View File

@ -0,0 +1,37 @@
package com.rjconsultores.ventaboletos.web.utilerias;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
import org.apache.commons.lang.StringUtils;
/**
*
* @author Wilian
*
*/
public class BigDecimalUtil {
public static BigDecimal getStringToBigDecimal(String value, Locale locale) throws ParseException {
if(value != null && StringUtils.isNotBlank(value)) {
NumberFormat nf = NumberFormat.getInstance(locale);
return new BigDecimal(nf.parse(value).toString());
}
return null;
}
public static String getBigDecimalToStringDouble2CasasDecimaisFormatado(BigDecimal value, Locale locale) {
if(value != null) {
NumberFormat nf = NumberFormat.getInstance(locale);
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
return nf.format(value.doubleValue());
}
return null;
}
}

View File

@ -2255,6 +2255,9 @@ editarPricingEspecificoOcupacionController.ocupacionInicial.label=Ocupación Ini
editarPricingEspecificoOcupacionController.ocupacionFinal.label=Ocupación Final editarPricingEspecificoOcupacionController.ocupacionFinal.label=Ocupación Final
editarPricingEspecificoOcupacionController.MSG.borrarPergunta = Deseas eliminar ocupacion? editarPricingEspecificoOcupacionController.MSG.borrarPergunta = Deseas eliminar ocupacion?
editarPricingEspecificoOcupacionController.ocupacao.label = Ocupacion 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.
# Búsqueda Sistema # Búsqueda Sistema
busquedaSistemaController.window.title = Sistema busquedaSistemaController.window.title = Sistema

View File

@ -2302,6 +2302,9 @@ editarPricingEspecificoOcupacionController.ocupacionInicial.label=Ocupação Ini
editarPricingEspecificoOcupacionController.ocupacionFinal.label=Ocupação Final editarPricingEspecificoOcupacionController.ocupacionFinal.label=Ocupação Final
editarPricingEspecificoOcupacionController.MSG.borrarPergunta = Deseja Eliminar Ocupação? editarPricingEspecificoOcupacionController.MSG.borrarPergunta = Deseja Eliminar Ocupação?
editarPricingEspecificoOcupacionController.ocupacao.label = Ocupação editarPricingEspecificoOcupacionController.ocupacao.label = Ocupação
editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoOcupacion = Ocupação não informado.
editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionInicial = A primeira ocupação deverá ter valor de ocupação inicial igual a 1.
editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionNoSubsequente = A lista de ocupações deverão ser subsequentes.
# Pesquisa Sistema # Pesquisa Sistema
busquedaSistemaController.window.title = Sistema busquedaSistemaController.window.title = Sistema