2012-01-27 47 views
5

我有一个显示字段的方法,它执行以下操作;查找物料/仓库的可用和可用物理总数

return InventSum::find(_salesLine.ItemId, InventDim::_salesLine.InventDimId).AvailPhysical(); 

这给了我现场可用物理线路网站/仓库/位置。

我需要查看可用于网站/仓库的总量。我想我需要通过Item/Warehouse搜索inventDim来获得我的发明,但是我找不到方法,所以我怀疑这是不正确的。

任何人都可以帮忙吗?

回答

4

我工作的解决方案...

InventDimParm  invDimParm; 
InventDim   warehouseInvDim; 
InventDim   salesLineInventDim; 
; 

salesLineInventDim = _salesLine.inventDim(); 

warehouseInvDim.InventSiteId = salesLineInventDim.InventSiteId; 
warehouseInvDim.InventLocationId = salesLineInventDim.InventLocationId; 

warehouseInvDim = InventDim::findOrCreate(warehouseInvDim); 
invDimParm.initFromInventDim(InventDim::find(warehouseInvDim.inventDimId)); 

return InventSum::findSum(_salesLine.ItemId,warehouseInvDim,invDimParm).availOrdered(); 

我知道这是availOrdered(),但它的工作原理完全一样的availPhysical()

0

您基本上以您希望搜索它们的方式设置inventDim值,然后执行InventDim :: FindOrCreate以查看库存维度是否已经存在,或者是否需要创建并需要创建新的数字序列消耗。这用于使InventDim表不存储每个可能的维度组合。另外,因为如果您有任何序列化产品,表格不可能存储所有组合,因此它只存储它所需的组合。

InventDim inventDim; 
SalesLine _salesLine; 
; 

inventDim.InventSiteId  = 'mySite'; 
inventDim.InventLocationId = 'myWarehouse'; 
inventDim = InventDim::findOrCreate(inventDim); 

return InventSum::find(_salesLine.ItemId, inventDim.inventDimId).AvailPhysical(); 
+0

我怀疑如果涉及其他维度(如批号)。发明和存储在特定的维度上。 – 2012-01-28 10:40:23

+0

我做了一些与此非常相似的事情,我会在星期一(回到办公室)看看,并让你知道。我有一种感觉,这是一样多1行 – AnthonyBlake 2012-01-29 00:25:05

+0

我同意1月我甚至没有想过这个问题,我只是试图展示如何找到/创建一个inventDim。可能应该试图想到获得数量的正确方法。 – 2012-01-30 20:53:23

2

您应该使用InventOnhand类。

它根据项目标识和库存尺寸等标准对发明现有值进行求和。

在AX中有很多用途,搜索类节点。

2

下面的工作中找到与未完成订单的所有销售行状态,其手头上有一个可用物理量与销售行上指定的所有尺寸相匹配,但位置除外:

static void FindOpenSalesLineAvailPhys(Args _args) 
{ 
    SalesLine salesline; 
    InventDim inventDim; 
    InventDimParm inventDimParm; 
    InventOnHand inventOnHand; 
    ; 

    while select salesLine where salesLine.SalesStatus == SalesStatus::Backorder 
    { 
     inventDim = salesLine.inventDim(); 
     inventDimParm.initFromInventDim(inventDim); 
     inventDimParm.WMSLocationIdFlag = NoYes::No; 
     inventOnHand = InventOnHand::newItemDim(salesLine.ItemId, inventDim, inventDimParm); 
     if (inventOnHand.availPhysical()) 
     { 
      info(strfmt("Sales Order %1 Line %2 Item Id %3 Available Physical (ignoring Location) %4", 
       salesLine.salesId, salesLine.LineNum, salesLine.ItemId, inventOnHand.availPhysical())); 
     } 
    } 
} 
+0

这很好,但不相关! – AnthonyBlake 2012-02-04 18:26:39

+0

您说过“我需要查看可用于网站/仓库的总量”上面的代码完全可以提供这些信息,这与此无关吗? – 2012-02-06 13:29:32