Ir para conteúdo
  • 0

Filtro Medida DRE por Empresa


chicopra
Ir para solução Solucionado por chicopra ,

Pergunta

  • Membros

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
  • Membros
  • 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
  • Membros
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
  • Membros
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
  • Membros
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
  • Membros
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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...