导入TransferOrder行(InventTransferLine)

时间:2016-01-08 16:32:19

标签: axapta dynamics-ax-2012 dynamics-ax-2012-r3

我正在尝试使用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,并在选定的标题中指定,这意味着InventTransferTable记录。

我不确定这两行:

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

RemainReceive从哪里来?我无法弄清楚他们指的是什么。

1 个答案:

答案 0 :(得分:1)

你或多或少走得很好。 你似乎有copied what others have done,这很好。

还有其他方法,一种使用AxInventTransferTable...Line类,另一种使用TransferOrderCreateService服务。如果在AX内工作,没有人会给你很大的竞争优势。

InventDim(请参阅white paper)包含项目的广告资源,存储空间和跟踪维度。如果项目需要在项目和产品上指定,则需要设置更多字段。

  • 产品尺寸。物品尺寸,颜色,尺寸和配置。
  • 存储尺寸。这些是站点,仓库,位置和托盘。
  • 跟踪尺寸。这些是批号和序列号。

发货是一个两步的事情。首先,您从源站点/仓库运送物料。稍后您将在目标站点/仓库收到该项目。 QtyRemainShipQtyRemainReceive字段表示每个步骤的剩余数量。