Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
Where [Cod. Tipo Movimentação Bancária] = 'ES';
Tabela:
LOAD
*
FROM
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:
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)
Alguém tem alguma ideia do que pode ser isto?
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.
Douglas,
Tente com o QVW que estou Anxando.
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"
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
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.
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;
Douglas,
Tente formatar a coluna saldo devedor da tabela.
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..
Mas se eu coloco um objeto de texto com o cálculo valor do titulo - valor movimentado, aparece aquele número maluco também
Isso já é um avanço;
Pois estava apresentando erro no Left Join
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)