soma de valores
02/01/2006
0
Oi Uso Delphi 6 e Firebird 1.5 com componentes Interbase
Fiz uma rotina para pegar umas movimentações e no meio dela faço uma procura por aqueles que não estejam em um segundo select indicado nela
select Distinct CadCli_Forn.CodCli_Forn,
CadCli_Forn.NomeFantasia, CadCli_Forn.Ativo,
CadCli_Forn.Tipo, CadCli_Forn.RazaoSocial,
CadCli_Forn.CodCidade, CadCli_Forn.CodGrupo,
CadCli_Forn.CodSubGrupo,
Sum(MovProdutos.ValorTotal) ValorTotal,
Sum(MovProdutos.ValorPago) ValorPago
from CadCli_Forn
inner Join MovProdutos on (MovProdutos.CodCliente = CadCli_Forn.CodCli_Forn)
inner Join CadTipoDocumentos on
(MovProdutos.CodTipoDocumento = CadTipoDocumentos.CodTipoDocumento)
inner Join UsoGruFinan on (UsoGruFinan.CodGrupo = CadCli_Forn.CodGrupo
and UsoGruFinan.Uso = ´S´
and (UsoGruFinan.CodSubGrupo = CadCli_Forn.CodSubGrupo
or UsoGruFinan.CodSubGrupo = ´0´))
where (UsoGruFinan.CodTipoMovFinanceiro = 21)
and (MovProdutos.ValorTotal > MovProdutos.ValorPago)
and MovProdutos.CodTipoDocumento = CadTipoDocumentos.CodTipoDocumento
and MovProdutos.CodFilial = 1
and (MovProdutos.CodTipoDocumento < 1000
and CadTipoDocumentos.AtualFinanceiro = ´N´
and CadTipoDocumentos.AtualContabilidade = ´S´
and not(MovProdutos.CodMovProdutos in
(Select IndicaNota.CodMovNota from IndicaNota,
MovProdutos where IndicaNota.CodMovPaga = MovProdutos.CodMovProdutos
and IndicaNota.CodFilial = MovProdutos.CodFilial
and IndicaNota.CodFilialNota = 1
and IndicaNota.Valor > IndicaNota.ValorPago
and MovProdutos.CodTipoDocumento < 1000)))
and (CadCli_Forn.Tipo = ´C´
or CadCli_Forn.Tipo = ´A´)
and (CadTipoDocumentos.CodNatureza = 4
or CadTipoDocumentos.CodNatureza = 6
or CadTipoDocumentos.CodNatureza = 3)
and (CadCli_Forn.Tipo = ´C´
or CadCli_Forn.Tipo = ´A´)
and (CadTipoDocumentos.CodNatureza = ´4´
or CadTipoDocumentos.CodNatureza = ´6´
or CadTipoDocumentos.CodNatureza = ´3´)
group by CadCli_Forn.CodCli_Forn,
CadCli_Forn.NomeFantasia, CadCli_Forn.Ativo,
CadCli_Forn.Tipo, CadCli_Forn.RazaoSocial,
CadCli_Forn.CodCidade, CadCli_Forn.CodGrupo,
CadCli_Forn.CodSubGrupo
order by CadCli_Forn.NomeFantasia
Retirei da rotina as aspas e demais acessorios para ficar mais visível.
ele me mostra todos os clientes que eu quero, mas a somatoria de cada cliente não retira as movimentações que estão no select alguem saberia me dizer porque.
Agradeço antecipadamente qualquer ajuda.
Fiz uma rotina para pegar umas movimentações e no meio dela faço uma procura por aqueles que não estejam em um segundo select indicado nela
select Distinct CadCli_Forn.CodCli_Forn,
CadCli_Forn.NomeFantasia, CadCli_Forn.Ativo,
CadCli_Forn.Tipo, CadCli_Forn.RazaoSocial,
CadCli_Forn.CodCidade, CadCli_Forn.CodGrupo,
CadCli_Forn.CodSubGrupo,
Sum(MovProdutos.ValorTotal) ValorTotal,
Sum(MovProdutos.ValorPago) ValorPago
from CadCli_Forn
inner Join MovProdutos on (MovProdutos.CodCliente = CadCli_Forn.CodCli_Forn)
inner Join CadTipoDocumentos on
(MovProdutos.CodTipoDocumento = CadTipoDocumentos.CodTipoDocumento)
inner Join UsoGruFinan on (UsoGruFinan.CodGrupo = CadCli_Forn.CodGrupo
and UsoGruFinan.Uso = ´S´
and (UsoGruFinan.CodSubGrupo = CadCli_Forn.CodSubGrupo
or UsoGruFinan.CodSubGrupo = ´0´))
where (UsoGruFinan.CodTipoMovFinanceiro = 21)
and (MovProdutos.ValorTotal > MovProdutos.ValorPago)
and MovProdutos.CodTipoDocumento = CadTipoDocumentos.CodTipoDocumento
and MovProdutos.CodFilial = 1
and (MovProdutos.CodTipoDocumento < 1000
and CadTipoDocumentos.AtualFinanceiro = ´N´
and CadTipoDocumentos.AtualContabilidade = ´S´
and not(MovProdutos.CodMovProdutos in
(Select IndicaNota.CodMovNota from IndicaNota,
MovProdutos where IndicaNota.CodMovPaga = MovProdutos.CodMovProdutos
and IndicaNota.CodFilial = MovProdutos.CodFilial
and IndicaNota.CodFilialNota = 1
and IndicaNota.Valor > IndicaNota.ValorPago
and MovProdutos.CodTipoDocumento < 1000)))
and (CadCli_Forn.Tipo = ´C´
or CadCli_Forn.Tipo = ´A´)
and (CadTipoDocumentos.CodNatureza = 4
or CadTipoDocumentos.CodNatureza = 6
or CadTipoDocumentos.CodNatureza = 3)
and (CadCli_Forn.Tipo = ´C´
or CadCli_Forn.Tipo = ´A´)
and (CadTipoDocumentos.CodNatureza = ´4´
or CadTipoDocumentos.CodNatureza = ´6´
or CadTipoDocumentos.CodNatureza = ´3´)
group by CadCli_Forn.CodCli_Forn,
CadCli_Forn.NomeFantasia, CadCli_Forn.Ativo,
CadCli_Forn.Tipo, CadCli_Forn.RazaoSocial,
CadCli_Forn.CodCidade, CadCli_Forn.CodGrupo,
CadCli_Forn.CodSubGrupo
order by CadCli_Forn.NomeFantasia
Retirei da rotina as aspas e demais acessorios para ficar mais visível.
ele me mostra todos os clientes que eu quero, mas a somatoria de cada cliente não retira as movimentações que estão no select alguem saberia me dizer porque.
Agradeço antecipadamente qualquer ajuda.
Salupe
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)