Skip to main content
Solved

Adding Data fields to header of Project forms, where to find the data

  • June 10, 2025
  • 2 replies
  • 78 views

Forum|alt.badge.img

Hello,

I want to add some data fields to the fop of the project form, but I am not sure where to get the data.  I figured out how to add the data in a customization project, but I am not sure where to get the data.  Any suggestions on how to find the following data?

 

I want to add 3 columns, one for current totals, pending AR and Pending AP

Current Totals 

Add

Actual Subcontract Amount

Unreleased Retainage

Open Amount due

Pending AR

Pending invoice amount

Pending Retainage

Pending amount due

Pending AP

Pending AP

Pending Subcontracts

Similar to this, a financial summary tab would also be nice, almost a dashboard page.

This data would be nice because non-financial literate people can see the status of the project, is retain still released, etc.  

When working through payments, there is a lot of time we have pending subcontracts for approvals, its a good way to see what is sitting out waiting for approval.  Gives a better read of the project.

 

Thanks for the help!

Best answer by CherryStreet

We are testing our new AI Assistant and ran your scenario through it, I hope this helps:
 

You’re on the right track — Acumatica does not surface all of this info in one place by default, but the data you want does exist in the system and can be accessed via a customization project, or built into a Financial Summary tab or custom dashboard on the Project screen (PM301000).

Let’s walk through where to find each data point so you can bring them to the top of the project form (or a tab), either via a custom DAC extension, a view delegate, or a project-based GI.

 

Summary: Data Source Mapping for Each Metric

🔹 A. Current Totals

Metric

Source Table/View

Field or Calculation

Actual Subcontract Amount

PMTran, POOrder/POLine

Sum of AP bills/receipts linked to Subcontract PO

Unreleased Retainage

APRegister, APTran

Sum of RetainageAmt where Released = False

Open Amount Due

PMProjectStatusEx

RevisedBudgetAmount - ActualAmount

 

🔹 B. Pending AR (Customer Invoices)

Metric

Source Table/View

Field or Calculation

Pending Invoice Amount

ARInvoice, ARTran

Where DocType = 'PM' and Released = False

Pending Retainage

ARRetainage, ARInvoice

Where IsRetainageDoc = True and Released = False

Pending Amount Due

Sum of above

Sum of unreleased + unreleased retainage

 

🔹 C. Pending AP (Vendor Bills, Subcontracts)

Metric

Source Table/View

Field or Calculation

Pending AP

APInvoice, APTran

Where Released = False and linked to project

Pending Subcontracts

POOrder, POLine (type = Subcontract)

Where OrderStatus = Open and Released = False

 

🛠️ How to Implement in a Customization Project

1. Create a Custom DAC Extension for PMProject

  1. Extend PMProject DAC.
  2. Add unbound fields like:

[PXDecimal()]

[PXUIField(DisplayName = "Pending AP")]

public virtual decimal? UsrPendingAP { get; set; }

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

2. Use a View Delegate or Field-Selecting Event

In your ProjectEntry graph extension:

  • Write custom logic to query relevant tables, aggregate values, and assign to the field.
  • Use SelectFrom<APInvoice>.Where<...> for Pending AP, for example.

public void _(Events.RowSelected<PMProject> e)

{

    var row = e.Row;

    if (row == null) return;

 

    // Example: Sum pending AP

    decimal totalPendingAP = 0m;

 

    var pendingBills = SelectFrom<APInvoice>

        .Where<APInvoice.projectID.IsEqual<@P.AsInt>

            .And<APInvoice.released.IsEqual<False>>>.View.Select(Base, row.ContractID);

 

    foreach (APInvoice bill in pendingBills)

    {

        totalPendingAP += bill.CuryOrigDocAmt ?? 0m;

    }

 

    row.UsrPendingAP = totalPendingAP;

}

Repeat similar logic for each field.

 

🧩 Optional: Add a “Financial Summary” Tab

  1. Add a new tab on PM301000 in the Customization Project.
  2. Place the calculated fields there.
  3. Or, use a Generic Inquiry and embed it as a tab via Navigation GI Panel.
 

📊 Optional: Use a GI Dashboard Instead

  • Build a Generic Inquiry that pulls all fields per project.
  • Link to PMProject by ContractID.
  • Add a Project Dashboard screen showing:
    • Pie/Bar chart for pending vs actual
    • Grid of unreleased AP/AR by vendor/customer
 

