在销售订单屏幕上启用字段
Enabling Fields on Sales Order Screen
当销售订单的状态为已完成时,我需要在销售订单屏幕上启用字段。
我发现了一些其他帖子,其中包含旧版本 Acumatica 的解决方案,您还需要更改自动化步骤中的内容,但在版本 21.207 中,自动化步骤已被工作流程取代,我似乎无法编辑它们销售订单屏幕。
我的代码:
protected void SOOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
var row = (SOOrder)e.Row;
if (row == null) return;
if (Condition1 != null && Condition2 == true)
{
cache.AllowUpdate = true;
Base.Document.Cache.AllowUpdate = true;
PXUIFieldAttribute.SetEnabled<SOOrder.salesPersonID>(cache, e.Row, true);
}
}
旧帖子:
更新
尝试了答案
凯尔·范德斯托普
但不幸的是,cache.AllowUpdate = true;
在调试模式下越过它后仍然为 False。
更新 2
在我重新进行定制后,Kyle Vanderstoep 的解决方案最终奏效了。 Acumatica 和我的代码在第一轮就表现出色。
两个步骤,在工作流和所选行中覆盖。这是给 CustomerRefNbr
public override void Configure(PXScreenConfiguration configuration)
{
var context = configuration.GetScreenConfigurationContext<SOOrderEntry, SOOrder>();
context.UpdateScreenConfigurationFor(
c => c.WithFlows(flowContainer =>
{
flowContainer
.Update(SOBehavior.SO, df => df
.WithFlowStates(fls =>
{
fls.Update<SOOrderStatus.completed>(flsc => flsc
.WithFieldStates(fs => fs.AddField<SOOrder.customerRefNbr>()));
}));
}));
}
public virtual void SOOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected baseN)
{
baseN(cache, e);
SOOrder doc = e.Row as SOOrder;
if (doc == null)
{
return;
}
cache.AllowUpdate = true;
PXUIFieldAttribute.SetEnabled<SOOrder.customerRefNbr>(cache, null, true);
}
当销售订单的状态为已完成时,我需要在销售订单屏幕上启用字段。
我发现了一些其他帖子,其中包含旧版本 Acumatica 的解决方案,您还需要更改自动化步骤中的内容,但在版本 21.207 中,自动化步骤已被工作流程取代,我似乎无法编辑它们销售订单屏幕。
我的代码:
protected void SOOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
var row = (SOOrder)e.Row;
if (row == null) return;
if (Condition1 != null && Condition2 == true)
{
cache.AllowUpdate = true;
Base.Document.Cache.AllowUpdate = true;
PXUIFieldAttribute.SetEnabled<SOOrder.salesPersonID>(cache, e.Row, true);
}
}
旧帖子:
更新 尝试了答案 凯尔·范德斯托普
但不幸的是,cache.AllowUpdate = true;
在调试模式下越过它后仍然为 False。
更新 2
在我重新进行定制后,Kyle Vanderstoep 的解决方案最终奏效了。 Acumatica 和我的代码在第一轮就表现出色。
两个步骤,在工作流和所选行中覆盖。这是给 CustomerRefNbr
public override void Configure(PXScreenConfiguration configuration)
{
var context = configuration.GetScreenConfigurationContext<SOOrderEntry, SOOrder>();
context.UpdateScreenConfigurationFor(
c => c.WithFlows(flowContainer =>
{
flowContainer
.Update(SOBehavior.SO, df => df
.WithFlowStates(fls =>
{
fls.Update<SOOrderStatus.completed>(flsc => flsc
.WithFieldStates(fs => fs.AddField<SOOrder.customerRefNbr>()));
}));
}));
}
public virtual void SOOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected baseN)
{
baseN(cache, e);
SOOrder doc = e.Row as SOOrder;
if (doc == null)
{
return;
}
cache.AllowUpdate = true;
PXUIFieldAttribute.SetEnabled<SOOrder.customerRefNbr>(cache, null, true);
}