Introducing Acumatica Cloud ERP: 2026R2
Technical discussions focused on Customizations for developers. See Low Code | No Code Forum for non-technical discussions
Newest first
I am converting an existing Classic UI screen to Modern UI in Acumatica and facing an issue with custom icons not displaying in the Modern UI.In the Classic UI, I have custom icons for the Set Default Site button and the Back toolbar button, along with folder and file icons displayed in the grid. These icons work correctly in the Classic UI.In the Modern UI, I have configured the button icons using @actionConfig in the TypeScript screen definition, as shown below:@actionConfig({ images: { normal: "/AcumaticaQMS26R1/Pages/EW/QC/Icons/setdefault.png" }})sPSetDefaultSite: PXActionState;Similarly, I have configured the Back button icon using back.png. However, the icons are not displaying as expected in the Modern UI.The Classic UI also uses CSS classes and the grid_RowDataBound event handler to display folder and file icons in the grid. I would like to understand how to implement the same functionality in Modern UI.My questions are:What is the correct way to configure custom
Hello, the following code snippet does not result in my new field being added to my inventory selector. This seems like a straightforward approach? namespace PX.Objects.IN{ public class InventoryItemExt : PXCacheExtension<PX.Objects.IN.InventoryItem> { #region UsrModelID [PXDBString(125)] [PXUIField(DisplayName="Model Number")] public virtual string UsrModelID { get; set; } public abstract class usrModelID : PX.Data.BQL.BqlString.Field<usrModelID> { } #endregion } [PXNonInstantiatedExtension] public class IN_InventoryItem_ExistingColumn : PXCacheExtension<PX.Objects.IN.InventoryItem> { #region InventoryCD [PXMergeAttributes(Method = MergeMethod.Append)] [PXCustomizeSelectorColumns( typeof(PX.Objects.IN.InventoryItem.inventoryCD), typeof(PX.Objects.IN.InventoryItemExt.usrModelID), typeof(PX.Objects.IN.InventoryItem.descr))] public string InventoryCD { get; set;
Hello,Can anyone use AcuMate to validate Modern UI files?I’m trying to use AcuMate with Modern UI files and wanted to check whether anyone in the community has successfully used it for validate html and ts files.I have AcuMate extension installed and enabled in VS Code Acumatica version 26R2My current configuration is:acuMate.backendUrl: http://localhost acuMate.login: admin acuMate.password: 123 acuMate.tenant: empty(if single tenant) acuMate.useCache: true acuMate.useBackend: true acuMate.usePrettier: true acuMate.clearUsages: trueHas anyone successfully used AcuMate to validate Modern UI files? If so, could you share your configuration or any additional steps required?Thank youSrinivas Kota.
export class TimecardWithTotals_Custom { //@linkCommand("ViewTimecard") //@removeDecorator("linkCommand") @columnConfig({ editorConfig: { linkCommand: "ViewTimecard" } }) TimeCardCD: PXFieldState; }I tried all to remove the link command, nothing works
Hi all,I've open-sourced MuiLint, a linter for the Acumatica Modern UI in Visual Studio rather than Visual Studio Code like AcuMate. The HTML merge fails quietly: a selector typo, a self-closing <field/> or a Usr field missing from the TypeScript just means the field never appears. MuiLint flags them as you type.Visual Studio: squiggles, lightbulb fixes, completions, and F12 into the stock HTML or the .ts CI: a command-line tool and a GitHub Action, with SARIF output 13 rules, configurable through .editorconfig, with no running site neededIt works alongside AcuMate (VS Code) and Acuminator (C#) rather than replacing either.Get the .vsix from the latest release. False positives count as bugs, so please report them on GitHub or here.Not affiliated with or endorsed by Acumatica.
I am trying to override a method in the Self Service Portal installed as MUI. The error states that my signature doesn’t match the one I am overriding. Looks correct to me... public class ICSInventoryLineMaint : PXGraphExtension<SPInventoryItemMaint> { public static bool IsActive() => true; public delegate IEnumerable FetchItemsDelegate(FetchItemsSource source = FetchItemsSource.Catalog, bool readOnly = false); [PXOverride] public IEnumerable FetchItems(FetchItemsSource source = FetchItemsSource.Catalog, bool readOnly = false, FetchItemsDelegate base_FetchItems = null) {Here is a screen shot showing the squiggleThe original method signature is:public virtual IEnumerable FetchItems( FetchItemsSource source = FetchItemsSource.Catalog, bool readOnly = false){I set my delegate as optional as this is a necessary thing to do when there is an optional parameter in the original signature.It looks like my signature matches the original.Any idea what I have done wrong?
We're on 2026 R1 and building field-change history for time-in-stage reporting, starting with CRLead.Status and CROpportunity.StageID. Each change should add a row to a custom table, BXFieldHistory (entity NoteID, field name, old value, new value, changed by, changed on).Updates come from several places: the stock screens, Lead → Opportunity conversion, mass-update screens, and an external integration using the contract-based REST API. So we plan to attach a custom attribute (a PXEventSubscriberAttribute subclass) to the fields through a DAC extension with PXMergeAttributes, rather than one graph extension per screen.public class BXTrackHistoryAttribute : PXEventSubscriberAttribute, IPXRowUpdatedSubscriber, IPXRowPersistedSubscriber{ // RowUpdated: compare e.Row vs e.OldRow, remember the change // RowPersisted: write the BXFieldHistory row}What's the supported way to write the BXFieldHistory row from inside the attribute, so it commits or rolls back with the parent record in e
when creating a new Stock Item and typing in the Inventory ID field, Acumatica does not display matching existing Inventory IDs as autocomplete suggestions. This behavior is available in places such as the Sales Order line Inventory ID field.The requirement is to provide a similar autocomplete/drop-down suggestion list while typing in the Inventory ID field on IN202500. For example, if the user types LAP, the field should suggest existing Inventory IDs such as LAP-001, LAP-002, etc. However, the user must still be able to enter a completely new Inventory ID (for example, LAP-004) and create a new Stock Item. In other words, the suggestions should assist the user but should not require the entered value to already exist.I would appreciate any guidance on the recommended Acumatica 25R2 approach or customization code for achieving this while preserving the standard InventoryRaw/dimension and Inventory ID creation behavior. Thanks in advance!
I’m trying to add a new tab to the purchase order screen and add a placeholder fieldset that spans the entire width of the tab that someone can add user defined fields too.Before I can begin to explore the typescript and html side of things I can’t even upload files from my computer to the customization after extending the Purchase Order screen. (The Files or Modern UI files I don’t see an upload widget)I see the typescript and html from the purchase order screen am I supposed to edit that or upload my own?The other forum threads I’ve seen show typescript samples but no instructions on how they got that far.
Hi all, could not find any related topic and being confused by MYOB support in the past have a silly question. Our setup has a lot of published customisations 10+ for example. If I need to re-publish one of them or update the one of the existing custimisation is that possible or do all customisation need to un-published and republished again?
Hello,I’m working on a customization that extends a standard Acumatica screen. I’ve added several new fields, and this customization is part of our module. When we deploy the module, we also want to deploy the related help content.I created a new Wiki and successfully added help articles for our custom screens. My question is: How can we deploy an updated help article for a standard Acumatica screen as part of our module?Any guidance or best practices would be appreciated.
I have seen this come up in the Modern UI Issues thread. We are not live on 26R1 yet, but pop-up windows not reliably remembering their size has been an ongoing frustration during testing.I found a workaround, but no documentation for it. Does anyone know how this actually works, or where it is documented? I would rather set it properly than rely on a browser-side hack.26R1 (possibly earlier) appears to store pop-up window dimensions in the browser's local storage, keyed by screen ID. Adding or editing key/value pairs changes the size the pop-up opens at.Example: from Sales Orders (SO301000), clicking the Customer ID link opens Customers (AR303000) in a pop-up window. By default it opens too small, and resizing it does not reliably persist. Adding or editing these keys in local storage makes it open at a consistent size:AR303000_oheightAR303000_owidthThere are also iheight and iwidth keys. I do not know what distinguishes the "o" set from the "i" set. (Outer vs. inner frame, maybe?) W
Adding a restocking fee to an RC return order | Community Has anyone implemented a Shopify restocking fee import into Acumatica RC refund orders?I’m looking for a code-level approach to retrieve the restocking fee from Shopify and add it as a separate line to the RC refund order.I checked the Shopify refund data and couldn’t find the restocking fee directly in the REST OrderRefund model.Is there an existing Acumatica API/model or recommended approach to retrieve the Shopify restocking fee and add it to the refund order?
npm run watch --- --env customFolder=development screenIds="TR300300" run successful but in browser my screen is not changed. But if i republish my project change become
Hi All, have another stupid question and if this is covered already, please direct me to it. But we have a custom built ‘Import Scenario’ which take a CSV file and creates customers/supplier/invoices/payments etc. For a certain import type, I want to change a logic of certain data so how it ends up in MYOB eventually? Is this possible to do by my own, without MYOB support? If I try Customisation button it says to ‘Select Project’ or ‘Edit Project’ and then I am prompted to enter the project name which I do not know. So thought to check here for help.
Environment: Acumatica 2026 R1 (SaaS), Modern UI, screen EP305000 (Employee Time Cards). We’re new to Acumatica and building our first customizations.We've added a custom column to the Time Entry Summary grid that opens a dialog for the selected row. It works perfectly with a mouse. We cannot find any way to reach or activate it from the keyboard, and we've run out of documented options. Classic UI has PXDSCallbackCommand.ShortcutKey for binding a key combination to a callback command. What replaces it in the Modern UI? We'd be happy with a screen-level hotkey that acts on the currently selected row — it doesn't have to be cell focus.What we builtAn unbound field on a cache extension — no database column, value computed server-side:public sealed class EPTimeCardSummaryNoteStatusExt : PXCacheExtension<TimeCardMaint.EPTimeCardSummaryWithInfo>{ public abstract class usrNoteStatus : IBqlField { } [PXString(24, IsUnicode = true)] [PXUIField(DisplayName = "Daily Notes")]
Hi @Everyone I am getting issue in Modern UI files when we extension screen in multiple project Example :- we have Bill of material screen in Acumatica so extension file Main File :- AM208000.ts @gridConfig({ preset: GridPreset.Details, pagerMode: GridPagerMode.NextPrevFirstLast, adjustPageSize: true, autoRepaint: ["BomMatlRecords", "BomStepRecords", "BomToolRecords", "BomOvhdRecords", "OutsideProcessingOperationSelected", "CurySettings_AMBomOper"],})export class AMBomOper extends PXView {} Extension 1 :- AM208000_EWPAQMS_generatedunder ts file we have code export interface AMBomOper_EWPAQMS_generated extends AMBomOper { }@gridConfig({ preset: GridPreset.Details, pagerMode: GridPagerMode.NextPrevFirstLast, adjustPageSize: true, autoRepaint: ["EWQCBOMVariables", "EWQCInspectionPlanDetail", "EWQCAssociateChecklistGroups"],})export class AMBomOper_EWPAQMS_generated {}Issue :- my code is working but main view under the autoRepaint its not working while i publishing my files i dont know ho
I can publish with cleanup if I go into every single project and select from the menu but is there a way to do it from the Customization projects page?
I thought I would be clever with a synchronization project. I need to know when the last time I synced the data in a INSiteStatusByCostCenter record. So I created a separate table called INSiteStatusByCostCenterTPSync. This is the DAC: [Serializable] [PXTable(typeof(INSiteStatusByCostCenter.inventoryID), typeof(INSiteStatusByCostCenter.subItemID), typeof(INSiteStatusByCostCenter.siteID), typeof(INSiteStatusByCostCenter.costCenterID), IsOptional = true)] public class INSiteStatusByCostCenterTPSync : PXCacheExtension<PX.Objects.IN.INSiteStatusByCostCenter> { #region InventoryID [PXDBInt(IsKey = true)] public virtual Int32? InventoryID { get; set; } public abstract class inventoryID : BqlInt.Field<inventoryID> { } #endregion #region SubItemID [PXDBInt(IsKey = true)] public virtual Int32? SubItemID { get; set; } public abstract class subItemID : BqlInt.Field<subItemID> { } #endregion #region SiteID [PXDBInt(IsKey = true)] public
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>,
Has anyone managed to sucessfully add a new barcode step to a WMS form. My code appeared to working fine, but replacing the transitions breaks the confirm package and confirm shipment buttons for some reason. Basically in pick pack ship in pack mode, I need it to tell the user to scan a custom field value for the package. And it seems to works if I do this in a scanextension script: [PXOverride]public virtual ScanMode<PickPackShip> DecorateScanMode(ScanMode<PickPackShip> original, Func<ScanMode<PickPackShip>, ScanMode<PickPackShip>> base_DecorateScanMode){ // Call the base code to get the original mode var mode = base_DecorateScanMode(original); //return mode; if (mode is PickPackShip.PackMode packMode) { packMode.Intercept.CreateStates.ByAppend(basis => new ScanState<PickPackShip>[] { new BoxPackageTransferLabel() } ); packMode // Replaces the previous implementation with a new one.
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
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 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
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.