/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.web.gui.controladores.configuracioneccomerciales;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkforge.ckez.CKeditor;
import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zkplus.databind.BindingListModelList;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Decimalbox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Row;
import org.zkoss.zul.Spinner;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.api.Timebox;

import com.rjconsultores.ventaboletos.constantes.Constantes;
import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema;
import com.rjconsultores.ventaboletos.entidad.Categoria;
import com.rjconsultores.ventaboletos.entidad.CategoriaDescuento;
import com.rjconsultores.ventaboletos.entidad.CategoriaDescuento.TipoDescontoComponentePreco;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.TipoOcupacion;
import com.rjconsultores.ventaboletos.enums.HorarioLiberacaoVendaPassagem;
import com.rjconsultores.ventaboletos.enums.TipoIdentificacionDoc;
import com.rjconsultores.ventaboletos.enums.TipoPassagemCores;
import com.rjconsultores.ventaboletos.service.CategoriaService;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;

/**
 *
 * @author rodrigo
 */
@Controller("editarConfiguracionCategoriaDatosCategoriaController")
@Scope("prototype")
public class EditarConfiguracionCategoriaDatosCategoriaController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;

	@Autowired
	private ConstanteService constanteService;

	private CategoriaDescuento categoriaDescuento;
	private MyListbox categoriaDescuentoList;
	private Radio radioImp;
	private Radio radioPor;
	private Radio radioImprimePassagem;
	private Radio radioNaoImprimePassagem;
	private Textbox descuentoPorc;
	private Textbox descuentoImporte;
	private Row rowTrecho;
	private Row rowTiempo;
	private Timebox timeTempoPermitir;
	private Radio rdCuotaSi;
	private Radio rdTrecho;
	private Radio rdNuncaLiberar;
	private Combobox cmbIndGeneraFeriado;
	private Combobox cmbTipoIdentifacionDoc2;
	private Combobox cmbTipoIdentifacionDoc1;
	private Label lblMsgTiempo;
	private Spinner spnHora;
	private Spinner spnMinuto;
	private Radio rdVendaAntecipadaSi;
	private Radio rdVendaAntecipadaNo;
	private Radio rdVendeAbertoSi;
	private Radio rdVendaAbertoNao;
	private Radio radioSimVentaSolamenteReserva;
	private Radio radioNaoVentaSolamenteReserva;
	private Row linhaLiberarPoltronasQuandoOnibus;
	private Row linhaAssentosReservados;
	private Textbox asientosReservados;
	private Intbox cantAutorizada;
	private Intbox  cantMaximaVendaMes;
	private Checkbox chkExigenombpasajero;
	private Checkbox chkExigedocpasajero;
	private Checkbox chkExigetelefonopasajero;
	private Checkbox chkExigefecnacimientopasajero;
	private Checkbox chkExigedoc2pasajero;
	private Checkbox chkExigeEnderecopasajero;
	private Checkbox chkExigeEmailpasajero;
	private Checkbox chkSegunda;
	private Checkbox chkTerca;
	private Checkbox chkQuarta;
	private Checkbox chkQuinta;
	private Checkbox chkSexta;
	private Checkbox chkSabado;
	private Checkbox chkDomingo;
	private Checkbox chkPrecoTxEmbarque;
	private Checkbox chkPrecoPedagio;
	private Checkbox chkPrecoSeguro;
	private Checkbox chkPrecoOutros;
	private Checkbox chkIndnaopermitevdamesmodocviagem;
	private Checkbox chkIndnaopermiteVendaDuasGratuidades;
	private Checkbox chkIndnaoaplicatarifaminima;
	private Checkbox chkIndtipoocupacao;
	private Checkbox chkPrecoSeguroOpcional;

	private Radio radioHorarioLiberacaoVendaOrigem;
	private Radio radioHorarioLiberacaoVendaTrecho;

	private Checkbox radioCompPrecoImp;
	private Checkbox radioCompPrecoPor;
	private Decimalbox desccomppreco;

	private Radio radioCorLaranja;
	private Radio radioCorVerde;
	private Radio radioCorVerdeMusgo;
	private Radio radioCorAzul;
	private Radio radioCorAzulMarinho;
	private Radio radioCorAzulPiscina;
	private Radio radioCorBege;
	private Radio radioCorLilas;
	private Radio radioCorMarrom;
	private Radio radioCorRosa;
	private Radio radioCorRosaChoque;
	private Radio radioCorRoxo;

	private Checkbox chkIndEmiteSomenteCupomEmbarque;
	private Intbox qtdeViasCupomEmbarque;
	
	private Row rowTempoDepoisKMVendaAntecipada;
	private Row rowTempoAteKMVendaAntecipada;
	private Row rowKMVendaAntecipada;
	private Row rowTempoVendaAntecipadaSemKM;
	private Row rowVendaAntecipadaSemKM;
	private Row rowDocumentoPreSelecionadoDOC2;
	private Row rowDocumentoPreSelecionadoDOC1;
	
	private Timebox tbTempoAteKM;
	private Timebox tbTempoMaiorKM;
	
	private Spinner spnKM;
	
	private Radio rdVendaAntecipadaKMSi;
	private Radio rdVendaAntecipadaKMNo;
	
	private Checkbox chkIndClientePcd;
	private Intbox qtdeLimiteNaoEmbarque;
	private Radio radioCheckinSim;
	private Radio radioCheckinNao;


	private Row rowComportamentoVendaAberto;
	
	//Opcoes de venda em aberto
	private Checkbox chkPermiteTroca;
	private Checkbox chkPermiteTransferencia;
	
	private Checkbox chkCancelaEmAberto;
	private Checkbox chkDevolveEmAberto;
	private Checkbox chkCancelaEmergencialEmAberto;
	private Checkbox chkTrocaEmAberto;
	private Checkbox chkTrocaTiturlidadeEmAberto;
	
	private Checkbox chkCancela;
	private Checkbox chkDevolve;
	private Checkbox chkCancelaEmergencial;
	private Checkbox chkTrocaTiturlidade;
	private Checkbox chkReativa;
	//Categorias que se interagem entre si
	private Combobox cmbCategoriasInteragem;
	private Row rowIdTipoCategoriaInteragem;
	private Checkbox chkTipoCategoriaInteragem;
	private List<Categoria> lsCategoriasInteragem;
	private Categoria categoriaInterage;
	
	private Checkbox chkExigeNumeroFidelidade;
	
	@Autowired
	private CategoriaService categoriaService;
	
	private List<TipoOcupacion> lsTipoOcupacion;
	
	private Combobox cmbOcupacion;
	private Row rowIdTipoOcupacao;
	private TipoOcupacion tipoOcupacion;
	
	private CKeditor ckCustomizaRodapeCupomEmbarque;	
	private Checkbox chkIndCustomizaRodapeCupomEmbarque;	
	private Row rowCustomizaRodapeCupomEmbarque;
	private Boolean numAsientoComLetra = false;
	
	@Override
	public void doAfterCompose(Component comp) throws Exception {
		categoriaDescuentoList = (MyListbox) Executions.getCurrent().getArg().get("categoriaDescuentoList");
		categoriaDescuento = (CategoriaDescuento) Executions.getCurrent().getArg().get("categoriaDescuento");
		lsTipoOcupacion = (List<TipoOcupacion>) Executions.getCurrent().getArg().get("lsTipoOcupacion");
		
		Constante constNumAsientoComLetra = constanteService.buscarPorNomeConstante(Constantes.NUM_ASIENTO_CON_LETRA);
		numAsientoComLetra = constNumAsientoComLetra.getValorconstante().equals("true");
		
		super.doAfterCompose(comp);

		popularCombobox(cmbIndGeneraFeriado);


		if ((categoriaDescuento.getDescuentoimporte() != null) && (!categoriaDescuento.getDescuentoimporte().equals(BigDecimal.ZERO))) {
			radioImp.setSelected(true);
			descuentoPorc.setDisabled(true);
		}

		if ((categoriaDescuento.getDescuentoporc() != null) && (!categoriaDescuento.getDescuentoporc().equals(BigDecimal.ZERO))) {
			radioPor.setSelected(true);
			descuentoImporte.setDisabled(true);
		}

		if ((categoriaDescuento.getIndImprimeBoleto() != null) && (categoriaDescuento.getIndImprimeBoleto())) {
			radioImprimePassagem.setSelected(Boolean.TRUE);
		} else if ((categoriaDescuento.getIndImprimeBoleto() != null) && (!categoriaDescuento.getIndImprimeBoleto())) {
			radioNaoImprimePassagem.setSelected(Boolean.TRUE);
		}

		if ((categoriaDescuento.getIndVentaSolamenteReserva() != null) && (categoriaDescuento.getIndVentaSolamenteReserva())) {
			radioSimVentaSolamenteReserva.setSelected(Boolean.TRUE);
		} else if ((categoriaDescuento.getIndVentaSolamenteReserva() != null) && (!categoriaDescuento.getIndVentaSolamenteReserva())) {
			radioNaoVentaSolamenteReserva.setSelected(Boolean.TRUE);
		}

		if ( (categoriaDescuento.getIndCuota() != null) && (categoriaDescuento.getIndCuota()) ){
			mudarCamposCuota(true);
			timeTempoPermitir.setValue(categoriaDescuento.getTiempoCuota());
			rdCuotaSi.setChecked(true);
			rdTrecho.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndCuotaTramo()));
		}else{
			mudarCamposCuota(false);
		}

		if (categoriaDescuento.getIndAplicaFeriado() != null) {
			if (categoriaDescuento.getIndAplicaFeriado() .equals("S")) {
				cmbIndGeneraFeriado.setSelectedIndex(0);
			} else if (categoriaDescuento.getIndAplicaFeriado().equals("F")) {
				cmbIndGeneraFeriado.setSelectedIndex(1);
			} else if (categoriaDescuento.getIndAplicaFeriado().equals("N")) {
				cmbIndGeneraFeriado.setSelectedIndex(2);
			}
		}

		if(categoriaDescuento.getIndVendaAntecipadaPorKM()) {
			preencherCamposVendaAntecipadaPorKM();
		}else {
			validarVendaAntecipadaSemKM();
		}

		if (categoriaDescuento.getIndVentaAbierto() != null && categoriaDescuento.getIndVentaAbierto()){
			rdVendeAbertoSi.setChecked(true);
			rowComportamentoVendaAberto.setVisible(true);
		} else {
			rdVendaAbertoNao.setChecked(true);
			rowComportamentoVendaAberto.setVisible(false);
		}
		
		if(categoriaDescuento != null && categoriaDescuento.getIndVentaAbierto() != null && categoriaDescuento.getIndVentaAbierto()) {
			chkCancelaEmAberto.setChecked(categoriaDescuento.getIndCancelaEmAberto());
			chkDevolveEmAberto.setChecked(categoriaDescuento.getIndDevolveEmAberto());
			chkCancelaEmergencialEmAberto.setChecked(categoriaDescuento.getIndCancelaEmergencialEmAberto());
			chkTrocaEmAberto.setChecked(categoriaDescuento.getIndTrocaEmAberto());
			chkTrocaTiturlidadeEmAberto.setChecked(categoriaDescuento.getIndTrocaTitularidadeEmAberto());
		}

		chkCancela.setChecked(categoriaDescuento.getIndPermiteCancelar());
		chkDevolve.setChecked(categoriaDescuento.getIndPermiteDevolver());		
		chkCancelaEmergencial.setChecked(categoriaDescuento.getIndPermiteCancelarEmergencial());
		chkTrocaTiturlidade.setChecked(categoriaDescuento.getIndPermiteTrocaTitularidade());
		chkReativa.setChecked(categoriaDescuento.getIndPermiteReativar());
		chkPermiteTroca.setChecked(categoriaDescuento.getIndPermiteTroca());
		chkPermiteTransferencia.setChecked(categoriaDescuento.getIndPermiteTransferencia());
		cantMaximaVendaMes.setValue(categoriaDescuento.getCantMaxVendaMes());
		
		if (categoriaDescuento.getIndCuota() != null && categoriaDescuento.getIndCuota()) {
			linhaLiberarPoltronasQuandoOnibus.setVisible(true);
			linhaAssentosReservados.setVisible(true);
		}else{
			linhaLiberarPoltronasQuandoOnibus.setVisible(false);
			linhaAssentosReservados.setVisible(false);
		}

		if(categoriaDescuento.getIndexigenombpasajero() != null) {
			chkExigenombpasajero.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndexigenombpasajero()));
		}
		if(categoriaDescuento.getIndexigedocpasajero() != null) {
			chkExigedocpasajero.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndexigedocpasajero()));
		}
		if(categoriaDescuento.getIndexigetelefonopasajero() != null) {
			chkExigetelefonopasajero.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndexigetelefonopasajero()));
		}
		if(categoriaDescuento.getIndexigefecnacimientopasajero() != null) {
			chkExigefecnacimientopasajero.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndexigefecnacimientopasajero()));
		}
		if(categoriaDescuento.getIndExigeDoc2Passageiro() != null) {
			chkExigedoc2pasajero.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndExigeDoc2Passageiro()));
		}
		if(categoriaDescuento.getIndExigeEnderecoPassageiro() != null) {
			chkExigeEnderecopasajero.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndExigeEnderecoPassageiro()));
		}
		if(categoriaDescuento.getIndExigeEmailPassageiro() != null) {
			chkExigeEmailpasajero.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndExigeEmailPassageiro()));
		}

		chkSegunda.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndSegunda()));
		chkTerca.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndTerca()));
		chkQuarta.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndQuarta()));
		chkQuinta.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndQuinta()));
		chkSexta.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndSexta()));
		chkSabado.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndSabado()));
		chkDomingo.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndDomingo()));
		chkIndnaopermitevdamesmodocviagem.setChecked(categoriaDescuento.getIndnaopermitevdamesmodocviagem() == null ? Boolean.FALSE : categoriaDescuento.getIndnaopermitevdamesmodocviagem());
		chkIndnaopermiteVendaDuasGratuidades.setChecked(Boolean.TRUE.equals(categoriaDescuento.getIndNaoPermiteVendaDuasGrat()));
		chkIndnaoaplicatarifaminima.setChecked(categoriaDescuento.getIndnaoaplicatarifaminima() == null ? Boolean.FALSE : categoriaDescuento.getIndnaoaplicatarifaminima());
		chkIndtipoocupacao.setChecked(categoriaDescuento.getIndtipoocupacao());
		radioHorarioLiberacaoVendaOrigem.setChecked(true);
		radioHorarioLiberacaoVendaTrecho.setChecked(false);
		chkIndEmiteSomenteCupomEmbarque.setChecked(categoriaDescuento.getIndEmiteSomenteCupomEmbarque());
		qtdeViasCupomEmbarque.setValue(categoriaDescuento.getQtdeViasCupomEmbarque());
		chkIndClientePcd.setChecked(categoriaDescuento.getIndClientePcd());
		qtdeLimiteNaoEmbarque.setValue(categoriaDescuento.getQtdeLimiteNaoEmbarque());
		
		if(Boolean.TRUE.equals(categoriaDescuento.getIndCuotaNuncaLiberar())) {
			rdNuncaLiberar.setChecked(true);
		} else if(HorarioLiberacaoVendaPassagem.HORARIO_LIBERACAO_VENDA_TRECHO.equals(categoriaDescuento.getHorarioLiberacaoVendaPassagem())) {
			radioHorarioLiberacaoVendaOrigem.setChecked(false);
			radioHorarioLiberacaoVendaTrecho.setChecked(true);
		}

		if(TipoDescontoComponentePreco.DESCONTO_COMPONENTE_PRECO_VALOR.getValor().equals(categoriaDescuento.getTipodesccomppreco())) {
			radioCompPrecoImp.setChecked(true);
		} else if(TipoDescontoComponentePreco.DESCONTO_COMPONENTE_PRECO_PERC.getValor().equals(categoriaDescuento.getTipodesccomppreco())) {
			radioCompPrecoPor.setChecked(true);
		}
		desccomppreco.setValue(categoriaDescuento.getDesccomppreco());

		if(TipoPassagemCores.LARANJA.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorLaranja.setChecked(true);
		} else if(TipoPassagemCores.VERDE.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorVerde.setChecked(true);
		} else if(TipoPassagemCores.VERDE_MUSGO.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorVerdeMusgo.setChecked(true);
		} else if(TipoPassagemCores.AZUL.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorAzul.setChecked(true);
		} else if(TipoPassagemCores.AZUL_MARINHO.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorAzulMarinho.setChecked(true);
		} else if(TipoPassagemCores.AZUL_PISCINA.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorAzulPiscina.setChecked(true);
		} else if(TipoPassagemCores.BEGE.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorBege.setChecked(true);
		} else if(TipoPassagemCores.LILAS.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorLilas.setChecked(true);
		} else if(TipoPassagemCores.MARROM.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorMarrom.setChecked(true);
		} else if(TipoPassagemCores.ROSA.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorRosa.setChecked(true);
		} else if(TipoPassagemCores.ROSA_CHOQUE.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorRosaChoque.setChecked(true);
		} else if(TipoPassagemCores.ROXO.equals(categoriaDescuento.getCorpoltrona())) {
			radioCorRoxo.setChecked(true);
		}

		if (categoriaDescuento.getCategoria().getCategoriaId().equals(1)) {
			desabilitarItensCategoriaNormal();
		}
		if(Boolean.TRUE.equals(categoriaDescuento.getIndCheckinAutomatico())) {
			radioCheckinSim.setChecked(categoriaDescuento.getIndCheckinAutomatico());
		}else {
			radioCheckinNao.setChecked(Boolean.TRUE);
		}
		
		lsCategoriasInteragem = categoriaService.obtenerTodos();
		if(categoriaDescuento.getCategoriaInterage() !=null) {
			chkTipoCategoriaInteragem.setChecked(Boolean.TRUE);
			rowIdTipoCategoriaInteragem.setVisible(Boolean.TRUE);
			categoriaInterage = categoriaDescuento.getCategoriaInterage();
		}else {
			chkTipoCategoriaInteragem.setChecked(Boolean.FALSE);
			rowIdTipoCategoriaInteragem.setVisible(Boolean.FALSE);
		}
		
		chkExigeNumeroFidelidade.setChecked(categoriaDescuento.getIndExigeNumFidelidade());
		
		rowIdTipoOcupacao.setVisible(chkExigeNumeroFidelidade.isChecked());
		
		if(categoriaDescuento.getTipoOcupacion() != null) {
			tipoOcupacion = categoriaDescuento.getTipoOcupacion();
		}
		
		
		if(StringUtils.isNotBlank(categoriaDescuento.getCustomizaRodapeCumpomEmbarque())){
			ckCustomizaRodapeCupomEmbarque.setValue(categoriaDescuento.getCustomizaRodapeCumpomEmbarque());
			chkIndCustomizaRodapeCupomEmbarque.setChecked(true);
			rowCustomizaRodapeCupomEmbarque.setVisible(true);
		}
		
		configurarTipoIdenticacionDoc1();
		configurarTipoIdenticacionDoc2();
				
	}
	/**
	 * 
	 */
	private void preencherCamposVendaAntecipadaPorKM() {
		exibirCamposVendaAntecipadaPorKM();
		spnKM.setValue(categoriaDescuento.getKmVendaAntecipada());
		tbTempoAteKM.setValue(categoriaDescuento.getTempoLiberacaoAteKM());
		tbTempoMaiorKM.setValue(categoriaDescuento.getTempoLiberacaoDepoisKM());
		rdVendaAntecipadaKMSi.setChecked(true);
	}
	/**
	 * 
	 */
	private void validarVendaAntecipadaSemKM() {
		if (categoriaDescuento.getTiempoActivar()!=null){
			rdVendaAntecipadaNo.setChecked(true);
			lblMsgTiempo.setValue(Labels.getLabel("editarConfiguracionCategoriaController.lblVentaAntecipadaTempoActivar.value"));
			preencherDataHora(categoriaDescuento.getTiempoActivar());
		}else if (categoriaDescuento.getTiempoDesactivar() !=null){
			rdVendaAntecipadaSi.setChecked(true);
			lblMsgTiempo.setValue(Labels.getLabel("editarConfiguracionCategoriaController.lblVentaAntecipadaTempoDesactivar.value"));
			preencherDataHora(categoriaDescuento.getTiempoDesactivar());
		}else{
			rdVendaAntecipadaNo.setChecked(true);
			lblMsgTiempo.setValue(Labels.getLabel("editarConfiguracionCategoriaController.lblVentaAntecipadaTempoActivar.value"));
		}
	}
	private void desabilitarItensCategoriaNormal() {
		cantAutorizada.setDisabled(true);
		timeTempoPermitir.setDisabled(true);
		descuentoPorc.setDisabled(true);
		descuentoImporte.setDisabled(true);
		desccomppreco.setDisabled(true);
		radioImprimePassagem.setDisabled(true);
		radioCompPrecoImp.setDisabled(true);
		radioCompPrecoPor.setDisabled(true);
		radioCorLaranja.setDisabled(true);
		radioCorVerde.setDisabled(true);
		radioCorVerdeMusgo.setDisabled(true);
		radioCorAzul.setDisabled(true);
		radioCorAzulMarinho.setDisabled(true);
		radioCorAzulPiscina.setDisabled(true);
		radioCorBege.setDisabled(true);
		radioCorLilas.setDisabled(true);
		radioCorMarrom.setDisabled(true);
		radioCorRosa.setDisabled(true);
		radioCorRosaChoque.setDisabled(true);
		radioCorRoxo.setDisabled(true);
		radioHorarioLiberacaoVendaOrigem.setDisabled(true);
		radioHorarioLiberacaoVendaTrecho.setDisabled(true);
		radioImp.setDisabled(true);
		radioNaoImprimePassagem.setDisabled(true);
		radioNaoVentaSolamenteReserva.setDisabled(true);
		radioPor.setDisabled(true);
		radioSimVentaSolamenteReserva.setDisabled(true);
		chkDomingo.setDisabled(true);
		chkQuarta.setDisabled(true);
		chkTerca.setDisabled(true);
		chkQuinta.setDisabled(true);
		chkSabado.setDisabled(true);
		chkSegunda.setDisabled(true);
		chkSexta.setDisabled(true);
		asientosReservados.setDisabled(true);
		cmbIndGeneraFeriado.setDisabled(true);
		rdCuotaSi.setDisabled(true);
		rdTrecho.setDisabled(true);
		rdNuncaLiberar.setDisabled(true);
		rdVendaAbertoNao.setDisabled(true);
		rdVendaAntecipadaNo.setDisabled(true);
		rdVendaAntecipadaSi.setDisabled(true);
		rdVendeAbertoSi.setDisabled(true);
		spnHora.setDisabled(true);
		spnMinuto.setDisabled(true);
		chkPrecoTxEmbarque.setDisabled(true);
		chkPrecoOutros.setDisabled(true);
		chkPrecoSeguroOpcional.setDisabled(true);
		chkPrecoPedagio.setDisabled(true);
		chkPrecoSeguro.setDisabled(true);
		spnKM.setDisabled(true);
		tbTempoAteKM.setDisabled(true);
		tbTempoMaiorKM.setDisabled(true);
		rdVendaAntecipadaKMSi.setDisabled(true);
		rdVendaAntecipadaKMNo.setDisabled(true);
		cantMaximaVendaMes.setDisabled(true);

	}
	private void preencherDataHora(Integer tiempoMinutos){
		if (tiempoMinutos != null){
			spnHora.setValue(tiempoMinutos/60);
			spnMinuto.setValue(tiempoMinutos%60);
		}
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {

		categoriaDescuento.setFecmodif(Calendar.getInstance().getTime());
		categoriaDescuento.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

		if (radioImprimePassagem.isSelected()) {
			categoriaDescuento.setIndImprimeBoleto(Boolean.TRUE);
		} else if (radioNaoImprimePassagem.isSelected()) {
			categoriaDescuento.setIndImprimeBoleto(Boolean.FALSE);
		}

		if (radioSimVentaSolamenteReserva.isSelected()) {
			categoriaDescuento.setIndVentaSolamenteReserva(Boolean.TRUE);
		} else if (radioNaoVentaSolamenteReserva.isSelected()) {
			categoriaDescuento.setIndVentaSolamenteReserva(Boolean.FALSE);
		}

		categoriaDescuento.setIndCheckinAutomatico(radioCheckinSim.isSelected() ? Boolean.TRUE : Boolean.FALSE );
		
		if(rdVendaAntecipadaKMSi.isChecked()) {
			spnKM.getValue();
			tbTempoAteKM.getValue();
			tbTempoMaiorKM.getValue();
		} else if (rdVendaAntecipadaSi.isChecked()){
			int hora = (spnHora.getValue() == null)?0:spnHora.getValue();
			int minuto = (spnMinuto.getValue() == null)?0:spnMinuto.getValue();
			if ( (hora + minuto) == 0){
				Messagebox.show(
						Labels.getLabel("editarConfiguracionCategoriaController.msg.validacaoVentaAntecipada"),
						Labels.getLabel("editarConfiguracionCategoriaController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);

				spnHora.focus();

				return;
			}
		}

		if(radioCompPrecoImp.isChecked()) {
			categoriaDescuento.setTipodesccomppreco(TipoDescontoComponentePreco.DESCONTO_COMPONENTE_PRECO_VALOR.getValor());
		} else if(radioCompPrecoPor.isChecked()) {
			categoriaDescuento.setTipodesccomppreco(TipoDescontoComponentePreco.DESCONTO_COMPONENTE_PRECO_PERC.getValor());
		}


		categoriaDescuento.setDesccomppreco(desccomppreco.getValue());
		categoriaDescuento.setIndVentaAbierto(rdVendeAbertoSi.isChecked());
		
		if(rdVendeAbertoSi.isChecked()) {
			categoriaDescuento.setIndCancelaEmAberto(chkCancelaEmAberto.isChecked());
			categoriaDescuento.setIndDevolveEmAberto(chkDevolveEmAberto.isChecked());
			categoriaDescuento.setIndCancelaEmergencialEmAberto(chkCancelaEmergencialEmAberto.isChecked());
			categoriaDescuento.setIndTrocaEmAberto(chkTrocaEmAberto.isChecked());
			categoriaDescuento.setIndTrocaTitularidadeEmAberto(chkTrocaTiturlidadeEmAberto.isChecked());
		} else {
			categoriaDescuento.setIndCancelaEmAberto(false);
			categoriaDescuento.setIndDevolveEmAberto(false);
			categoriaDescuento.setIndCancelaEmergencialEmAberto(false);
			categoriaDescuento.setIndTrocaEmAberto(false);
			categoriaDescuento.setIndTrocaTitularidadeEmAberto(false);
		}

		categoriaDescuento.setIndPermiteCancelar(chkCancela.isChecked());
		categoriaDescuento.setIndPermiteDevolver(chkDevolve.isChecked());
		categoriaDescuento.setIndPermiteCancelarEmergencial(chkCancelaEmergencial.isChecked());
		categoriaDescuento.setIndPermiteTroca(chkPermiteTroca.isChecked());
		categoriaDescuento.setIndPermiteTransferencia(chkPermiteTransferencia.isChecked());
		categoriaDescuento.setIndPermiteTrocaTitularidade(chkTrocaTiturlidade.isChecked());
		categoriaDescuento.setIndPermiteReativar(chkReativa.isChecked());
		
		categoriaDescuento.setIndAplicaFeriado((String) cmbIndGeneraFeriado.getSelectedItem().getValue());
		categoriaDescuento.setIndCuota(false);
		categoriaDescuento.setIndCuotaTramo(false);
		categoriaDescuento.setIndVendaAntecipadaPorKM(false);
		if(rdVendaAntecipadaKMSi.isChecked()) {
			categoriaDescuento.setIndVendaAntecipadaPorKM(true);
			categoriaDescuento.setKmVendaAntecipada(spnKM.getValue());
			categoriaDescuento.setTempoLiberacaoAteKM(tbTempoAteKM.getValue());
			categoriaDescuento.setTempoLiberacaoDepoisKM(tbTempoMaiorKM.getValue());
		} else if (rdVendaAntecipadaSi.isChecked()){
			categoriaDescuento.setTiempoDesactivar(spnHora.getValue(), spnMinuto.getValue());
		} else{
			categoriaDescuento.setTiempoActivar(spnHora.getValue(), spnMinuto.getValue());
		}
		if (rdCuotaSi.isChecked()){
			if (timeTempoPermitir.getValue() == null){
				throw new WrongValueException(timeTempoPermitir, Labels.getLabel("MSG.CONSTRAINT.CONSTRAINTNUMBERBDOBLIGATORIO"));
			}

			categoriaDescuento.setIndCuota(true);
			categoriaDescuento.setIndCuotaTramo(rdTrecho.isChecked());
			categoriaDescuento.setTiempoCuota(timeTempoPermitir.getValue());
			
			boolean isNuncaLiberarCota = rdNuncaLiberar.isChecked();
			categoriaDescuento.setIndCuotaNuncaLiberar(isNuncaLiberarCota);
			if (isNuncaLiberarCota) {
				String assentosReservados = asientosReservados.getValue();
				if (StringUtils.isBlank(assentosReservados)) {
					Messagebox.show(
							Labels.getLabel("editarConfiguracionCategoriaController.msg.nuncaLiberarAssentosReservados"),
							Labels.getLabel("editarConfiguracionCategoriaController.window.title"),
							Messagebox.OK, Messagebox.ERROR);
					return;
				}
			}
		}
		categoriaDescuento.setCantMaxVendaMes(cantMaximaVendaMes.intValue());

		if(!validarCampoAssentosReservados()){
			return;
		}

		if(radioHorarioLiberacaoVendaOrigem.isChecked()) {
			categoriaDescuento.setHorarioLiberacaoVendaPassagem(HorarioLiberacaoVendaPassagem.HORARIO_LIBERACAO_VENDA_ORIGEM);
		} else if(radioHorarioLiberacaoVendaTrecho.isChecked()) {
			categoriaDescuento.setHorarioLiberacaoVendaPassagem(HorarioLiberacaoVendaPassagem.HORARIO_LIBERACAO_VENDA_TRECHO);
		}

		if(radioCorLaranja.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.LARANJA);
		} else if(radioCorVerde.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.VERDE);
		} else if(radioCorVerdeMusgo.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.VERDE_MUSGO);
		} else if (radioCorAzul.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.AZUL);
		} else if (radioCorAzulMarinho.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.AZUL_MARINHO);
		} else if (radioCorAzulPiscina.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.AZUL_PISCINA);
		} else if (radioCorBege.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.BEGE);
		} else if (radioCorLilas.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.LILAS);
		} else if (radioCorMarrom.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.MARROM);
		} else if (radioCorRosa.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.ROSA);
		} else if (radioCorRosaChoque.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.ROSA_CHOQUE);
		} else if (radioCorRoxo.isChecked()) {
			categoriaDescuento.setCorpoltrona(TipoPassagemCores.ROXO);
		} else {
			categoriaDescuento.setCorpoltrona(null);
		}

		categoriaDescuento.setAsientosReservados(asientosReservados.getValue());
		categoriaDescuento.setIndexigedocpasajero(chkExigedocpasajero.isChecked());
		categoriaDescuento.setIndexigefecnacimientopasajero(chkExigefecnacimientopasajero.isChecked());
		categoriaDescuento.setIndexigenombpasajero(chkExigenombpasajero.isChecked());
		categoriaDescuento.setIndexigetelefonopasajero(chkExigetelefonopasajero.isChecked());
		categoriaDescuento.setIndExigeDoc2Passageiro(chkExigedoc2pasajero.isChecked());
		categoriaDescuento.setIndExigeEnderecoPassageiro(chkExigeEnderecopasajero.isChecked());
		categoriaDescuento.setIndExigeEmailPassageiro(chkExigeEmailpasajero.isChecked());
		categoriaDescuento.setIndSegunda(chkSegunda.isChecked());
		categoriaDescuento.setIndTerca(chkTerca.isChecked());
		categoriaDescuento.setIndQuarta(chkQuarta.isChecked());
		categoriaDescuento.setIndQuinta(chkQuinta.isChecked());
		categoriaDescuento.setIndSexta(chkSexta.isChecked());
		categoriaDescuento.setIndSabado(chkSabado.isChecked());
		categoriaDescuento.setIndDomingo(chkDomingo.isChecked());
		categoriaDescuento.setIndnaopermitevdamesmodocviagem(chkIndnaopermitevdamesmodocviagem.isChecked());
		categoriaDescuento.setIndNaoPermiteVendaDuasGrat(chkIndnaopermiteVendaDuasGratuidades.isChecked());		
		categoriaDescuento.setIndnaoaplicatarifaminima(chkIndnaoaplicatarifaminima.isChecked());
		categoriaDescuento.setIndtipoocupacao(chkIndtipoocupacao.isChecked());
		categoriaDescuento.setIndEmiteSomenteCupomEmbarque(chkIndEmiteSomenteCupomEmbarque.isChecked());
		categoriaDescuento.setQtdeViasCupomEmbarque(qtdeViasCupomEmbarque.getValue());
		categoriaDescuento.setIndClientePcd(chkIndClientePcd.isChecked());
		categoriaDescuento.setQtdeLimiteNaoEmbarque(qtdeLimiteNaoEmbarque.getValue());

		setTipoDocumentoPreSelecionado(chkExigedocpasajero, cmbTipoIdentifacionDoc1, 1);
		setTipoDocumentoPreSelecionado(chkExigedoc2pasajero, cmbTipoIdentifacionDoc2, 2);

		
		
		if(chkTipoCategoriaInteragem.isChecked()) {
			if(cmbCategoriasInteragem.getSelectedItem() != null && cmbCategoriasInteragem.getSelectedItem().getValue()!=null) {
				categoriaDescuento.setCategoriaInterage((Categoria) cmbCategoriasInteragem.getSelectedItem().getValue());
			}else {
				categoriaDescuento.setCategoriaInterage(null);
			}
		}else {
			categoriaDescuento.setCategoriaInterage(null);
		}
		
		categoriaDescuento.setIndExigeNumFidelidade(chkExigeNumeroFidelidade.isChecked());
		
		if(chkExigeNumeroFidelidade.isChecked()) {
			if(cmbOcupacion.getSelectedItem() != null && cmbOcupacion.getSelectedItem().getValue() != null) {
				categoriaDescuento.setTipoOcupacion((TipoOcupacion) cmbOcupacion.getSelectedItem().getValue());
			}else {
				categoriaDescuento.setTipoOcupacion(null);
			}
		} else {
			categoriaDescuento.setTipoOcupacion(null);			
		}
		
		if(chkIndCustomizaRodapeCupomEmbarque.isChecked()){
			categoriaDescuento.setCustomizaRodapeCumpomEmbarque(ckCustomizaRodapeCupomEmbarque.getValue());
		}else {
			categoriaDescuento.setCustomizaRodapeCumpomEmbarque(null);
		}

		categoriaDescuentoList.updateItem(categoriaDescuento);
		this.closeWindow();
	}
	
	private void setTipoDocumentoPreSelecionado(Checkbox chkTipoDocumento, Combobox cmbTipoIdentifacionDoc, int documento) {
	
		if(chkTipoDocumento.isChecked()) {
			if( cmbTipoIdentifacionDoc.getSelectedItem() != null ) {
				TipoIdentificacionDoc tipoIdentificacionDoc  =  (TipoIdentificacionDoc) cmbTipoIdentifacionDoc.getSelectedItem().getValue();
				if(tipoIdentificacionDoc != null) {
					if(documento == 1) {
						categoriaDescuento.setTipoIdentificacionDoc1(tipoIdentificacionDoc.getId());
					}else if(documento == 2) {
						categoriaDescuento.setTipoIdentificacionDoc2(tipoIdentificacionDoc.getId());
					}
				}	
			}		
		}else {
			if(documento == 1) {
				categoriaDescuento.setTipoIdentificacionDoc1(null);
			}else if(documento == 2) {
				categoriaDescuento.setTipoIdentificacionDoc2(null);
			}
			
		}
	}

	private Boolean validarCampoAssentosReservados() throws InterruptedException{
		//Verifica se o campo possui numeros separados por ponto e virgula.
		//Não permite que outros caracteres sejam digitados.
		if (!asientosReservados.getValue().equals("") && (!numAsientoComLetra && !asientosReservados.getValue().toString().matches("(([1-9]([0-9])+;)|([1-9]([0-9])+)|([1-9];)|([1-9][1-9][1-9])|[1-9])+"))){
			Messagebox.show(
					Labels.getLabel("editarConfiguracionCategoriaController.msg.validacaoAssentosReservadosPontoeVirgula"),
					Labels.getLabel("editarConfiguracionCategoriaController.window.title"),
					Messagebox.OK, Messagebox.ERROR);
			return false;
		}
		//Verifica se a quantidade de assentos reservados e menor que a quantidade de assentos autorizados.
		String assentosReservados[] = asientosReservados.getValue().toString().split(";");
		if(assentosReservados.length > cantAutorizada.getValue()){
			Messagebox.show(
				Labels.getLabel("editarConfiguracionCategoriaController.msg.validacaoAssentosReservados"),
				Labels.getLabel("editarConfiguracionCategoriaController.window.title"),
				Messagebox.OK, Messagebox.ERROR);
			return false;
		}

		//Retira possiveis assentos em duplicidade utilizando Set
		if(!asientosReservados.getValue().equals("") && assentosReservados.length > 0){
			Set<String> assentosSemDuplicacao = new HashSet<String>();
			StringBuilder assentos = new StringBuilder();
			assentosSemDuplicacao.addAll(Arrays.asList(assentosReservados));
			assentosReservados = assentosSemDuplicacao.toArray(new String[assentosSemDuplicacao.size()]);
			for(String assento :assentosReservados){
				assentos.append(assento.trim()).append(";");
			}
			assentos.replace(assentos.length()-1, assentos.length(),"");
			asientosReservados.setValue(assentos.toString());
		}

		return true;
	}

	public CategoriaDescuento getCategoriaDescuento() {
		return categoriaDescuento;
	}

	public void setCategoriaDescuento(CategoriaDescuento categoriaDescuento) {
		this.categoriaDescuento = categoriaDescuento;
	}

	public void onClick$radioImp(Event ev) {
		descuentoPorc.setDisabled(true);
		descuentoImporte.setDisabled(false);

		descuentoPorc.setConstraint("");
		descuentoPorc.setValue("0");
		categoriaDescuento.setDescuentoporc(BigDecimal.ZERO);
		descuentoImporte.setConstraint("no empty, no negative");
	}

	public void onClick$radioPor(Event ev) {
		descuentoImporte.setDisabled(true);
		descuentoPorc.setDisabled(false);

		descuentoImporte.setConstraint("");
		descuentoImporte.setValue("0");
		categoriaDescuento.setDescuentoimporte(BigDecimal.ZERO);
		descuentoPorc.setConstraint("no empty, no zero, no negative");
	}

	public void onClick$rdCuotaSi(Event ev) {
		mudarCamposCuota(true);
	}
	
	public void onClick$chkTipoCategoriaInteragem(Event event) {
		rowIdTipoCategoriaInteragem.setVisible(chkTipoCategoriaInteragem.isChecked());
	}
	
	public void onClick$chkExigeNumeroFidelidade(Event event) {
		rowIdTipoOcupacao.setVisible(chkExigeNumeroFidelidade.isChecked());
	}

	private void mudarCamposCuota(boolean visible){
		rowTrecho.setVisible(visible);
		rowTiempo.setVisible(visible);
		linhaLiberarPoltronasQuandoOnibus.setVisible(visible);
		linhaAssentosReservados.setVisible(visible);
		timeTempoPermitir.setValue(null);
	}
	public void onClick$rdCuotaNo(Event ev) {
		mudarCamposCuota(false);
	}
	public void popularCombobox(Combobox cmb) throws Exception {

		clearCombobox(cmb);
		for (CategoriaDescuento.DisponibilidadeFeriado p : CategoriaDescuento.DisponibilidadeFeriado.values()) {
			Comboitem comboItem = new Comboitem(p.descricao());
			comboItem.setValue(p.valor());
			comboItem.setParent(cmb);
		}

		cmb.setSelectedIndex(0);
	}
	public void clearCombobox(Combobox combobox) {
		int size = combobox.getItemCount();

		for (int i = size - 1; i >= 0; i--) {
			combobox.removeItemAt(i);
		}
	}
	
	public void onClick$rdVendaAntecipadaSi(Event ev) {
		spnHora.setValue(0);
		spnMinuto.setValue(0);
		lblMsgTiempo.setValue(Labels.getLabel("editarConfiguracionCategoriaController.lblVentaAntecipadaTempoDesactivar.value"));
	}
	public void onClick$rdVendaAntecipadaNo(Event ev) {
		spnHora.setValue(0);
		spnMinuto.setValue(0);
		lblMsgTiempo.setValue(Labels.getLabel("editarConfiguracionCategoriaController.lblVentaAntecipadaTempoActivar.value"));
	}
	
	public void onClick$rdVendaAntecipadaKMSi(Event ev) {
		exibirCamposVendaAntecipadaPorKM();        
	}
	/**
	 * 
	 */
	private void exibirCamposVendaAntecipadaPorKM() {
		rowTempoDepoisKMVendaAntecipada.setVisible(true);
		rowTempoAteKMVendaAntecipada.setVisible(true);   
		rowKMVendaAntecipada.setVisible(true);           
		rowTempoVendaAntecipadaSemKM.setVisible(false);   
		rowVendaAntecipadaSemKM.setVisible(false);
	}
	public void onClick$rdVendaAntecipadaKMNo(Event ev) {
		rowTempoDepoisKMVendaAntecipada.setVisible(false);
		rowTempoAteKMVendaAntecipada.setVisible(false);   
		rowKMVendaAntecipada.setVisible(false);           
		rowTempoVendaAntecipadaSemKM.setVisible(true);   
		rowVendaAntecipadaSemKM.setVisible(true);  
		spnKM.setValue(0);
		tbTempoAteKM.setValue(DateUtil.getFecInicio().getTime());
		tbTempoMaiorKM.setValue(DateUtil.getFecInicio().getTime());
	}
	
	public void onClick$chkIndCustomizaRodapeCupomEmbarque(Event ev) {
		rowCustomizaRodapeCupomEmbarque.setVisible(chkIndCustomizaRodapeCupomEmbarque.isChecked());
	}
	
	public void onClick$chkExigedoc2pasajero(Event ev) {
		configurarTipoIdenticacionDoc2();
	}
	
	public void onClick$chkExigedocpasajero(Event ev) {
		configurarTipoIdenticacionDoc2();
	}
	
	public void onChange$cmbTipoIdentifacionDoc1(Event ev) {
		setTipoIdenticacionDoc2();
	}
	
	private void configurarTipoIdenticacionDoc2() {
				
		if(categoriaDescuento.getTipoIdentificacionDoc2() != null) {
			cmbTipoIdentifacionDoc2.setValue(TipoIdentificacionDoc.getDescricao(categoriaDescuento.getTipoIdentificacionDoc2().byteValue()));
		}

		if(chkExigedoc2pasajero.isChecked()) {			
			rowDocumentoPreSelecionadoDOC2.setVisible(true);			
			setTipoIdenticacionDoc2();
		}else {
			rowDocumentoPreSelecionadoDOC2.setVisible(false);
		}
	}
	private void setTipoIdenticacionDoc2() {

		if(cmbTipoIdentifacionDoc1.getSelectedItem() != null && cmbTipoIdentifacionDoc1.getSelectedItem().getValue() != null || (cmbTipoIdentifacionDoc1.getValue() != null && !cmbTipoIdentifacionDoc1.getValue().isEmpty())) {
			TipoIdentificacionDoc tipoIdentificacionDoc = TipoIdentificacionDoc.getTipo(cmbTipoIdentifacionDoc1.getValue());
			cmbTipoIdentifacionDoc2.setModel(new BindingListModelList(Arrays.asList(TipoIdentificacionDoc.buscarComboSegundoTipoDocumentoRemovendoDocumentoSelecionadoTipoIdentificacionDoc(tipoIdentificacionDoc)), false)); 

		}
	}
	private void configurarTipoIdenticacionDoc1() {
		
		cmbTipoIdentifacionDoc1.setModel(new BindingListModelList(Arrays.asList(TipoIdentificacionDoc.getTodos()), false));
		
		if(categoriaDescuento.getTipoIdentificacionDoc1() != null) {
			cmbTipoIdentifacionDoc1.setValue(TipoIdentificacionDoc.getDescricao(categoriaDescuento.getTipoIdentificacionDoc1().byteValue()));
		}

		if(chkExigedocpasajero.isChecked()) {
			rowDocumentoPreSelecionadoDOC1.setVisible(true);			
		}else {
			rowDocumentoPreSelecionadoDOC1.setVisible(false);
		}
	}
	
	public Row getLinhaLiberarPoltronasQuandoOnibus() {
		return linhaLiberarPoltronasQuandoOnibus;
	}
	public void setLinhaLiberarPoltronasQuandoOnibus(Row linhaLiberarPoltronasQuandoOnibus) {
		this.linhaLiberarPoltronasQuandoOnibus = linhaLiberarPoltronasQuandoOnibus;
	}
	public Row getLinhaAssentosReservados() {
		return linhaAssentosReservados;
	}
	public void setLinhaAssentosReservados(Row linhaAssentosReservados) {
		this.linhaAssentosReservados = linhaAssentosReservados;
	}

	public Boolean isDescontoComponentePreco() {
		Constante constante = constanteService.buscarPorNomeConstante(Constantes.DESCONTO_COMPONENTE_PRECO);
		if(constante != null) {
			return Boolean.valueOf(constante.getValorconstante());
		}
		return false;
	}

	public String getCorLaranja() {
		return TipoPassagemCores.LARANJA.getUrl();
	}

	public String getCorVerde() {
		return TipoPassagemCores.VERDE.getUrl();
	}
	
	public String getCorVerdeMusgo() {
		return TipoPassagemCores.VERDE_MUSGO.getUrl();
	}
	
	public String getCorAzul() {
		return TipoPassagemCores.AZUL.getUrl();
	}
	
	public String getCorAzulMarinho() {
		return TipoPassagemCores.AZUL_MARINHO.getUrl();
	}
	
	public String getCorAzulPiscina() {
		return TipoPassagemCores.AZUL_PISCINA.getUrl();
	}
	
	public String getCorBege() {
		return TipoPassagemCores.BEGE.getUrl();
	}
	
	public String getCorLilas() {
		return TipoPassagemCores.LILAS.getUrl();
	}
	
	public String getCorMarrom() {
		return TipoPassagemCores.MARROM.getUrl();
	}
	
	public String getCorRosa() {
		return TipoPassagemCores.ROSA.getUrl();
	}
	
	public String getCorRosaChoque() {
		return TipoPassagemCores.ROSA_CHOQUE.getUrl();
	}
	
	public String getCorRoxo() {
		return TipoPassagemCores.ROXO.getUrl();
	}
	
	public Checkbox getChkExigeEnderecopasajero() {
		return chkExigeEnderecopasajero;
	}
	public void setChkExigeEnderecopasajero(Checkbox chkExigeEnderecopasajero) {
		this.chkExigeEnderecopasajero = chkExigeEnderecopasajero;
	}
	public Checkbox getChkExigeEmailpasajero() {
		return chkExigeEmailpasajero;
	}
	public void setChkExigeEmailpasajero(Checkbox chkExigeEmailpasajero) {
		this.chkExigeEmailpasajero = chkExigeEmailpasajero;
	}
	
	public Boolean getConfigEmiteSomenteCupomEmbarque() {
		return UsuarioLogado.getUsuarioLogado().isPermisoClave(ConstantesFuncionSistema.CLAVE_CONFIG_EMITE_SOMENTE_CUPOM_EMBARQUE);
	}
		
	public void onClick$rdVendeAbertoSi(Event ev) {
		rowComportamentoVendaAberto.setVisible(rdVendeAbertoSi.isChecked());
	}
	
	public void onClick$rdVendaAbertoNao(Event ev) {
		rowComportamentoVendaAberto.setVisible(rdVendeAbertoSi.isChecked());
	}

	public Checkbox getChkPermiteTroca() {
		return chkPermiteTroca;
	}
	public void setChkPermiteTroca(Checkbox chkPermiteTroca) {
		this.chkPermiteTroca = chkPermiteTroca;
	}
	public Checkbox getChkPermiteTransferencia() {
		return chkPermiteTransferencia;
	}
	public void setChkPermiteTransferencia(Checkbox chkPermiteTransferencia) {
		this.chkPermiteTransferencia = chkPermiteTransferencia;
	}
	public Checkbox getChkCancelaEmAberto() {
		return chkCancelaEmAberto;
	}

	public void setChkCancelaEmAberto(Checkbox chkCancelaEmAberto) {
		this.chkCancelaEmAberto = chkCancelaEmAberto;
	}

	public Checkbox getChkDevolveEmAberto() {
		return chkDevolveEmAberto;
	}

	public void setChkDevolveEmAberto(Checkbox chkDevolveEmAberto) {
		this.chkDevolveEmAberto = chkDevolveEmAberto;
	}

	public Checkbox getChkCancelaEmergencialEmAberto() {
		return chkCancelaEmergencialEmAberto;
	}

	public void setChkCancelaEmergencialEmAberto(Checkbox chkCancelaEmergencialEmAberto) {
		this.chkCancelaEmergencialEmAberto = chkCancelaEmergencialEmAberto;
	}

	public Checkbox getChkTrocaEmAberto() {
		return chkTrocaEmAberto;
	}

	public void setChkTrocaEmAberto(Checkbox chkTrocaEmAberto) {
		this.chkTrocaEmAberto = chkTrocaEmAberto;
	}

	public Checkbox getChkTrocaTiturlidadeEmAberto() {
		return chkTrocaTiturlidadeEmAberto;
	}

	public void setChkTrocaTiturlidadeEmAberto(Checkbox chkTrocaTiturlidadeEmAberto) {
		this.chkTrocaTiturlidadeEmAberto = chkTrocaTiturlidadeEmAberto;
	}

	public Checkbox getChkCancela() {
		return chkCancela;
	}

	public void setChkCancela(Checkbox chkCancela) {
		this.chkCancela = chkCancela;
	}

	public Checkbox getChkDevolve() {
		return chkDevolve;
	}

	public void setChkDevolve(Checkbox chkDevolve) {
		this.chkDevolve = chkDevolve;
	}

	public Checkbox getChkCancelaEmergencial() {
		return chkCancelaEmergencial;
	}

	public void setChkCancelaEmergencial(Checkbox chkCancelaEmergencial) {
		this.chkCancelaEmergencial = chkCancelaEmergencial;
	}

	public Checkbox getChkTrocaTiturlidade() {
		return chkTrocaTiturlidade;
	}

	public void setChkTrocaTiturlidade(Checkbox chkTrocaTiturlidade) {
		this.chkTrocaTiturlidade = chkTrocaTiturlidade;
	}
	
	public Checkbox getChkTipoCategoriaIntegarem() {
		return chkTipoCategoriaInteragem;
	}

	public void setChkTipoCategoriaIntegarem(Checkbox chkTipoCategoriaInteragem) {
		this.chkTipoCategoriaInteragem = chkTipoCategoriaInteragem;
	}

	public Row getRowIdTipoCategoriaIntegarem() {
		return rowIdTipoCategoriaInteragem;
	}

	public void setRowIdTipoCategoriaIntegarem(Row rowIdTipoCategoriaIntegarem) {
		this.rowIdTipoCategoriaInteragem = rowIdTipoCategoriaIntegarem;
	}
	
	public Combobox getCmbCategoriasInteragem() {
		return cmbCategoriasInteragem;
	}

	public void setCmbCategoriasInteragem(Combobox cmbCategoriasInteragem) {
		this.cmbCategoriasInteragem = cmbCategoriasInteragem;
	}
	
	public List<Categoria> getLsCategoriasInteragem() {
		return lsCategoriasInteragem;
	}
	public void setLsCategoriasInteragem(List<Categoria> lsCategoriasInteragem) {
		this.lsCategoriasInteragem = lsCategoriasInteragem;
	}
	
	public Categoria getCategoriaInterage() {
		return categoriaInterage;
	}
	public void setCategoriaInterage(Categoria categoriaInterage) {
		this.categoriaInterage = categoriaInterage;
	}
	public Checkbox getChkExigeNumeroFidelidade() {
		return chkExigeNumeroFidelidade;
	}
	public void setChkExigeNumeroFidelidade(Checkbox chkExigeNumeroFidelidade) {
		this.chkExigeNumeroFidelidade = chkExigeNumeroFidelidade;
	}
	public List<TipoOcupacion> getLsTipoOcupacion() {
		return lsTipoOcupacion;
	}
	public void setLsTipoOcupacion(List<TipoOcupacion> lsTipoOcupacion) {
		this.lsTipoOcupacion = lsTipoOcupacion;
	}
	public Row getRowIdTipoOcupacao() {
		return rowIdTipoOcupacao;
	}
	public void setRowIdTipoOcupacao(Row rowIdTipoOcupacao) {
		this.rowIdTipoOcupacao = rowIdTipoOcupacao;
	}
	public TipoOcupacion getTipoOcupacion() {
		return tipoOcupacion;
	}
	public void setTipoOcupacion(TipoOcupacion tipoOcupacion) {
		this.tipoOcupacion = tipoOcupacion;
	}
}