Axapta 查找项目/仓库的总可用和可用物理量

Axapta 查找项目/仓库的总可用和可用物理量,axapta,dynamics-ax-2009,Axapta,Dynamics Ax 2009,我有一个显示字段的方法,它执行以下操作: return InventSum::find(_salesLine.ItemId, InventDim::_salesLine.InventDimId).AvailPhysical(); 这为我提供了生产线现场/仓库/位置的现有可用物理数据 我需要查看站点/仓库的可用总数。我想我需要按物品/仓库搜索inventDim以获取我的inventdimid,但我找不到方法,因此我怀疑这是不正确的 有人能帮忙吗?您基本上是按照您希望的搜索方式设置inventDi

我有一个显示字段的方法,它执行以下操作:

return InventSum::find(_salesLine.ItemId, InventDim::_salesLine.InventDimId).AvailPhysical();
这为我提供了生产线现场/仓库/位置的现有可用物理数据

我需要查看站点/仓库的可用总数。我想我需要按物品/仓库搜索inventDim以获取我的inventdimid,但我找不到方法,因此我怀疑这是不正确的


有人能帮忙吗?

您基本上是按照您希望的搜索方式设置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();

您应该使用
InventOnhand

它根据项目id和库存维度等标准汇总现有价值


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

我的工作解决方案

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()的效果完全相同。

以下作业将查找所有处于未结订单状态的销售行,这些销售行的现有可用物理量与销售行上指定的所有维度(位置除外)完全匹配:

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()));
        }
    }
}

如果涉及其他维度(如批号),我怀疑它是否有效。发明总和存储在特定的维度上。我使用了与此非常类似的方法,我将在周一(回到办公室)查看,并让您知道。我有一种感觉,与此相同,还有一行我同意Jan。我甚至没有考虑这个问题,我只是想展示如何找到/创建inventDim。可能应该想一个正确的方法来获取数量。你说“我需要查看站点/仓库的可用总量”,上面的代码正好告诉了你,这怎么不相关?