我正在尝试使用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从哪里来?我无法弄清楚他们指的是什么。
答案 0 :(得分:1)
你或多或少走得很好。 你似乎有copied what others have done,这很好。
还有其他方法,一种使用AxInventTransferTable
和...Line
类,另一种使用TransferOrderCreateService
服务。如果在AX内工作,没有人会给你很大的竞争优势。
InventDim
(请参阅white paper)包含项目的广告资源,存储空间和跟踪维度。如果项目需要在项目和产品上指定,则需要设置更多字段。
发货是一个两步的事情。首先,您从源站点/仓库运送物料。稍后您将在目标站点/仓库收到该项目。
QtyRemainShip
和QtyRemainReceive
字段表示每个步骤的剩余数量。