【发布时间】:2017-05-27 04:13:44
【问题描述】:
我需要从具有相同批次/序列号的采购收据的序列化项目单位成本中填充 SOLine 中的自定义列(用户定义的成本)(屏幕截图 1)。如果该项目已拆分批号/序列号(屏幕截图 2),那么我必须根据用户在 SOLine 项目中输入的批号/序列号读取相应的单位成本。
我已经编写了 SOLine_RowPersisting 事件来处理项目是否未拆分但不确定如何查找是否存在拆分的序列化项目。下面是 SOLine_RowPersisting 事件的代码。请提出建议。
protected virtual void SOLine_RowPersisting(PXCache sender, PXRowPersistingEventArgs e)
{
SOLine row = (SOLine)e.Row;
if (row == null)
return;
if (!string.IsNullOrEmpty(row.LotSerialNbr))
{
SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();
//select UnitCost, * from POReceiptLine where CompanyID = 2 and ReceiptNbr = 'PR004082' and InventoryID = '8502' and LotSerialNbr = 'SUB1703210365'
//select LotSerialNbr, * from POReceiptLineSplit where CompanyID = 2 and InventoryID = '8502' and LotSerialNbr = 'SUB1704270366'
//TODO : How to get it from POReceiptLineSplit also
POReceiptLine poRow = PXSelect<POReceiptLine,
Where<POReceiptLine.inventoryID, Equal<Required<POReceiptLine.inventoryID>>,
And<POReceiptLine.lotSerialNbr, Equal<Required<POReceiptLine.lotSerialNbr>>,
And<POReceiptLine.pOType, Equal<Required<POReceiptLine.pOType>>>>>>.Select(graph, row.InventoryID, row.LotSerialNbr, "RO");
SOLineExtension ext = PXCache<SOLine>.GetExtension<SOLineExtension>(row);
ext.UsrUserDefinedCost = poRow.UnitCost;
}
}
【问题讨论】:
-
有 SOLineSplits 是 POReceiptLines 的 SOLine 和 POReceiptLineSplit 的分配。您可以使用 BQL 获取当前线路分配并做您需要的。
标签: acumatica