C# Acumatica-SOLine上的项目状态
我已经创建了一个自定义项来将项目状态添加到SOLine中。图形代码和DAC编译得很好,没有错误。当我检查新的状态字段时,它只是空白。我是这样做的: 首先,发援会:C# Acumatica-SOLine上的项目状态,c#,acumatica,C#,Acumatica,我已经创建了一个自定义项来将项目状态添加到SOLine中。图形代码和DAC编译得很好,没有错误。当我检查新的状态字段时,它只是空白。我是这样做的: 首先,发援会: public class SOLineExt : PXCacheExtension<PX.Objects.SO.SOLine> { #region ItemStatus public abstract class itemStatus : PX.Data.IBqlField { }
public class SOLineExt : PXCacheExtension<PX.Objects.SO.SOLine>
{
#region ItemStatus
public abstract class itemStatus : PX.Data.IBqlField
{
}
protected string _ItemStatus;
[PXString()]
[PXDefault()]
[PXUIField(DisplayName = "Status", IsReadOnly = true)]
public virtual string ItemStatus
{
get
{
return this._ItemStatus;
}
set
{
this._ItemStatus = value;
}
}
#endregion
}
公共类solinext:PXCacheExtension
{
#区域项目状态
公共抽象类itemStatus:PX.Data.IBqlField
{
}
受保护字符串_ItemStatus;
[PXString()]
[PXDefault()]
[PXUIField(DisplayName=“Status”,IsReadOnly=true)]
公共虚拟字符串项状态
{
得到
{
返回此。\u ItemStatus;
}
设置
{
此项。_ItemStatus=值;
}
}
#端区
}
图表:
public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
{
#region Event Handlers
protected void SOLine_RowSelecting(PXCache cache, PXRowSelectingEventArgs e,PXRowSelecting InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (SOLine)e.Row;
if (row == null) return;
InventoryItem item = PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Required<SOLine.inventoryID>>>>.Select(Base, row.InventoryID);
if(item != null){
SOLineExt soLinesExt = row.GetExtension<SOLineExt>();
if (soLinesExt != null){
if (item.ItemStatus == 'AC')
soLinesExt.ItemStatus = "Active";
if (item.ItemStatus == 'NS')
soLinesExt.ItemStatus = "No Sales";
if (item.ItemStatus == 'NP')
soLinesExt.ItemStatus = "No Purchases";
if (item.ItemStatus == 'NR')
soLinesExt.ItemStatus = "No Request";
if (item.ItemStatus == 'IN')
soLinesExt.ItemStatus = "Inatctive";
if (item.ItemStatus == 'DE')
soLinesExt.ItemStatus = "Marked for Deletion";
}
}
}
#endregion
}
公共类SOOrderEntryExt:PXGraphExtension
{
#区域事件处理程序
受保护的void SOLine_行选择(PXCache缓存、PXRowSelectingEventArgs e、PXRowSelecting InvokeBaseHandler)
{
if(InvokeBaseHandler!=null)
InvokeBaseHandler(缓存,e);
var行=(SOLine)e.row;
if(row==null)返回;
InventoryItem item=PXSelect.Select(基,行.InventoryID);
如果(项!=null){
SOLineExt soLinesExt=row.GetExtension();
if(soLinesExt!=null){
如果(item.ItemStatus=='AC')
solinexext.ItemStatus=“活动”;
如果(item.ItemStatus='NS')
soLinesExt.ItemStatus=“无销售”;
如果(item.ItemStatus='NP')
soLinesExt.ItemStatus=“无购买”;
如果(item.ItemStatus='NR')
soLinesExt.ItemStatus=“无请求”;
如果(item.ItemStatus=='IN')
soLinesExt.ItemStatus=“非主动”;
如果(item.ItemStatus='DE')
soLinesExt.ItemStatus=“标记为删除”;
}
}
}
#端区
}
我用了一个类似的方法在网格上添加了其他的字段,只是这个字段我遇到了麻烦。请注意,我确实希望显示完整的状态名称,而不仅仅是两个字符的代码。选项#1
您可以使用下面的PXDBScalar
和PXDefault
来实现您的目标。您可以引用为此自定义字段修饰的每个属性的注释
公共类solinext:PXCacheExtension
{
#乌斯里特姆斯塔特地区
公共抽象类usrItemStatus:PX.Data.IBqlField
{
}
受保护字符串_UsrItemStatus;
[PXString()]
[PXUIField(DisplayName=“Status”,IsReadOnly=true)]
//子选择或子查询-需要获取保存的SO行的值
[PXDBScalar(类型(搜索))]
//StringList属性,这样您就不需要将值转换为显示文本
[InventoryItemStatus.List]
//插入新SO行时默认设置
[PXDefault(类型)(搜索),
PersistingCheck=PXPersistingCheck.Nothing)]
//在SO行中更改库存ID时触发默认分配
[PXFormula(typeof(默认))]
公共虚拟字符串UsrItemStatus
{
得到
{
把这个还给我;
}
设置
{
这个。_UsrItemStatus=值;
}
}
#端区
}
选项2
在数据视图中包括InventoryItem
DAC(Transactions
,在这种特定情况下),使用文档详细信息
网格。并将InventoryItem\uuu ItemStatus
字段添加到网格中。开箱即用的SOOrderEntry Graph实现了事务的数据视图委托,因此我们也必须对其进行修改
公共类SOOrderEntryPXDemoExt:PXGraphExtension
{
公共覆盖无效初始化()
{
Base.Transactions.Join();
}
[PX.Api.Export.PXOptimizationBehavior(IgnoreBqlDelegate=true)]
受保护的虚拟IEnumerable事务()
{
PXSelectBase查询=
新PXSelectJoin选项#1
您可以使用下面的PXDBScalar
和PXDefault
来实现您的目标。您可以参考为此自定义字段修饰的每个属性的注释
公共类solinext:PXCacheExtension
{
#乌斯里特姆斯塔特地区
公共抽象类usrItemStatus:PX.Data.IBqlField
{
}
受保护字符串_UsrItemStatus;
[PXString()]
[PXUIField(DisplayName=“Status”,IsReadOnly=true)]
//子选择或子查询-需要获取保存的SO行的值
[PXDBScalar(类型(搜索))]
//StringList属性,这样您就不需要将值转换为显示文本
[InventoryItemStatus.List]
//插入新SO行时默认设置
[PXDefault(类型)(搜索),
PersistingCheck=PXPersistingCheck.Nothing)]
//在SO行中更改库存ID时触发默认分配
[PXFormula(typeof(默认))]
公共虚拟字符串UsrItemStatus
{
得到
{
把这个还给我;
}
设置
{
这个。_UsrItemStatus=值;
}
}
#端区
}
选项2
在数据视图中包括InventoryItem
DAC(Transactions
在这种特定情况下)使用文档详细信息
网格。并将InventoryItem\uu ItemStatus
字段添加到网格中。开箱即用的SOOrderEntry Graph为事务
实现了数据视图委托,因此我们还必须对其进行修改
公共类SOOrderEntryPXDemoExt:PXGraphExtension
{
公共覆盖无效初始化()
{
Base.Transactions.Join();
}
[PX.Api.Export.PXOptimizationBehavior(IgnoreBqlDelegate=true)]
保护