Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Valor do saldo total

Bom dia.

Eu de novo....

Preciso saber quanto de saldo tenho, no final de uma determinada data....

O que eu faço?

Exemplo:

Tenho milhares de produtos....

Centenas de Grupos de Produto...

Dezenas de almoxarifados...

Preciso em uma determinada data, por exemplo no dia 30/09/2014, informar QUANTO foi o valor que ficou em meu saldo...

Quer seria quantidade de saldo multiplicado pelo valor unitário de cada item em estoque, meu problema é saber como mostrar saldo do final do dia.... Não sei como fazer...

Somados estes saldos, terei valor do produto, do grupo, do almoxarifado, da garagem (empresa de ônibus), etc....

Meus campos são:

LOAD

     DATA                            AS        DT_HIST_SALDO,

     MonthStart(DATA)                 AS        dt_inicio_mes,

     MonthEnd(DATA)                    AS        DT_fim_mes,

     MonthEnd(AddMonths(DATA, -1))    AS        DT_ULTIMO_DIA_MES_ANTERIOR,

     CD_ALMOXARIFADO,

     CD_EMPRESA,

     QT_HISTORICO_SALDO,

     VL_MEDIO                        AS        VL_ITEM_SALDO,

     (QT_HISTORICO_SALDO * VL_MEDIO) AS        VL_TOTAL_SALDO,    

     DT_ULT_MOVIMENTACAO            AS        DT_ULT_MOV_SALDO           

FROM

Fonte\Suprimentos\historico_saldo.qvd

(qvd)

Se puderem dar mais esta força....

Obrigado.

Marcos.

1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

Em um dos painéis que temos, para achar este saldo em R$, este código foi feito (que nem seu se funciona), ainda não testei, mas a dúvida é, precisa realmente desse monte de código para mostrar isso?

// SALDOS

HIST_SALDO:

LOAD DISTINCT ID_PRODUTO RESIDENT PRODUTO;

LEFT JOIN

LOAD (ID_EMPRESA & '|' & ID_ALMOXARIFADO & '|' & ID_PRODUTO & '|' & DT_HISTORICO_SALDO) AS SK_HIST_SALDO,

     ID_ALMOXARIFADO,

     ID_PRODUTO,

     ID_EMPRESA,

     (QT_HISTORICO_SALDO*VL_MEDIO) AS SALDO_ESTOQUE,

     DT_HISTORICO_SALDO,

     MonthName(DT_HISTORICO_SALDO) AS [Mês do Saldo],

     Year(DT_HISTORICO_SALDO) as [Ano do Saldo]

FROM [Fonte\Suprimentos\historico_saldo.qvd] (qvd)

WHERE DT_HISTORICO_SALDO >=date#('01/01/2009')

and   DT_HISTORICO_SALDO <= DT_ULT_MOVIMENTACAO;

// Recupera a menor e maior data

TMP_MaxMinData:

LOAD

    Max(DT_HISTORICO_SALDO) AS Max,

    Min(DT_HISTORICO_SALDO) AS Min

Resident HIST_SALDO;   

LET vMaxOrderDate = Peek('Max');

LET vMinOrderDate = Peek('Min');

DROP Table TMP_MaxMinData;

// Gera tabela com as datas entre menor e maior data

CALENDARIO_TEMP1:

NoConcatenate

Load

    date(DT_HISTORICO_SALDO, 'DD/MM/YYYY') AS DT_HISTORICO_SALDO;

Load

    date('$(vMinOrderDate)' + Recno() - 1) as DT_HISTORICO_SALDO

AutoGenerate (YearEnd(vMaxOrderDate) - vMinOrderDate + 1);

// só recupera o dia primeiro de cada mês

HIST_SALDO_TEMP:

NoConcatenate

Load

    date(DT_HISTORICO_SALDO, 'DD/MM/YYYY') AS DT_HISTORICO

Resident CALENDARIO_TEMP1

