A classe inventOnhand é muito útil quando precisamos recuperar informações sobre um item especifico no estoque.
Se quisermos pegar a soma de um item em todos os depósitos e com todas as configurações devemos usar o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | static void FO_InventOnhand(Args _args) { InventOnhand onhand; ; onhand = InventOnhand::newItemId("0001"); // Physical inventory print onhand.physicalInvent(); // Physical reserved print onhand.reservPhysical(); // Total available print onhand.availOrdered(); // Ordered reserved print onhand.reservOrdered(); // Available physical print onhand.availPhysical(); pause; } |
A soma de um item em um determinado depósito, neste caso o depósito “GW”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | static void FO_InventOnhand(Args _args) { InventOnhand onhand; ; onhand = InventOnhand::newItemId("0001"); onhand.parmInventLocationId("GW"); // Physical inventory print onhand.physicalInvent(); // Physical reserved print onhand.reservPhysical(); // Total available print onhand.availOrdered(); // Ordered reserved print onhand.reservOrdered(); // Available physical print onhand.availPhysical(); pause; } |
Se o item tem diferentes configurações, vamos dizer que o item “0001” é uma lampada que vem com diferentes cores (vermelha, verde e preta), mas nós só queremos ver a soma das lampadas pretas (Que tem o configId = “Black”):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | static void FO_InventOnhand(Args _args) { InventOnhand onhand; ; onhand = InventOnhand::newItemId("0001"); onhand.parmInventLocationId("GW"); onhand.parmConfigId("Black"); // Physical inventory print onhand.physicalInvent(); // Physical reserved print onhand.reservPhysical(); // Total available print onhand.availOrdered(); // Ordered reserved print onhand.reservOrdered(); // Available physical print onhand.availPhysical(); pause; } |
Se tivermos dados na SalesLine podemos filtrar ainda mais, isso é porque na SalesLine temos acesso ao InventDimId. Com o InventDimId nós podemos obter o inventário específico dados específicos para este salesLine.
Se as linhas fossem criadas na SalesLine, seriam algo como:
1 2 | inventDimParm.initDimActive(InventTable::find(this.ItemId).DimGroupId); onHand = InventOnHand::newItemDim(this.ItemId, inventDim::find(this.InventDimId), inventDimParm); |
O método estático newItemDim() faz o mesmo que fizemos acima com parametros, mas faz “escondido” na classe InventOnHand. Veja o que acontece no método.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | static InventOnhand newItemDim( ItemId _itemId, InventDim _inventDim, InventDimParm _inventDimParm ) { InventOnhand inventOnhand = new InventOnhand(); ; inventOnhand.parmInventDim(_inventDim); inventOnhand.parmInventDimParm(_inventDimParm); inventOnhand.parmItemId(_itemId); return inventOnhand; } |
[]s
Pichler
One Response
Renan
14|Dec|2010 1Olá Pichler tudo bem?
Muito bom o post, entretanto para o AX 2009, não consigo utilizar a classe inventOnHand para pegar o valor disponivel de um produto filtrado por configuração.
No AX2009, essa classe não contém o método parmConfigId
Você sabe como posso fazer?
Leave a reply