none
Função de pesquisa títulos urgente!! RRS feed

  • Pergunta

  • boa tarde pessoal,

    Tenho a seguinte situação: um título no contas a receber no valor de 1.000,00. Esse título precisa sair na minha consulta se tiver saldo pendente em função de uma data de movimento.

    Exemplo:         
    Emissão de título ABC em 01/11/13 valor de R$ 1.000,00.                                
    Baixa parcial -> 10/11/13 de R$ 400,00  
    (resta um saldo de R$ 600,00)           
    Baixa parcial -> 18/11/13 de R$ 200,00  
    (resta um saldo de R$ 400,00).

    O sistema possui basicamente nesse caso duas tabelas envolvidas SE1 que é a de títulos a receber e SE5 que são os movimentos de baixas que forem geradas dos títulos.

    O sistema tem dois campos E1_VALOR e E1_SALDO sendo o E1_VALOR armazena sempre o valor original do título e o E1_SALDO o saldo pendente de recebimento, a medida que o cliente vai pagando esse saldo vai reduzindo até zerar.

    Considerando o exemplo acima, na tabela de títulos a receber SE1 o E1_VALOR será igual a 1.000 e o E1_SALDO será igual a 400,00. Vai existir dois registros de movimentos (tabela SE5) um no valor de 400,00 com data de 10/11/2013 e outro no valor de 200,00 com data de 18/11/2013 que representam as baixas parciais efetuadas.

    Preciso desenvolver uma função ou procedure no sql server que me dê o saldo do título numa data de baixa especificada pelo usuário, independente do saldo atual do título. No exemplo acima vamos supor que o usuário emita o relatório com data de 12/11/2013, se for dar um select apenas na SE1 vai trazer o saldo de 400,00 mas na verdade preciso que traga o saldo de 600,00 pois na data de 12/11/13 esse era o saldo do título.

     

    Alguém poderia me ajudar a montar essa função? Note que o resultado seria apenas 1 único registro pois existem apenas um título ABC na tabela SE1.

    Para ajudar vou deixar aqui um exemplo da tabela já com os campos (as tabelas se relacionam em função do título):

    Títulos:

    E1_TITULO   E1_EMISSAO    E1_VALOR   E1_SALDO     E1_BAIXA        CHAVE    STATUS

    ABC               01/11/2013     1000            400              18/11/2013     1001       ABERTO

    Movimentos:

    E5_TITULO    E5_DATA            E5_VALOR   CHAVE

    ABC              10/11/2013        400              2020

    ABC              18/11/2013        200              2021

    Então preciso que o resultado seja algo assim para data informada de 12/11/2013:

    E1_TITULO     E1_VALOR   SALDO    

    ABC                1.000           600    


    Rodrigo Santos

    terça-feira, 26 de novembro de 2013 19:21

Respostas

Todas as Respostas

  • Boa tarde,

    Experimente mais ou menos dessa forma:

    select
        e1.E1_TITULO,
        e1.E1_VALOR,
        e1.E1_VALOR - 
        COALESCE
            ((SELECT SUM(e5.E5_VALOR) FROM SE5 AS e5
              WHERE 
                  e5.TITULO = e1.TITULO AND
                  e5.DATA <= '2013/11/12'), 0) AS SALDO
    from SE1 as e1

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    terça-feira, 26 de novembro de 2013 19:34
  • Rodrigo, tente dessa forma:

    SELECT E1_NUM, E1_VALOR, E1_VALOR-(
    	SELECT SUM(E5_VALOR) 
    	FROM SE5010 
    	WHERE D_E_L_E_T_ <> '*' AND
    	E5_FILIAL = '01' AND 
    	E5_PREFIXO = E1_PREFIXO AND
    	E5_NUMERO = E1_NUM AND
    	E5_PARCELA = E1_PARCELA AND
    	E5_DATA <= '20131112') AS SALDO
    FROM SE1010 
    WHERE D_E_L_E_T_ <> '*' AND
    E1_FILIAL = '01'

    Deve funcionar!
    Abraço!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    terça-feira, 26 de novembro de 2013 19:35
  • Deleted
    terça-feira, 26 de novembro de 2013 19:43
  • Deleted
    terça-feira, 26 de novembro de 2013 19:53
  • valeu pessoal,

    muito obrigado pela ajuda.

    É kanaãm, eu procuro ajudar ao máximo, para que a pessoa consiga me ajudar também, alias, é a segunda vez que o gapimex me ajuda...  vi que vocês pensaram quase que na mesma hora com soluções bem parecidas.

    mais uma vez obrigado


    Rodrigo Santos

    terça-feira, 26 de novembro de 2013 19:59
  • José, utilizamos Protheus aqui na empresa sim.

    Na verdade eu sou analista Protheus, porém também trabalho com o bd, cubos, .NET e afins.


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    terça-feira, 26 de novembro de 2013 20:22