Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia,
Tenho os seguintes dados:
Preciso criar uma regra que some as quantidades apenas de almoxarifados específicos e depois uma coluna para validar se existe estoque disponível ou não; por exemplo só posso movimentar estoque nos almox A e B, e eu preciso que a coluna disponibilidade calcule o subtotal das quantidades por código.
CODIGO | NECESSIDADE | QUANTIDADE | ALMOX | DISPON |
1111 | 200 | 100 | A | Disponivel |
1111 | 200 | 300 | B | Disponivel |
2222 | 500 | 500 | C | Indisponivel |
2222 | 500 | 0 | A | Indisponível |
3333 | 100 | 0 | Indisponível | |
4444 | 200 | 100 | A | Parcial |
4444 | 200 | 50 | B | Parcial |
Tentei o segundo IF para criar uma dimensão mestre, porém sem sucesso:
=IF(sum(TOTAL <CODIGO> [QTD_DISPONIVEL_INVS]) >= [NECESSIDADE], 'NÃO Disponível' ,
if(sum(TOAL <CODIGO> [QTD_DISPONIVEL_INVS]) >0, 'Parcial', 'indisponível'))
Samuel,
Altere as tabelas edit2 e [TABELA FINAL] para:
[edit2]:
Load
[CODIGO],
SUM([NECESSIDADE]) AS [SOMA_NECESSIDADE]
RESIDENT [Edit]
Group by [CODIGO];
[TABELA FINAL]:
Load
CODIGO,
[DESCRICAO],
NECESSIDADE,
[DATA_NECESSIDADE],
[Kanban],
[DT_RECEBIMENTO],
[SUBINVENTORY_CODE],
[QTD_DISPONIVEL],
[LOT_NUMBER],
[PLANNER_CODE],
[ENDERECO],
[class. INV],
IF(QTD_DISPONIVEL >= SOMA_NECESSIDADE AND MATCH(SUBINVENTORY_CODE,'CD-PA-REV','CD-PICKING','AC-INSP','CD-REC','EMBALAGEM','EXPEDICAO'),
'DISPONÍVEL',
IF(QTD_DISPONIVEL > 0 AND QTD_DISPONIVEL < SOMA_NECESSIDADE, 'PARCIAL', 'INDISPONÍVEL')
) AS DISPONIBILIDADE
Resident Edit;
Drop table [Edit];
Samuel,
Se entendi bem a sua necessidade, permita-me sugerir algo:
Expressão para a coluna "DISPON"
If( Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) >= Sum(Aggr(Sum([NECESSIDADE]),CODIGO))
and Match(ALMOX,'A','B'), 'Disponível',
If( Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) > 0 and Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) < Sum(Aggr(Sum([NECESSIDADE]),CODIGO)) ,
'Parcial'
),
'Indisponível'
)
Thiago,
Obrigado pela ajuda, porém não consigo utilizar a expressão. Está reportando o seguinte erro:
"Error in exression: If takes 2-3 parameters"
Falha minha:
If( Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) >= Sum(Aggr(Sum([NECESSIDADE]),CODIGO))
and Match(ALMOX,'A','B'), 'Disponível',
If( Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) > 0 and Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) < Sum(Aggr(Sum([NECESSIDADE]),CODIGO)) ,
'Parcial',
'Indisponível')
)
Eu entendi o sentido da expressão, eu consegui criá-la sem erro, porém a tabela não é gerada,
por reportar: "Dimensão Inválida". Estranho.
Quer mandar um qvf para eu testar outras soluções?
Não consegui colocar aqui segue link do drive:
Movimentações Insumos.qvf - Google Drive
Essa expressão funciona como "Medida" apenas, não como dimensão calculada:
If(Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) >= Sum(Aggr(Sum([NECESSIDADE]),CODIGO))
and Match(SUBINVENTORY_CODE,'CD-PA-REV','CD-PICKING','AC-INSP','CD-REC','EMBALAGEM','EXPEDICAO'), 'Disponível',
If(Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) > 0 and Sum(Aggr(Sum([QTD_DISPONIVEL_INVS]),CODIGO)) < Sum(Aggr(Sum([NECESSIDADE]),CODIGO)) ,
'Parcial',
'Indisponível')
)
Mas pode criar um campo DISPONIBILIDADE direto no script:
SUA_TABELA_TEMP:
LOAD
CODIGO,
SUBINVENTORY_CODE,
NECESSIDADE,
QTD_DISPONIVEL_INVS,
OUTROS_CAMPOS
FROM SUA_BASE;
//FAZ UM SUM AGRUPADO POR CODIGO PRA USAR DEPOIS...
LEFT JOIN (SUA_TABELA_TEMP)
LOAD
CODIGO,
Sum([QTD_DISPONIVEL_INVS]) as [SOMA_QTD_DISPONIVEL_INVS],
Sum([NECESSIDADE]) as [SOMA_NECESSIDADE]
RESIDENT SUA_TABELA_TEMP GROUP BY CODIGO;
SUA_TABELA_FINAL:
LOAD
CODIGO,
SUBINVENTORY_CODE,
NECESSIDADE,
QTD_DISPONIVEL_INVS,
OUTROS_CAMPOS,
IF(SOMA_QTD_DISPONIVEL_INVS >= SOMA_NECESSIDADE AND MATCH(SUBINVENTORY_CODE,'CD-PA-REV','CD-PICKING','AC-INSP','CD-REC','EMBALAGEM','EXPEDICAO'),
'DISPONÍVEL',
IF(SOMA_QTD_DISPONIVEL_INVS > 0 AND SOMA_QTD_DISPONIVEL_INVS < SOMA_NECESSIDADE, 'PARCIAL', 'INDISPONÍVEL')
) AS DISPONIBILIDADE
RESIDENT SUA_TABELA_TEMP;
DROP TABLE SUA_TABELA_TEMP;
Thiago,
Infelizmente não funcionou, ele ainda está olhando por linha:
Segue QVF: Movimentações Insumos.qvf - Google Drive
Samuel,
Altere as tabelas edit2 e [TABELA FINAL] para:
[edit2]:
Load
[CODIGO],
SUM([NECESSIDADE]) AS [SOMA_NECESSIDADE]
RESIDENT [Edit]
Group by [CODIGO];
[TABELA FINAL]:
Load
CODIGO,
[DESCRICAO],
NECESSIDADE,
[DATA_NECESSIDADE],
[Kanban],
[DT_RECEBIMENTO],
[SUBINVENTORY_CODE],
[QTD_DISPONIVEL],
[LOT_NUMBER],
[PLANNER_CODE],
[ENDERECO],
[class. INV],
IF(QTD_DISPONIVEL >= SOMA_NECESSIDADE AND MATCH(SUBINVENTORY_CODE,'CD-PA-REV','CD-PICKING','AC-INSP','CD-REC','EMBALAGEM','EXPEDICAO'),
'DISPONÍVEL',
IF(QTD_DISPONIVEL > 0 AND QTD_DISPONIVEL < SOMA_NECESSIDADE, 'PARCIAL', 'INDISPONÍVEL')
) AS DISPONIBILIDADE
Resident Edit;
Drop table [Edit];