采购订单详细信息行项目的库存属性

问题描述 投票:0回答:1

我正在尝试将库存商品的属性添加到详细信息选项卡中的订单行

这些属性: Attributes in System Attributes in Database

对于我的问题,我在 acumatica 社区上找到了这篇文章,但我无法将其转移到我的问题上。 https://community.acumatica.com/develop-customizations-288/add-a-stock-item-attribute-to-the-sales-order-line-grid-6454

  • 我想我可以将其传输到 PO 并将库存属性添加到“详细信息”选项卡。
  • 经过两天漫长的日子和痛苦,我不再知道该怎么办。
  • 我想让你看看我的定制代码。
  • 我在 POLine 中添加了一个新的自定义字段,我相信它稍后会存储特定属性的值。但我不确定我是否正确定义了要显示的属性。

这是我的 POLine DAC 扩展代码:

using PX.Common;
using PX.Data.BQL;
using PX.Data.ReferentialIntegrity.Attributes;
using PX.Data;
using PX.Objects.AP;
using PX.Objects.CM.Extensions;
using PX.Objects.Common.Bql;
using PX.Objects.Common.Discount.Attributes;
using PX.Objects.Common.Discount;
using PX.Objects.Common;
using PX.Objects.CR;
using PX.Objects.CS;
using PX.Objects.GL;
using PX.Objects.IN.Matrix.Interfaces;
using PX.Objects.IN;
using PX.Objects.PM;
using PX.Objects.PO;
using PX.Objects.TX;
using PX.Objects;
using System.Collections.Generic;
using System;

namespace PX.Objects.PO
{
  public class POLineExt : PXCacheExtension<PX.Objects.PO.POLine>
  {
    #region UsrAttribute1

        [PXDBString(512, IsUnicode = true)]
        [PXUIField(DisplayName = "MATCHCODE")]
        public virtual string UsrAttribute1 { get; set; }
        public abstract class usrAttribute1 : BqlString.Field<usrAttribute1> { }


    #endregion
  }
}

这里是图形扩展 POOrderEntry

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using PX.Common;
using PX.Data;
using PX.Objects.GL;
using PX.Objects.CM.Extensions;
using PX.Objects.CS;
using PX.Objects.CR;
using PX.Objects.TX;
using PX.Objects.IN;
using PX.Objects.EP;
using PX.Objects.AP;
using PX.Objects.AR;
using PX.Objects.SO;
using SOOrder = PX.Objects.SO.SOOrder;
using SOLine = PX.Objects.SO.SOLine;
using PX.Data.DependencyInjection;
using PX.Data.ReferentialIntegrity.Attributes;
using PX.LicensePolicy;
using PX.Objects.PM;
using CRLocation = PX.Objects.CR.Standalone.Location;
using PX.Objects.AP.MigrationMode;
using PX.Objects.Common;
using PX.Objects.Common.Discount;
using PX.Data.BQL.Fluent;
using PX.Data.BQL;
using PX.Objects.Common.Bql;
using PX.Objects.Extensions.CostAccrual;
using PX.Objects.DR;
using PX.Data.WorkflowAPI;
using PX.Objects.Extensions;
using PX.Objects.Common.DAC;
using PX.Objects.Common.Scopes;
using PX.Objects.IN.Services;
using PX.Objects.Extensions.MultiCurrency;
using PX.Data.Description;
using PX.Objects;
using PX.Objects.PO;

namespace PX.Objects.PO
{
  public class POOrderEntry_Extension : PXGraphExtension<PX.Objects.PO.POOrderEntry>
  {
    #region Event Handlers
    protected virtual void POLine_InventoryID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
        {
            InvokeBaseHandler?.Invoke(sender, e);
            POLine row = (POLine)e.Row;
            if (row == null) return;
            CSAnswers CSAns = PXSelectJoin<CSAnswers,
                              InnerJoin<InventoryItem, On<InventoryItem.noteID, Equal<CSAnswers.refNoteID>>>,
                              Where<InventoryItem.inventoryID, Equal<Required<InventoryItem.inventoryID>>,
                              And<CSAnswers.attributeID, Equal<Required<CSAnswers.attributeID>>
                              >>>.Select(Base, row.InventoryID, "MATCHCODE");
            if (CSAns != null)
            {
                POLineExt rowExt = row.GetExtension<POLineExt>();
                rowExt.UsrAttribute1 = CSAns.Value;
            }
        }
}
    #endregion
}

案例 1:在 POOrderEntry 中:

rowExt.UsrAttribute1 = CSAns.Value;
编译器没有显示错误,但当我尝试打开 PO 时,系统给出错误“无效的列名称 [POLine].[UsrAttribute1]”

案例 2:在 POOrderEntry 中:

rowExt.usrAttribute1 = CSAns.Value;
出现以下错误:

\App_RuntimeCode\POOrderEntry.cs(60): 错误 CS0572: 'usrAttribute1': 无法通过表达式引用类型;尝试“POLineExt.usrAttribute1” \App_RuntimeCode\POOrderEntry.cs(60): 错误 CS0118: 'POLineExt.usrAttribute1' 是一种类型,但像变量一样使用 \App_RuntimeCode\POOrderEntry.cs(60): 错误 CS0572: 'usrAttribute1': 无法通过表达式引用类型;尝试改为“POLineExt.usrAttribute1”

acumatica acumatica-kb
1个回答
0
投票

can can 问题很简单,你的UsrAttribute1字段不在数据库中。 您可以将其属性从 PXDBString 更改为 PXString,但在这种情况下,该值不会存储在数据库中,或者您可以通过自定义编辑器将该字段添加到 POLine 表中。

© www.soinside.com 2019 - 2024. All rights reserved.