where  day(DT_HISTORICO_SALDO) = day(MonthEnd(DT_HISTORICO_SALDO));

DROP Table CALENDARIO_TEMP1    ;

JOIN (HIST_SALDO_TEMP)

LOAD distinct ID_ALMOXARIFADO,

     ID_PRODUTO,

     ID_EMPRESA

Resident HIST_SALDO;

LEFT JOIN (HIST_SALDO_TEMP)

LOAD ID_ALMOXARIFADO,

     ID_PRODUTO,

     ID_EMPRESA,

     (ID_EMPRESA & '|' & ID_ALMOXARIFADO & '|' & ID_PRODUTO ) AS AGRUPADOR,

     SALDO_ESTOQUE,

     DT_HISTORICO_SALDO as DT_HISTORICO

Resident HIST_SALDO;

DROP TABLE HIST_SALDO;

HIST_SALDO:

NoConcatenate

LOAD

     DT_HISTORICO as DT_HISTORICO_SALDO,

     ID_ALMOXARIFADO,

     ID_PRODUTO,

     ID_EMPRESA,

     (ID_EMPRESA & '|' & ID_ALMOXARIFADO & '|' & ID_PRODUTO & '|' & DT_HISTORICO) AS SK_HIST_SALDO,

     MonthName(DT_HISTORICO) AS [Mês do Saldo],

     Year(DT_HISTORICO) as [Ano do Saldo],

           if(AGRUPADOR <> Previous(AGRUPADOR),

           if(isnull(SALDO_ESTOQUE),0,SALDO_ESTOQUE),

            if (isnull(SALDO_ESTOQUE),if(isnull(Previous(SALDO_ESTOQUE)),0,Peek('SALDO_ESTOQUE')),SALDO_ESTOQUE)) AS SALDO_ESTOQUE

Resident HIST_SALDO_TEMP

order by DT_HISTORICO, ID_ALMOXARIFADO, ID_PRODUTO, ID_EMPRESA;

DROP TABLE HIST_SALDO_TEMP;

View solution in original post

6 Replies
Not applicable
Author

Boa tarde Marco. Antes de avaliar sua pergunta, me chamou atenção você citar que trabalha com Empresa de Ônibus, sendo que também atuo exclusivamente nesta área a 15 anos.

Quanto ao saldo você já tentou:

