package com.rjconsultores.ventaboletos.web.gui.controladores.catalogos;


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

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.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.CheckEvent;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Decimalbox;
import org.zkoss.zul.Doublebox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Row;
import org.zkoss.zul.Spinner;
import org.zkoss.zul.Tabbox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.constantes.Constantes;
import com.rjconsultores.ventaboletos.constantes.ContanteTipoComprovante;
import com.rjconsultores.ventaboletos.entidad.Categoria;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.ClasseIndicePeaje;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.OrgaoCancelacion;
import com.rjconsultores.ventaboletos.entidad.OrgaoComprovanteCustomizado;
import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente;
import com.rjconsultores.ventaboletos.entidad.OrgaoEmpParam;
import com.rjconsultores.ventaboletos.service.CategoriaService;
import com.rjconsultores.ventaboletos.service.ClaseServicioService;
import com.rjconsultores.ventaboletos.service.OrgaoCancelacionService;
import com.rjconsultores.ventaboletos.service.OrgaoComprovanteCustomizadoService;
import com.rjconsultores.ventaboletos.service.OrgaoConcedenteService;
import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties;
import com.rjconsultores.ventaboletos.utilerias.CustomEnum;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.ConstraintPorcentagemAllowNull;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEmpresa;
import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxEstandar;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextbox;
import com.rjconsultores.ventaboletos.web.utilerias.MyTextboxDecimal;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderClasseIndicePeaj;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderOrgaoCancelacion;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderOrgaoEmpParam;

