Skip to main content
Question

Add Custom Field to Customer Profile Screen

  • March 11, 2026
  • 3 replies
  • 55 views

Forum|alt.badge.img

In Customer Profile under Balance would like to add a new field for Open Invoices. This field would display the sum of the Current Balance for all Invoices with an Open Status associated with the particular customer. Need help creating the customization.

The issue we are having is that Prepayments are included in the Balance the Customer owes. If a Customer has open Invoices totaling $1000 but they have a Prepayment of $200 for future work their balance displays $800 and this balance is what our employees see and what shows on the Customer Statement. Customers end up paying less than what they owe.

3 replies

Forum|alt.badge.img+1
  • Varsity I
  • March 11, 2026

Hello ​@bobbytherbs,

For this customization, you need at first to add a new field on the Customer screen and set this field to display the total amount of open invoices for the customer, which can be found on the Customer Details screen.

If you need help with the coding part, please let me know, and I will help you.


Forum|alt.badge.img
  • Author
  • Freshman I
  • March 11, 2026

@Vard86 thank you! Yes, please help with all of it if possible. Not familiar with how to add new fields


Forum|alt.badge.img+2
  • Jr Varsity III
  • March 14, 2026

@bobbytherbs  Hi,
you can follow below approach hope it will work.
Note: Generated from AI

 

DAC Extension (Customer)

Create a DAC Extension for Customer.

using PX.Data;
using PX.Objects.AR;
using PX.Objects.CR;
using PX.Objects.CM;

namespace Customization
{
public class CustomerExt : PXCacheExtension<Customer>
{
#region UsrOpenInvoices

[PXDecimal]
[PXUIField(DisplayName = "Open Invoices", Enabled = false)]
public decimal? UsrOpenInvoices { get; set; }

public abstract class usrOpenInvoices : PX.Data.BQL.BqlDecimal.Field<usrOpenInvoices> { }

#endregion
}
}

Graph Extension (CustomerMaint)

Now calculate the value.

using PX.Data;
using PX.Objects.AR;
using PX.Objects.AR.Standalone;

public class CustomerMaint_Extension : PXGraphExtension<CustomerMaint>
{
protected void _(Events.RowSelected<Customer> e)
{
if (e.Row == null) return;

decimal totalOpenInvoices = 0;

foreach (ARInvoice inv in PXSelect<
ARInvoice,
Where<
ARInvoice.customerID, Equal<Required<ARInvoice.customerID>>,
And<ARInvoice.status, Equal<ARDocStatus.open>,
And<ARInvoice.docType, Equal<ARDocType.invoice>>>>>
.Select(Base, e.Row.BAccountID))
{
totalOpenInvoices += inv.CuryDocBal ?? 0;
}

CustomerExt ext = e.Row.GetExtension<CustomerExt>();
ext.UsrOpenInvoices = totalOpenInvoices;
}
}

Add Field to UI

Open Customization Project → Screens → Customers (AR303000)

Add field to the Balance area.

Result

Customer screen will show:

Field Value
Balance 800
Open Invoices 1000
Prepayment Balance -200

https://help.acumatica.com/(W(5))/Wiki/ShowWiki.aspx?pageid=5a2bddc7-dd58-4de4-a9f5-f4d5ce073b77