Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
dairan73
Contributor III
Contributor III

Divergência de valores

Boa tarde,

Estou com um problema que não estou conseguindo identificar o porque acontece.

Tenho o código abaixo:

[Estornos]:

LOAD [Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária] as [ChaveEstornoFiltro]   

FROM

(qvd)

Where [Cod. Tipo Movimentação Bancária] = 'ES';

Tabela:

LOAD

  *

FROM

(qvd)

Where

  Not Exists ([ChaveEstornoFiltro],[Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária])

Drop Table Estornos;

A ideia deste código é pegar todos os estornos e depois excluir da Tabela quem tem essa Chave (que possui estorno).

Ao rodar apenas esta parte do código, tudo funciona.

E depois tenho um código que pega e cria registros até o saldo ser zerado ou até hoje. (Através deste tópico: Re: Criar registros diários)

O problema está que se uso este "Not Exists" o resultado é esse:

2017-03-28 - 001.png

A coluna "teste" é o cálculo ValorLiquidoTitulo - TotalValorMovimentacao, mas como 470,67 - 470,67 resulta em 5,6843418860808e-014 ??


Mas se eu remover a parte do Not Exists da Tabela, tudo funciona normal: (Os valores de movimentação são diferentes pois sem o Not Exists ele está considerando estornos também)

2017-03-28 - 002.png


Alguém tem alguma ideia do que pode ser isto?

Labels (1)
45 Replies
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Mas na sua lógica, as tabelas "Estornos" e "Tabela" não estão conversando com o restante da estrutura;


O que defini exatamente a regra para excluir os registros? Para podermos criar um algorítimo necessário para atender os critérios.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
mauroponte
Creator II
Creator II

Douglas,

Tente com o QVW que estou Anxando.

dairan73
Contributor III
Contributor III
Author

Rodei seu teste sem o exit script e deu o seguinte erro:

Combinação de prefixos inválida

Left Join (temp_Extrato) 

NoConcatenate

Load 

  ChaveTitulo, 

  DataMovimentacao As Data, 

  ValorMovimentacao

Sobre estornos e a tabela, realmente, depois de tantos testes que fiz, neste que postei esqueci de linkar haha

Mas a ideia é a seguinte:

Criar a "Estornos" pra pegar e montar ChaveEstornoFiltro, com todos os registros do tipo "ES".

Após isto leio a tabela de movimentações, que chamei de "Tabela" onde estas chaves "ChaveEstornoFiltro" não existem, assim tenho uma tabela sem os estornos. E partir dessa tabela gostaria de utilizar a sua lógica para criação do histórico. Mas aparece este valor maluco no "SaldoDevedor"

dairan73
Contributor III
Contributor III
Author

Com este seu script ele parou de criar no dia da última movimentação (quando recebeu 200,67), porém no saldo devedor olha o número maluco que mostra haha

2017-03-28 - 004.png

No saldo devedor ele soma os 270 (valor acumulado) + valor movimentação (200,67) e diminuiu do ValorLiquidoTitulo (470,67) pra ver se a pessoa ainda deve ou não.

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo, vamos tratar este erro primeiro sem o Exists;

Segue script:

Obs.: Estou considerando suas seções Main 2 e Main;

Alterei algumas coisas.

Main 2:

$(Include=..\1.config\config_geral.txt);

PreviaTitulosInadimplentes:

LOAD

  ChaveTitulosReceber as 'ChaveTitulo',

  [Data Emissão Título a Receber] as 'DataEmissao',

  [Data Vencimento Título a Receber] as 'DataVencimento',

  numsum(num([Valor Título a Receber]),num(-[Valor IRRF Título a Receber])) as 'ValorLiquidoTitulo'

FROM

(qvd)

Where Not Match([Tipo Título a Receber],'CF-','CS-','IR-','PI-','AB-')

And [Data Emissão Título a Receber] >= makedate($(vAnoFinan),01,01);

Left Join(PreviaTitulosInadimplentes)

LOAD

  ChaveTitulosReceber as 'ChaveTitulo',

  [Data Movimentação Bancária] as 'DataMovimentacao',

  sum([Valor Movimentação Bancária]) as 'ValorMovimentacao'

FROM

(qvd)

GROUP BY ChaveTitulosReceber, [Data Movimentação Bancária];

Main:

SET vTabelaTrf  = 'TitulosInadimplentes';

temp_Extrato:

NoConcatenate

//Preenchendo_Intervalos_Datas

LOAD

  ChaveTitulo,  DataEmissao,  DataVencimento,  TotalValorMovimentacao,

  [ValorLiquidoTitulo],

  ValorLiquidoTitulo-TotalValorMovimentacao  as teste,

  IterNo() As 'Dia',

  Date(DataEmissao + IterNo() - 1,'DD/MM/YYYY') As 'Data'

