package com.rjconsultores.ventaboletos.web.gui.componente.esquemaoperacional;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.zkoss.util.resource.Labels;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zkplus.databind.DataBinder;
import org.zkoss.zkplus.spring.SpringUtil;
import org.zkoss.zul.Column;
import org.zkoss.zul.Columns;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.RendererCtrl;
import org.zkoss.zul.Row;
import org.zkoss.zul.RowRenderer;
import org.zkoss.zul.Spinner;

import com.rjconsultores.ventaboletos.dao.OrgaoTramoDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.CoeficienteTarifa;
import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente;
import com.rjconsultores.ventaboletos.entidad.OrgaoTramo;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
import com.rjconsultores.ventaboletos.entidad.Via;
import com.rjconsultores.ventaboletos.service.TramoService;
import com.rjconsultores.ventaboletos.service.TramoServicioService;
import com.rjconsultores.ventaboletos.utilerias.HoraSistema;
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.SecuenciaRutaTramoCoeficienteVO;

/**
 * Grid con la representacion de los tramos y secuencias de la ruta
 * 
 * @author gleimar
 * 
 */
public class GridRutaTramoCoeficiente extends Grid implements RowRenderer, RendererCtrl {

	private static final long serialVersionUID = 1L;
	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() {
		lsSecuenciaRutaTramoCoeficienteVO = new ArrayList<SecuenciaRutaTramoCoeficienteVO>();
		this.setRowRenderer(this);
		this.appendChild(generarColumns());
		dataBinder = new DataBinder();	
	}

	/**
	 * Informa la lista de vias disponibles
	 * 
	 * @param lsVias
	 */
	public void setLsVias(List<Via> lsVias) {
		this.lsVias = lsVias;
	}

	/**
	 * Cuál es la clase de servicio confiugrada
	 * 
	 * @return
	 */
	public ClaseServicio getClaseServicio() {
		return claseServicio;
	}

	/**
	 * Indica cuál es la clase de servicio usada para hacer la búsqueda de los tramos
	 * 
	 * @param claseServicio
	 */
	public void setClaseServicio(ClaseServicio claseServicio) {
		this.claseServicio = claseServicio;
	}

	public OrgaoConcedente getOrgaoConcedente() {
		return orgaoConcedente;
	}

	public void setOrgaoConcedente(OrgaoConcedente orgaoConcedente) {
		this.orgaoConcedente = orgaoConcedente;
	}

	private ListModelList getListViaCombobox() {
		return new ListModelList(lsVias);
	}

	private ListModelList getListCoeficienteCombobox() {
		return new ListModelList(lsCoeficientes);
	}

