fixes bug#0012389

dev: fabricio
qua: renato

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@86172 d1611594-4594-4d17-8e1d-87c2c4800839
master
emerson 2018-10-15 14:31:09 +00:00
parent b8e97c2e51
commit 3645ba5913
1 changed files with 333 additions and 288 deletions

View File

@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.BooleanUtils;
import org.apache.log4j.Logger;
import org.zkoss.util.resource.Labels;
import org.zkoss.zk.ui.event.Event;
@ -48,13 +49,15 @@ import com.rjconsultores.ventaboletos.vo.esquemaoperacional.SecuenciaRutaTramoCo
public class GridRutaTramoCoeficiente extends Grid implements RowRenderer, RendererCtrl {
private static final long serialVersionUID = 1L;
private static final String CONSTRAINT_NO_EMPTY = "no empty";
private static final String VALOR_COMBO_NAO = "Não";
private static final String VALOR_COMBO_SIM = "Sim";
private List<Via> lsVias;
private List<CoeficienteTarifa> lsCoeficientes;
private List<SecuenciaRutaTramoCoeficienteVO> lsSecuenciaRutaTramoCoeficienteVO;
private ClaseServicio claseServicio;
private OrgaoConcedente orgaoConcedente;
private DataBinder dataBinder;
// private Combobox cboVenda;
private static Logger log = Logger.getLogger(GridRutaTramoCoeficiente.class);
public GridRutaTramoCoeficiente() {
@ -122,99 +125,243 @@ public class GridRutaTramoCoeficiente extends Grid implements RowRenderer, Rende
private Columns generarColumns() {
Columns columns = new Columns();
Column columnSecuencia = new Column("#");
columnSecuencia.setWidth("1%");
columns.appendChild(columnSecuencia);
Column columnOrigen = new Column(Labels.getLabel("gridRutaSecuencia.columnOrigen.label"));
columnOrigen.setWidth("20%");
columns.appendChild(columnOrigen);
Column columnDestino = new Column(Labels.getLabel("gridRutaSecuencia.columnDestino.label"));
columnDestino.setWidth("20%");
columns.appendChild(columnDestino);
Column columnVia = new Column(Labels.getLabel("gridRutaSecuencia.columnVia.label"));
columnVia.setWidth("15%");
columns.appendChild(columnVia);
Column permiteVenda = new Column(Labels.getLabel("gridRutaSecuencia.columnVenda.label"));
permiteVenda.setWidth("6%");
columns.appendChild(permiteVenda);
Column kmsReal = new Column(Labels.getLabel("gridRutaSecuencia.columnKmsReal.label"));
kmsReal.setWidth("6%");
columns.appendChild(kmsReal);
Column tiempoRecorrido = new Column(Labels.getLabel("gridRutaSecuencia.columnTiempoRecorrido.label"));
tiempoRecorrido.setWidth("10%");
columns.appendChild(tiempoRecorrido);
Column columnIDTramo = new Column(Labels.getLabel("gridRutaSecuencia.columnIDTramo.label"));
columnSecuencia.setWidth("6%");
columns.appendChild(columnIDTramo);
Column columnCoeficiente1 = new Column(Labels.getLabel("gridRutaSecuencia.columnCoeficiente1.label"));
columnCoeficiente1.setWidth("12%");
columns.appendChild(columnCoeficiente1);
Column columnKmCoeficiente1 = new Column(Labels.getLabel("gridRutaSecuencia.columnKmCoeficiente1.label"));
columnKmCoeficiente1.setWidth("5%");
columns.appendChild(columnKmCoeficiente1);
Column columnCoeficiente2 = new Column(Labels.getLabel("gridRutaSecuencia.columnCoeficiente2.label"));
columnCoeficiente2.setWidth("12%");
columns.appendChild(columnCoeficiente2);
Column columnKmCoeficiente2 = new Column(Labels.getLabel("gridRutaSecuencia.columnKmCoeficiente2.label"));
columnKmCoeficiente2.setWidth("5%");
columns.appendChild(columnKmCoeficiente2);
columns.appendChild(criaColuna("#", "2%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnOrigen.label"), "20%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnDestino.label"), "20%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnVia.label"), "15%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnVenda.label"), "6%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnKmsReal.label"), "6%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnTiempoRecorrido.label"), "10%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnIDTramo.label"), "6%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnCoeficiente1.label"), "12%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnKmCoeficiente1.label"), "5%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnCoeficiente2.label"), "12%"));
columns.appendChild(criaColuna(Labels.getLabel("gridRutaSecuencia.columnKmCoeficiente2.label"), "5%"));
return columns;
}
private Column criaColuna(String label, String width) {
Column coluna = new Column(label);
coluna.setWidth(width);
return coluna;
}
@Override
public void render(Row row, Object obj) throws Exception {
final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO = (SecuenciaRutaTramoCoeficienteVO) obj;
// binder row->bean
dataBinder.bindBean(row.getUuid(), secuenciaRutaTramoCoeficienteVO);
// Cell secuencia
Intbox ibxSumSecuencia = new Intbox(secuenciaRutaTramoCoeficienteVO.getSecuencia());
ibxSumSecuencia.setWidth("50%");
ibxSumSecuencia.setReadonly(true);
row.appendChild(ibxSumSecuencia);
row.appendChild(criaCellSequencia(secuenciaRutaTramoCoeficienteVO));
row.appendChild(criaCellOrigem(secuenciaRutaTramoCoeficienteVO));
row.appendChild(criaCellDestino(secuenciaRutaTramoCoeficienteVO));
// Cell Origen
String strOrigem = secuenciaRutaTramoCoeficienteVO.getOrigen().getCveparada() + " - " + secuenciaRutaTramoCoeficienteVO.getOrigen().getDescparada();
Label lblOrigen = new Label(strOrigem);
lblOrigen.setWidth("80%");
row.appendChild(lblOrigen);
final MyCustomTextboxDecimal dKmsReal = criaKmsReal(secuenciaRutaTramoCoeficienteVO, row.getUuid());
final Spinner spHora = criaSpinerHora(secuenciaRutaTramoCoeficienteVO);
final Spinner spMinuto = criaSpinerMinuto(secuenciaRutaTramoCoeficienteVO);
final Label lblID = criaLabelId(secuenciaRutaTramoCoeficienteVO);
// Cell Destino
String strDestino = secuenciaRutaTramoCoeficienteVO.getDestino().getCveparada() + " - " + secuenciaRutaTramoCoeficienteVO.getDestino().getDescparada();
Label lblDestino = new Label(strDestino);
lblDestino.setWidth("80%");
row.appendChild(lblDestino);
final Combobox comboCoeficiente1 = criaCoeficienteTarifario1(secuenciaRutaTramoCoeficienteVO);
final MyCustomTextboxDecimal kmCoeficiente1 = criaKmCoeficiente1(secuenciaRutaTramoCoeficienteVO, row.getUuid() + ".kmCoeficiente1");
// son creados antes pues el cboVia los estan ocupando
final MyCustomTextboxDecimal dKmsReal = new MyCustomTextboxDecimal((secuenciaRutaTramoCoeficienteVO.getKmReal() == null) ? BigDecimal.ZERO : secuenciaRutaTramoCoeficienteVO.getKmReal());
dKmsReal.setWidth("90%");
final Combobox comboCoeficiente2 = criaCoeficienteTarifario2(secuenciaRutaTramoCoeficienteVO);
final MyCustomTextboxDecimal kmCoeficiente2 = criaKmCoeficiente2(secuenciaRutaTramoCoeficienteVO, row.getUuid() + ".kmCoeficiente2");
final Spinner spHora = new Spinner();
final Spinner spMinuto = new Spinner();
Combobox comboVia = criaCellComboVia(secuenciaRutaTramoCoeficienteVO);
comboVia.addEventListener(Events.ON_CHANGE,
new EventListenerComboVia(comboVia, spHora, spMinuto, lblID, kmCoeficiente2,
comboCoeficiente1, secuenciaRutaTramoCoeficienteVO, kmCoeficiente1,
comboCoeficiente2, dKmsReal));
row.appendChild(comboVia);
row.appendChild(criaCellComboVenda(secuenciaRutaTramoCoeficienteVO));
row.appendChild(dKmsReal);
row.appendChild(criaCellHora(row, secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido(), spHora, spMinuto));
row.appendChild(lblID);
row.appendChild(comboCoeficiente1);
row.appendChild(kmCoeficiente1);
row.appendChild(comboCoeficiente2);
row.appendChild(kmCoeficiente2);
}
private Hbox criaCellHora(Row row, final HoraSistema horaSistema, final Spinner spHora, final Spinner spMinuto) {
Hbox hbox = new Hbox();
hbox.appendChild(spHora);
hbox.appendChild(new Label(":"));
hbox.appendChild(spMinuto);
if (horaSistema != null) {
HoraSistema hora = horaSistema;
spHora.setValue(hora.getHora());
spMinuto.setValue(hora.getMinuto());
}
dataBinder.addBinding(spHora, "value", row.getUuid() + ".tiempoRecorrido.hora", null, null, "save", null, null, null, null);
dataBinder.addBinding(spMinuto, "value", row.getUuid() + ".tiempoRecorrido.minuto", null, null, "save", null, null, null, null);
return hbox;
}
private MyCustomTextboxDecimal criaKmCoeficiente2(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO, String rowId) {
final MyCustomTextboxDecimal kmCoeficiente2 = new MyCustomTextboxDecimal();
configuraKmCoeficiente(secuenciaRutaTramoCoeficienteVO, rowId, kmCoeficiente2, secuenciaRutaTramoCoeficienteVO.getKmCoeficiente2());
return kmCoeficiente2;
}
private MyCustomTextboxDecimal criaKmCoeficiente1(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO, String rowId) {
final MyCustomTextboxDecimal kmCoeficiente1 = new MyCustomTextboxDecimal();
configuraKmCoeficiente(secuenciaRutaTramoCoeficienteVO, rowId, kmCoeficiente1, secuenciaRutaTramoCoeficienteVO.getKmCoeficiente1());
return kmCoeficiente1;
}
private void configuraKmCoeficiente(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO, String rowId, final MyCustomTextboxDecimal kmCoeficiente,
final BigDecimal valorKmCoeficiente) {
kmCoeficiente.setValueBigDecimal(valorKmCoeficiente != null ? valorKmCoeficiente : BigDecimal.ZERO);
kmCoeficiente.setWidth("80%");
kmCoeficiente.setReadonly(!possuiOrgao(secuenciaRutaTramoCoeficienteVO));
dataBinder.addBinding(kmCoeficiente, "value", rowId, null, null,
"save", "com.rjconsultores.ventaboletos.web.utilerias.StringDecimalToDecimalConverter", null, null, null);
}
private Combobox criaCellComboVenda(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
final Combobox comboVenda = new Combobox();
comboVenda.setId(comboVenda.getUuid());
comboVenda.setReadonly(true);
comboVenda.setWidth("100%");
comboVenda.setConstraint(CONSTRAINT_NO_EMPTY);
final ListModelList listComboVenda = configuraModelListComboVenda(secuenciaRutaTramoCoeficienteVO);
comboVenda.setModel(listComboVenda);
comboVenda.addEventListener(Events.ON_CHANGE, new EventListener() {
@Override
public void onEvent(Event evt) throws Exception {
secuenciaRutaTramoCoeficienteVO.setPermiteVenda(
VALOR_COMBO_SIM.equals(comboVenda.getSelectedItem().getValue()));
}
});
return comboVenda;
}
private ListModelList configuraModelListComboVenda(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
final ListModelList listComboVenda = new ListModelList();
final Comboitem comboItemSim = new Comboitem(VALOR_COMBO_SIM);
comboItemSim.setValue(VALOR_COMBO_SIM);
final Comboitem comboItemNao = new Comboitem(VALOR_COMBO_NAO);
comboItemNao.setValue(VALOR_COMBO_NAO);
listComboVenda.add(comboItemSim.getValue());
listComboVenda.add(comboItemNao.getValue());
if (getId().equalsIgnoreCase("gridrutasecuenciaida")) {
if (secuenciaRutaTramoCoeficienteVO.getPermiteVenda() == null) {
secuenciaRutaTramoCoeficienteVO.setPermiteVenda(false);
}
listComboVenda.addSelection(BooleanUtils.isTrue(secuenciaRutaTramoCoeficienteVO.getPermiteVenda())
? comboItemSim.getValue() : comboItemNao.getValue());
}
return listComboVenda;
}
private Combobox criaCoeficienteTarifario2(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
final Combobox cboCoeficiente = criaCoeficiente(secuenciaRutaTramoCoeficienteVO,
secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa2());
cboCoeficiente.addEventListener(Events.ON_CHANGE, new EventListener() {
@Override
public void onEvent(Event arg0) throws Exception {
if (cboCoeficiente.getSelectedItem() == null) {
secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa2(null);
} else {
secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa2((CoeficienteTarifa) cboCoeficiente.getSelectedItem().getValue());
}
}
});
return cboCoeficiente;
}
private Combobox criaCoeficienteTarifario1(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
final Combobox cboCoeficiente = criaCoeficiente(secuenciaRutaTramoCoeficienteVO, secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa1());
cboCoeficiente.addEventListener(Events.ON_CHANGE, new EventListener() {
@Override
public void onEvent(Event arg0) throws Exception {
if (cboCoeficiente.getSelectedItem() == null) {
secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1(null);
} else {
secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1((CoeficienteTarifa) cboCoeficiente.getSelectedItem().getValue());
}
}
});
return cboCoeficiente;
}
private Combobox criaCoeficiente(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO,
CoeficienteTarifa coeficienteTarifa) {
final Combobox cboCoeficiente = new Combobox();
cboCoeficiente.setId(cboCoeficiente.getUuid());
cboCoeficiente.setWidth("99%");
ListModelList lmlCoeficiente = getListCoeficienteCombobox();
if (coeficienteTarifa != null) {
lmlCoeficiente.addSelection(coeficienteTarifa);
}
cboCoeficiente.setModel(lmlCoeficiente);
cboCoeficiente.setConstraint(CONSTRAINT_NO_EMPTY);
cboCoeficiente.setDisabled(!possuiOrgao(secuenciaRutaTramoCoeficienteVO));
cboCoeficiente.setReadonly(true);
return cboCoeficiente;
}
private boolean possuiOrgao(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
return secuenciaRutaTramoCoeficienteVO.getOrgaoTramoId() == null;
}
private boolean possuiTramo(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
return secuenciaRutaTramoCoeficienteVO.getTramoId() != null;
}
private Label criaLabelId(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
final Label lblID = new Label("");
lblID.setValue(possuiTramo(secuenciaRutaTramoCoeficienteVO)
? secuenciaRutaTramoCoeficienteVO.getTramoId().toString() : "");
return lblID;
}
// Campos coeficientes tarifario
final Combobox cboCoeficiente1 = new Combobox();
// final Intbox ibxKm1 = new Intbox();
final MyCustomTextboxDecimal ibxKm1 = new MyCustomTextboxDecimal();
private Spinner criaSpinerMinuto(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
final Spinner spMinuto = new Spinner();
configuraSpinerHoraMinuto(secuenciaRutaTramoCoeficienteVO, spMinuto);
spMinuto.setConstraint("max 59,no negative,no empty");
return spMinuto;
}
final Combobox cboCoeficiente2 = new Combobox();
// final Intbox ibxKm2 = new Intbox();
final MyCustomTextboxDecimal ibxKm2 = new MyCustomTextboxDecimal();
private Spinner criaSpinerHora(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
final Spinner spHora = new Spinner();
configuraSpinerHoraMinuto(secuenciaRutaTramoCoeficienteVO, spHora);
spHora.setConstraint("max 99, no negative, no empty");
return spHora;
}
// Cell Via
private void configuraSpinerHoraMinuto(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO,
final Spinner spinner) {
spinner.setWidth("40px");
spinner.setReadonly(secuenciaRutaTramoCoeficienteVO.getTramoServicioId() != null);
spinner.setButtonVisible(secuenciaRutaTramoCoeficienteVO.getTramoServicioId() == null);
}
private Combobox criaCellComboVia(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
final Combobox cboVia = new Combobox();
cboVia.setId(cboVia.getUuid());
cboVia.setReadonly(true);
@ -223,223 +370,40 @@ public class GridRutaTramoCoeficiente extends Grid implements RowRenderer, Rende
listModelList.addSelection(secuenciaRutaTramoCoeficienteVO.getVia());
}
cboVia.setModel(listModelList);
cboVia.setConstraint("no empty");
cboVia.addEventListener(Events.ON_CHANGE, new EventListener() {
@Override
public void onEvent(Event evt) throws Exception {
if (cboVia.getSelectedItem() != null) {
BigDecimal kmRealAntigo = secuenciaRutaTramoCoeficienteVO.getKmReal();
HoraSistema tiempoRecorridoAntigo = secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido();
secuenciaRutaTramoCoeficienteVO.setVia((Via) cboVia.getSelectedItem().getValue());
llenarTramo(secuenciaRutaTramoCoeficienteVO);
boolean tramoEditable = (secuenciaRutaTramoCoeficienteVO.getTramoId() == null);
boolean tramoCoeficienteEditable = (secuenciaRutaTramoCoeficienteVO.getOrgaoTramoId() == null);
boolean tramoServicioEditable = (secuenciaRutaTramoCoeficienteVO.getTramoServicioId() == null);
if (!tramoEditable) {// cuando el tramo no es editable, es porque ya existe. Entonces lleno la pantalla con los nuevos valores
dKmsReal.setValueBigDecimal(secuenciaRutaTramoCoeficienteVO.getKmReal());
} else {
secuenciaRutaTramoCoeficienteVO.setKmReal(kmRealAntigo);
cboVia.setConstraint(CONSTRAINT_NO_EMPTY);
return cboVia;
}
lblID.setValue((secuenciaRutaTramoCoeficienteVO.getTramoId() != null) ? secuenciaRutaTramoCoeficienteVO.getTramoId().toString() : "");
if (!tramoServicioEditable) {// cuando el tramoServicio no es editable, es porque ya existe. Entonces lleno la pantalla con los nuevos valores
spHora.setValue(secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido().getHora());
spMinuto.setValue(secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido().getMinuto());
} else {
secuenciaRutaTramoCoeficienteVO.setTiempoRecorrido(tiempoRecorridoAntigo);
}
if (!tramoCoeficienteEditable) {
cboCoeficiente1.setText(secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa1().getDescCoeficiente());
ibxKm1.setValueBigDecimal(secuenciaRutaTramoCoeficienteVO.getKmCoeficiente1());
cboCoeficiente2.setSelectedIndex(-1);
ibxKm2.setValueBigDecimal(BigDecimal.ZERO);
if (secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa2() != null) {
cboCoeficiente2.setText(secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa2().getDescCoeficiente());
ibxKm2.setValueBigDecimal(secuenciaRutaTramoCoeficienteVO.getKmCoeficiente2());
}
}
dKmsReal.setReadonly(!tramoEditable);
spHora.setReadonly(!tramoServicioEditable);
spHora.setButtonVisible(tramoServicioEditable);
spMinuto.setReadonly(!tramoServicioEditable);
spMinuto.setButtonVisible(tramoServicioEditable);
cboCoeficiente1.setDisabled(!tramoCoeficienteEditable);
ibxKm1.setReadonly(!tramoCoeficienteEditable);
cboCoeficiente2.setDisabled(!tramoCoeficienteEditable);
ibxKm2.setReadonly(!tramoCoeficienteEditable);
}
}
});
row.appendChild(cboVia);
// Cell Venda
final Combobox cboVenda = new Combobox();
cboVenda.setId(cboVenda.getUuid());
cboVenda.setReadonly(true);
cboVenda.setWidth("100%");
cboVenda.setConstraint("no empty");
ListModelList listCboVenda = new ListModelList();
final Comboitem cbiSim = new Comboitem("Sim");
cbiSim.setValue("Sim");
final Comboitem cbiNao = new Comboitem("Não");
cbiNao.setValue("Não");
listCboVenda.add(cbiSim.getValue());
listCboVenda.add(cbiNao.getValue());
if (secuenciaRutaTramoCoeficienteVO.getPermiteVenda() == null && this.getId().equalsIgnoreCase("gridrutasecuenciaida")){
listCboVenda.addSelection(cbiSim.getValue());
secuenciaRutaTramoCoeficienteVO.setPermiteVenda(Boolean.TRUE);
} else if (this.getId().equalsIgnoreCase("gridrutasecuenciavolta")){
if(secuenciaRutaTramoCoeficienteVO.getPermiteVenda() == null ){
secuenciaRutaTramoCoeficienteVO.setPermiteVenda(Boolean.TRUE);
listCboVenda.addSelection(cbiSim.getValue());
}else{
listCboVenda.addSelection(secuenciaRutaTramoCoeficienteVO.getPermiteVenda()?cbiSim.getValue():cbiNao.getValue());
}
}
cboVenda.setModel(listCboVenda);
cboVenda.addEventListener(Events.ON_CHANGE, new EventListener() {
@Override
public void onEvent(Event evt) throws Exception {
if (cboVenda.getSelectedItem().getValue().equals(cbiSim.getValue())){
secuenciaRutaTramoCoeficienteVO.setPermiteVenda(Boolean.TRUE);
} else if (cboVenda.getSelectedItem().getValue().equals(cbiNao.getValue())){
secuenciaRutaTramoCoeficienteVO.setPermiteVenda(Boolean.FALSE);
}
}
});
row.appendChild(cboVenda);
boolean esTramoEditable = (secuenciaRutaTramoCoeficienteVO.getTramoId() == null);
boolean esTramoServicioEditable = (secuenciaRutaTramoCoeficienteVO.getTramoServicioId() == null);
boolean esTramoCoeficienteEditable = (secuenciaRutaTramoCoeficienteVO.getOrgaoTramoId() == null);
// Cell Kms Real
dKmsReal.setReadonly(!esTramoEditable);
dataBinder.addBinding(dKmsReal, "value", row.getUuid() + ".kmReal", null, null, "save",
private MyCustomTextboxDecimal criaKmsReal(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO, String rowId) {
MyCustomTextboxDecimal dKmsReal = new MyCustomTextboxDecimal((secuenciaRutaTramoCoeficienteVO.getKmReal() == null) ? BigDecimal.ZERO : secuenciaRutaTramoCoeficienteVO.getKmReal());
dKmsReal.setWidth("90%");
dKmsReal.setReadonly(possuiTramo(secuenciaRutaTramoCoeficienteVO));
dataBinder.addBinding(dKmsReal, "value", rowId + ".kmReal", null, null, "save",
"com.rjconsultores.ventaboletos.web.utilerias.StringDecimalToDecimalConverter", null, null, null);
row.appendChild(dKmsReal);
// Cell Tiempo Recorrido
Hbox hbox = new Hbox();
spHora.setWidth("40px");
spHora.setConstraint("max 99,no negative,no empty");
spHora.setReadonly(!esTramoServicioEditable);
spHora.setButtonVisible(esTramoServicioEditable);
hbox.appendChild(spHora);
Label lbl = new Label(":");
hbox.appendChild(lbl);
spMinuto.setWidth("40px");
spMinuto.setConstraint("max 59,no negative,no empty");
spMinuto.setReadonly(!esTramoServicioEditable);
spMinuto.setButtonVisible(esTramoServicioEditable);
hbox.appendChild(spMinuto);
if (secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido() != null) {
HoraSistema hora = secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido();
spHora.setValue(hora.getHora());
spMinuto.setValue(hora.getMinuto());
}
dataBinder.addBinding(spHora, "value", row.getUuid() + ".tiempoRecorrido.hora", null, null, "save", null, null, null, null);
dataBinder.addBinding(spMinuto, "value", row.getUuid() + ".tiempoRecorrido.minuto", null, null, "save", null, null, null, null);
row.appendChild(hbox);
// Cell ID Tramo
if (secuenciaRutaTramoCoeficienteVO.getTramoId() != null) {
lblID.setValue(secuenciaRutaTramoCoeficienteVO.getTramoId().toString());
} else {
lblID.setValue("");
}
row.appendChild(lblID);
// Coeficiente tarifário 1
cboCoeficiente1.setId(cboCoeficiente1.getUuid());
cboCoeficiente1.setWidth("99%");
ListModelList lmlCoeficiente = getListCoeficienteCombobox();
if (secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa1() != null) {
lmlCoeficiente.addSelection(secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa1());
}
cboCoeficiente1.setModel(lmlCoeficiente);
cboCoeficiente1.setConstraint("no empty");
cboCoeficiente1.setDisabled(!esTramoCoeficienteEditable);
cboCoeficiente1.setReadonly(true);
cboCoeficiente1.addEventListener(Events.ON_CHANGE, new EventListener() {
@Override
public void onEvent(Event arg0) throws Exception {
if (cboCoeficiente1.getSelectedItem() == null) {
secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1(null);
} else {
secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1((CoeficienteTarifa) cboCoeficiente1.getSelectedItem().getValue());
}
return dKmsReal;
}
});
row.appendChild(cboCoeficiente1);
// Km 1 do coeficiente 1
ibxKm1.setValueBigDecimal((secuenciaRutaTramoCoeficienteVO.getKmCoeficiente1() != null) ?
secuenciaRutaTramoCoeficienteVO.getKmCoeficiente1() : BigDecimal.ZERO);
ibxKm1.setWidth("80%");
ibxKm1.setReadonly(!esTramoCoeficienteEditable);
dataBinder.addBinding(ibxKm1, "value", row.getUuid() + ".kmCoeficiente1", null, null,
"save", "com.rjconsultores.ventaboletos.web.utilerias.StringDecimalToDecimalConverter", null, null, null);
row.appendChild(ibxKm1);
// Coeficiente tarifário 2
cboCoeficiente2.setId(cboCoeficiente2.getUuid());
cboCoeficiente2.setWidth("99%");
cboCoeficiente2.setDisabled(!esTramoCoeficienteEditable);
cboCoeficiente2.setReadonly(true);
ListModelList lmlCoeficiente2 = getListCoeficienteCombobox();
if (secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa2() != null) {
lmlCoeficiente2.addSelection(secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa2());
}
cboCoeficiente2.setModel(lmlCoeficiente2);
cboCoeficiente2.addEventListener(Events.ON_CHANGE, new EventListener() {
@Override
public void onEvent(Event arg0) throws Exception {
if (cboCoeficiente2.getSelectedItem() == null) {
secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa2(null);
} else {
secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa2((CoeficienteTarifa) cboCoeficiente2.getSelectedItem().getValue());
}
private Label criaCellDestino(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
return criaLabel(secuenciaRutaTramoCoeficienteVO.getDestino().getCveparada()
+ " - " + secuenciaRutaTramoCoeficienteVO.getDestino().getDescparada());
}
});
private Label criaCellOrigem(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
return criaLabel(secuenciaRutaTramoCoeficienteVO.getOrigen().getCveparada()
+ " - " + secuenciaRutaTramoCoeficienteVO.getOrigen().getDescparada());
}
row.appendChild(cboCoeficiente2);
// Km 2 do coeficiente 2
ibxKm2.setValueBigDecimal((secuenciaRutaTramoCoeficienteVO.getKmCoeficiente2() != null) ?
secuenciaRutaTramoCoeficienteVO.getKmCoeficiente2() : BigDecimal.ZERO);
ibxKm2.setWidth("80%");
ibxKm2.setReadonly(!esTramoCoeficienteEditable);
dataBinder.addBinding(ibxKm2, "value", row.getUuid() + ".kmCoeficiente2", null, null,
"save", "com.rjconsultores.ventaboletos.web.utilerias.StringDecimalToDecimalConverter", null, null, null);
row.appendChild(ibxKm2);
private Intbox criaCellSequencia(final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
Intbox ibxSumSecuencia = new Intbox(secuenciaRutaTramoCoeficienteVO.getSecuencia());
ibxSumSecuencia.setWidth("50%");
ibxSumSecuencia.setReadonly(true);
return ibxSumSecuencia;
}
private Label criaLabel(String titulo) {
Label lblDestino = new Label(titulo);
lblDestino.setWidth("80%");
return lblDestino;
}
/**
@ -546,4 +510,85 @@ public class GridRutaTramoCoeficiente extends Grid implements RowRenderer, Rende
this.lsCoeficientes = lsCoeficientes;
}
private final class EventListenerComboVia implements EventListener {
private final Combobox cboVia;
private final Spinner spHora;
private final Spinner spMinuto;
private final Label lblID;
private final MyCustomTextboxDecimal ibxKm2;
private final Combobox cboCoeficiente1;
private final SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO;
private final MyCustomTextboxDecimal ibxKm1;
private final Combobox cboCoeficiente2;
private final MyCustomTextboxDecimal dKmsReal;
private EventListenerComboVia(Combobox cboVia, Spinner spHora, Spinner spMinuto, Label lblID, MyCustomTextboxDecimal ibxKm2, Combobox cboCoeficiente1, SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO, MyCustomTextboxDecimal ibxKm1, Combobox cboCoeficiente2, MyCustomTextboxDecimal dKmsReal) {
this.cboVia = cboVia;
this.spHora = spHora;
this.spMinuto = spMinuto;
this.lblID = lblID;
this.ibxKm2 = ibxKm2;
this.cboCoeficiente1 = cboCoeficiente1;
this.secuenciaRutaTramoCoeficienteVO = secuenciaRutaTramoCoeficienteVO;
this.ibxKm1 = ibxKm1;
this.cboCoeficiente2 = cboCoeficiente2;
this.dKmsReal = dKmsReal;
}
@Override
public void onEvent(Event evt) throws Exception {
if (cboVia.getSelectedItem() != null) {
BigDecimal kmRealAntigo = secuenciaRutaTramoCoeficienteVO.getKmReal();
HoraSistema tiempoRecorridoAntigo = secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido();
secuenciaRutaTramoCoeficienteVO.setVia((Via) cboVia.getSelectedItem().getValue());
llenarTramo(secuenciaRutaTramoCoeficienteVO);
boolean tramoEditable = (secuenciaRutaTramoCoeficienteVO.getTramoId() == null);
boolean tramoCoeficienteEditable = (secuenciaRutaTramoCoeficienteVO.getOrgaoTramoId() == null);
boolean tramoServicioEditable = (secuenciaRutaTramoCoeficienteVO.getTramoServicioId() == null);
if (!tramoEditable) {// cuando el tramo no es editable, es porque ya existe. Entonces lleno la pantalla con los nuevos valores
dKmsReal.setValueBigDecimal(secuenciaRutaTramoCoeficienteVO.getKmReal());
} else {
secuenciaRutaTramoCoeficienteVO.setKmReal(kmRealAntigo);
}
lblID.setValue((secuenciaRutaTramoCoeficienteVO.getTramoId() != null) ? secuenciaRutaTramoCoeficienteVO.getTramoId().toString() : "");
if (!tramoServicioEditable) {// cuando el tramoServicio no es editable, es porque ya existe. Entonces lleno la pantalla con los nuevos valores
spHora.setValue(secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido().getHora());
spMinuto.setValue(secuenciaRutaTramoCoeficienteVO.getTiempoRecorrido().getMinuto());
} else {
secuenciaRutaTramoCoeficienteVO.setTiempoRecorrido(tiempoRecorridoAntigo);
}
if (!tramoCoeficienteEditable) {
cboCoeficiente1.setText(secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa1().getDescCoeficiente());
ibxKm1.setValueBigDecimal(secuenciaRutaTramoCoeficienteVO.getKmCoeficiente1());
cboCoeficiente2.setSelectedIndex(-1);
ibxKm2.setValueBigDecimal(BigDecimal.ZERO);
if (secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa2() != null) {
cboCoeficiente2.setText(secuenciaRutaTramoCoeficienteVO.getCoeficienteTarifa2().getDescCoeficiente());
ibxKm2.setValueBigDecimal(secuenciaRutaTramoCoeficienteVO.getKmCoeficiente2());
}
}
dKmsReal.setReadonly(!tramoEditable);
spHora.setReadonly(!tramoServicioEditable);
spHora.setButtonVisible(tramoServicioEditable);
spMinuto.setReadonly(!tramoServicioEditable);
spMinuto.setButtonVisible(tramoServicioEditable);
cboCoeficiente1.setDisabled(!tramoCoeficienteEditable);
ibxKm1.setReadonly(!tramoCoeficienteEditable);
cboCoeficiente2.setDisabled(!tramoCoeficienteEditable);
ibxKm2.setReadonly(!tramoCoeficienteEditable);
}
}
}
}