我有一个显示字段的方法,它执行以下操作;
return InventSum::find(_salesLine.ItemId, InventDim::_salesLine.InventDimId).AvailPhysical();
这为我提供了线路站点/仓库/位置的现有可用物理。
我需要查看网站/仓库的可用总数。我想我需要通过Item / Warehouse搜索inventDim来获取我的inventdimid,但我找不到方法所以我怀疑这是不正确的。
有人可以帮忙吗?
答案 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();