Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Acumatica-SOLine上的项目状态_C#_Acumatica - Fatal编程技术网

C# Acumatica-SOLine上的项目状态

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 { }

我已经创建了一个自定义项来将项目状态添加到SOLine中。图形代码和DAC编译得很好,没有错误。当我检查新的状态字段时,它只是空白。我是这样做的:

首先,发援会:

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)]
保护