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

Fonte.