package com.rjconsultores.ventaboletos.enums;

public enum EnumTipoVenda {

	/**
	 * Venda Normal => 1
	 */
	TPV_NORMAL(1, true),
	TPV_ALTA_FREQUENCIA(2, true),
	TPV_MANUAL(3, false),
	TPV_HAND_HELD(4, true),
	TPV_CENTRAL_TELEFONICA(5, false),
	TPV_CARGO_A_OUTROS(6, false),
	TPV_RESERVA(7, true),
	TPV_TRANSFERENCIAS_TROCA(8, true),
	/**
	 * Venda em Aberto => 9
	 */
	TPV_ABERTO(9, true),
	TPV_CON_BUSPASS(10, true),
	TPV_DOMICILIO(11, true),
	TPV_POR_INTERNET(12, true),
	TPV_INTERMEDIO_SIN_HOR_SIN_AS(13, true),
	TPV_INTERMEDIO_CON_HOR_SIN_AS(14, true),
	TPV_RESERVA_NORMAL(15, true),
	TPV_RESERVA_POR_INTERNET(16, true),
	TPV_BOLETO_REMOTO(18, false),
	TPV_AGENCIA_WEB(19, true),
	TPV_RESERVACION_LISTA_ESPERA(23, true),
	TPV_TRANSF_TURISSSTE(26, true),
	TPV_TRANSFERENCIA_CUPON(27, true),
	TPV_VENTA_FAMSA(28, true),
	TPV_TRANSFERENCIA_FAMSA(29, true),
	TPV_EMPRESA_AMERICANA(31, true),
	TPV_VENDA_BOLETO_ABERTO_MANUAL(39, false),
	TPV_CHECKIN_VIAGEM(41, true),
	TPV_BOLETO_ABERTO_PREPAGADO(49, false),
	TPV_CANCELAMENTO(51, true),
	TPV_CANCELAMENTO_CARGO_OTROS(52, true),
	TPV_CANCELAMENTO_CIT(53, true),
	TPV_RESERVACION_PAQUETE_VIAJE(57, true),
	TPV_TRANSFERENCIA_CIT(54, true),
	TPV_TRANSFERENCIA_A_RESERVA(55, true),
	TPV_VENTA_PAQUETE_VIAJE(56, true),
	TPV_CANCELAMENTO_PAQUETE(58, true),
	TPV_CANCELAMENTO_TURISSSTE(59, true),
	TPV_CANCELAMENTO_FAMSA(60, true),
	TPV_TRANSFERENCIA_TARJETA(61, true),
	TPV_TRANSFERENCIA_ORDEN_SERV(62, true),
	TPV_TRANSFERENCIA_PASE_VAC_TRASLADO(63, true),
	TPV_TRANSFERENCIA_CUPON_COTEMAR(64, true),
	TPV_TRANSFERENCIA_CUPON_AM(65, true),
	TPV_TRANSFERENCIA_CUPON_RASPA_GANA(66, true),
	TPV_TRANSFERENCIA_SI_VALE(67, true),
	TPV_TIEMPO_AIRE(69, true), // Venta Tiempo aire
	TPV_TRANSFERENCIA_OXXO(70, true),
	TPV_TRANSFERENCIA_CUPON_MONEDERO(71, true),
	TPV_VENTA_RESERVACION_OXXO(72, true),
	TPV_VENTA_EXTRAVIADO(73, true),
	TPV_CAMBIO_VIAJE(81, true),// é a transferência de passagens
	/**
	 * Confirmação de Venda em Aberto => 82
	 */
	TPV_CONFIRMA_ABIERTO(82, true),
	TPV_VENDA_PACOTE(83, true),
	TPV_RESERVA_EMBARCADA(98, true),
	TPV_VENTA_EMBARCADA(99, true);
	
	private Integer id;
	private boolean isValidarFolio;
	
	private EnumTipoVenda(Integer id, boolean isValidarFolio) {
		this.id = id;
		this.isValidarFolio = isValidarFolio;
	}
	
	public Integer getId() {
		return id;
	}
	
	public boolean isValidarFolio() {
		return isValidarFolio;
	}

	public static EnumTipoVenda getTipoVenda(Integer id) {
		for (EnumTipoVenda tipoVenda : EnumTipoVenda.values()) {
			if (tipoVenda.id.equals(id)) {
				return tipoVenda;
			}
		}
		throw new IllegalArgumentException("Tipo de venda não encontrada.");
	}
}
