public KendoGridVm ListarTransportadoras(PaginacaoVm paginacaoVm, TransportadoraFiltroVm filtro)
        {
            IQueryOver<Fornecedor, Fornecedor> queryOverRetorno;
            IQueryOver<Fornecedor, Fornecedor> queryOverBase = AplicarFiltros(filtro,false);
            queryOverBase = queryOverBase.And(f => f.Grupo_contas == "ZTRA");

            Fornecedor fornecedor = null;

            TransportadoraDoCliente transportadoraDoCliente = null;

            QueryOver<TransportadoraDoCliente, TransportadoraDoCliente> subQueryCliente = QueryOver.Of(() => transportadoraDoCliente)
                .Where(Restrictions.EqProperty(Projections.Property(() => fornecedor.Codigo), Projections.Property(() => transportadoraDoCliente.Transportadora.Codigo)))
                .And(x => x.TipoDeParceiro == filtro.TipoDeParceiro)
                .And(x => x.Cliente.Id_cliente == filtro.IdDoCliente)
                .Select(Projections.Property(() => transportadoraDoCliente.TipoDeParceiro));

            var queryCliente =  queryOverBase.Clone().WithSubquery.WhereExists(subQueryCliente);

            queryOverRetorno = queryCliente;

            int quantidadeDeTransportadoras = queryCliente.RowCount();

            Usuario usuarioConectado = _usuarios.UsuarioConectado();

            if (quantidadeDeTransportadoras > 0)
            {

                if (filtro.IdDaAreaDeVenda.HasValue)
                {
                    AplicarFiltroDeAreaDeVenda(queryCliente, filtro.IdDaAreaDeVenda.Value);
                    quantidadeDeTransportadoras = queryCliente.RowCount();
                }

                queryOverRetorno = queryCliente;
            }
            else if (!string.IsNullOrEmpty(usuarioConectado.CodigoDoFornecedor))
            {

                TransportadoraDoRepresentante transportadoraDoRepresentante = null;

                QueryOver<TransportadoraDoRepresentante, TransportadoraDoRepresentante> subQuery = QueryOver.Of(() => transportadoraDoRepresentante)
                    .Where(Restrictions.EqProperty(Projections.Property(() => fornecedor.Codigo), Projections.Property(() => transportadoraDoRepresentante.Transportadora.Codigo)))
                    .And(x => x.TipoDeParceiro == filtro.TipoDeParceiro)
                    .And(x => x.Representante.Codigo == usuarioConectado.CodigoDoFornecedor)
                    .Select(Projections.Property(() => transportadoraDoRepresentante.TipoDeParceiro));

                var queryOverRepresentante = queryOverBase.Clone().WithSubquery.WhereExists(subQuery);

                if (filtro.IdDaAreaDeVenda.HasValue)
                {
                    AplicarFiltroDeAreaDeVenda(queryOverRepresentante, filtro.IdDaAreaDeVenda.Value);
                }

                quantidadeDeTransportadoras = queryOverRepresentante.RowCount();

                queryOverRetorno = queryOverRepresentante;

            }

            var kendoGridVm = new KendoGridVm
            {
                QuantidadeDeRegistros = quantidadeDeTransportadoras,
                Registros =
                    _builderFornecedor.BuildList(queryOverRetorno.Skip(paginacaoVm.Skip).Take(paginacaoVm.Take).List())
                        .Cast<ListagemVm>()
                        .ToList()

            };

            return kendoGridVm;


        }
 public JsonResult ListarTransportadoras(PaginacaoVm paginacaoVm, TransportadoraFiltroVm filtro)
 {
     KendoGridVm kendoGridVm = _consultaFornecedor.ListarTransportadoras(paginacaoVm, filtro);
     return Json(kendoGridVm, JsonRequestBehavior.AllowGet);
 }