Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
bom dia pessoal,
Possuo um script que gera o saldo diário de um estoque, ele calcula certinho o acumulativo do movimento, o problema é que eu não consigo executá-lo com todos os materiais pois ele acaba acumulando movimento de outros materiais.
Minha ideia seria executar todo o script de forma autônoma por uma lista de materiais instanciados em uma Variável como se fosse um array, alguém teria alguma sugestão ou dica para este caso?
segue script:
//tentativa de criar array
//set vMaterial = '51858, 51762';
//for vMat = 51762 to 51858;
set vMat = 51762,51858;
set vMaxMat = $(vMat); //Guarda o ultimo material
material:
LOAD SubField('$(vMat)',',') as material
AutoGenerate(1);
MovimentoSaldoDiario:
LOAD
CD_MATERIAL&' | '&date(MonthStart(DT_MESANO_REFERENCIA) +IterNo() -1)&' | '&CD_ESTABELECIMENTO as JoinMovimento,//ligação que por ventura pode contemplar o local de estoque
date(MonthStart(DT_MESANO_REFERENCIA) +IterNo() -1) as DataPeriodo,
Date(DT_MESANO_REFERENCIA) as DataMesReferencia,
CD_ESTABELECIMENTO as Estabelecimento,
LOCAL_ESTOQUE as LocalEstoque,
CD_MATERIAL as CodigoMaterial,
QT_ESTOQUE as QuantidadeSaldo,
SALDO_MES_ANTERIOR as QuantidadeSaldoAnterior
FROM tb_saldo_estoque.qvd(qvd) While date(MonthStart(DT_MESANO_REFERENCIA) +IterNo() -1) <= MonthEnd(DT_MESANO_REFERENCIA) and CD_MATERIAL = '51858';
Left Join (MovimentoSaldoDiario)
LOAD
CD_MATERIAL&' | '&date#(date(DT_MOVIMENTO_ESTOQUE))&' | '&CD_ESTABELECIMENTO as JoinMovimento,
date#(date(DT_MOVIMENTO_ESTOQUE)) as DataMovimentoEstoque,
Date#(date(DT_MESANO_REFERENCIA)) as DataMesReferencia,
sum(if(IE_ENTRADA_SAIDA = 'S' and CD_ACAO = '1', -QT_MOVIMENTO,
if(IE_ENTRADA_SAIDA = 'S' and CD_ACAO = '2', QT_MOVIMENTO,
if(IE_ENTRADA_SAIDA = 'E' and CD_ACAO = '1', QT_MOVIMENTO,
if(IE_ENTRADA_SAIDA = 'E' and CD_ACAO = '2', -QT_MOVIMENTO,
QT_MOVIMENTO))))) as QuantidadeMovimento
FROM tb_movimento_estoque.qvd(qvd) where CD_MATERIAL = '51858'
Group by
date#(date(DT_MOVIMENTO_ESTOQUE)),
CD_MATERIAL,
CD_ESTABELECIMENTO,
//LOCAL_ESTOQUE,
Date#(date(DT_MESANO_REFERENCIA)) ;
MovimentoSaldoDiario2:
LOAD
DataPeriodo,
CodigoMaterial,
DataMesReferencia,
DataMovimentoEstoque,
Estabelecimento,
LocalEstoque,
if(isNull(QuantidadeMovimento),'0', QuantidadeMovimento) as QuantidadeMovimento,
NumSum(Peek('Acumulado',-1)) + NumSum(if(isNull(QuantidadeMovimento),'0', QuantidadeMovimento)) as Acumulado,
QuantidadeSaldo,
QuantidadeSaldoAnterior,
JoinMovimento
Resident MovimentoSaldoDiario
order by DataPeriodo asc;
DROP Table MovimentoSaldoDiario;
MovimentoSaldoDiario3:
LOAD
*,
QuantidadeSaldoAnterior + Acumulado as SaldoDiario
Resident MovimentoSaldoDiario2;
DROP Table MovimentoSaldoDiario2;