Ir para conteúdo
  • 0

Filtro Medida DRE por Empresa


chicopra
Ir para solução Solucionado por chicopra ,

Pergunta

  • Alunos

Fala galera,

Na medida que faço para calcular a DRE eu adicionei alguns níveis para que faça o cálculo do imposto de renda, conforme medida abaixo:

Realizado_Razão =
VAR varOrderContexto = MAX(Mascara[ORDEM])
VAR varValor = SUM('Razão Completo'[Movimento Mês])
VAR varValorSubtotal =
CALCULATE(
SUM('Razão Completo'[Movimento Mês]),
FILTER(
ALL(Mascara),
Mascara[ORDEM] <= varOrderContexto
)
)
VAR varSubtotal = SELECTEDVALUe(Mascara[Subtotal])
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal,
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal * -0.34,
varSubtotal = 3 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal + (varValorSubtotal * -0.34),
BLANK()
)

A máscara é a seguinte:

image.png.7ebe965ec05e515c8ccd0b927810989c.png

Ou seja, eu ignoro o a linha 13 no filtro e faço o cálculo utilizando a linha 14. Assim eu consigo fazer o cálculo do IR e CS por centro de custos.

Acontece que agora estou fazendo um resultado gerencial considerando a conta da pessoa jurídica e pessoa física. Ou seja, preciso utilizar a medida dessa forma para a empresa 1, e para quando for empresa 2, não considerar o cálculo do IR. O cálculo para a empresa 2 seria assim:

Realizado Razão =
VAR varOrderContexto = MAX(Mascara[ORDEM])
VAR varValor = SUM('Razão Completo'[valor])
VAR varValorSubtotal =
CALCULATE(
SUM('Razão Completo'[valor]),
FILTER(
ALL(Mascara),
Mascara[ORDEM] <= varOrderContexto
)
)
VAR varSubtotal = SELECTEDVALUE(Mascara[Subtotal])
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal,
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), BLANK(),
varSubtotal = 3 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal,
BLANK()
)

A fonte de dados é uma só. Eu faço a instrução pelo SQL e há uma coluna de Código Empresa. Porém eu preciso que a medida faça o cálculo considerando essa particularidade.

Alguém pode me ajudar?

Eu não consigo compartilhar o PBIX por confidencialidade, porém se precisarem de mais alguma informação eu vejo o que posso fazer.

Obrigado,

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Realizado Geral =
VAR varOrderContexto = MAX(Mascara[ORDEM])
VAR varValorPJ = calculate(SUM('Razão Completo'[valor]),KEEPFILTERS('Razão Completo'[Empresa] = 3))
VAR varValorSubtotalPJ =
CALCULATE(
SUM('Razão Completo'[valor]),
KEEPFILTERS('Razão Completo'[Empresa] = 3),
FILTER(
ALL(Mascara),
Mascara[ORDEM] <= varOrderContexto
)
)
VAR varSubtotal = SELECTEDVALUE(Mascara[Subtotal])
VAR varPJ =
SWITCH(
TRUE(),
varSubtotal = 0, varValorPJ,
varSubtotal = 1 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotalPJ,
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotalPJ * -0.34,
varSubtotal = 3 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotalPJ + (varValorSubtotalPJ * -0.34),
BLANK()
)
VAR varValorPF = calculate(SUM('Razão Completo'[valor]),KEEPFILTERS('Razão Completo'[Empresa] = 62))
VAR varValorSubtotalPF =
CALCULATE(
SUM('Razão Completo'[valor]),
KEEPFILTERS('Razão Completo'[Empresa] = 62),
FILTER(
ALL(Mascara),
Mascara[ORDEM] <= varOrderContexto
)
)
VAR varPF =
SWITCH(
TRUE(),
varSubtotal = 0, varValorPF,
varSubtotal = 1 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotalPF,
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), BLANK(),
varSubtotal = 3 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotalPF,
BLANK()
)
RETURN
varPF + varPJ
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 horas atrás, chicopra disse:

Fala galera,

Na medida que faço para calcular a DRE eu adicionei alguns níveis para que faça o cálculo do imposto de renda, conforme medida abaixo:

Realizado_Razão =
VAR varOrderContexto = MAX(Mascara[ORDEM])
VAR varValor = SUM('Razão Completo'[Movimento Mês])
VAR varValorSubtotal =
CALCULATE(
SUM('Razão Completo'[Movimento Mês]),
FILTER(
ALL(Mascara),
Mascara[ORDEM] <= varOrderContexto
)
)
VAR varSubtotal = SELECTEDVALUe(Mascara[Subtotal])
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal,
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal * -0.34,
varSubtotal = 3 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal + (varValorSubtotal * -0.34),
BLANK()
)

A máscara é a seguinte:

image.png.7ebe965ec05e515c8ccd0b927810989c.png

Ou seja, eu ignoro o a linha 13 no filtro e faço o cálculo utilizando a linha 14. Assim eu consigo fazer o cálculo do IR e CS por centro de custos.

Acontece que agora estou fazendo um resultado gerencial considerando a conta da pessoa jurídica e pessoa física. Ou seja, preciso utilizar a medida dessa forma para a empresa 1, e para quando for empresa 2, não considerar o cálculo do IR. O cálculo para a empresa 2 seria assim:

