× Linguagem de Programação ADVPL

Perguntas Relatório com data retroativa

Mais
10 anos 3 meses atrás - 10 anos 3 meses atrás #24188 por miquilino

Arquivo Anexo:

Nome do Arquivo: mkr029.rar
Tamanho do Arquivo:3 KB


Bom dia!
Possuimos um relatório customizado de Aging List, porem ele só busca a informação da data atual, já tentei alterar a database para uma data retroativa, mas mesmo assim os saldos aparecem apenas com a data atual (de hoje), como eu posso trabalhar o fonte para que ele busque as informações (ex: saldo dos clientes neste caso) em uma data retroativa?

Em anexo segue o fonte.

Obrigado.

Fernando Silva
Anexos:
Ultima edição: 10 anos 3 meses atrás por miquilino.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24189 por AndersonBR
Respondido por AndersonBR no tópico Relatório com data retroativa
Fernando, tive o mesmo problema algum tempo atrás, a solução que encontrei foi tratar o SE1 x SE5, segue a minha select principal (faço praticamente todo tratamento de data base nela), se ficar alguma dúvida posta aí.
	BeginSQL Alias "SK_"
		Column E1_SALDO As Numeric(15,2)                                                
		Column E1_VENCREA As Date
		Column A1_ULTCOM As Date
      /*
		SELECT E1_CLIENTE, E1_LOJA, E1_SALDO, E1_VENCREA, A1_VEND, E1_STATUS, A3_GEREN, A1_ULTCOM, E1_VALOR,
		       (
		         select SUM(E5_VALOR-E5_VLJUROS-E5_VLMULTA+E5_VLDESCO) from %Table:SE5% SE5 
		         where (E5_TIPODOC = 'VL' or E5_TIPODOC = 'BA' or E5_TIPODOC = 'CP') and 
		               E5_DATA > %Exp:DtBase% and
		               E5_RECPAG = 'R' and 
		               E5_CLIFOR = E1_CLIENTE and
		               E5_TIPO = E1_TIPO and 
		               E5_PREFIXO = E1_PREFIXO and 
		               E5_NUMERO = E1_NUM and 
		               E5_PARCELA = E1_PARCELA// and
		               //SE5.%NotDel%
		       ) as E5_VLR,
		       (
		         select SUM(E5_VALOR-E5_VLJUROS-E5_VLMULTA+E5_VLDESCO) from %Table:SE5% SE5
		         where E5_TIPODOC = 'ES' and 
		               E5_DATA > %Exp:DtBase% and
		               E5_RECPAG = 'P' and
		               E5_CLIFOR = E1_CLIENTE and 
		               E5_TIPO = E1_TIPO and
		               E5_PREFIXO = E1_PREFIXO and 
                       E5_NUMERO = E1_NUM and 
                       E5_PARCELA = E1_PARCELA
                       //SE5.%NotDel%
		       ) as E5_EST
		FROM %Table:SE1% SE1
		
		LEFT JOIN %Table:SA1% SA1 ON E1_CLIENTE+E1_LOJA=A1_COD+A1_LOJA
		LEFT JOIN %Table:SA3% SA3 ON A1_VEND=A3_COD
		
		WHERE E1_FILIAL = %xFilial:SE1% AND 
		      E1_VENCREA < %Exp:DtBase% AND
		      E1_EMISSAO >= %Exp:EmissaoIn% AND 
		      E1_EMISSAO <= %Exp:EmissaoFn% AND
		      (E1_BAIXA > %Exp:DtBase% or E1_BAIXA = '        '  or E1_SALDO > 0) and
		      E1_TIPO <> 'RA' and 
		      E1_TIPO <> 'NCC' and 
		      E1_TIPO <> 'DEB' and      
		      SE1.%NotDel%
		      %Exp:cQuery%
		 */
			select E1_CLIENTE, E1_LOJA, E1_SALDO, E1_VENCREA, E1_VALOR, A1_VEND, A3_GEREN, A1_ULTCOM,
			   (
			      select SUM(E5_VALOR-E5_VLJUROS-E5_VLMULTA+E5_VLDESCO) from %Table:SE5% SE5 
			      where (E5_TIPODOC = 'VL' or E5_TIPODOC = 'BA' or E5_TIPODOC = 'CP') and 
			            E5_DATA > %Exp:DtBase% and 
			            E5_RECPAG = 'R' and 
			            E1_CLIENTE = E5_CLIFOR and 
			            E5_TIPO = E1_TIPO and 
			            E5_PREFIXO = E1_PREFIXO and 
			            E5_NUMERO = E1_NUM and 
			            E5_PARCELA = E1_PARCELA
			   ) as E5_VLR,
			   (
			      select SUM(E5_VALOR-E5_VLJUROS-E5_VLMULTA+E5_VLDESCO) from %Table:SE5% SE5
			      where E5_TIPODOC = 'ES' and 
			            E5_DATA > %Exp:DtBase% and 
			            E5_RECPAG = 'P' and 
			            E1_CLIENTE = E5_CLIENTE and 
			            E5_TIPO = E1_TIPO and 
			            E5_PREFIXO = E1_PREFIXO and 
			            E5_NUMERO = E1_NUM and
			            E5_PARCELA = E1_PARCELA
			   ) as E5_EST
			from %Table:SE1% SE1

			LEFT JOIN %Table:SA1% SA1 ON E1_CLIENTE+E1_LOJA=A1_COD+A1_LOJA
			LEFT JOIN %Table:SA3% SA3 ON A1_VEND=A3_COD

			where E1_FILIAL = %xFilial:SE1% and
			      E1_VENCREA < %Exp:DtBase% and 
			      E1_EMISSAO >= %Exp:EmissaoIn% and 
			      E1_EMISSAO <= %Exp:EmissaoFn% and 
			      (E1_BAIXA > %Exp:DtBase% or E1_BAIXA = '        ' or E1_SALDO > 0) and 
			      E1_TIPO <> 'RA' and 
			      E1_TIPO <> 'NCC' and 
			      E1_TIPO <> 'DEB' and
			      SE1.%NotDel%
	EndSql

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24192 por miquilino
Respondido por miquilino no tópico Relatório com data retroativa
Obrigado Anderson.

Será que no meu fonte eu precisarei mudar muito? A estrutura dele não está por Query, está por DbSelectArea ....

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24197 por AndersonBR
Respondido por AndersonBR no tópico Relatório com data retroativa
Dei uma olhada no fonte, vai ter que mudar um pouco, mas nada muito exagerado. Onde você passa pelo título, você inclui uma checagem de baixa, faz a busca dessa baixa na SE5 veja qual a data e o valor da baixa e use esse valor para compor o valor do saldo caso a baixa seja posterior a Data Base.

Não se esqueça dos campos de Juros e multa, na select que passei tem a conta certinha para pegar o valor correto da E5, acho que com mais umas 15, 20 linhas vc resolve o problema.

Se precisar de ajuda me adiciona no Skype: anderson.barbosa.btu

Abraço.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.103 segundos
Joomla templates by a4joomla