Acumatica 当数量=0时,如何防止SOLineSplit和InitTemplan删除?

Acumatica 当数量=0时,如何防止SOLineSplit和InitTemplan删除?,acumatica,Acumatica,我注意到当SOLine的数量为零时,该行没有可用的SOLineSplit或INItemPlan记录。第二个数量大于0时,系统会生成这些记录,如果数量设置回0,则会删除这些记录 当记录设置为0数量时,是否有方法防止删除SOLineSplit和InitTemplan对象 如果SOLine最初是以0数量创建的,那么有没有办法让系统仍然创建SOLineSplit和InitTemplan 问题的原因是,客户希望系统在某一点后锁定SOLine,但也允许从另一个屏幕调整数量。由于这不会直接更改SOLine屏幕

我注意到当SOLine的数量为零时,该行没有可用的SOLineSplit或INItemPlan记录。第二个数量大于0时,系统会生成这些记录,如果数量设置回0,则会删除这些记录

当记录设置为0数量时,是否有方法防止删除SOLineSplit和InitTemplan对象

如果SOLine最初是以0数量创建的,那么有没有办法让系统仍然创建SOLineSplit和InitTemplan

问题的原因是,客户希望系统在某一点后锁定SOLine,但也允许从另一个屏幕调整数量。由于这不会直接更改SOLine屏幕上的值,因此不会触发创建拆分和计划的事件

我已尝试在自定义屏幕中创建SOOrderEntry的实例,如下所示:

SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();

//Also tried graph.Transactions.Current = line, but did not work
graph.Transactions.Update(line);

graph.Actions.PressSave();
SOOrderEntry-graph=PXGraph.CreateInstance();
//还尝试了graph.Transactions.Current=line,但无效
图.事务.更新(行);
graph.Actions.PressSave();
这样做会导致空对象引用错误:

错误:处理字段OrderQty:Object引用时出错,该字段未设置为对象的实例

System.NullReferenceException:对象引用未设置为对象的实例。 在PX.Objects.SO.SOOrderEntry.SOLine\u OrderQty\u FieldUpdated(PXCache sender,PXFieldUpdatedEventArgs e)


我认为使用
SOOrderEntry
时您的语句的问题在于您没有真正加载图形中的顺序以正确更新它。在创建图形实例之后和事务更新之前,应该像下面这样加载文档头

SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();

graph.Document.Current = graph.Document.Search<SOOrder.orderNbr>(line.OrderNbr, line.OrderType); 

if(graph.Document.Current == null)
{
    return;
}

graph.Transactions.Update(line);

graph.Actions.PressSave();

您可以创建自己的销售订单图形扩展,并使用自己版本的SOLineSplitPlanID替换该属性。。。这对您来说可能是一场战斗,因为我不确定在计划数量为零的情况下,您为什么希望计划记录存在。

我认为您在使用
SOOrderEntry
时的陈述存在的问题是,您没有真正在图中加载订单以正确更新它。在创建图形实例之后和事务更新之前,应该像下面这样加载文档头

SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();

graph.Document.Current = graph.Document.Search<SOOrder.orderNbr>(line.OrderNbr, line.OrderType); 

if(graph.Document.Current == null)
{
    return;
}

graph.Transactions.Update(line);

graph.Actions.PressSave();

您可以创建自己的销售订单图形扩展,并使用自己版本的SOLineSplitPlanID替换该属性。。。这对您来说可能是一场战斗,因为我不确定当计划数量为零时,您为什么希望计划记录存在。

Microsoft SQL server?Microsoft SQL server?我将尝试您的第一个解决方案。我不想弄乱Acumatica基本上是如何以这种方式工作的,因为我相信它是有目的的。如果我可以在用户将值从零调整到大于零的任何值时创建拆分和计划,那将是完美的。我认为问题是,当用户将值从零更改时,拆分/计划记录会创建吗?如果你使用我展示的SOOrderEntry图,它应该能帮你解决这个问题?哇,我有点喜欢这个。在我开始检查你写的东西之后,我意识到我没有设置标题记录。哎呀。。。再次感谢Brendan!没问题。很高兴这对你有用。谢谢你的确认。我要试试你的第一个解决方案。我不想弄乱Acumatica基本上是如何以这种方式工作的,因为我相信它是有目的的。如果我可以在用户将值从零调整到大于零的任何值时创建拆分和计划,那将是完美的。我认为问题是,当用户将值从零更改时,拆分/计划记录会创建吗?如果你使用我展示的SOOrderEntry图,它应该能帮你解决这个问题?哇,我有点喜欢这个。在我开始检查你写的东西之后,我意识到我没有设置标题记录。哎呀。。。再次感谢Brendan!没问题。很高兴这对你有用。谢谢你的确认。