public static List<ImpressãoRegraPessoa> Obter(Comissão c, Filtro filtro)
        {
            StringBuilder str = new StringBuilder();


//select regra, nomecomissaopara, sum(valorv) as valorv, sum(valorc) as valorc, sum(valore) as valore from 
//(
//select regra, cp.nome as nomecomissaopara, valorv, valorc, 0 as valore from comissao_venda cv
//join venda v on cv.venda=v.codigo
//join pessoa cp on cp.codigo=cv.comissaopara
//join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=7
//UNION ALL select regra, cp.nome as nomecomissaopara, valorv, 0 as valorc, valorc as valore from comissao_venda  cv
//join venda v on cv.venda=v.codigo
//join pessoa cp on cp.codigo=cv.comissaopara
//join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=7
//) vvv group by regra, nomecomissaopara


            str.Append(" select regra, nomecomissaopara, sum(valorv) as valorv, sum(valorc) as valorc, sum(valore) as valore from ( select regra, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, valorv, valorc, 0 as valore from comissao_venda  cv ");
            str.Append(" join venda v on cv.venda=v.codigo join pessoa cp on cp.codigo=cv.comissaopara join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" UNION ALL select regra, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, valorv, 0 as valorc, valorc as valore from comissao_venda  cv ");
            str.Append(" join venda v on cv.venda=v.codigo join pessoa cp on cp.codigo=cv.comissaopara join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" ) vvv ");

            str.Append(" group by regra, nomecomissaopara having abs( sum(valorc)-sum(valore) ) > 0.01 order by regra, sum(valorc)-sum(valore) desc");

            return Mapear<ImpressãoRegraPessoa>(str.ToString());
        }
Example #2
0
 protected static void AplicarFiltro(StringBuilder str, Filtro filtro)
 {
     str.Append(" WHERE v.codigo IN ");
     str.Append(ObterSqlVendasData(filtro.DataInicial, filtro.DataFinal));
     if (filtro.Funcionário != null)
     {
         str.Append(" AND cv.comissaopara = ");
         str.Append(DbTransformar(filtro.Funcionário.Código));
     }
 }
        public static List<ImpressãoCompartilhada> Obter(Comissão c, Filtro filtro)
        {
            StringBuilder str = new StringBuilder();

//select nomerepresentante, nomevendedor, nomecomissaopara, sum(valorv)  as valorv, sum(valorc) as valorc, sum(valore) as valore from 
//(
//select vdor.nome as nomevendedor, rep.nome as nomerepresentante, cp.nome as nomecomissaopara,valorv, valorc, 0 as valore from comissao_venda  cv
//join venda v on cv.venda=v.codigo
//join pessoa cli on cli.codigo=v.cliente
//join regiao r on cli.regiao=r.codigo
//join representante re on re.codigo=r.representante
//join pessoa rep on rep.codigo=r.representante
//join pessoa vdor on vdor.codigo=v.vendedor
//join pessoa cp on cp.codigo=cv.comissaopara
//join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=7
//where regra = 7 
//UNION ALL select vdor.nome as nomevendedor, rep.nome as nomerepresentante, cp.nome as nomecomissaopara, valorv, 0 as valorc, valorc as valore from comissao_venda  cv
//join venda v on cv.venda=v.codigo
//join pessoa cli on cli.codigo=v.cliente
//join regiao r on cli.regiao=r.codigo
//join representante re on re.codigo=r.representante
//join pessoa rep on rep.codigo=r.representante
//join pessoa vdor on vdor.codigo=v.vendedor
//join pessoa cp on cp.codigo=cv.comissaopara
//join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=7
//where regra = 7 
//) vvv group by nomerepresentante, nomevendedor, nomecomissaopara order by nomerepresentante, nomevendedor, valore desc


            str.Append(" select nomerepresentante, nomevendedor, nomecomissaopara, sum(valorv)  as valorv, sum(valorc) as valorc, sum(valore) as valore from ( select vdor.nome as nomevendedor, rep.nome as nomerepresentante, cp.nome as nomecomissaopara,valorv, valorc, 0 as valore from comissao_venda cv");
            str.Append(" join venda v on cv.venda=v.codigo join pessoa cli on cli.codigo=v.cliente join regiao r on cli.regiao=r.codigo join representante re on re.codigo=r.representante join pessoa rep on rep.codigo=r.representante join pessoa vdor on vdor.codigo=v.vendedor join pessoa cp on cp.codigo=cv.comissaopara join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" AND regra=7 ");
            str.Append(" UNION ALL select vdor.nome as nomevendedor, rep.nome as nomerepresentante, cp.nome as nomecomissaopara, valorv, 0 as valorc, valorc as valore from comissao_venda cv ");
            str.Append(" join venda v on cv.venda=v.codigo join pessoa cli on cli.codigo=v.cliente join regiao r on cli.regiao=r.codigo join representante re on re.codigo=r.representante join pessoa rep on rep.codigo=r.representante ");
            str.Append(" join pessoa vdor on vdor.codigo=v.vendedor join pessoa cp on cp.codigo=cv.comissaopara join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" AND regra =7 ");
            str.Append(" ) vvv group by nomerepresentante, nomevendedor, nomecomissaopara order by nomerepresentante, nomevendedor, sum(valorc)-sum(valore)  " );
            return Mapear<ImpressãoCompartilhada>(str.ToString());
        }
        public static new List<ImpressãoSetor> Obter(Comissão c, Filtro filtro)
        {
            StringBuilder str = new StringBuilder();

            str.Append(" select setor, nomecomissaopara, sum(valorv) as valorv, sum(valorc) as valorc, sum(valore) as valore from ");
            str.Append(" (select distinct v.codigo, cv.setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, valorv, 0 as valorc, 0 as valore from comissao_venda cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join pessoa cp on cp.codigo=cv.vendedor ");
            str.Append(" join comissaovenda cve on cve.venda=cv.venda and cve.comissao=");
            str.Append(DbTransformar(c.Código));

            str.Append(" WHERE v.codigo IN ");
            str.Append(ObterSqlVendasData(filtro.DataInicial, filtro.DataFinal));

            str.Append(" UNION ALL select v.codigo, cv.setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, 0 as valorv, valorc, 0 as valore from comissao_venda cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join pessoa cp on cp.codigo=cv.comissaopara ");
            str.Append(" join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=");
            str.Append(DbTransformar(c.Código));

            str.Append(" WHERE v.codigo IN ");
            str.Append(ObterSqlVendasData(filtro.DataInicial, filtro.DataFinal));

            str.Append(" UNION ALL select v.codigo, cv.setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, valorv, 0 as valorc, valorc as valore from comissao_venda  cv ");
            str.Append(" join venda v on cv.venda=v.codigo join pessoa cp on cp.codigo=cv.comissaopara ");
            str.Append(" join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=");
            str.Append(DbTransformar(c.Código));

            str.Append(" WHERE v.codigo IN ");
            str.Append(ObterSqlVendasData(filtro.DataInicial, filtro.DataFinal));

            str.Append(" ) ee ");

            if (filtro.Funcionário != null)
            {
                str.Append(" WHERE codigocomissaopara = ");
                str.Append(DbTransformar(filtro.Funcionário.Código));
            }

            str.Append(" group by setor, nomecomissaopara order by setor, (sum(valorc)-sum(valore)) desc ");

            return Mapear<ImpressãoSetor>(str.ToString());
        }
        public static new List<ImpressãoComissãoVendaItem> Obter(Comissão c, Filtro filtro)
        {
            StringBuilder str = new StringBuilder();

            //select * from 
            //(select vi.referencia, m.faixa, m.grupo,  vi.peso, m.depeso, vi.quantidade, vi.indice, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv) as valorv, sum(valorc) as valorc, 0 as valore from comissao_valor  cv
            //join venda v on cv.venda=v.codigo
            //join vendaitem vi on vi.codigo=cv.vendaitem
            //join mercadoria m on vi.referencia=m.referencia
            //join pessoa cp on cp.codigo=cv.comissaopara
            //join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=3
            //group by cv.venda, cv.comissaopara, vi.referencia, vi.peso) aa
            //UNION (select vi.referencia, m.faixa, m.grupo, vi.peso, m.depeso, vi.quantidade, vi.indice, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv), 0 as valorc, sum(valorc) as valore from comissao_valor  cv
            //join venda v on cv.venda=v.codigo
            //join vendaitem vi on vi.codigo=cv.vendaitem
            //join mercadoria m on vi.referencia=m.referencia
            //join pessoa cp on cp.codigo=cv.comissaopara
            //join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=3
            //group by cv.venda, cv.comissaopara, vi.referencia, vi.peso) 
            // UNION
            //(select vd.referencia, m.faixa, m.grupo, vd.peso, m.depeso, -1*vd.quantidade as quantidade, vd.indice, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv) as valorv, sum(valorc) as valorc, 0 as valore from comissao_valor  cv
            //join venda v on cv.venda=v.codigo
            //join vendadevolucao vd on vd.codigo=cv.vendadevolucao
            //join mercadoria m on vd.referencia=m.referencia
            //join pessoa cp on cp.codigo=cv.comissaopara
            //join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=3
            //group by cv.venda, cv.comissaopara, vd.referencia, vd.peso) 
            //UNION (select vd.referencia, m.faixa, m.grupo, vd.peso, m.depeso, -1*vd.quantidade as quantidade, vd.indice, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv), 0 as valorc, sum(valorc) as valore from comissao_valor  cv
            //join venda v on cv.venda=v.codigo
            //join vendadevolucao vd on vd.codigo=cv.vendadevolucao
            //join mercadoria m on vd.referencia=m.referencia
            //join pessoa cp on cp.codigo=cv.comissaopara
            //join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=3
            //group by cv.venda, cv.comissaopara, vd.referencia, vd.peso) 

            //order by data, nomecomissaopara


            str.Append(" select * from ");
            str.Append(" (select v.desconto, vi.referencia, m.faixa, m.grupo, vi.peso, m.depeso, sum(vi.quantidade) as quantidade, sum(vi.indice) as indice, v.data as data, ");
            str.Append(" v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv) as valorv, sum(valorc) as valorc, 0 as valore from comissao_valor  cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join vendaitem vi on vi.codigo=cv.vendaitem ");
            str.Append(" join mercadoria m on vi.referencia=m.referencia ");
            str.Append(" join pessoa cp on cp.codigo=cv.comissaopara ");
            str.Append(" join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" group by cv.venda, cv.comissaopara, vi.referencia, vi.peso, regra) aa ");
            str.Append(" UNION (select v.desconto, vi.referencia, m.faixa, m.grupo, vi.peso, m.depeso, sum(vi.quantidade) as quantidade, sum(vi.indice) as indice, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara,  ");
            str.Append(" cv.venda, sum(valorv), 0 as valorc, sum(valorc) as valore from comissao_valor  cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join vendaitem vi on vi.codigo=cv.vendaitem ");
            str.Append(" join mercadoria m on vi.referencia=m.referencia ");
            str.Append(" join pessoa cp on cp.codigo=cv.comissaopara ");
            str.Append(" join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" group by cv.venda, cv.comissaopara, vi.referencia, vi.peso, regra)  UNION ");
            str.Append(" (select v.desconto, vd.referencia, m.faixa, m.grupo, vd.peso, m.depeso, sum(-1*vd.quantidade) as quantidade, sum(vd.indice) as indice, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv) as valorv, sum(valorc) as valorc, 0 as valore from comissao_valor  cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join vendadevolucao vd on vd.codigo=cv.vendadevolucao ");
            str.Append(" join mercadoria m on vd.referencia=m.referencia ");
            str.Append(" join pessoa cp on cp.codigo=cv.comissaopara ");
            str.Append(" join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" group by cv.venda, cv.comissaopara, vd.referencia, vd.peso, regra)  ");
            str.Append(" UNION (select v.desconto, vd.referencia, m.faixa, m.grupo, vd.peso, m.depeso, sum(-1*vd.quantidade) as quantidade, sum(vd.indice) as indice, v.data as data, v.cliente, regra, ");
            str.Append(" cp.nome as nomecomissaopara, cv.venda, sum(valorv), 0 as valorc, sum(valorc) as valore from comissao_valor  cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join vendadevolucao vd on vd.codigo=cv.vendadevolucao ");
            str.Append(" join mercadoria m on vd.referencia=m.referencia ");
            str.Append(" join pessoa cp on cp.codigo=cv.comissaopara ");
            str.Append(" join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" group by cv.venda, cv.comissaopara, vd.referencia, vd.peso, regra)  ");
            str.Append(" order by data, nomecomissaopara ");
             
            return Mapear<ImpressãoComissãoVendaItem>(str.ToString());
        }
 private Filtro ObterFiltro()
 {
     Filtro filtro = new Filtro(DiaInicial, DiaFinal, comissãoPara);
     return filtro;
 }
Example #7
0
 public List<ImpressãoSetor> ObterImpressãoSetor(Filtro filtro)
 {
     return ImpressãoSetor.Obter(this, filtro);
 }
Example #8
0
 public List<ImpressãoCompartilhada> ObterImpressãoCompartilhada(Filtro filtro)
 {
     return ImpressãoCompartilhada.Obter(this, filtro);
 }
Example #9
0
 public List<ImpressãoRegraPessoa> ObterImpressãoRegraPessoa(Filtro filtro)
 {
     return ImpressãoRegraPessoa.Obter(this, filtro); 
 }
Example #10
0
 public List<ImpressãoResumo> ObterImpressãoResumo(Filtro filtro)
 {
     return ImpressãoResumo.Obter(this, filtro);
 }
Example #11
0
 public List<ImpressãoComissãoVendaItem> ObterImpressãoVendaItem(Filtro filtro)
 {
     return ImpressãoComissãoVendaItem.Obter(this, filtro);
 }
 public JanelaImpressãoComissão(Entidades.Comissão.Comissão comissão, Filtro filtro)
 {
     this.comissão = comissão;
     this.filtro = filtro;
 }
        public static List<ImpressãoComissãoVenda> Obter(Comissão c, Filtro filtro)
        {
            StringBuilder str = new StringBuilder();


//select * from 
//            (select v.desconto, v.vendedor=cv.comissaopara as comissaoparavendedor,v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv) as valorv, sum(valorc) as valorc, 0 as valore from comissao_venda  cv
//join venda v on cv.venda=v.codigo
//join pessoa cp on cp.codigo=cv.comissaopara
//join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=3
//group by cv.venda, cv.comissaopara) aa
//UNION (select v.desconto, v.vendedor=cv.comissaopara as comissaoparavendedor, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv), 0 as valorc, sum(valorc) as valore from comissao_venda  cv
//join venda v on cv.venda=v.codigo
//join pessoa cp on cp.codigo=cv.comissaopara
//join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=3
//group by cv.venda, cv.comissaopara) order by data, nomecomissaopara

            str.Append("select * from (select v.desconto, v.vendedor=cv.comissaopara as comissaoparavendedor, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv) as valorv, sum(valorc) as valorc, 0 as valore from comissao_venda  cv ");
            str.Append(" join venda v on cv.venda=v.codigo join pessoa cp on cp.codigo=cv.comissaopara join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" group by cv.venda, cv.comissaopara, regra) aa UNION (select v.desconto, v.vendedor=cv.comissaopara as comissaoparavendedor, v.data as data, v.cliente, regra, cp.nome as nomecomissaopara, cv.venda, sum(valorv), 0 as valorc, sum(valorc) as valore from comissao_venda  cv ");
            str.Append(" join venda v on cv.venda=v.codigo join pessoa cp on cp.codigo=cv.comissaopara join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao=");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" group by cv.venda, cv.comissaopara, regra) order by data, nomecomissaopara ");

            return Mapear<ImpressãoComissãoVenda>(str.ToString());
        }
        public static List<ImpressãoResumo> Obter(Comissão c, Filtro filtro)
        {
            StringBuilder str = new StringBuilder();

            //select nomecomissaopara, codigocomissaopara, setor, sum(valorv) as valorv, sum(faturamentocompartilhado) as faturamentocompartilhado, sum(valorc) as valorc, sum(valore) as valore from
            //(select distinct v.codigo, s.nome as setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, valorv, 0 as faturamentocompartilhado, 0 as valorc, 0 as valore from comissao_venda cv
            //join venda v on cv.venda = v.codigo
            //join pessoa cp on cp.codigo = cv.vendedor
            //join setor s on cp.setor = s.codigo
            //join comissaovenda cve on cve.venda = cv.venda and cve.comissao = 19 AND cve.pessoa=v.vendedor
            //UNION ALL
            //select v.codigo, s.nome as setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, 0 as valorv, 0 as faturamentocompartilhado, valorc, 0 as valore from comissao_venda cv
            //join venda v on cv.venda = v.codigo
            //join pessoa cp on cp.codigo = cv.comissaopara
            //join setor s on cp.setor = s.codigo
            //join comissaovenda cve on cve.venda = cv.venda and cve.pessoa = v.vendedor and cve.comissao = 3
            //UNION ALL
            //select v.codigo, s.nome as setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, valorv, 0 as faturamentocompartilhado, 0 as valorc, valorc as valore from comissao_venda cv
            //join venda v on cv.venda = v.codigo
            //join pessoa cp on cp.codigo = cv.comissaopara
            //join setor s on cp.setor = s.codigo
            //join comissaoestornovenda cve on cve.venda = cv.venda and cve.pessoa = v.vendedor and cve.comissao = 3  AND cve.pessoa=v.vendedor
            //UNION ALL
            //select 0 as codigo, 'Representante' as setor, p.nome as nomecomissaopara, p.codigo as codigocomissaopara, 0 as valorv, sum(valorv) as faturamentocompartilhado, 0 as valorc, 0 as valore
            //from representante r join pessoa p on r.codigo = p.codigo join comissao_venda c_v on p.codigo = c_v.comissaopara

            //  WHERE c_v.comissaopara != c_v.vendedor and venda in (select venda from comissaovenda where comissao = 16)
            //group by p.nome)
            //            ee WHERE codigocomissaopara=29480 group by nomecomissaopara order by (sum(valorc) - sum(valore)) desc

            str.Append(" select nomecomissaopara, codigocomissaopara, setor, sum(valorv) as valorv, sum(faturamentocompartilhado) as faturamentocompartilhado, sum(valorc) as valorc, sum(valore) as valore from ");
            str.Append(" (select distinct v.codigo, s.nome as setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, valorv, 0 as faturamentocompartilhado, 0 as valorc, 0 as valore from comissao_venda cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join pessoa cp on cp.codigo=cv.vendedor ");
            str.Append(" join setor s on cp.setor = s.codigo ");
            str.Append(" join comissaovenda cve on cve.venda=cv.venda and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            str.Append(" AND cve.pessoa=v.vendedor ");
            AplicarFiltro(str, filtro);
            str.Append(" UNION ALL ");
            str.Append(" select v.codigo, s.nome as setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, 0 as valorv, 0 as faturamentocompartilhado, valorc, 0 as valore from comissao_venda cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join pessoa cp on cp.codigo=cv.comissaopara ");
            str.Append(" join setor s on cp.setor = s.codigo ");
            str.Append(" join comissaovenda cve on cve.venda=cv.venda and cve.pessoa=cv.comissaopara and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" UNION ALL ");
            str.Append(" select v.codigo, s.nome as setor, cp.nome as nomecomissaopara, cp.codigo as codigocomissaopara, valorv, 0 as faturamentocompartilhado, 0 as valorc, valorc as valore from comissao_venda  cv ");
            str.Append(" join venda v on cv.venda=v.codigo ");
            str.Append(" join pessoa cp on cp.codigo=cv.comissaopara ");
            str.Append(" join setor s on cp.setor = s.codigo ");
            str.Append(" join comissaoestornovenda cve on cve.venda=cv.venda and cve.pessoa=v.vendedor and cve.comissao= ");
            str.Append(DbTransformar(c.Código));
            AplicarFiltro(str, filtro);
            str.Append(" UNION ALL ");
            str.Append(" select 0 as codigo,  'Representante' as setor, p.nome as nomecomissaopara, p.codigo as codigocomissaopara, 0 as valorv, sum(valorv) as faturamentocompartilhado, 0 as valorc, 0 as valore ");
            str.Append(" from representante r join pessoa p on r.codigo=p.codigo join comissao_venda c_v on p.codigo=c_v.comissaopara ");
            str.Append(" WHERE c_v.comissaopara != c_v.vendedor ");
            str.Append(" AND venda IN ");
            str.Append(ObterSqlVendasData(filtro.DataInicial, filtro.DataFinal));

            if (filtro.Funcionário != null)
            {
                str.Append(" AND comissaopara = ");
                str.Append(DbTransformar(filtro.Funcionário.Código));
            }

            str.Append(" AND venda in (select venda from comissaovenda where comissao=");
            str.Append(DbTransformar(c.Código));
            str.Append(") group by p.nome) ee ");

            if (filtro.Funcionário != null)
            {
                str.Append(" WHERE codigocomissaopara = ");
                str.Append(DbTransformar(filtro.Funcionário.Código));
            }

            str.Append(" group by nomecomissaopara order by (sum(valorc)-sum(valore)) desc ");
 
            return Mapear<ImpressãoResumo>(str.ToString());
        }