查找物料/仓库的总可用物理和可用物理

时间:2012-01-27 13:17:36

标签: axapta dynamics-ax-2009

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

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

这为我提供了线路站点/仓库/位置的现有可用物理。

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

有人可以帮忙吗?

4 个答案:

答案 0 :(得分: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()

的工作方式完全相同

答案 1 :(得分:2)

您应该使用InventOnhand课程。

它根据项目ID和库存维度等标准对发明现有值进行求和。

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

答案 2 :(得分: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()));
        }
    }
}

答案 3 :(得分: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();