Realizado Razão =
VAR varOrderContexto = MAX(Mascara[ORDEM])
VAR varValor = SUM('Razão Completo'[valor])
VAR varValorSubtotal =
CALCULATE(
SUM('Razão Completo'[valor]),
FILTER(
ALL(Mascara),
Mascara[ORDEM] <= varOrderContexto
)
)
VAR varSubtotal = SELECTEDVALUE(Mascara[Subtotal])
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal,
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), BLANK(),
varSubtotal = 3 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal,
BLANK()
)

A fonte de dados é uma só. Eu faço a instrução pelo SQL e há uma coluna de Código Empresa. Porém eu preciso que a medida faça o cálculo considerando essa particularidade.

Alguém pode me ajudar?

Eu não consigo compartilhar o PBIX por confidencialidade, porém se precisarem de mais alguma informação eu vejo o que posso fazer.

Obrigado,

Cara difícil falar assim mas acho que se vc usar dentro dessa switch uma condição a mais tipo :

varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])) && selectedvalue(dempresacod) = 2 , BLANK(),
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4]) && selectedvalue(dempresacod) = 1, varValorSubtotal * -0.34

obviamente a tabela tem que estar relacionada com a fato.

acho que pode dar certo.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
26 minutos atrás, Joao Barbosa disse:

Cara difícil falar assim mas acho que se vc usar dentro dessa switch uma condição a mais tipo :

varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])) && selectedvalue(dempresacod) = 2 , BLANK(),
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4]) && selectedvalue(dempresacod) = 1, varValorSubtotal * -0.34

obviamente a tabela tem que estar relacionada com a fato.

acho que pode dar certo.

Putz.. eu cheguei a fazer isso, mas ele faz o cálculo quando uma das duas está filtrada. Ou seja, quando eu filtro a filial 1 ele faz o cálculo do IR, quando filtro a 2 ele não faz, mas quando as duas estão selecionadas a matriz inteira dá erro.

O modelo é esse:

image.png.3a931cc952fc34a482f742533f86a927.png

O Código da empresa está nas tabelas Razão (Empresa) e Plano centro de custos (codemp), pois o plano de contas utilizado é um só, mas são dois planos de custos.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
19 horas atrás, chicopra disse:

Putz.. eu cheguei a fazer isso, mas ele faz o cálculo quando uma das duas está filtrada. Ou seja, quando eu filtro a filial 1 ele faz o cálculo do IR, quando filtro a 2 ele não faz, mas quando as duas estão selecionadas a matriz inteira dá erro.

O modelo é esse:

image.png.3a931cc952fc34a482f742533f86a927.png

O Código da empresa está nas tabelas Razão (Empresa) e Plano centro de custos (codemp), pois o plano de contas utilizado é um só, mas são dois planos de custos.

Vai dar erro pq a switch não tem uma condição para quando as 2 estão selecionadas a switch segue uma sequencia de true() ,
então creio que se vc jogar após essas condições a condição de ambas selecionadas ou  seja a condição inicial deverá dar certo.

varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])) && selectedvalue(dempresacod) = 2 , BLANK(), se estiver selecionado a 2 vai trazer aqui
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4]) && selectedvalue(dempresacod) = 1, varValorSubtotal * -0.34 depois se tiver a 1 aqui
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])) && not(hasonefilter(dempresacod)), BLANK(), se tiver as 2 aqui

acho que pode funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, Joao Barbosa disse:

Vai dar erro pq a switch não tem uma condição para quando as 2 estão selecionadas a switch segue uma sequencia de true() ,
então creio que se vc jogar após essas condições a condição de ambas selecionadas ou  seja a condição inicial deverá dar certo.

varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])) && selectedvalue(dempresacod) = 2 , BLANK(), se estiver selecionado a 2 vai trazer aqui
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4]) && selectedvalue(dempresacod) = 1, varValorSubtotal * -0.34 depois se tiver a 1 aqui
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])) && not(hasonefilter(dempresacod)), BLANK(), se tiver as 2 aqui

acho que pode funcionar.

Na verdade quando não tiver nenhum filtro, para o Subtotal 2 ela tem que cálcular os 34% para a empresa PJ (empresa 3) e retornar blank para a PF (empresa 62).

E na subtotal 3 a mesma coisa, considerar o 34% para a PJ, mas para a PF não.

A única forma que consegui agora e que deu certo, foi fazendo uma medida para a PJ, depois outra para a PF e fazendo uma medida somando as duas. Mas não consegui juntar essa informação em uma única medida (utilizando o keepfilters nas variáveis). As medidas criadas foram:
PAra PF:

FILTER(
ALL(Mascara),
Mascara[ORDEM] <= varOrderContexto
)
)

Para PJ:

Realizado Razão PJ =
VAR varOrderContexto = MAX(Mascara[ORDEM])
VAR varValor = calculate(SUM('Razão Completo'[valor]),KEEPFILTERS('Razão Completo'[Empresa] = 3))
VAR varValorSubtotal =
CALCULATE(
SUM('Razão Completo'[valor]),
KEEPFILTERS('Razão Completo'[Empresa] = 3),
FILTER(
ALL(Mascara),
Mascara[ORDEM] <= varOrderContexto
)
)
VAR varSubtotal = SELECTEDVALUE(Mascara[Subtotal])
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal,
varSubtotal = 2 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal * -0.34,
varSubtotal = 3 && NOT(ISINSCOPE(Plano_de_Contas[NÍVEL 4])), varValorSubtotal + varValorSubtotal + (varValorSubtotal * -0.34),
BLANK()
)

Totalizando:

Realizado Total =
[Realizado Razão PF] + [Realizado Razão PJ]

Não sei como juntar. Pode colocar mais de um RETURN em uma única medida?

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...