【问题标题】:RefNbr Selector: AR Invoice vs Distribution InvoiceRefNbr 选择器:AR 发票与分销发票
【发布时间】:2026-01-05 15:00:01
【问题描述】:

我通过 DAC 自定义了 RefNbr 选择器,使其具有其他几个自定义列,但它仅将附加选择器列应用于 AR 发票屏幕:

[PXCustomizeSelectorColumns(
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.refNbr),
typeof(PX.Objects.AR.ARInvoice.invoiceNbr),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.docDate),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.finPeriodID),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.customerID),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.customerID_Customer_acctName),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.customerLocationID),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.curyID),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.curyOrigDocAmt),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.curyDocBal),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.status),
typeof(PX.Objects.AR.Standalone.ARRegisterAlias.dueDate),
typeof(PX.Objects.AR.ARRegisterExt.usrProjectId),
typeof(PX.Objects.AR.ARRegisterExt.usrProjectName))]

已成功添加到财务中的发票和备忘录屏幕:

但未在使用相同 (?) DAC 的 DISTRIBUTION Invoices 屏幕上显示:

有没有办法让它也将选择器添加到分配发票选择器?

我确实看到在添加要自定义的字段时显示了两个不同的 RefNbr 字段,但选择其中任何一个只会添加其中一个...(因此我假设屏幕使用相同的 DAC)

【问题讨论】:

  • 能否将您的代码添加到问题中
  • 当然,我已经添加了更多的图像和代码,虽然问题似乎是一个错误,与代码无关

标签: c# customization acumatica


【解决方案1】:

SOInvoiceEntry 图会覆盖缓存附加方法中的该字段:

[PXDBString(15, IsKey = true, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC")]
[PXDefault()]
[PXUIField(DisplayName = "Reference Nbr.", Visibility = PXUIVisibility.SelectorVisible, TabOrder = 1)]
[ARInvoiceType.RefNbr(typeof(Search2<AR.Standalone.ARRegisterAlias.refNbr,
    InnerJoinSingleTable<ARInvoice, On<ARInvoice.docType, Equal<AR.Standalone.ARRegisterAlias.docType>,
        And<ARInvoice.refNbr, Equal<AR.Standalone.ARRegisterAlias.refNbr>>>,
    InnerJoinSingleTable<Customer, On<AR.Standalone.ARRegisterAlias.customerID, Equal<Customer.bAccountID>>>>,
    Where<AR.Standalone.ARRegisterAlias.docType, Equal<Optional<ARInvoice.docType>>,
        And<AR.Standalone.ARRegisterAlias.origModule, Equal<BatchModule.moduleSO>,
        And<Match<Customer, Current<AccessInfo.userName>>>>>, 
    OrderBy<Desc<AR.Standalone.ARRegisterAlias.refNbr>>>), Filterable = true)]
[ARInvoiceType.Numbering()]
[ARInvoiceNbr()]
protected virtual void ARInvoice_RefNbr_CacheAttached(PXCache sender)
{
}

您的 DAC 属性自定义很好,但我怀疑图形覆盖优先于 DAC 属性自定义。我建议您为 SOInvoiceEntry 创建一个图形扩展,在其中复制/粘贴 CacheAttached 事件并修改属性以添加额外的列。

使用 [PXMergeAttributes(Method = MergeMethod.Merge)] 属性避免重新定义不需要更改的属性。

【讨论】:

  • 感谢您的解释!我是新手,您能否建议我应该添加到 SOInvoiceEntry 图中以使其仅使用一列作为示例:“typeof(PX.Objects.AR.ARRegisterExt.usrProjectId)”?