Jump to content

PHC: Listagem de Clientes com documentos mas apenas com Adiantamentos


Pedro001
Go to solution Solved by pc.cesar,

Recommended Posts

Boa tarde a todos!

Estou a atentar obter uma listagem no PHC que me mostre o numero , nome data movimento, data vencimento, numero do documento, e valor em aberto(pendente) de todos os clientes que apenas tenham um documento de movimento V/Adiantamento, todos os outros que nao tem , nao queria que saia na listagem;

Estou com dificuldade no seguinte codigo:

select  cc.no, cc.nome,DtOriginal=convert(varchar, datalc, 104), DtVencimento=convert(varchar, dataven, 104), Descricão=cmdesc, Nr=nrdoc, (edeb-edebf-ecred+ecredf) as Pendente from cc (nolock)  inner join cl (nolock) on cl.no=cc.no and cc.estab=cl.estab  and cl.inactivo=0 where abs(edeb-edebf-ecred+ecredf)>.01 and origem='FT' or origem='RD'  and (edeb-edebf-ecred+ecredf)<>0 order by 1, 2

Podem-me ajudar?

Obrigado desde ja!

Cumprimentos

no, nome,Data , Datavencimento, Nr doc, Pendente

1 Joao 01.01.2023 01.01.2023       286 n/fACTURA

1 Joao10.02.2023 10.02.2023       901 v/aDIANTAMENTO

Edited by Pedro001
Link to comment
Share on other sites

  • 3 weeks later...

Não sei se percebi bem a questão.
Queres só os documentos de adiantamento?

Se queres todos os documentos de clientes que tem pelo menos um adiantamento, a query será diferente desta.
Esta vai te listar todos os documentos do tipo V/Adiantamento

O campo (ft/rd).ndoc guarda o tipo de documento e o (ft/rd).nmdoc o nome desse tipo.
Podes fazer left join aos documentos pelo campo cc.rdstamp ou cc.ftstamp a essas tabelas e filtrar pelo tipo de documento.

 

select  cc.no, 
cc.nome,
DtOriginal=convert(varchar, datalc, 104), 
DtVencimento=convert(varchar, dataven, 104),
Descricão=cc.cmdesc, Nr=nrdoc, (edeb-edebf-ecred+ecredf) as Pendente
from cc (nolock)  
	inner join cl (nolock) on cl.no=cc.no and cc.estab=cl.estab  and cl.inactivo=0
	left join ft (nolock) on ft.ftstamp = cc.ftstamp
	left join rd (nolock) on rd.rdstamp = cc.rdstamp
where abs(edeb-edebf-ecred+ecredf)>.01 and origem='FT' or origem='RD' and (edeb-edebf-ecred+ecredf) <> 0 and (rd.nmdoc like 'V/Adiantamento' or ft.nmdoc like 'V/Adiantamento')  order by 1, 2


O ideal seria filtrar pelo ndoc e não pelo nmdoc. Terás de ver na tua base de dades qual o numero de documento do tipo V/Adiantamento.

Edited by Tiago Rodrigues
Link to comment
Share on other sites

  • Solution

Conta Corrente pendente onde existe pelo menos um Recibo de Adiantamento Pendente (a negrito)

 

 

select cc.ccstamp, cc.no, cc.nome, cc.datalc, cc.dataven
, cc.edeb as edeb
, cc.ecred as ecred
, cc.deb as deb
, cc.cred as cred
, cc.debm, cc.credm, cc.moeda
, cc.cmdesc, cc.nrdoc, cc.ultdoc, cc.credf, cc.ecredf, cc.debf, cc.edebf, cc.debfm, cc.credfm, cc.intid
, cc.faccstamp, cc.cbbno, cc.origem, cc.difcambio, cc.edifcambio, cc.recibado, cc.obs, cc.origem
,cc.evirs, cc.evirsreg, cc.eirsdif, cc.virs, cc.virsreg, cc.irsdif
from cc (nolock)

left join re (nolock) on cc.restamp = re.restamp
where 1=1
    and cc.no  in (select cc.no from cc (nolock)
                left join re (nolock) on cc.restamp = re.restamp
                where 1=1
                    and (case when cc.moeda ='PTE ou EURO' or cc.moeda=space(11) then abs((cc.edeb-cc.edebf)-(cc.ecred-cc.ecredf)) else abs((cc.debm-cc.debfm)-(cc.credm-cc.credfm)) end) > (case when cc.moeda='PTE ou EURO' or cc.moeda=space(11) then 0.010000 else 0 end) 
                    and origem='RD')

    and (case when cc.moeda ='PTE ou EURO' or cc.moeda=space(11) then abs((cc.edeb-cc.edebf)-(cc.ecred-cc.ecredf)) else abs((cc.debm-cc.debfm)-(cc.credm-cc.credfm)) end) > (case when cc.moeda='PTE ou EURO' or cc.moeda=space(11) then 0.010000 else 0 end) 
 order by cc.datalc,cc.cm,cc.nrdoc

  • Vote 1

César Faria

Link to comment
Share on other sites

Em 29/08/2023 às 10:36, pc.cesar disse:

Conta Corrente pendente onde existe pelo menos um Recibo de Adiantamento Pendente (a negrito)

 

 

select cc.ccstamp, cc.no, cc.nome, cc.datalc, cc.dataven
, cc.edeb as edeb
, cc.ecred as ecred
, cc.deb as deb
, cc.cred as cred
, cc.debm, cc.credm, cc.moeda
, cc.cmdesc, cc.nrdoc, cc.ultdoc, cc.credf, cc.ecredf, cc.debf, cc.edebf, cc.debfm, cc.credfm, cc.intid
, cc.faccstamp, cc.cbbno, cc.origem, cc.difcambio, cc.edifcambio, cc.recibado, cc.obs, cc.origem
,cc.evirs, cc.evirsreg, cc.eirsdif, cc.virs, cc.virsreg, cc.irsdif
from cc (nolock)

left join re (nolock) on cc.restamp = re.restamp
where 1=1
    and cc.no  in (select cc.no from cc (nolock)
                left join re (nolock) on cc.restamp = re.restamp
                where 1=1
                    and (case when cc.moeda ='PTE ou EURO' or cc.moeda=space(11) then abs((cc.edeb-cc.edebf)-(cc.ecred-cc.ecredf)) else abs((cc.debm-cc.debfm)-(cc.credm-cc.credfm)) end) > (case when cc.moeda='PTE ou EURO' or cc.moeda=space(11) then 0.010000 else 0 end) 
                    and origem='RD')

    and (case when cc.moeda ='PTE ou EURO' or cc.moeda=space(11) then abs((cc.edeb-cc.edebf)-(cc.ecred-cc.ecredf)) else abs((cc.debm-cc.debfm)-(cc.credm-cc.credfm)) end) > (case when cc.moeda='PTE ou EURO' or cc.moeda=space(11) then 0.010000 else 0 end) 
 order by cc.datalc,cc.cm,cc.nrdoc

Muito bom dia!

Agradeço-lhe muito, era mesmo isto!

Mais uma vez obrigado pela grande ajuda!

Os meus cumprimentos

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.