Sum( If(Data <= MonthEnd(DATA), (QT_HISTORICO_SALDO * VL_MEDIO) ) as SaldoNoFinalDoMes

Anonymous
Not applicable
Author

Opa.... Trabalho na Rio Ita, somos um grupo de empresas com cerca de 1600 ônibus, aqui no Rio.....

Vou testar e te falo, obrigado pela ajuda....

Marcos.

Anonymous
Not applicable
Author

Em um dos painéis que temos, para achar este saldo em R$, este código foi feito (que nem seu se funciona), ainda não testei, mas a dúvida é, precisa realmente desse monte de código para mostrar isso?

// SALDOS

HIST_SALDO:

LOAD DISTINCT ID_PRODUTO RESIDENT PRODUTO;

LEFT JOIN

LOAD (ID_EMPRESA & '|' & ID_ALMOXARIFADO & '|' & ID_PRODUTO & '|' & DT_HISTORICO_SALDO) AS SK_HIST_SALDO,

     ID_ALMOXARIFADO,

     ID_PRODUTO,

     ID_EMPRESA,

     (QT_HISTORICO_SALDO*VL_MEDIO) AS SALDO_ESTOQUE,

     DT_HISTORICO_SALDO,

     MonthName(DT_HISTORICO_SALDO) AS [Mês do Saldo],

     Year(DT_HISTORICO_SALDO) as [Ano do Saldo]

FROM [Fonte\Suprimentos\historico_saldo.qvd] (qvd)

WHERE DT_HISTORICO_SALDO >=date#('01/01/2009')

and   DT_HISTORICO_SALDO <= DT_ULT_MOVIMENTACAO;

// Recupera a menor e maior data

TMP_MaxMinData:

LOAD

    Max(DT_HISTORICO_SALDO) AS Max,

    Min(DT_HISTORICO_SALDO) AS Min

Resident HIST_SALDO;   

LET vMaxOrderDate = Peek('Max');

LET vMinOrderDate = Peek('Min');

DROP Table TMP_MaxMinData;

// Gera tabela com as datas entre menor e maior data

CALENDARIO_TEMP1:

NoConcatenate

Load

    date(DT_HISTORICO_SALDO, 'DD/MM/YYYY') AS DT_HISTORICO_SALDO;

Load

    date('$(vMinOrderDate)' + Recno() - 1) as DT_HISTORICO_SALDO

AutoGenerate (YearEnd(vMaxOrderDate) - vMinOrderDate + 1);

// só recupera o dia primeiro de cada mês

HIST_SALDO_TEMP:

NoConcatenate

Load

    date(DT_HISTORICO_SALDO, 'DD/MM/YYYY') AS DT_HISTORICO

Resident CALENDARIO_TEMP1

where  day(DT_HISTORICO_SALDO) = day(MonthEnd(DT_HISTORICO_SALDO));

DROP Table CALENDARIO_TEMP1    ;

JOIN (HIST_SALDO_TEMP)

LOAD distinct ID_ALMOXARIFADO,

     ID_PRODUTO,

     ID_EMPRESA

Resident HIST_SALDO;

LEFT JOIN (HIST_SALDO_TEMP)

LOAD ID_ALMOXARIFADO,

     ID_PRODUTO,

     ID_EMPRESA,

     (ID_EMPRESA & '|' & ID_ALMOXARIFADO & '|' & ID_PRODUTO ) AS AGRUPADOR,

     SALDO_ESTOQUE,

     DT_HISTORICO_SALDO as DT_HISTORICO

Resident HIST_SALDO;

DROP TABLE HIST_SALDO;

HIST_SALDO:

NoConcatenate

LOAD

     DT_HISTORICO as DT_HISTORICO_SALDO,

     ID_ALMOXARIFADO,

     ID_PRODUTO,

     ID_EMPRESA,

     (ID_EMPRESA & '|' & ID_ALMOXARIFADO & '|' & ID_PRODUTO & '|' & DT_HISTORICO) AS SK_HIST_SALDO,

     MonthName(DT_HISTORICO) AS [Mês do Saldo],

     Year(DT_HISTORICO) as [Ano do Saldo],

           if(AGRUPADOR <> Previous(AGRUPADOR),

           if(isnull(SALDO_ESTOQUE),0,SALDO_ESTOQUE),

            if (isnull(SALDO_ESTOQUE),if(isnull(Previous(SALDO_ESTOQUE)),0,Peek('SALDO_ESTOQUE')),SALDO_ESTOQUE)) AS SALDO_ESTOQUE

Resident HIST_SALDO_TEMP

order by DT_HISTORICO, ID_ALMOXARIFADO, ID_PRODUTO, ID_EMPRESA;

DROP TABLE HIST_SALDO_TEMP;

Not applicable
Author

Olha o mundo é mesmo muito pequeno. Ano passado no congresso da ANTP aí no Rio de Janeiro mencionei o QlikView em uma palestra que apresentei, e em seguida o pessoa do seu grupo de empresas veio falar comigo sobre o QlikView. hehe. 

Abraço!

Not applicable
Author

Marcos

É difícil validar um código grande assim (principalmente verificar se existe uma forma mais simples) sem dados para testar. Você consegue gerar e postar aqui um exemplo .QVW ?

Clever_Anjos
Employee
Employee

Já conseguiu a resposta? Se sim, escolha uma e marque como "Correta" para fechar o tópico e nos ajudar a manter a comunidade organizada

Have fun, be Qlik