问题描述
以下代码成功插入了INKitRegister
记录。
public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
{
#region Event Handlers
public virtual void _(Events.RowPersisting<SOLine> e)
{
SOLine soLine = e.Row;
InventoryItem inItem = PXSelect<InventoryItem,Where<InventoryItem.inventoryID,Equal<required<SOLine.inventoryID>>>>
.Select(new PXGraph(),soLine.InventoryID);
if (inItem == null)
return;
if (inItem.KitItem.HasValue && inItem.KitItem.Value)
{
SOLineExt soLineExt = soLine.GetExtension<SOLineExt>();
INKitRegister kit = null;
bool kitIsNew = false;
if (soLineExt.INKitRegisterDocType != null && soLineExt.INKitRegisterRefNbr != null)
{
kit = PXSelect<INKitRegister,Where<INKitRegister.docType,Equal<required<SOLineExt.iNKitRegisterDocType>>,And<INKitRegister.refNbr,Equal<required<SOLineExt.iNKitRegisterRefNbr>>>>>
.Select(new PXGraph(),soLineExt.INKitRegisterDocType,soLineExt.INKitRegisterRefNbr);
}
// If kit mix doesn't exist,create it
if (kit == null)
{
kit = new INKitRegister();
kitIsNew = true;
}
// Insert/update INKitRegister (new mix)
var graph = PXGraph.CreateInstance<KitAssemblyEntry>();
graph.Document.Current = kit;
graph.Document.Cache.SetValueExt<INKitRegister.tranDate>(kit,soLine.RequestDate);
if (kitIsNew)
{
graph.Document.Cache.SetValueExt<INKitRegister.kitInventoryID>(kit,soLine.InventoryID);
}
graph.Document.Cache.SetValueExt<INKitRegister.uOM>(kit,soLine.UOM);
graph.Document.Cache.SetValueExt<INKitRegister.qty>(kit,soLine.Qty);
//graph.Document.Cache.SetValueExt<INKitRegister.tranDesc>(kit,string.Format("{0} {1}",soLine.TranDesc));
kit = graph.Document.Cache.Update(kit) as INKitRegister;
graph.Actions.PressSave();
// Save the mix props to the SOLine
soLineExt.INKitRegisterDocType = kit.DocType;
soLineExt.INKitRegisterRefNbr = kit.RefNbr;
}
}
#endregion
}
当我尝试更改SOOrder的数量时,应该使用相同的代码来更新现有的INKitRegister
记录。
相反,我收到此错误:
错误:更新“ IN Kit”记录至少引发了一个错误。请检查错误。错误:“总费用”不能为空。错误:“ Ext。费用”不能为空。
(大概)在插入记录时自动计算“总成本”和“外部成本”。
问:为什么在Update上不再次计算这些值?我不知道从哪里开始手动计算它们,无论如何这似乎并不是一个好主意。>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)