💡 ERP Pro Tips

💡 Tip for PMs: You can add conditional formatting in the GI to highlight high pending AP/retainage.

💡 Tip for Developers: Consider caching the values at Appointment or Transaction entry to reduce performance hits.

2 replies

CherryStreet
Jr Varsity I
Forum|alt.badge.img
  • Jr Varsity I
  • Answer
  • June 19, 2025

We are testing our new AI Assistant and ran your scenario through it, I hope this helps:
 

You’re on the right track — Acumatica does not surface all of this info in one place by default, but the data you want does exist in the system and can be accessed via a customization project, or built into a Financial Summary tab or custom dashboard on the Project screen (PM301000).

Let’s walk through where to find each data point so you can bring them to the top of the project form (or a tab), either via a custom DAC extension, a view delegate, or a project-based GI.

 

Summary: Data Source Mapping for Each Metric

🔹 A. Current Totals

Metric

Source Table/View

Field or Calculation

Actual Subcontract Amount

PMTran, POOrder/POLine

Sum of AP bills/receipts linked to Subcontract PO

Unreleased Retainage

APRegister, APTran

Sum of RetainageAmt where Released = False

Open Amount Due

PMProjectStatusEx

RevisedBudgetAmount - ActualAmount

 

🔹 B. Pending AR (Customer Invoices)

Metric

Source Table/View

Field or Calculation

Pending Invoice Amount

ARInvoice, ARTran

Where DocType = 'PM' and Released = False

Pending Retainage

ARRetainage, ARInvoice

Where IsRetainageDoc = True and Released = False

Pending Amount Due

Sum of above

Sum of unreleased + unreleased retainage

 

🔹 C. Pending AP (Vendor Bills, Subcontracts)

Metric

Source Table/View

Field or Calculation

Pending AP

APInvoice, APTran

Where Released = False and linked to project

Pending Subcontracts

POOrder, POLine (type = Subcontract)

Where OrderStatus = Open and Released = False

 

🛠️ How to Implement in a Customization Project

1. Create a Custom DAC Extension for PMProject

  1. Extend PMProject DAC.
  2. Add unbound fields like:

[PXDecimal()]

[PXUIField(DisplayName = "Pending AP")]

public virtual decimal? UsrPendingAP { get; set; }

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

2. Use a View Delegate or Field-Selecting Event

In your ProjectEntry graph extension:

  • Write custom logic to query relevant tables, aggregate values, and assign to the field.
  • Use SelectFrom<APInvoice>.Where<...> for Pending AP, for example.

public void _(Events.RowSelected<PMProject> e)

{

    var row = e.Row;

    if (row == null) return;

 

    // Example: Sum pending AP

    decimal totalPendingAP = 0m;

 

    var pendingBills = SelectFrom<APInvoice>

        .Where<APInvoice.projectID.IsEqual<@P.AsInt>

            .And<APInvoice.released.IsEqual<False>>>.View.Select(Base, row.ContractID);

 

    foreach (APInvoice bill in pendingBills)

    {

        totalPendingAP += bill.CuryOrigDocAmt ?? 0m;

    }

 

    row.UsrPendingAP = totalPendingAP;

}

Repeat similar logic for each field.

 

🧩 Optional: Add a “Financial Summary” Tab

  1. Add a new tab on PM301000 in the Customization Project.
  2. Place the calculated fields there.
  3. Or, use a Generic Inquiry and embed it as a tab via Navigation GI Panel.
 

📊 Optional: Use a GI Dashboard Instead

  • Build a Generic Inquiry that pulls all fields per project.
  • Link to PMProject by ContractID.
  • Add a Project Dashboard screen showing:
    • Pie/Bar chart for pending vs actual
    • Grid of unreleased AP/AR by vendor/customer
 

💡 ERP Pro Tips

💡 Tip for PMs: You can add conditional formatting in the GI to highlight high pending AP/retainage.

💡 Tip for Developers: Consider caching the values at Appointment or Transaction entry to reduce performance hits.


Forum|alt.badge.img
  • Author
  • Freshman II
  • June 19, 2025

Thanks.  Gives me some direction on what to do.  

 

Jeremy