Introducing Acumatica Cloud ERP: 2026R2
Technical discussions focused on Customizations for developers. See Low Code | No Code Forum for non-technical discussions
Recently active
I’ve got a custom GI that pulls together a bunch of metrics on customers, and I’ve added a dashboard to visually display data related to the customer invoices to the side panel. Naturally, I’d like if selecting a different customer in the GI would update the dashboard to show data filtered for that customer, and I was able to do this successfully with linked GI/Dash parameters. My issue is that I also want to be able to adjust the date range for the dashboard data on the fly. For instance, let’s say I’m assessing a customers credit, and I have a graph of account balance by date in my side panel, and I want to deep dive on the last 3 month. I want to plug in a date range in my side panel dash and have all my graphs update to just the last 3 months invoice data. But no matter what I do, the parameters on the dashboard are read only.What’s more aggravating is that this all works fine when the dashboard is opened in its own page. There just seems to be something applying read only status t
Normally, the projects are visible in version 24r2; however, after upgrading to version 26r1 and running some tests, we were surprised to find that the projects no longer appear (they do not show up in the filter). Could this be due to a specific configuration required to view them on the expense request screen?I also notice there was a change in the DAC; could that be related? I have attached the code.If you are aware of any relevant configuration settings, I would appreciate the information. version 24r2#region ContractID public abstract class contractID : PX.Data.BQL.BqlInt.Field<contractID> { }[PXDBInt][PXUIField(DisplayName = "Project/Contract")][PXDimensionSelector(ContractAttribute.DimensionName, typeof(Search2<Contract.contractID, LeftJoin<EPEmployeeContract, On<EPEmployeeContract.contractID, Equal<Contract.contractID>,
In this topic, I’d like to share with the community an approach I used to filter data by multiple values.It’s nothing groundbreaking, but I thought it might be useful for someone who runs into a similar scenario.Let’s say we need to create a new screen that displays all employees, where we can filter results by Department and Labor Item (with the ability to select multiple values).The final result looks like this:Modern UIClassic UIImplementationTo implement this, we need to declare the filter fields as follows:using PX.Data;using PX.Data.BQL;using PX.Data.BQL.Fluent;using PX.Objects.EP;using PX.Objects.IN;using System;namespace MyProject{ [Serializable] public class Filter : PXBqlTable, IBqlTable { #region DepartmentID [PXString] [PXSelector(typeof(SearchFor<EPDepartment.departmentID>), typeof(EPDepartment.departmentID), typeof(EPDepartment.description), ValidateValue = false)] [PXUIField(DisplayName =
Hello everyone! Is there a way to add an Upload from File button to the Purchase Requests screen to allow for imports from excel directly into a purchase request? We are using this for our quoted goods and lots of the quotes can run pretty long. I want to avoid a hit on efficiency by having the requestor spend time on filling out every single item from a quote. Thank you!
Hello! I need to add a custom button to the Address on the Leads screen. The address section is a common screen This is my goal (shown in classic UI) Even if I could extend/modify the “common” files, I don’t want to add this button to every place that this address is used. The other issue is that the Address section is part of tabGeneral which includes the Contact section.<qp-tabbar id="LeadCurrent_tab" class="label-size-m" wg-container=""> <qp-tab id="tabGeneral" caption="General" ref="tabGeneral_Content"></qp-tab>I am lost as to how I can accomplish this.Would I have to completely replace the tabGeneral with a custom tab and put all the fields and related business logic? Thanks in advance for any tips.
Hi there, Im also met this strange behaviour, and im confused why this happends. Part 1. Story + Default UI This issue caused by FSAppoinmentDet.LineRef. For some reason, in default UI while i inserting rows in Details whithout saving everything is good. Case 2. If i insert 1 line. Save Doc. Trying to insert next line(without page refresh.). As you see here, line ref duplicated and it`s obvious that i will recieve this error here.If i repeat this case, but with page refresh(ctr + r). Ref nbr on row init defaults as expected. I got this behaviour if i publish 2 cusomization. This customizations don`t interferring with events of insert or defaultings. in both i have only row selected( Events.RowSelected<FSAppointment> e ).In case if 1 of those was published everything ok. You can assume, that i partially find source of issue. Part 2. MUIIf i repeat any of cases from previous part, everything will work as expected. without any errors.I understand thats it`s two different Web applic
Hi Team,In the Sales Order (SO301000) – Add Items / Inventory Lookup popup, the Inventory field is automatically populated based on the Inventory selected on the current Sales Order line using the FieldSelecting event.This implementation works as expected in the Classic UI. However, in the Modern UI, the same FieldSelecting logic only populates the Inventory value in the field but does not apply the filter to the grid.Expected Result:When the Add Items popup opens, the Inventory field should be populated with the Inventory from the current Sales Order line, and the ItemInfo grid should immediately be filtered accordingly, without requiring the user to manually enter or reselect the Inventory value.
Hi everyone, We created a set of custom screens under a new workspace/folder (SA* screens). In our development tenant, we configured Access Rights by Screen (SM201020) such that only our dedicated custom roles have access (Delete), and all other roles are set to Revoked In the Customization Project, the screens were included under Access Rights. The Issue: When deploying and publishing the package to existing test instances (where previous versions had been published earlier), the permissions work as expected—only our custom roles have access. However, when installing this package on a fresh, virgin instance/tenant for a customer, all roles in the system end up with full (Delete) access to our custom screens instead of having them revoked. Any guidance or best practices would be greatly appreciated! Thank you
Hello Everyone.I have created a GI that dpending on selected “Module” should navigate to the source document in my side panels. For example “AP” should navigate to “Bills & Adjustments”. Here is partial data from my result grid I know my keys are DocType and RefNbr. So here is how I have set up my Navigation Parameters and Visibility Conditions I have two problems.When I click on the hyperlink or record it doesn’t show the related document in the side panel.In my GI the navigation Icon is always invisible with this condition. If I deactivate the condition then it becomes visibleWhat I am doing wrong?
I am currently configuring an automated invoice emailing process in Acumatica using Business Events + Email Notifications + Attached Reports.My setup is the following:Business Event Type: Trigger by Record Change Screen: AR Open Invoice (GI based) Trigger Condition: Old Status = Balanced New Status = Open Subscriber Type: Email Notification Attached Report: AR641000 - Invoice/Memo “Use Event as Data Source” is enabled Source Table = ARInvoiceThe Business Event and Email Notification are working correctly:The email is successfully sent The subject/body correctly resolves dynamic values such as: ((ARInvoice_refNbr)) ((ARInvoice_docType)) The Related Entity in Business Event history correctly shows the invoice reference number The AR641000 report displays correctly when manually run from the screenHowever, the issue is that the PDF attachment generated from the Email Notification is blank.The PDF structure/layout loads, but no invoice data appears inside the report.I already test that
I’m trying to follow the examples to change the CSS styling of a row within a grid: I’ve a custom field that gives the quantity allocated on each Sales Order details line and want to change the colour of that line to highlight when it isn’t fully allocated.So I started with this: UI Events: Changing of the CSS for a Row of a Table • UI Development Guide • Acumatica Beacon(And added handleEvent, CustomEventType, RowCssHandlerArgs to the import {} from “client-controls” ) @handleEvent(CustomEventType.GetRowCss, { view: "Transactions" }) getReceivedRowCss(args: RowCssHandlerArgs<SOLine>): string { const split = args?.selector?.row; if (split != null && split.UsrQtyAllocated.value < split.UnshippedQty.value) { return "bold-row"; } return undefined; }Where UnshippedQty is a standard field in SOLine. UsrQtyAllocated is defined in (DAC) SOCustomisations.SOLineExt, and in the .ts file as:export class SOLine_SOCustomisations
We have a large number of existing customizations built for Classic UI, including ASPX changes, JavaScript, PXControls, grid customizations, actions, and screen extensions.When the same screen is converted to Modern UI, which types of customizations typically require complete redevelopment rather than minor modifications?
Hi Community,I'm trying to enable the Upload button on the Bank Deposits (CA305000) screen. Here's what I have done so far: Set AllowUpload = true for the grid (DepositPayments). Added the [PXImport(typeof(CADepositDetail))] attribute to the DepositPayments view. However, the Upload button is still not enabled on the screen.Is there any additional steps I need to take to make the Upload button functional here?Any guidance or insight would be greatly appreciated!Thanks in advance. 😊
Hi All,I have a dashboard with 20 widgets. It's causing the dashboard to load slowly (approx 30 secs).We have already done SQL optimizations on the GIs, and also added Refresh Widget intervals — this helps with caching on repeat loads, but not the initial load.Our remaining bottleneck is browser connection queuing: all ~20 widgets fire simultaneously on page load, and since browsers cap concurrent connections per host, later widgets queue behind earlier ones — this accounted for more total load time than the SQL cost did.Also aware that Acumatica suggests a max of 10 widgets per dashboard, but this isn't a hard stop.Questions:Does Acumatica's Dashboard framework support lazy-loading widgets (only fetching data when scrolled into view), a "load on demand" setting (as opposed to loading everything on page open), or parallel/staggered loading? Is there a supported way to stagger initial widget load requests on page render, rather than all firing at once?Or any other way to help make the d
I had a Table Value function that used UNION ALL to merge the results of three queries. Then I wrote a Table Value function to return the results in sorted order. Finally, I added a DAC to sit on top of the SQL view.Sometimes, after publishing, the above solution wouldn’t work unless we also restarted the application. That’s not a big deal to do after publishing but if we forgot, the GI would show errors.So I switched out the above with a series of PXProjections and then a MappedSelect for the final result.Some notes for future me:Create each ‘view’ or sub-select as a PXProjection. This is a good time to decide if I’m going to make all the field names the name now, or if I’m going to map them together later.PXDBCalced fields seem to benefit from using a ‘persisted’ field attribute instead of the suggested non-persisted attribute (PXDBInt instead of PXInt)[Serializable][PXCacheName("Activity - Freight")][PXProjection(typeof( SelectFrom<ARRegister> .InnerJoin<ARInvoice>
HelloI am working on a customization where I need to determine which Company a specific user has access to.The requirement is:A user can have access to one or more Company. When the user is created or modified, I need to retrieve the Organization ID that user currently has access to.For example,: private List<int> GetAccessibleOrganizationIDs(PX.SM.Users user){ int?[] organizationIDs; using (new PXLoginScope( $"{user.Username}@{PXAccess.GetCompanyName()}")) { organizationIDs = PXAccess.GetAvailableOrganizationIDs(); } return organizationIDs .Where(x => x.HasValue) .Select(x => x.Value) .Distinct() .ToList();} Is PXLoginScope + PXAccess.GetAvailableOrganizationIDs() the recommended way to get Organization ID for specific user?
Note: A lot of this is written by Claude with directions from me. We ran into this issue while developing the MCP server.The property list an exposed Generic Inquiry returns over OData is **neither the ordernor the exact set of columns you put in the Results Grid**, and I can't find anything inthe design tables that tells you what it *will* be. Asking in case I've missed it.Say a GI's Results Grid holds three columns, in Sort Order: `Customer Name`,`Order Nbr`, `Status`. What `$metadata` actually reports is something else:- Any result column that is **also an entity key** is hoisted to the **front** of the list.- Keys of the joined tables are **appended at the end even if you never added them** — this part *is* documented ("*GI Access Through OData: General Information*").- Where two columns produce the same name, one becomes `X` and the other `X_2` — and which one keeps the bare name depends on **grid position**, not on the column.- Inactive rows are skipped, and the order follows *
Hello I am customizing the Pay Bills screen and overriding the apdocumentlist delegate.My requirement is:When a specific Payment Method is selected Only show AP Bills whose corresponding invoice in an external system has status Pending The external invoice ID is already stored on APInvoice in a custom field such as UsrExternalInvoiceId I cannot store the external invoice status on APInvoice or in another database tableMy current view override is similar to: public delegate IEnumerable APDocumentListDelegate();[PXOverride]public IEnumerable apdocumentlist(APDocumentListDelegate baseMethod){ IEnumerable baseResult = baseMethod(); PayBillsFilter filter = Base.Filter.Current; if (filter == null || !string.Equals( filter.PayTypeID, ExternalPaymentMethodID, StringComparison.OrdinalIgnoreCase)) { return baseResult; } var filtered = new PXDelegateResult(); foreach (object row in baseResult) { if (invoice == null)
Hi all,Does anyone know how to display custom fields from the Classic UI after converting a screen to Modern UI in Acumatica 2026 R1?I have existing custom fields that were working correctly in the Classic UI. After converting the screen to Modern UI, the custom fields are no longer displayed.I have tried several approaches, including Screen Configuration, but I still cannot get all of the custom fields to appear.Has anyone faced this issue in Acumatica 2026 R1 and can advise on the correct way to migrate/expose existing Classic UI custom fields in Modern UI?Any guidance would be greatly appreciated.Regards,Lalith
Hi everyone,I have a specific functionality implemented in one Acumatica Customization Project.Now, in another Customization Project, I need to reuse some of the functionality and DAC fields that were introduced in the first customization.What would be the recommended approach for this scenario?I would appreciate any recommendations or best practices for structuring customizations in this case.Thanks!
Hi,I have a custom List screen with a grid and a LinkCommand that opens a document in another graph.I currently use:throw new PXRedirectRequiredException(graph, "Document"){ Mode = PXBaseRedirectException.WindowMode.Same};The document opens correctly, but the original List screen is replaced, so the user cannot easily navigate back.WindowMode.NewWindow opens the document in a new tab, which is also not what I want.What is the recommended Acumatica approach to open a document from a List/Grid screen while keeping the ability to navigate back to the original List screen?Thanks!
Hello Team,We are using the PXPricingAnalysis package, which includes a Pricing Analysis smart panel popup action. When the popup is opened in the Classic UI, the grid applies specific row and cell colors based on the data.Currently, this coloring is handled in the graph using the `Page_Load` event. The implementation creates CSS styles using `PXStyle` and applies them to the `PXGrid` rows/cells through `RowDataBound`.Could anyone please guide us on the recommended way to implement this same row-level and cell-level coloring in Modern UI for this smart panel/grid?I have included the relevant Classic UI implementation below for reference.https://github.com/Acumatica/Acumatica-PricingAnalysis Thank you!
Version 26.101.0225I’ve modified the Customers screen (AR303000) in Modern UI to add a detail grid to the Contact tab and to add some action buttons above the grids.In my development environment, everything looks as it should: When I publish this to the sandbox environment, two of the buttons are missing: Using F12 to view the source I can see that the missing PXActionState code is there. The button is simply not visible.How might I go about figuring out why it isn’t appearing?C# and TS code below: public PXAction<CRContact> ResetMagentoPassword;[PXButton(Category = "ECommerce")][PXUIField(DisplayName = "Reset Magento Password", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]...public PXAction<CRContact> CreateMagentoCustomer; [PXButton(Category = "ECommerce")][PXUIField(DisplayName = "Create Magento Cust.", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]...export interface ContactDetail_TPMagentoMods_generated e
Hello,I am trying to make the records on the Approvals screen scrollable on Modern UI, rather than going through pages using the Next button. The screen is scrollable in Classic UI by default, without any screen-level change.For this requirement, I added a TypeScript extension as below: import { removeDecorator, gridConfig, GridPreset, GridFilterBarVisibility, GridNoteFilesShowMode, GridPagerMode,} from "client-controls";import { EPApproval } from "src/screens/EP/EP503010/EP503010";export interface EPApproval_P24KEPApprovalsRecordsPerScreen_converted extends EPApproval {}@removeDecorator("gridConfig")@gridConfig({ preset: GridPreset.Processing, showFilterBar: GridFilterBarVisibility.OnDemand, allowUpdate: false, showNoteFiles: GridNoteFilesShowMode.Suppress, defaultAction: "EditDetail", pagerMode: GridPagerMode.InfiniteScroll, adjustPageSize: false,})export class EPApproval_P24KEPApprovalsRecordsPerScreen_converted {} But even after publishing the
i am attempting to publish a customization project on an instance running on localhost (build 26.100.0175.4) on my dev box. if i publish from the CPE, it fails:[2026-08-26 23:58:36.965] Validation finished successfully.[2026-08-26 23:58:45.103] System.ApplicationException: The customization document has been changed after validation. at Customization.CstManager.Publish(Int32 hashCode, ICustomizationLogger logger) at PX.Web.Customization.Controls.Publish.DoPublish(Int32 hashCode, HttpResponse response)[2026-08-26 23:58:45.111] An error has occurred. Please report this error to the technical support and attach the information provided above.instance is running on a W11 box; no other users are connected, no IDE is running, only one instance of Edge is open, with the main browser open to SM204505, and the CPE window open attempting to publish. no other customization projects are published in the instance. the project contains no Modern UI items, and modern UI is not enabled on any
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.