@Controller("editarOrgaoConcedenteController")
@Scope("prototype")
public class EditarOrgaoConcedenteController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;

	@Autowired
	private OrgaoConcedenteService orgaoConcedenteService;
	private OrgaoConcedente orgaoConcedente;

	@Autowired
	private OrgaoCancelacionService orgaoCancelacionService;

	@Autowired
	private ClaseServicioService claseServicioService;

	@Autowired
	private CategoriaService categoriaService;
	
	@Autowired
	private OrgaoComprovanteCustomizadoService orgaoComprovanteCustomizadoService;

	private MyListbox orgaoConcedenteList;
	private MyListbox listBoxIndicePeaj;
	private MyListbox listOrgaoEmpParam;
	private MyListbox orgaoCancelacionList;
	private MyTextbox txtNome;
	private MyTextbox txtCodEmpresa;
	private MyTextboxDecimal txtPorcMulta;
	private MyTextboxDecimal txtPorcCambio;
	private MyTextboxDecimal txtPorcCambioEmbarcado;
	private Spinner txtTiempoLimite;
	private Spinner txtTiempoLimiteMin;
	private Spinner txtTiempoLimiteCambio;
	private Spinner txtTiempoLimiteCambioMin;
	private Checkbox chkIndnaopermitetransferencia;
	private Checkbox chkIndnaopermiRemarcado;
	private Checkbox chkIndPermiteDevolucaoTotalRioCard;
	private Checkbox chkIndsolicitadatostarjeta;
	private Checkbox chkIndOrgaoconcedentetransf;
	private MyComboboxEmpresa cmbEmpresa;
	private MyComboboxEmpresa cmbEmpresaParam;
	private Checkbox chkIndmultatodasremarcacoes;
	private Checkbox chkIndNaoImprimirPoliticasConsumidor;
	private Checkbox chkIndPermitePagMultaPreEstornoCartao;

	private MyTextboxDecimal txtIndicePeaje;
	private MyTextboxDecimal txtIndicePeajClasse;
	
	private MyTextboxDecimal textboxIndiceExcessoDeBagagem;
	
	private MyTextboxDecimal txtTaxaConveniencia;

	private MyComboboxEstandar cmbClasseServicio;
	private Combobox cmbLsTipoComprovante;
	private CKeditor ckMessageComprovanteCancelamento;
	private Tabbox tabCancelamento;
	private Tabbox tabDevolucao;
	private CKeditor ckMessageComprovanteDevolucao;
	private Tabbox tabSolicitacaoEstorno;
	private CKeditor ckMessageComprovanteSolicitacaoEstorno;
	private Tabbox tabOcdEstorno;	
	private CKeditor ckMessageComprovanteOcdEstorno;
	private Tabbox tabOcdPuntoVentaEstorno;
	private CKeditor ckMessageComprovanteOcdPuntoVentaEstorno;
	private Tabbox tabOcdEstornoCredito;
	private CKeditor ckMessageComprovanteOcdEstornoCredito;
	private Tabbox tabOcdReembolso;
	private CKeditor ckMessageComprovanteOcdReembolso;
	private Textbox textboxMessageComprovanteOcdEstorno;
	private Textbox textboxMessageComprovanteOcdPuntoVentaEstorno;
	private Textbox textboxMessageComprovanteOcdEstornoCredito;
	private Textbox textboxMessageComprovanteDevolucao;
	private CKeditor ckCustomizacaoRodapeCupomDeEmbarque;
	private CKeditor ckMessageComprovanteRemarcacao;
	private Textbox textboxMessageComprovanteRemarcacao;
	private Tabbox tabRemarcacao;
	
	private Spinner txtTempoNaoPresencialH;
	private Spinner txtTempoNaoPresencialMin;

	private List<ClaseServicio> lsClasseServico;
	private List<OrgaoCancelacion> lsOrgaoCancelacion;

	private List<ClasseIndicePeaje> lsClasseIndicePeajes;

    private Combobox cmbCategoria;

    private List<Categoria> lsCategorias;

    private Radio radMultaTransferenciaSim;
    private Radio radMultaTransferenciaNao;

    private Radio radDevolucaoTransferenciaSim;
    private Radio radDevolucaoTransferenciaNao;

    private Radio radCobrancaTransferenciaSim;
    private Radio radCobrancaTransferenciaNao;
    
    private Radio radMultaDevolucaoAbertoSim;
    private Radio radMultaDevolucaoAbertoNao;

	private Checkbox chkindUtilizaICMS;
	
	private List<Empresa> lsEmpresas;
	private List<ContanteTipoComprovante> lsTipoComprovante;
	

	private List<OrgaoEmpParam> lsOrgaoEmpParam;
	
	private Checkbox chkIndNomDocObligatorio;
	private Checkbox chkIndValDocObligatorioMonitrip;
	private Checkbox chkIndemitesegundavia;
	private Checkbox chkInddoiscupomembarque;
	private Checkbox chkIndNaoRestringe2ViaBPe;
	private Checkbox chkIndImprimeComprovantetransferencia;
	private Checkbox chkIndEmite2ViaAposSaida;
	
	private Row rowIndValDocObligatorioMonitrip;
	private Row linhaAgerba;
	
	private MyTextboxDecimal txtCoeficiente;
	
	private MyTextboxDecimal txtMultaResolAgerba;
	
	private Intbox txtQtdeLimiteTransfReat;
	private Intbox  intboxPesoExtraExcessoDeBagagem;
	
	private Intbox  intboxPesoExtraExcessoDeBagagemFranquia;
	
	private Spinner txtTempoLimiteOperacaoHoras;
	private Spinner txtTempoLimiteOperacaoMin;
	
	private Spinner txtTrocaMesmoDiaAntesHoras;
	private Spinner txtTrocaMesmoDiaAntesMin;
	
	private Spinner txtTrocaMesmoDiaAposHoras;
	private Spinner txtTrocaMesmoDiaAposMin;

	private Spinner txtTempoLimiteTrocaPoltronaHoras;
	private Spinner txtTempoLimiteTrocaPoltronaMin;
	
	private Decimalbox txtTaxaConvenienciaPorc;
	private Doublebox txtMaximoTaxaConvenienciaPorTarifa;
	private ConstraintPorcentagemAllowNull ct;

	
	public OrgaoConcedente getOrgaoConcedente() {
		return orgaoConcedente;
	}

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

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		
		lsEmpresas = UsuarioLogado.getUsuarioLogado().getEmpresa();
		
		Integer orgaoConcedenteId = ((OrgaoConcedente) Executions.getCurrent().getArg().get("orgaoConcedente")).getOrgaoConcedenteId();

		orgaoConcedente = orgaoConcedenteService.obtenerID(orgaoConcedenteId);
		
		ckCustomizacaoRodapeCupomDeEmbarque.setValue(orgaoConcedente.getCustomizacaoRodapeCupomDeEmbarque());
		
		linhaAgerba.setVisible(Boolean.FALSE);
		if(Constantes.ORGAO_CONCEDENTE_STRING_AGERBA.equals(orgaoConcedente.getDescOrgao())
				|| Constantes.ORGAO_CONCEDENTE_ID_AGERBA.equals(orgaoConcedenteId)){
			linhaAgerba.setVisible(Boolean.TRUE);
		}
		orgaoConcedenteList = (MyListbox) Executions.getCurrent().getArg().get("orgaoConcedenteList");
		orgaoCancelacionList.setItemRenderer(new RenderOrgaoCancelacion());
		lsOrgaoCancelacion = orgaoCancelacionService.buscarPorOrgao(orgaoConcedente);
		orgaoCancelacionList.setData(lsOrgaoCancelacion);

		lsClasseServico = claseServicioService.obtenerTodos();
		listBoxIndicePeaj.setItemRenderer(new RenderClasseIndicePeaj());

		lsClasseIndicePeajes = orgaoConcedente.getClassesIndicePeaje();
		listBoxIndicePeaj.setData(lsClasseIndicePeajes);
		
		listOrgaoEmpParam.setItemRenderer(new RenderOrgaoEmpParam());
		lsOrgaoEmpParam = orgaoConcedente.getOrgaoEmpParams();
		listOrgaoEmpParam.setData(lsOrgaoEmpParam);

		txtIndicePeaje.setValue(orgaoConcedente.getIndicePeaje() != null ? orgaoConcedente.getIndicePeaje().toString().replace(".", ",") : "");
		txtTaxaConveniencia.setValue(orgaoConcedente.getTaxaConvenienciaSVI() != null ? orgaoConcedente.getTaxaConvenienciaSVI().toString().replace(".", ",") : "");
		getTxtTaxaConvenienciaPorc().setConstraint(getCt());
		txtNome.focus();
		
		chkIndmultatodasremarcacoes.setChecked(orgaoConcedente.getIndmultatodasremarcacoes() != null ? orgaoConcedente.getIndmultatodasremarcacoes() : Boolean.FALSE);
		chkIndNaoImprimirPoliticasConsumidor.setChecked(orgaoConcedente.getIndNaoImprimirPoliticasConsumidor() != null ? orgaoConcedente.getIndNaoImprimirPoliticasConsumidor() : Boolean.FALSE);

		lsCategorias = categoriaService.obtenerTodasCategoriasVisibles();
	
		lsTipoComprovante = Arrays.asList(ContanteTipoComprovante.values());
		
		chkInddoiscupomembarque.addEventListener("onCheck", new EventListener() {

			@Override
			public void onEvent(Event event) throws Exception {
				CheckEvent checkEvent = (CheckEvent) event;
				if(checkEvent.isChecked() && !chkIndemitesegundavia.isChecked()) {
					chkIndemitesegundavia.setChecked(true);
				}
			}
			
		});
		
		chkIndemitesegundavia.addEventListener("onCheck", new EventListener() {
			
			@Override
			public void onEvent(Event event) throws Exception {
				CheckEvent checkEvent = (CheckEvent) event;
				if(!checkEvent.isChecked() && chkInddoiscupomembarque.isChecked()) {
					chkInddoiscupomembarque.setChecked(false);
				}
			}
			
		});
		configuraChkIndValDocObligatorioMonitrip();
		txtCoeficiente.setValue(null != orgaoConcedente.getCoeficiente() && !"".equals(orgaoConcedente.getCoeficiente()) ? orgaoConcedente.getCoeficiente().toString() : "");
		carregarOsValoresIniciaisDoCkComprovante();
	
	}

	private void configuraChkIndValDocObligatorioMonitrip() {
		chkIndNomDocObligatorio.addEventListener("onClick", new OnClickNomDocObligatorio());
		rowIndValDocObligatorioMonitrip.setVisible(ApplicationProperties.getInstance()
				.isCustomHabilitado(CustomEnum.IS_VALIDA_DOCUMENTACAO_MONITRIP.getDescricao()));
		chkIndValDocObligatorioMonitrip.setDisabled(chkIndValDocObligatorioMonitrip.isVisible() && !orgaoConcedente.getIndNomDocObligatorio());
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		if (txtIndicePeaje != null && txtIndicePeaje.getValueDecimal() != null) {
			BigDecimal bg = new BigDecimal(txtIndicePeaje.getValueDecimal().doubleValue());
			if (bg.equals(new BigDecimal(0))) {
				Messagebox.show(
						Labels.getLabel("editarOrgaoConcedenteController.MSG.indicePeajeZeroInvalido"),
						Labels.getLabel("editarOrgaoConcedenteController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);
				return;
			} else {
				orgaoConcedente.setIndicePeaje(txtIndicePeaje.getValueDecimal());
			}
		} else {
			orgaoConcedente.setIndicePeaje(txtIndicePeaje.getValueDecimal());
		}
		
		if (txtTaxaConveniencia != null && txtTaxaConveniencia.getValueDecimal() != null) {
			orgaoConcedente.setTaxaConvenienciaSVI(txtTaxaConveniencia.getValueDecimal());
		} else {
			orgaoConcedente.setTaxaConvenienciaSVI(null);
		}
		
		getTxtTaxaConvenienciaPorc().getValue();
		if (getTxtTaxaConvenienciaPorc().getValue() != null &&
				getTxtTaxaConvenienciaPorc().getValue().compareTo(BigDecimal.ZERO) == 1) {
			txtMaximoTaxaConvenienciaPorTarifa.setConstraint("no empty");
			txtMaximoTaxaConvenienciaPorTarifa.getValue();
		}


		orgaoConcedente.setClassesIndicePeaje(lsClasseIndicePeajes);
		orgaoConcedente.setOrgaoEmpParams(lsOrgaoEmpParam);
		orgaoConcedente.setCoeficiente(null != txtCoeficiente.getText() && !"".equals(txtCoeficiente.getText()) ? new BigDecimal(txtCoeficiente.getText()) : null);
		orgaoConcedente.setCustomizacaoRodapeCupomDeEmbarque(ckCustomizacaoRodapeCupomDeEmbarque.getValue());
		orgaoConcedenteService.actualizacion(orgaoConcedente);
		salvarOrgaoComprovanteCustomizado();
		orgaoConcedenteList.updateItem(orgaoConcedente);
		
		

		Messagebox.show(
				Labels.getLabel("editarOrgaoConcedenteController.MSG.suscribirOK"),
				Labels.getLabel("editarOrgaoConcedenteController.window.title"),
				Messagebox.OK, Messagebox.INFORMATION);

		closeWindow();
	}

	private Boolean parametroRepetido(Empresa empresa) {
		for (OrgaoCancelacion o : lsOrgaoCancelacion) {
			if (o.getEmpresa().equals(empresa)) {
				return true;
			}
		}
		return false;
	}

	public void onClick$btnAdicionarParametros(Event ev) throws InterruptedException {
		if (parametroRepetido((Empresa) cmbEmpresa.getSelectedItem().getValue())) {
			Messagebox.show(
					Labels.getLabel("editarOrgaoConcedenteController.MSG.parametroRepetido"),
					Labels.getLabel("editarOrgaoConcedenteController.window.title"),
					Messagebox.OK, Messagebox.INFORMATION);
			return;
		}

		OrgaoCancelacion oc = new OrgaoCancelacion();
		oc.setEmpresa((Empresa) cmbEmpresa.getSelectedItem().getValue());
		oc.setOrgao(orgaoConcedente);
		oc.setPorccambio(txtPorcCambio.getValueDecimal());
		oc.setPorcmulta(txtPorcMulta.getValueDecimal());
		if(linhaAgerba.isVisible()) {
			oc.setPorcMultaResolAgerba(txtMultaResolAgerba.getValueDecimal());			
		}
		oc.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
		oc.setFecmodif(Calendar.getInstance().getTime());
		
		oc.setTiempolimite(txtTiempoLimite.getValue() == null ? 0 : txtTiempoLimite.getValue());
		oc.setTiempolimiteMin(txtTiempoLimiteMin.getValue() == null ? 0 : txtTiempoLimiteMin.getValue());
		
		oc.setTempolimiteAposSaidaH(txtTempoLimiteOperacaoHoras.getValue() == null ? 0 : txtTempoLimiteOperacaoHoras.getValue());
		oc.setTempolimiteAposSaidaMin(txtTempoLimiteOperacaoMin.getValue() == null ? 0 : txtTempoLimiteOperacaoMin.getValue());
		
		oc.setTrocaMesmoDiaAntesHora(txtTrocaMesmoDiaAntesHoras.getValue() == null ? 0 : txtTrocaMesmoDiaAntesHoras.getValue());
		oc.setTrocaMesmoDiaAntesMin(txtTrocaMesmoDiaAntesMin.getValue() == null ? 0 : txtTrocaMesmoDiaAntesMin.getValue());
		
		oc.setTrocaMesmoDiaAposHora(txtTrocaMesmoDiaAposHoras.getValue() == null ? 0 : txtTrocaMesmoDiaAposHoras.getValue());
		oc.setTrocaMesmoDiaAposMin(txtTrocaMesmoDiaAposMin.getValue() == null ? 0 : txtTrocaMesmoDiaAposMin.getValue());
		

		oc.setTempoTrocaPoltronaH(txtTempoLimiteTrocaPoltronaHoras.getValue() == null ? 0 : txtTempoLimiteTrocaPoltronaHoras.getValue());
		oc.setTempoTrocaPoltronaMin(txtTempoLimiteTrocaPoltronaMin.getValue() == null ? 0 : txtTempoLimiteTrocaPoltronaMin.getValue());
		
		oc.setIndnaopermitetransferencia(chkIndnaopermitetransferencia.isChecked());
		oc.setIndBloqueioRemarcado(chkIndnaopermiRemarcado.isChecked());
		oc.setIndMultaTransferencia(radMultaTransferenciaSim.isChecked());
		oc.setIndDevolucaoTransferencia(radDevolucaoTransferenciaSim.isChecked());
		oc.setIndCobrancaTransferencia(radCobrancaTransferenciaSim.isChecked());
		oc.setIndSolicitaDatosTarjeta(chkIndsolicitadatostarjeta.isChecked());
		oc.setIndPermiteDevolucaoTotalRioCard(chkIndPermiteDevolucaoTotalRioCard.isChecked());
		oc.setIndOrgaoconcedentetransf(chkIndOrgaoconcedentetransf.isChecked());
		oc.setIndMultaDevolucaoAberto(radMultaDevolucaoAbertoSim.isChecked());
		oc.setIndImprimeComprovanteTransferencia(chkIndImprimeComprovantetransferencia.isChecked());
		oc.setIndPermPagMultaPreEstorno(chkIndPermitePagMultaPreEstornoCartao.isChecked());

		if ((txtTiempoLimiteCambio.getValue() != null && txtTiempoLimiteCambio.getValue() > 0) ||
				(txtTiempoLimiteCambioMin.getValue() != null && txtTiempoLimiteCambioMin.getValue() > 0)) {
			oc.setTiempolimiteCambio(txtTiempoLimiteCambio.getValue() == null ? 0 : txtTiempoLimiteCambio.getValue());
			oc.setTiempolimiteCambioMin(txtTiempoLimiteCambioMin.getValue() == null ? 0 : txtTiempoLimiteCambioMin.getValue());
			oc.setPorcCambioEmbarcado(txtPorcCambioEmbarcado.getValueDecimal());
		}
		
		if ((txtTempoNaoPresencialH.getValue() != null && txtTempoNaoPresencialH.getValue() > 0) ||
				(txtTempoNaoPresencialMin.getValue() != null && txtTempoNaoPresencialMin.getValue() > 0)) {
			oc.setTempoCancelNaoPresencialHora(txtTempoNaoPresencialH.getValue() == null ? 0 : txtTempoNaoPresencialH.getValue());
			oc.setTempoCancelNaoPresencialMin(txtTempoNaoPresencialMin.getValue() == null ? 0 : txtTempoNaoPresencialMin.getValue());
		}
		
		oc.setActivo(Boolean.TRUE);
		
		oc.setQtdeLimiteTransfReat(txtQtdeLimiteTransfReat.getValue());

		oc = orgaoCancelacionService.suscribirActualizacion(oc);
		lsOrgaoCancelacion.add(oc);
		orgaoCancelacionList.setData(lsOrgaoCancelacion);
	}

	public void onClick$btnRemoverParametros(Event ev) throws InterruptedException {
		OrgaoCancelacion oc = (OrgaoCancelacion) orgaoCancelacionList.getSelected();
		orgaoCancelacionService.borrar(oc);
		lsOrgaoCancelacion.remove(oc);
		orgaoCancelacionList.setData(lsOrgaoCancelacion);
	}

	public void onClick$btnAdicionarClassePeaje(Event ev) throws InterruptedException {
		cmbClasseServicio.setConstraint("no empty");

		if (!classeExistente((ClaseServicio) cmbClasseServicio.getSelectedItem().getValue())) {
			if (txtIndicePeajClasse.getValueDecimal() != null
					&& !txtIndicePeajClasse.getValueDecimal().equals(BigDecimal.ZERO)) {
				ClasseIndicePeaje classeIndicePeaje = new ClasseIndicePeaje();
				classeIndicePeaje.setActivo(true);
				classeIndicePeaje.setClasseServicio((ClaseServicio) cmbClasseServicio.getSelectedItem().getValue());
				classeIndicePeaje.setOrgaoConcedente(orgaoConcedente);
				classeIndicePeaje.setIndicePeaje(txtIndicePeajClasse.getValueDecimal());

				cmbClasseServicio.setConstraint("");
				txtIndicePeajClasse.setText("");

				lsClasseIndicePeajes.add(classeIndicePeaje);
				listBoxIndicePeaj.addItemNovo(classeIndicePeaje);
				cmbClasseServicio.setSelectedItem(null);
			} else {
				Messagebox.show(
						Labels.getLabel("editarOrgaoConcedenteController.MSG.indicePeajeZeroInvalido"),
						Labels.getLabel("editarOrgaoConcedenteController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);
			}
		}
	}

	@SuppressWarnings("rawtypes")
	private boolean classeExistente(ClaseServicio claseServicio) throws InterruptedException {
		List classesIndicePeajes = listBoxIndicePeaj.getListData();
		for (Object o : classesIndicePeajes) {
			ClasseIndicePeaje classeIndice = (ClasseIndicePeaje) o;
			if (classeIndice.getClasseServicio().equals(claseServicio)) {
				Messagebox.show(
						Labels.getLabel("editarOrgaoConcedenteController.MSG.classeExistente"),
						Labels.getLabel("editarOrgaoConcedenteController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);
				return true;
			}
		}
		return false;
	}

	public void onClick$btnRemoverClassePeaje(Event ev) throws InterruptedException {
		if (listBoxIndicePeaj.getSelectedItem() != null) {
			ClasseIndicePeaje classeIndicePeaje = (ClasseIndicePeaje) listBoxIndicePeaj.getSelected();
			listBoxIndicePeaj.removeItem(classeIndicePeaje);

			if (classeIndicePeaje.getId() == null) {
				lsClasseIndicePeajes.remove(classeIndicePeaje);
			} else {
				classeIndicePeaje.setActivo(false);
			}
		}
	}

	public void onClick$btnAdicionarOrgaoEmpParam(Event ev) throws InterruptedException {
		
		
		if (!validaSeOsCamposForamPreenchidosCorretamentesParaOCalculoDePesoDoExcessoDeBagagem()) {
			Messagebox.show(Labels.getLabel("editarOrgaoConcedenteController.MSG.parametrosexcessodebagagem"),
					Labels.getLabel("editarOrgaoConcedenteController.window.title"), Messagebox.OK,
					Messagebox.INFORMATION);

		} else {
			chkIndemitesegundavia.getValue();
			chkInddoiscupomembarque.getValue();
			chkIndNaoRestringe2ViaBPe.getValue();
			chkIndEmite2ViaAposSaida.getValue();

			OrgaoEmpParam orgaoEmpParam = new OrgaoEmpParam();
			orgaoEmpParam.setEmpresa((Empresa) cmbEmpresaParam.getSelectedItem().getValue());
			orgaoEmpParam.setIndemitesegundavia(chkIndemitesegundavia.isChecked());
			orgaoEmpParam.setInddoiscupomembarque(chkInddoiscupomembarque.isChecked());
			orgaoEmpParam.setIndNaoRestringe2ViaBPe(chkIndNaoRestringe2ViaBPe.isChecked());
			orgaoEmpParam.setOrgaoConcedente(getOrgaoConcedente());
			orgaoEmpParam.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
			orgaoEmpParam.setFecmodif(Calendar.getInstance().getTime());
			orgaoEmpParam.setIndiceExcessoDeBagagem(textboxIndiceExcessoDeBagagem.getValueDecimal());
			orgaoEmpParam.setPesoExtraExcessoDeBagagem(intboxPesoExtraExcessoDeBagagem.getValue());
			orgaoEmpParam.setPesoExcessoDeBagagemFranquia(intboxPesoExtraExcessoDeBagagemFranquia.getValue());
			orgaoEmpParam.setChkIndEmite2ViaAposSaida(chkIndEmite2ViaAposSaida.isChecked());

			orgaoEmpParam.setActivo(true);
			orgaoEmpParam.setCodEmpresaPorOrgao(txtCodEmpresa.getValue());
			txtCodEmpresa.setText("");
			if (!isOrgaoEmpParamJaAdicionado(orgaoEmpParam)) {
				lsOrgaoEmpParam.add(orgaoEmpParam);
				listOrgaoEmpParam.addItemNovo(orgaoEmpParam);
			}
		}
	}
	
	
	public void carregarOsValoresIniciaisDoCkComprovante() {
		List<OrgaoComprovanteCustomizado> lsOrgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgao(orgaoConcedente);
		for (OrgaoComprovanteCustomizado o : lsOrgaoComprovanteCustomizado) {
			
			if(o.getTipoComprovanteId() == null) {
				return;
			}
			ContanteTipoComprovante contanteTipoComprovante = ContanteTipoComprovante.buscarContanteTipoComprovantePorId(o.getTipoComprovanteId());
			
			if(contanteTipoComprovante == null) {
				return;
			}
			
			switch (contanteTipoComprovante) {
				case OCD_ESTORNO:
					ckMessageComprovanteOcdEstorno.setValue(o.getTxtComprovanteCustomizado());
					textboxMessageComprovanteOcdEstorno.setValue(o.getTxtComprovanteCustomizado());
					break;
				case OCD_ESTORNO_CREDITO:
					ckMessageComprovanteOcdEstornoCredito.setValue(o.getTxtComprovanteCustomizado());
					textboxMessageComprovanteOcdEstornoCredito.setValue(o.getTxtComprovanteCustomizado());
					break;
				case OCD_PUNTO_VENTA_ESTONO:
					ckMessageComprovanteOcdPuntoVentaEstorno.setValue(o.getTxtComprovanteCustomizado());
					textboxMessageComprovanteOcdPuntoVentaEstorno.setValue(o.getTxtComprovanteCustomizado());
					break;
				case DEVOLUCAO:
					ckMessageComprovanteDevolucao.setValue(o.getTxtComprovanteCustomizado());
					textboxMessageComprovanteDevolucao.setValue(o.getTxtComprovanteCustomizado());
					break;
				case REMARCACAO:
					ckMessageComprovanteRemarcacao.setValue(o.getTxtComprovanteCustomizado());
					textboxMessageComprovanteRemarcacao.setValue(o.getTxtComprovanteCustomizado());
					break;
				default:
					break;
			}
			
		}
	}

	public void onChange$cmbLsTipoComprovante(Event ev) {
		Comboitem cbiTipoComprovante = cmbLsTipoComprovante.getSelectedItem();
		if (cbiTipoComprovante != null) {
			ContanteTipoComprovante tipoComprovante = (ContanteTipoComprovante) cbiTipoComprovante.getValue();
		
			switch (tipoComprovante) {
			case OCD_ESTORNO:
				tabCancelamento.setVisible(false);
				tabDevolucao.setVisible(false);
				tabOcdEstorno.setVisible(true);
				tabOcdReembolso.setVisible(false);
				tabSolicitacaoEstorno.setVisible(false);
				tabOcdPuntoVentaEstorno.setVisible(false);
				tabOcdEstornoCredito.setVisible(false);
				tabRemarcacao.setVisible(false);
				break;
				
			case OCD_PUNTO_VENTA_ESTONO:
				tabCancelamento.setVisible(false);
				tabDevolucao.setVisible(false);
				tabOcdEstorno.setVisible(false);
				tabOcdReembolso.setVisible(false);
				tabSolicitacaoEstorno.setVisible(false);
				tabOcdPuntoVentaEstorno.setVisible(true);
				tabOcdEstornoCredito.setVisible(false);
				tabRemarcacao.setVisible(false);
				break;
				
			case OCD_ESTORNO_CREDITO:
				tabCancelamento.setVisible(false);
				tabDevolucao.setVisible(false);
				tabOcdEstorno.setVisible(false);
				tabOcdReembolso.setVisible(false);
				tabSolicitacaoEstorno.setVisible(false);
				tabOcdPuntoVentaEstorno.setVisible(false);
				tabOcdEstornoCredito.setVisible(true);
				tabRemarcacao.setVisible(false);
				break;
			case DEVOLUCAO:
				tabCancelamento.setVisible(false);
				tabDevolucao.setVisible(true);
				tabOcdEstorno.setVisible(false);
				tabOcdReembolso.setVisible(false);
				tabSolicitacaoEstorno.setVisible(false);
				tabOcdPuntoVentaEstorno.setVisible(false);
				tabOcdEstornoCredito.setVisible(false);
				tabRemarcacao.setVisible(false);
				break;
			case REMARCACAO:
				tabCancelamento.setVisible(false);
				tabDevolucao.setVisible(false);
				tabOcdEstorno.setVisible(false);
				tabOcdReembolso.setVisible(false);
				tabSolicitacaoEstorno.setVisible(false);
				tabOcdPuntoVentaEstorno.setVisible(false);
				tabOcdEstornoCredito.setVisible(false);
				tabRemarcacao.setVisible(true);
				
				break;
				
			/*	Comentado para proxima entrega
			case CANCELAMENTO:				
				tabCancelamento.setVisible(true);
				tabDevolucao.setVisible(false);
				tabOcdEstorno.setVisible(false);
				tabOcdReembolso.setVisible(false);
				tabSolicitacaoEstorno.setVisible(false);
				if(orgaoComprovanteCustomizado != null) {
					ckMessageComprovanteCancelamento.setValue(orgaoComprovanteCustomizado.getTxtComprovanteCustomizado());
					
				}else {
					ckMessageComprovanteCancelamento.setValue("");
				}
				break;


			case OCD_REEMBOLSO:
				tabCancelamento.setVisible(false);
				tabDevolucao.setVisible(false);
				tabOcdEstorno.setVisible(false);
				tabOcdReembolso.setVisible(true);
				tabSolicitacaoEstorno.setVisible(false);
				if(orgaoComprovanteCustomizado != null) {
					ckMessageComprovanteOcdReembolso.setValue(orgaoComprovanteCustomizado.getTxtComprovanteCustomizado());
					
				}else {
					ckMessageComprovanteOcdReembolso.setValue("");
				}
				break;

			case SOLICITACAO_ESTORNO:
			
				tabCancelamento.setVisible(false);
				tabDevolucao.setVisible(false);
				tabOcdEstorno.setVisible(false);
				tabOcdReembolso.setVisible(false);
				tabSolicitacaoEstorno.setVisible(true);
				if(orgaoComprovanteCustomizado != null) {
					ckMessageComprovanteSolicitacaoEstorno.setValue(orgaoComprovanteCustomizado.getTxtComprovanteCustomizado());
					
				}else {
					ckMessageComprovanteSolicitacaoEstorno.setValue("");
				}
				break;
				*/
			default:			
				tabCancelamento.setVisible(false);
				tabDevolucao.setVisible(false);
				tabOcdEstorno.setVisible(false);
				tabOcdReembolso.setVisible(false);
				tabSolicitacaoEstorno.setVisible(false);
				tabOcdPuntoVentaEstorno.setVisible(false);
				tabOcdEstornoCredito.setVisible(false);
				tabRemarcacao.setVisible(false);
		
				break;
			}
		}
	}

	private void salvarOrgaoComprovanteCustomizado() {
		salvarOuAtualizarTipoComprovanteOcdEstorno();
		salvarOuAtualizarTipoComprovanteOcdPuntoVentaEstorno();
		salvarOuAtualizarTipoComprovanteOcdEstornoCredito();
		salvarOuAtualizarTipoComprovanteDevolucao();
		salvarOuAtualizarTipoComprovanteRemarcacao();
		/* comentado para próxima entrega
		salvarOuAtualizarTipoComprovanteCancelamento();
		salvarOuAtualizarTipoComprovanteOcdEstorno();
		salvarOuAtualizarTipoComprovanteOcdReembolso();
		salvarOuAtualizarTipoComprovanteSolicitacaoDeEstorno();
		*/
	}
	
	private void salvarOuAtualizarTipoComprovanteOcdEstorno() {
		
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgaoPorTipoComprovanteId(orgaoConcedente, ContanteTipoComprovante.OCD_ESTORNO.getId());
		if (orgaoComprovanteCustomizado != null) {
			if (StringUtils.isNotEmpty(ckMessageComprovanteOcdEstorno.getValue())) {
				orgaoComprovanteCustomizado.setActivo(Boolean.TRUE);
			} else {
				orgaoComprovanteCustomizado.setActivo(Boolean.FALSE);
			}
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteOcdEstorno.getValue());
			orgaoComprovanteCustomizadoService.actualizacion(orgaoComprovanteCustomizado);
		} else if (StringUtils.isNotEmpty(ckMessageComprovanteOcdEstorno.getValue())) {

			orgaoComprovanteCustomizado = setTipoComprovante(ContanteTipoComprovante.OCD_ESTORNO, ckMessageComprovanteOcdEstorno.getValue());
			orgaoComprovanteCustomizadoService.suscribir(orgaoComprovanteCustomizado);
		}
	}
	
	private void salvarOuAtualizarTipoComprovanteOcdPuntoVentaEstorno() {
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgaoPorTipoComprovanteId(orgaoConcedente, ContanteTipoComprovante.OCD_PUNTO_VENTA_ESTONO.getId());
		if (orgaoComprovanteCustomizado != null) {
			if (StringUtils.isNotEmpty(ckMessageComprovanteOcdPuntoVentaEstorno.getValue())) {
				orgaoComprovanteCustomizado.setActivo(Boolean.TRUE);
			} else {
				orgaoComprovanteCustomizado.setActivo(Boolean.FALSE);
			}
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteOcdPuntoVentaEstorno.getValue());
			orgaoComprovanteCustomizadoService.actualizacion(orgaoComprovanteCustomizado);
		} else if (StringUtils.isNotEmpty(ckMessageComprovanteOcdPuntoVentaEstorno.getValue())) {
			
			orgaoComprovanteCustomizado = setTipoComprovante(ContanteTipoComprovante.OCD_PUNTO_VENTA_ESTONO, ckMessageComprovanteOcdPuntoVentaEstorno.getValue());
			orgaoComprovanteCustomizadoService.suscribir(orgaoComprovanteCustomizado);

		}
	}
	
	private void salvarOuAtualizarTipoComprovanteOcdEstornoCredito() {
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgaoPorTipoComprovanteId(orgaoConcedente, ContanteTipoComprovante.OCD_ESTORNO_CREDITO.getId());

		if (orgaoComprovanteCustomizado != null) {
			if (StringUtils.isNotEmpty(ckMessageComprovanteOcdEstornoCredito.getValue())) {
				orgaoComprovanteCustomizado.setActivo(Boolean.TRUE);
			} else {
				orgaoComprovanteCustomizado.setActivo(Boolean.FALSE);
			}
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteOcdEstornoCredito.getValue());
			orgaoComprovanteCustomizadoService.actualizacion(orgaoComprovanteCustomizado);
		} else if (StringUtils.isNotEmpty(ckMessageComprovanteOcdEstornoCredito.getValue())) {
			
			orgaoComprovanteCustomizado = setTipoComprovante(ContanteTipoComprovante.OCD_ESTORNO_CREDITO, ckMessageComprovanteOcdEstornoCredito.getValue());
			orgaoComprovanteCustomizadoService.suscribir(orgaoComprovanteCustomizado);
		}
	}
	
	private void salvarOuAtualizarTipoComprovanteDevolucao() {
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgaoPorTipoComprovanteId(orgaoConcedente, ContanteTipoComprovante.DEVOLUCAO.getId());

		if (orgaoComprovanteCustomizado != null) {
			if (StringUtils.isNotEmpty(ckMessageComprovanteDevolucao.getValue())) {
				orgaoComprovanteCustomizado.setActivo(Boolean.TRUE);
			} else {
				orgaoComprovanteCustomizado.setActivo(Boolean.FALSE);
			}
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteDevolucao.getValue());
			orgaoComprovanteCustomizadoService.actualizacion(orgaoComprovanteCustomizado);
		} else if (StringUtils.isNotEmpty(ckMessageComprovanteDevolucao.getValue())) {
			
			orgaoComprovanteCustomizado = setTipoComprovante(ContanteTipoComprovante.DEVOLUCAO, ckMessageComprovanteDevolucao.getValue());
			orgaoComprovanteCustomizadoService.suscribir(orgaoComprovanteCustomizado);
		}
	}

	private void salvarOuAtualizarTipoComprovanteRemarcacao() {
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgaoPorTipoComprovanteId(orgaoConcedente, ContanteTipoComprovante.REMARCACAO.getId());

		if (orgaoComprovanteCustomizado != null) {
			if (StringUtils.isNotEmpty(ckMessageComprovanteRemarcacao.getValue())) {
				orgaoComprovanteCustomizado.setActivo(Boolean.TRUE);
			} else {
				orgaoComprovanteCustomizado.setActivo(Boolean.FALSE);
			}
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteRemarcacao.getValue());
			orgaoComprovanteCustomizadoService.actualizacion(orgaoComprovanteCustomizado);
		} else if (StringUtils.isNotEmpty(ckMessageComprovanteRemarcacao.getValue())) {
			
			orgaoComprovanteCustomizado = setTipoComprovante(ContanteTipoComprovante.REMARCACAO, ckMessageComprovanteRemarcacao.getValue());
			orgaoComprovanteCustomizadoService.suscribir(orgaoComprovanteCustomizado);
		}
	}
	
	private OrgaoComprovanteCustomizado setTipoComprovante(ContanteTipoComprovante tipoComprovante, String messageComprovante) {
		
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado = new OrgaoComprovanteCustomizado();		
		orgaoComprovanteCustomizado = new OrgaoComprovanteCustomizado();
		orgaoComprovanteCustomizado.setOrgaoConcedente(orgaoConcedente);
		orgaoComprovanteCustomizado.setTipoComprovanteId(tipoComprovante.getId());
		orgaoComprovanteCustomizado.setCveTipoComprovante(tipoComprovante.getDescricao());
		orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(messageComprovante);
		
		return orgaoComprovanteCustomizado;
	}
    
	/* comentado para próxima entrega
	private void salvarOuAtualizarTipoComprovanteCancelamento() {
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado;
		orgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgao(orgaoConcedente,
				ContanteTipoComprovante.CANCELAMENTO.getDescricao());
		if (orgaoComprovanteCustomizado != null) {
			if (StringUtils.isNotEmpty(ckMessageComprovanteCancelamento.getValue())) {
				orgaoComprovanteCustomizado.setActivo(Boolean.TRUE);
			} else {
				orgaoComprovanteCustomizado.setActivo(Boolean.FALSE);
			}
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteCancelamento.getValue());
			orgaoComprovanteCustomizadoService.actualizacion(orgaoComprovanteCustomizado);
		} else if (StringUtils.isNotEmpty(ckMessageComprovanteCancelamento.getValue())) {
			orgaoComprovanteCustomizado = new OrgaoComprovanteCustomizado();
			orgaoComprovanteCustomizado.setOrgaoConcedente(orgaoConcedente);
			orgaoComprovanteCustomizado.setTipoComprovanteId(ContanteTipoComprovante.CANCELAMENTO.getId());
			orgaoComprovanteCustomizado.setCveTipoComprovante(ContanteTipoComprovante.CANCELAMENTO.getDescricao());
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteCancelamento.getValue());
			orgaoComprovanteCustomizadoService.suscribir(orgaoComprovanteCustomizado);
		}
	}

	private void salvarOuAtualizarTipoComprovanteOcdReembolso() {
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado;
		orgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgao(orgaoConcedente,
				ContanteTipoComprovante.OCD_REEMBOLSO.getDescricao());
		if (orgaoComprovanteCustomizado != null) {
			if (StringUtils.isNotEmpty(ckMessageComprovanteOcdReembolso.getValue())) {
				orgaoComprovanteCustomizado.setActivo(Boolean.TRUE);
			} else {
				orgaoComprovanteCustomizado.setActivo(Boolean.FALSE);
			}
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteOcdReembolso.getValue());
			orgaoComprovanteCustomizadoService.actualizacion(orgaoComprovanteCustomizado);
		} else if (StringUtils.isNotEmpty(ckMessageComprovanteOcdReembolso.getValue())) {
			orgaoComprovanteCustomizado = new OrgaoComprovanteCustomizado();
			orgaoComprovanteCustomizado.setOrgaoConcedente(orgaoConcedente);
			orgaoComprovanteCustomizado.setTipoComprovanteId(ContanteTipoComprovante.OCD_REEMBOLSO.getId());
			orgaoComprovanteCustomizado.setCveTipoComprovante(ContanteTipoComprovante.OCD_REEMBOLSO.getDescricao());
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteOcdReembolso.getValue());
			orgaoComprovanteCustomizadoService.suscribir(orgaoComprovanteCustomizado);
		}
	}

	private void salvarOuAtualizarTipoComprovanteSolicitacaoDeEstorno() {
		OrgaoComprovanteCustomizado orgaoComprovanteCustomizado;
		orgaoComprovanteCustomizado = orgaoComprovanteCustomizadoService.buscarPorOrgao(orgaoConcedente,
				ContanteTipoComprovante.SOLICITACAO_ESTORNO.getDescricao());
		if (orgaoComprovanteCustomizado != null) {
			if (StringUtils.isNotEmpty(ckMessageComprovanteSolicitacaoEstorno.getValue())) {
				orgaoComprovanteCustomizado.setActivo(Boolean.TRUE);
			} else {
				orgaoComprovanteCustomizado.setActivo(Boolean.FALSE);
			}
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteSolicitacaoEstorno.getValue());
			orgaoComprovanteCustomizadoService.actualizacion(orgaoComprovanteCustomizado);
		} else if (StringUtils.isNotEmpty(ckMessageComprovanteOcdReembolso.getValue())) {
			orgaoComprovanteCustomizado = new OrgaoComprovanteCustomizado();
			orgaoComprovanteCustomizado.setOrgaoConcedente(orgaoConcedente);
			orgaoComprovanteCustomizado.setTipoComprovanteId(ContanteTipoComprovante.SOLICITACAO_ESTORNO.getId());
			orgaoComprovanteCustomizado
					.setCveTipoComprovante(ContanteTipoComprovante.SOLICITACAO_ESTORNO.getDescricao());
			orgaoComprovanteCustomizado.setTxtComprovanteCustomizado(ckMessageComprovanteSolicitacaoEstorno.getValue());
			orgaoComprovanteCustomizadoService.suscribir(orgaoComprovanteCustomizado);
		}
	}
	*/

	private boolean isOrgaoEmpParamJaAdicionado(OrgaoEmpParam orgaoEmpParam) throws InterruptedException {
		if(listOrgaoEmpParam != null) {
			for (Object o : listOrgaoEmpParam.getListData()) {
				OrgaoEmpParam orgaoEmpParamAdicionado = (OrgaoEmpParam) o;
				
				if(orgaoEmpParamAdicionado.getActivo() != null &&
				   orgaoEmpParamAdicionado.getActivo() &&
				   orgaoEmpParam.getEmpresa().equals(orgaoEmpParamAdicionado.getEmpresa())) {
					Messagebox.show(
							Labels.getLabel("editarOrgaoConcedenteController.MSG.orgaoempparamExistente"),
							Labels.getLabel("editarOrgaoConcedenteController.window.title"),
							Messagebox.OK, Messagebox.INFORMATION);
					return true;
				}
			}
		}
		return false;
	}

	public void onClick$btnRemoverOrgaoEmpParam(Event ev) throws InterruptedException {
		if (listOrgaoEmpParam.getSelectedItem() != null) {
			OrgaoEmpParam orgaoEmpParam = (OrgaoEmpParam) listOrgaoEmpParam.getSelected();
			listOrgaoEmpParam.removeItem(orgaoEmpParam);

			if (orgaoEmpParam.getOrgaoempparamId() == null) {
				lsOrgaoEmpParam.remove(orgaoEmpParam);
			} else {
				orgaoEmpParam.setActivo(false);
			}
		}
	}
	

	public void onClick$btnCarregarCkMessageComprovanteOcdEstorno(Event ev) throws InterruptedException {
		if(StringUtils.isNotBlank(textboxMessageComprovanteOcdEstorno.getValue())){
			ckMessageComprovanteOcdEstorno.setValue(textboxMessageComprovanteOcdEstorno.getValue());
		}
	}
	public void onClick$btnCarregarMessageComprovanteOcdPuntoVentaEstorno(Event ev) throws InterruptedException {
		if(StringUtils.isNotBlank(textboxMessageComprovanteOcdPuntoVentaEstorno.getValue())){
			ckMessageComprovanteOcdPuntoVentaEstorno.setValue(textboxMessageComprovanteOcdPuntoVentaEstorno.getValue());
		}
	}
	public void onClick$btnCarregarMessageComprovanteOcdEstornoCredito(Event ev) throws InterruptedException {
		if(StringUtils.isNotBlank(textboxMessageComprovanteOcdEstornoCredito.getValue())){
			ckMessageComprovanteOcdEstornoCredito.setValue(textboxMessageComprovanteOcdEstornoCredito.getValue());
		}
	}
	public void onClick$btnCarregarMessageComprovanteDevolucao(Event ev) throws InterruptedException {
		if(StringUtils.isNotBlank(textboxMessageComprovanteDevolucao.getValue())){
			ckMessageComprovanteDevolucao.setValue(textboxMessageComprovanteDevolucao.getValue());
		}
	}

	public void onClick$btnCarregarMessageComprovanteRemarcacao(Event ev) throws InterruptedException {
		if(StringUtils.isNotBlank(textboxMessageComprovanteRemarcacao.getValue())){
			ckMessageComprovanteDevolucao.setValue(textboxMessageComprovanteRemarcacao.getValue());
		}
	}
	public MyTextboxDecimal getTxtIndicePeaje() {
		return txtIndicePeaje;
	}

	public void setTxtIndicePeaje(MyTextboxDecimal txtIndicePeaje) {
		this.txtIndicePeaje = txtIndicePeaje;
	}
	
	public MyTextboxDecimal getTxtTaxaConveniencia() {
		return txtTaxaConveniencia;
	}

	public void setTxtTaxaConveniencia(MyTextboxDecimal txtTaxaConveniencia) {
		this.txtTaxaConveniencia = txtTaxaConveniencia;
	}

	public List<ClaseServicio> getLsClasseServico() {
		return lsClasseServico;
	}

	public Combobox getCmbCategoria() {
		return cmbCategoria;
	}

	public void setCmbCategoria(Combobox cmbCategoria) {
		this.cmbCategoria = cmbCategoria;
	}

	public List<Categoria> getLsCategorias() {
		return lsCategorias;
	}

	public void setLsCategorias(List<Categoria> lsCategorias) {
		this.lsCategorias = lsCategorias;
	}

	/**
	 * @return the radMultaTransferenciaSim
	 */
	public Radio getRadMultaTransferenciaSim() {
		return radMultaTransferenciaSim;
	}

	/**
	 * @param radMultaTransferenciaSim
	 *            the radMultaTransferenciaSim to set
	 */
	public void setRadMultaTransferenciaSim(Radio radMultaTransferenciaSim) {
		this.radMultaTransferenciaSim = radMultaTransferenciaSim;
	}

	/**
	 * @return the radMultaTransferenciaNao
	 */
	public Radio getRadMultaTransferenciaNao() {
		return radMultaTransferenciaNao;
	}

	/**
	 * @param radMultaTransferenciaNao
	 *            the radMultaTransferenciaNao to set
	 */
	public void setRadMultaTransferenciaNao(Radio radMultaTransferenciaNao) {
		this.radMultaTransferenciaNao = radMultaTransferenciaNao;
	}

	/**
	 * @return the radDevolucaoTransferenciaSim
	 */
	public Radio getRadDevolucaoTransferenciaSim() {
		return radDevolucaoTransferenciaSim;
	}

	/**
	 * @param radDevolucaoTransferenciaSim
	 *            the radDevolucaoTransferenciaSim to set
	 */
	public void setRadDevolucaoTransferenciaSim(Radio radDevolucaoTransferenciaSim) {
		this.radDevolucaoTransferenciaSim = radDevolucaoTransferenciaSim;
	}

	/**
	 * @return the radDevolucaoTransferenciaNao
	 */
	public Radio getRadDevolucaoTransferenciaNao() {
		return radDevolucaoTransferenciaNao;
	}

	/**
	 * @param radDevolucaoTransferenciaNao
	 *            the radDevolucaoTransferenciaNao to set
	 */
	public void setRadDevolucaoTransferenciaNao(Radio radDevolucaoTransferenciaNao) {
		this.radDevolucaoTransferenciaNao = radDevolucaoTransferenciaNao;
	}

	/**
	 * @return the radCobrancaTransferenciaSim
	 */
	public Radio getRadCobrancaTransferenciaSim() {
		return radCobrancaTransferenciaSim;
	}

	/**
	 * @param radCobrancaTransferenciaSim
	 *            the radCobrancaTransferenciaSim to set
	 */
	public void setRadCobrancaTransferenciaSim(Radio radCobrancaTransferenciaSim) {
		this.radCobrancaTransferenciaSim = radCobrancaTransferenciaSim;
	}

	/**
	 * @return the radCobrancaTransferenciaNao
	 */
	public Radio getRadCobrancaTransferenciaNao() {
		return radCobrancaTransferenciaNao;
	}

	/**
	 * @param radCobrancaTransferenciaNao
	 *            the radCobrancaTransferenciaNao to set
	 */
	public void setRadCobrancaTransferenciaNao(Radio radCobrancaTransferenciaNao) {
		this.radCobrancaTransferenciaNao = radCobrancaTransferenciaNao;
	}
	/**
	 * @return the chkIndOrgaoconcedentetransf
	 */
	public Checkbox getChkIndOrgaoconcedentetransf() {
		return chkIndOrgaoconcedentetransf;
	}

	/**
	 * @param chkIndOrgaoconcedentetransf the chkIndOrgaoconcedentetransf to set
	 */
	public void setChkIndOrgaoconcedentetransf(Checkbox chkIndOrgaoconcedentetransf) {
		this.chkIndOrgaoconcedentetransf = chkIndOrgaoconcedentetransf;
	}
	
	public Checkbox getChkindUtilizaICMS() {
		return chkindUtilizaICMS;
	}

	public void setChkindUtilizaICMS(Checkbox chkindUtilizaICMS) {
		this.chkindUtilizaICMS = chkindUtilizaICMS;
	}

	public Radio getRadMultaDevolucaoAbertoNao() {
		return radMultaDevolucaoAbertoNao;
	}

	public void setRadMultaDevolucaoAbertoNao(Radio radMultaDevolucaoAbertoNao) {
		this.radMultaDevolucaoAbertoNao = radMultaDevolucaoAbertoNao;
	}

	public List<Empresa> getLsEmpresas() {
		return lsEmpresas;
	}

	public void setLsEmpresas(List<Empresa> lsEmpresas) {
		this.lsEmpresas = lsEmpresas;
	}

	public MyTextbox getTxtCodEmpresa() {
		return txtCodEmpresa;
	}

	public void setTxtCodEmpresa(MyTextbox txtCodEmpresa) {
		this.txtCodEmpresa = txtCodEmpresa;
	}

	public MyTextboxDecimal getTxtCoeficiente() {
		return txtCoeficiente;
	}

	public void setTxtCoeficiente(MyTextboxDecimal txtCoeficiente) {
		this.txtCoeficiente = txtCoeficiente;
	}
	
	

	public Decimalbox getTxtTaxaConvenienciaPorc() {
		return txtTaxaConvenienciaPorc;
	}

	public void setTxtTaxaConvenienciaPorc(Decimalbox txtTaxaConvenienciaPorc) {
		this.txtTaxaConvenienciaPorc = txtTaxaConvenienciaPorc;
	}

	public Doublebox getTxtMaximoTaxaConvenienciaPorTarifa() {
		return txtMaximoTaxaConvenienciaPorTarifa;
	}
	
	

	public Combobox getCmbLsTipoComprovante() {
		return cmbLsTipoComprovante;
	}

	public void setCmbLsTipoComprovante(Combobox cmbLsTipoComprovante) {
		this.cmbLsTipoComprovante = cmbLsTipoComprovante;
	}

	public void setTxtMaximoTaxaConvenienciaPorTarifa(Doublebox txtMaximoTaxaConvenienciaPorTarifa) {
		this.txtMaximoTaxaConvenienciaPorTarifa = txtMaximoTaxaConvenienciaPorTarifa;
	}

	public ConstraintPorcentagemAllowNull getCt() {
		return ct;
	}

	public void setCt(ConstraintPorcentagemAllowNull ct) {
		this.ct = ct;
	}
	
	

	public List<ContanteTipoComprovante> getLsTipoComprovante() {
		return lsTipoComprovante;
	}

	public void setLsTipoComprovante(List<ContanteTipoComprovante> lsTipoComprovante) {
		this.lsTipoComprovante = lsTipoComprovante;
	}
	
	

	private Boolean validaSeOsCamposForamPreenchidosCorretamentesParaOCalculoDePesoDoExcessoDeBagagem() {
		if (validaSePeloMenosUmCampoFoiPreenchido()) {
			if (validaSeTodosOsCamposForamPreenchidos()) {
				return true;
			}
			return false;
		}
		return true;
	}

	private Boolean validaSePeloMenosUmCampoFoiPreenchido() {
		if (textboxIndiceExcessoDeBagagem.getValueDecimal() != null
				|| intboxPesoExtraExcessoDeBagagem.getValue() != null
				|| intboxPesoExtraExcessoDeBagagemFranquia.getValue() != null) {
			return true;
		}
		return false;
	}

	private Boolean validaSeTodosOsCamposForamPreenchidos() {
		if (textboxIndiceExcessoDeBagagem.getValueDecimal() != null
				&& intboxPesoExtraExcessoDeBagagem.getValue() != null
				&& intboxPesoExtraExcessoDeBagagemFranquia.getValue() != null) {
			return true;
		}
		return false;
	}
			
			
			
			
	private final class OnClickNomDocObligatorio implements EventListener {

		@Override
		public void onEvent(Event arg0) throws Exception {
			chkIndValDocObligatorioMonitrip.setDisabled(!(chkIndValDocObligatorioMonitrip.isVisible() && chkIndNomDocObligatorio.isChecked()));
			if (chkIndValDocObligatorioMonitrip.isVisible() && !chkIndNomDocObligatorio.isChecked()) {
				chkIndValDocObligatorioMonitrip.setChecked(false);
				orgaoConcedente.setIndValDocObligatorioMonitrip(false);
			}
		}
	}

}