	/**
	 * Limpia los registros que existen y agrega todos
	 * 
	 * @param lsSecuenciaRutaTramoCoeficienteVO
	 */
	public void agregarTodos(List<SecuenciaRutaTramoCoeficienteVO> lsSecuenciaRutaTramoCoeficienteVO) {
		this.lsSecuenciaRutaTramoCoeficienteVO.clear();
		this.lsSecuenciaRutaTramoCoeficienteVO.addAll(lsSecuenciaRutaTramoCoeficienteVO);

		actualizaModel();
	}

	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);

		return columns;
	}

	@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);

		// Cell Origen
		String strOrigem = secuenciaRutaTramoCoeficienteVO.getOrigen().getCveparada() + " - " + secuenciaRutaTramoCoeficienteVO.getOrigen().getDescparada();
		Label lblOrigen = new Label(strOrigem);
		lblOrigen.setWidth("80%");
		row.appendChild(lblOrigen);

		// Cell Destino
		String strDestino = secuenciaRutaTramoCoeficienteVO.getDestino().getCveparada() + " - " + secuenciaRutaTramoCoeficienteVO.getDestino().getDescparada();
		Label lblDestino = new Label(strDestino);
		lblDestino.setWidth("80%");
		row.appendChild(lblDestino);

		// 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 Spinner spHora = new Spinner();
		final Spinner spMinuto = new Spinner();
		final Label lblID = new Label("");

		// Campos coeficientes tarifario
		final Combobox cboCoeficiente1 = new Combobox();
		// final Intbox ibxKm1 = new Intbox();
		final MyCustomTextboxDecimal ibxKm1 = new MyCustomTextboxDecimal();

		final Combobox cboCoeficiente2 = new Combobox();
		// final Intbox ibxKm2 = new Intbox();
		final MyCustomTextboxDecimal ibxKm2 = new MyCustomTextboxDecimal();

		// Cell Via
		final Combobox cboVia = new Combobox();
		cboVia.setId(cboVia.getUuid());
		cboVia.setReadonly(true);
		ListModelList listModelList = getListViaCombobox();
		if (secuenciaRutaTramoCoeficienteVO.getVia() != null) {
			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);
					}

					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")){
			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", 
				"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());
				}
			}

		});
		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());
				}
			}

		});

		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);
	}

	/**
	 * Actualiza el modelo de grid
	 */
	private void actualizaModel() {
		this.setModel(new ListModelList(lsSecuenciaRutaTramoCoeficienteVO, false));
	}

	/**
	 * Indica si hay tramos
	 * 
	 * @return
	 */
	public boolean isEmpty() {
		return lsSecuenciaRutaTramoCoeficienteVO.isEmpty();
	}

	/**
	 * Llena el tramo con los datos de una busqueda
	 * 
	 * @param secuenciaRutaTramoCoeficienteVO
	 */
	private void llenarTramo(SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO) {
		TramoServicioService tramoServicioService = (TramoServicioService) SpringUtil.getBean("tramoServicioService");

		Parada destino = secuenciaRutaTramoCoeficienteVO.getDestino();
		Parada origen = secuenciaRutaTramoCoeficienteVO.getOrigen();
		Via via = secuenciaRutaTramoCoeficienteVO.getVia();

		TramoServicio tramoServicio = null;
		if ((destino != null) && (origen != null) && (via != null) && (claseServicio != null)) {
			tramoServicio = tramoServicioService.buscar(origen, destino, via, claseServicio);
		}

		Tramo tramo = null;
		if (tramoServicio != null) {
			tramo = tramoServicio.getTramo();
		} else {
			TramoService tramoService = (TramoService) SpringUtil.getBean("tramoService");
			if ((destino != null) && (origen != null) && (via != null)) {
				tramo = tramoService.buscar(origen, destino, via);
			}
		}

		if (tramoServicio != null) {
			HoraSistema hora = new HoraSistema(tramoServicio.getTiemporecorrido());
			secuenciaRutaTramoCoeficienteVO.setTiempoRecorrido(hora);
			secuenciaRutaTramoCoeficienteVO.setTramoServicioId(tramoServicio.getTramoservicioId());
		} else {
			secuenciaRutaTramoCoeficienteVO.setTiempoRecorrido(null);
			secuenciaRutaTramoCoeficienteVO.setTramoServicioId(null);
		}

		if (tramo != null) {
			secuenciaRutaTramoCoeficienteVO.setKmReal(tramo.getKmReal());
			secuenciaRutaTramoCoeficienteVO.setTramoId(tramo.getTramoId());
		} else {
			secuenciaRutaTramoCoeficienteVO.setKmReal(BigDecimal.ZERO);
			secuenciaRutaTramoCoeficienteVO.setTramoId(null);
		}

		OrgaoTramoDAO orgaoTramoDAO = (OrgaoTramoDAO) SpringUtil.getBean("orgaoTramoDAO");
		OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(origen.getParadaId(), destino.getParadaId(), via.getViaId(), orgaoConcedente.getOrgaoConcedenteId(), claseServicio.getClaseservicioId());

		if (orgaoTramo != null) {
			secuenciaRutaTramoCoeficienteVO.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId());

			secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1(orgaoTramo.getCoeficienteTarifa1());
			secuenciaRutaTramoCoeficienteVO.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1());

			secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa2(orgaoTramo.getCoeficienteTarifa2());
			secuenciaRutaTramoCoeficienteVO.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2());

		} else {
			secuenciaRutaTramoCoeficienteVO.setOrgaoTramoId(null);

			secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1(null);
			secuenciaRutaTramoCoeficienteVO.setKmCoeficiente1(null);

			secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa2(null);
			secuenciaRutaTramoCoeficienteVO.setKmCoeficiente2(null);
		}
	}

	@Override
	public void doCatch(Throwable arg0) throws Throwable {
		throw arg0;
	}

	@Override
	public void doFinally() {
	}

	@Override
	public void doTry() {
	}

	public void debugList() {
		dataBinder.saveAll();
		for (SecuenciaRutaTramoCoeficienteVO s : lsSecuenciaRutaTramoCoeficienteVO) {
			log.debug(s);
		}
	}

	public List<SecuenciaRutaTramoCoeficienteVO> getLsSecuenciaRutaTramoCoeficienteVO() {
		dataBinder.saveAll();
		return lsSecuenciaRutaTramoCoeficienteVO;
	}

	public void setLsCoeficientes(List<CoeficienteTarifa> lsCoeficientes) {
		this.lsCoeficientes = lsCoeficientes;
	}

}