While DataEmissao + IterNo() - 1 <= If(MaxDataMov<=DataVencimento, DataVencimento,

  If(TotalValorMovimentacao<ValorLiquidoTitulo, Today(), MaxDataMov));

//Agrupamento

LOAD

  ChaveTitulo,

  Only(DataEmissao) As 'DataEmissao',

  Only(DataVencimento) As 'DataVencimento',

  Max(DataMovimentacao) As 'MaxDataMov',

  Sum(ValorMovimentacao) As 'TotalValorMovimentacao',

  Only([ValorLiquidoTitulo]) As 'ValorLiquidoTitulo'

Group By ChaveTitulo;

//Dados da fonte

LOAD

ChaveTitulo, DataEmissao, DataVencimento, DataMovimentacao, ValorMovimentacao, ValorLiquidoTitulo

Resident PreviaTitulosInadimplentes

Where ChaveTitulo = 'MVN|003498|FT|   |01|050813';

Left Join (temp_Extrato)

//Dados da fonte

Load

  ChaveTitulo,

  DataMovimentacao As 'Data',

  ValorMovimentacao;

LOAD 

ChaveTitulo, DataMovimentacao, ValorMovimentacao

Resident PreviaTitulosInadimplentes

Where ChaveTitulo = 'MVN|003498|FT|   |01|050813';

DROP TABLE PreviaTitulosInadimplentes;

  

$(vTabelaTrf):

NoConcatenate Load

  ChaveTitulo as 'ChaveTitulosReceber',

  ChaveTitulo&'|'&Year([Data])&'|'&Month([Data])&'|'&Day([Data]) as 'ChaveLinkTable', 

  DataEmissao,

  DataVencimento,

  TotalValorMovimentacao,

  ValorLiquidoTitulo,

  Dia as 'Dia Inadimplência',

  Data as 'Data Inadimplência',

  ValorMovimentacao,

  Rangesum(

      If(ChaveTitulo = Previous(ChaveTitulo),

      rangesum(ValorMovimentacao, Peek(ValorMovAcumulado))

        , ValorMovimentacao)

  ) As 'ValorMovAcumulado',

  [ValorLiquidoTitulo]-Rangesum(

      If(ChaveTitulo = Previous(ChaveTitulo),

      Rangesum(ValorMovimentacao, Peek(ValorMovAcumulado))

        , ValorMovimentacao)

  ) As 'SaldoDevedor',

    

  If(

      Rangesum(

          if(ChaveTitulo = Previous(ChaveTitulo),

              Rangesum(ValorMovimentacao, Peek(ValorMovAcumulado))

          , ValorMovimentacao)

      )

        < ValorLiquidoTitulo,

    'Devedor',

    'Não Devedor'

  ) As 'Situação Cliente Inadimplência',

  If((

      Rangesum(

          if(ChaveTitulo = Previous(ChaveTitulo),

              Rangesum(ValorMovimentacao, Peek(ValorMovAcumulado))

          , ValorMovimentacao)

      )

        < ValorLiquidoTitulo) And Data > DataVencimento,

    'Inadimplente',

    'Não Inadimplente'

  ) As 'Situação Inadimplência'      

Resident temp_Extrato Order By ChaveTitulo, Data Asc;

Drop Table temp_Extrato;

        , ValorMovimentacao)

  ) As 'SaldoDevedor',

    

  If(

      Rangesum(

          if(ChaveTitulo = Previous(ChaveTitulo),

              Rangesum(ValorMovimentacao, Peek(ValorMovAcumulado))

          , ValorMovimentacao)

      )

        < ValorLiquidoTitulo,

    'Devedor',

    'Não Devedor'

  ) As 'Situação Cliente Inadimplência',

  If((

      Rangesum(

          if(ChaveTitulo = Previous(ChaveTitulo),

              Rangesum(ValorMovimentacao, Peek(ValorMovAcumulado))

          , ValorMovimentacao)

      )

        < ValorLiquidoTitulo) And Data > DataVencimento,

    'Inadimplente',

    'Não Inadimplente'

  ) As 'Situação Inadimplência'      

Resident temp_Extrato Order By ChaveTitulo, Data Asc;

Drop Table temp_Extrato;

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
mauroponte
Creator II
Creator II

Douglas,

Tente formatar a coluna saldo devedor da tabela.

tela1.png

dairan73
Contributor III
Contributor III
Author

Assim ele funciona sem problema nenhum.

Agora só preciso tirar as chaves dos tipo de movimentações ES, por isso fiz aquilo do Not Exists..

dairan73
Contributor III
Contributor III
Author

Mas se eu coloco um objeto de texto com o cálculo valor do titulo - valor movimentado, aparece aquele número maluco também

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Isso já é um avanço;

Pois estava apresentando erro no Left Join

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
dairan73
Contributor III
Contributor III
Author

Sim, mas como comentei na abertura do tópico, se não coloco esse Not Exists, tudo funciona certinho com teu script, porém pega movimentações de estornos (ES)