导入 TransferOrder 行 (InventTransferLine)

Import TransferOrder lines (InventTransferLine)

我正在尝试使用来自 Transfer Orders Import:

的代码导入转移单行
InventDim inventDim;
InventTransferLine inventTransferLine;
#define.ShipDate("1/1/2016")
#define.ReceiveDate("1/1/2016")

//Order line
inventDim.clear();
inventDim.InventSiteId = "GENERAL";
inventDim.InventLocationId = "103";

inventTransferLine.clear();
inventTransferLine.initValue();

inventTransferLine.ItemId = "A01103472";
inventTransferLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
inventTransferLine.QtyTransfer = 2;

inventTransferLine.initFromInventTableModule(InventTableModule::find(inventTransferLine.ItemId,ModuleInventPurchSales::Invent));

inventTransferLine.QtyRemainReceive = inventTransferLine.QtyTransfer;
inventTransferLine.QtyRemainShip = inventTransferLine.QtyTransfer;

inventTransferLine.ShipDate = str2Date(#ShipDate, 213);
inventTransferLine.ReceiveDate = str2Date(#ReceiveDate, 213);

inventTransferLine.initFromInventTransferTable(inventTransferTable, false);
inventTransferLine.LineNum = InventTransferLine::lastLineNum(inventTransferLine.TransferId) + 1.0;

if (inventTransferLine.validateWrite())
{
    inventTransferLine.insert();
}
else
    throw error("Order line");

这是正确的还是首选的方法?

inventDim在这里有什么用?我正在将此产品从仓库 A 转移到仓库 B,这些在所选 header 中指定,表示 InventTransferTable 记录。

我不确定这两行:

1. inventTransferLine.QtyRemainReceive = inventTransferLine.QtyTransfer;
2. inventTransferLine.QtyRemainShip = inventTransferLine.QtyTransfer;

Remain从哪里接收?我不知道他们指的是什么。

你差不多可以走了。 你似乎有copied what others have done,这很好。

还有其他方法,一种使用 AxInventTransferTable...Line 类,另一种使用 TransferOrderCreateService 服务。如果在 AX 中工作,None 会给您带来很大的竞争优势。

InventDim(参见 white paper)包含项目的库存、存储和跟踪维度。如果该项目需要在项目和产品上指定,您将需要设置更多字段。

  • 产品尺寸。项目尺寸、颜色、大小和配置。
  • 存储尺寸。这些是站点、仓库、位置和托盘。
  • 跟踪维度。这些是批号和序列号。

发货是 two-step 的事情。首先,您从来源 site/warehouse 运送物品。稍后您会在目标 site/warehouse 处收到物品。 QtyRemainShipQtyRemainReceive 字段表示每个步骤的剩余数量。