Introducing Acumatica Cloud ERP: 2026R2
Technical discussions focused on Customizations for developers. See Low Code | No Code Forum for non-technical discussions
Recently active
Do the API Usage Limits affect OData calls?
A majority of our clients populate the long descriptions on line items they sell with important descriptive information for each line. They need to be able to view this on the screen without having to hover over each line item description. Pre-2025R2 we simply used a customization project to toggle the WordWrap for each of those fields allowing all of the text in the field to show and allowing the field to automatically expand to accommodate it. After the 2025R2 update we realized that the WordWrap functionality was removed. Our options now are to create a custom CSS file for each page or to create a global customization in C# to change all of the impacted pages for each customer and deployment. I’m curious if anyone else has found a more elegant way to manage for this change?
I have received some requirements from users. They want to display a QR code payment image that is generated as a base64-encoded PNG from an external API.I need to show this base64 image on an Acumatica form. Once the user scans the QR code and completes the payment, we will receive a response from the API and continue with the next process.Please guide me on how to display a dynamic base64 image in Acumatica 2025 R2, for both the Classic UI and the Modern UI.
I have an Acumatica instance with 16 tenants, and one of our requirements is to maintain a single set of supplier (vendor) master data that is shared across all tenants. The expectation is that a supplier and all its related information (locations, addresses, contacts, etc.) should be visible and remain consistent regardless of which tenant the user is working in.Our initial approach was to use Company Mask so that the supplier records could be shared across all tenants. This works well from a visibility perspective, but we have concerns about update operations.For example, assume the supplier record is physically owned by Tenant A (CompanyID = 2) and has a location with LocationID = 15. Because the record is shared using Company Mask, a user logged into Tenant B (CompanyID = 3) can open the supplier and edit the location details. However, when the update is performed, much of the Acumatica framework identifies records using the current tenant context together with the record key. Sinc
We are currently on 2022 R1, and plan on upgrading regularly. We were attempting to use Smartsheets for project management with Acumatica because of the built in integration. Smartsheets is no longer support, and was pretty far behind in capabilities. What project management programs integrate with Acumatica - we are Project Accounting only, NOT construction. Thanks!
Hi, can someone please help me how to create a selector with 2 (All records, project codes) tabs like this This screen is in the Daily Field Report y the tab Equipment in the coumn cost code I was looking on the internet but I did not find an example. Additional.My project is a customization. The Screen id of reference is: PJ304000Thank you very much I will appreciate any help
Hi all,I put together a small customization to make the **Sales Person** fieldrequired on the Sales Order Lines grid (SO301000), since our process needs asales person on every line for commission tracking. I figured I'd share ithere in case it's useful to someone else, and also because I'm still fairlynew to Acumatica customization and would love a sanity check from people withmore experience.The approach: since `SalesPersonID` already exists on `SOLine`, I used a`CacheAttached` handler with `PXMergeAttributes(Method = MergeMethod.Merge)`to add `Required = true` without redeclaring the field's other attributes,plus a `RowPersisting` handler to actually block the save (since `Required`alone only affects the UI).Full code + explanation here: https://github.com/i-wild/acumatica-sales-person-required```csharp[PXMergeAttributes(Method = MergeMethod.Merge)][PXUIField(DisplayName = "Sales Person", Required = true)]protected virtual void SOLine_SalesPersonID_CacheAttached(PXCache cache){}prote
I'm trying to make the Subaccount (SubID) field editable on the Journal Transactions screen (GL301000), regardless of the Batch Module (GL, AR, AP, etc.) or the Batch Status (Balanced, Released, etc.).My goal is to have the Subaccount field always enabled so that users can modify it.I first tried the following graph extension:using PX.Data;using PX.Objects.GL;namespace EnableSubaccount{ public class JournalEntry_Extension : PXGraphExtension<JournalEntry> { protected virtual void _(Events.RowSelected<GLTran> e, PXRowSelected del) { del?.Invoke(e.Cache, e.Args); if (e.Row == null) return; // Make the detail cache editable Base.GLTranModuleBatNbr.AllowUpdate = true; Base.GLTranModuleBatNbr.Cache.AllowUpdate = true; // Enable only the Subaccount field PXUIFieldAttribute.SetEnabled<GLTran.subID>( e.Cache, e.Row, true);
When I try to open my page in 26R1, I now get the following new error in the screen:An Error Occurred While Processing Your RequestThe Void CorrectShipment(PX.Objects.SO.SOOrderEntry, PX.Objects.SO.SOShipment, CorrectShipmentDelegate) method in the DeliveryTracking.SOShipmentEntryDeliveryTrackingExt graph extension is marked as [PXOverride], but its signature is not compatible with the original method. What changed between 24R2 and 26R1? I looked in the Developer Release Notes but nothing was mention for CorrectShipment or SOShipmentEntry.Here’s my code: [PXOverride] public void CorrectShipment(SOOrderEntry docgraph, SOShipment shiporder, CorrectShipmentDelegate baseMethod) { DeliveryTrackingSOOrder ext = docgraph.GetExtension<DeliveryTrackingSOOrder>(); try { ext.skipDeliveryTrackingSubmitOnSave = true; baseMethod(docgraph, shiporder); } finally {
Hi Team,I am looking for the 26 R1 customization project, but I couldn't find it in the thread below either.Could someone please share the project or let me know where I can access it?
I’ve used some of the samples for conditional formatting based on values, and I think I’m missing some small bit.I’ve added the code below.On the first field, referencing the custom field, it will always return “false”. That field is in the extended “CROpportunityHeader” which is the class for the view “Opportunity”. Slightly interesting point, if I intentionally misspell the custom field name it does the same thing, leading to believe that I need to do something to indicate it’s in a DAC Extension.On the second colored field, when I reference “CuryAmount” rather than the custom field it seems to works as expected.template> <style> [data-has-value="true"] input { background-color: #d4edda !important; color: #155724 !important; } [data-has-value="false"] input { background-color: #2bb14a !important; color: #155724 !important; } [data-rating="green"] input { background-color: #155724 !important; } [data-rating="red"] input { back
Hi Team,I am trying to update a custom field on the INTranSplit DAC from a custom graph. The update itself succeeds, but when I call Save.Press(), Acumatica throws the following validation errors:Error: Updating 'IN Transaction Split' record raised at least one error.Error: 'Source' cannot be empty.Error: 'Transaction Date' cannot be empty.The custom field (UsrPickedQty) exists on INTranSplit, and I am only updating that extension field. public class TestGraph : PXGraph<TestGraph>{ public SelectFrom<INTranSplit> .InnerJoin<INTran> .On<INTranSplit.FK.Tran> .InnerJoin<INLocation> .On<INTranSplit.locationID.IsEqual<INLocation.locationID> .And<INTranSplit.siteID.IsEqual<INLocation.siteID>>> .Where< INTran.tranType.IsEqual<INTranType.assembly> .And<INTranSplit.lotSerialNbr.IsNotNull>> .OrderBy<INTranSplit.lineNbr.Asc>
Sorry for all the MUI panel questions. I got panel to open and it does fire the custom action for the panel.I have a simple panel on PO301000. It opens and allows the user to enter a value in a field. I enter a value in the field and click OK. The field in the view is a custom PXFilter DAC.In debug, I get the current of the Filter and the field is always null. In debug, the value is null: This is the HTML and TS <qp-panel id="ChangeLoanView" caption="Change Loan" auto-repaint="true"> <qp-template id="fvChangeLoanView_div0" name="1" qp-collapsible=""> <qp-fieldset id="fsChangeLoanView_lrChangeLoanView_fs" slot="A" view.bind="ChangeLoanView" wg-container="ChangeLoanView_fvChangeLoanViewFields"> <field name="UsrLoan"></field> </qp-fieldset> </qp-template> <footer> <
Hi, I was wondering if we can control visibility of individual action buttons based on user access rights. Currently, it appears that access rights can be assigned at the screen/header level, but not directly to individual fields or action buttons. I would like to know whether it is possible to configure access rights at the action level, so that a button can be shown or hidden depending on the user’s access rights.Is there a standard way to do that? If not, is there a recommended customization approach for achieving this?Thank you.
After working on this for 4 full days, I am crying out for help. I’ve probably published 100 times. Since I cannot rebuild the pages using the command line (would be great if you could. Once published, the command line does nothing.) My project is HUGE and it takes 3 or so minutes to publish. 3 * 100 is a lot of minutes to wait!I created Popup Panels for two screens. I am able to get the panels to open, and the custom actions for them are firing. BUT I cannot find any way to get the fields to show in the panels.The code and panels work perfectly in Classic UI. Strangely, in order to get the menu options to show on one screen I have to manually add the buttons using the @gridConfig({ topBarItems: { code to do it. Doing that makes some of the default buttons on the grid disappear, so I would like to not use that approach, but desperate times call for desperate measures.In case you wonder, I am hiding the Add Items button and creating my own so that I can add new functionality.I
Hi everyone,I'm working on a PXProjection that joins a parent table with a child table using a LEFT JOIN.The relationship is one-to-many:One parent record can have multiple child records. Some parent records may have no child records at all.The projection itself works as expected, but I'm unsure how the DAC keys should be defined.The child table has a key field that is part of the projection's key. When there is no matching child record because of the LEFT JOIN, that key is NULL. However, a key field in a DAC cannot be null What is the recommended approach for defining keys in this type of projection?Should only the parent table's key fields be marked with IsKey = true? Is there a best practice for projections that include optional child records? How do you handle one-to-many relationships where the child record may not exist?I'd appreciate any guidance or examples. Thanks!
A few years ago, I wrote about Creating Acumatica DAC Extension Tables — a clean alternative to dumping custom fields directly into standard Acumatica tables. If you haven't read that post, the short version is: a DAC Extension Table is a separate SQL table that Acumatica automatically joins to a standard table like SOShipment. Your custom fields live in that extension table, keeping the standard table clean and your customization nicely isolated.That post covered the backend C# side: the DAC definition, the PXTable attribute, and the SQL table structure. What I didn't cover — because it wasn't relevant at the time — is what you need to do on the frontend when your Acumatica instance uses the Modern UI.This article picks up where that one left off and walks through the TypeScript and HTML changes needed to surface extension table fields on a Modern UI page.A Quick Refresher on Modern UI Page StructureModern UI forms are defined in TypeScript and HTML files rather than ASPX. For a given
Hi all,I'd like to clarify some fundamentals about how event handlers work in Acumatica, specifically around naming conventions and method discovery. I have a few basic questions:1. How exactly does Acumatica's framework discover and invoke event handlers under the hood? Is it purely reflection-based at graph initialization, looking for specific naming/signature patterns, or is there more to it?2. Is naming a method in the classic convention (e.g., CustSalesPeople_RowInserting) sufficient on its own for Acumatica to recognize and call it? 3. Would an arbitrary/non-standard name like _RowInserted (as opposed to the generic handler's required bare underscore _) be recognized as a valid event handler by the framework? My understanding is no - it would compile fine as a regular method but never actually be invoked, since it doesn't match either the classic DAC_EventType pattern or the generic _ pattern. Can someone confirm this is correct?I'm trying to nail down the exact rules here since
Hi Team,I have one processing screen, using which I am creating customer, then order using the created customer and then payment for the created order in the same process.There is an inconsistent error “The item CustomerID is not found (restricted:False,external:True,value:xyz)” is coming at the time of payment creation. The strange thing here is the Customer is there in the system and Order is also created using the same customer but at the time of payment creation getting this error and that too not the case with all the records. As, for some of the records the flow is working fine from customer creation to order to payment.Can anyone suggest something about the possible cause and resolution of this please. Thanks in advance!
We are attempting to upgrade from 24R2 to the 26R1 release of Acumatica, and one of the changes in this release or the previous one is that the Kit Assembly Component Splits looks to prevent the line from defaulting the location for parts with serial numbers that are user-entered on receipt. public class INComponentLineSplittingExtension : LineSplittingExtension<KitAssemblyEntry, INKitRegister, INComponentTran, INComponentTranSplit>{ protected override void SetUnassignedQty(INComponentTran line, decimal detailsBaseQty, bool allowNegative) { base.SetUnassignedQty(line, detailsBaseQty, allowNegative); UpdateUnassignedLine(line); } protected virtual void UpdateUnassignedLine(INComponentTran line) { if ((line.UnassignedQty ?? 0) == 0 || line.TranType != INTranType.Assembly) return; if (line.LocationID != null line.LocationID = null; if (line.LotSerialNbr != null) line.LotSerialNbr = null; if (li
I’m trying to find a specific data class mentioned in this guide: link, however, I can’t find ARPaymentEntry.LoadOptions. Is this a outdated Item class, or does it go by a different name?
I had a customization project error in our sandbox.Ever since the error occurred, I can’t publish or unpublish anything without getting another error prompt during compilation.[2026-07-09 11:16:04.284] Removing previous Modern UI files[2026-07-09 11:16:14.321] Error while deleting screen info folderHow would I go about fixing this?Acumatica 2025 R2, Build 25.201.0213
<template> <qp-template id="Document_PXLayoutRule1_div0" name="1-1-1" > <qp-fieldset id="Document_CstPXLayoutRule21_fs" wg-container="Document_form" view.bind="Document" slot="A"> <field name="WPickingNbr"></field> <field name="SiteID"></field> <field name="CreateTransfer"></field> <field name="Description"></field> </qp-fieldset> <qp-fieldset id="Document_CstPXLayoutRule22_fs" wg-container="Document_form" view.bind="Document" slot="B"> <field name="ShipDate_Date"></field> <field name="Time"></field> <field name="TransferNbr"> <qp-field control-state.bind="Document.TransferReleased"></qp-field> </field> </qp-fieldset> </qp-template> <qp-tabbar id="Tab"> <qp-tab id="TabDetails" caption="Details">
I have a dozen fields on a form that have cascading PXFormulas to calculate other field values automatically. For example:Base PriceCommission RateCommission Value (PXFormula of [Base Price] times [Commission Rate]House Comm. Split RateHouse Commission (PXFormula of [Base Price] times [House Comm. Split Rate])Everything calculates correctly when the record is saved but Classic UI updates these fields right away.The post below also talks about this but the solution there was to change all of the PXFormulas to PXDBScalars but I’m not sure that this is appropriate as I’m storing all of these values.Is there something I need to write in the .ts file to trigger the PXFormulas or do I need to make each field use PXFieldState<PXFieldOptions.CommitChanges> and write out all of the formulas in Updated events?
When worked with acumatica old version, clicked button “Update Customization Project” never show the message above. I just raise the question here to clarify the features. Do you guy know it ?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.