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 didn’t see a place to post the little gotchas that can turn into time eating development cycles so I thought I’d start it.Today I had an issue with a screen that needed severe orthodontic work.It was supposed to look like this:As it turns out, the issue was an “empty” qp-fieldset that I was having an issue with. When I removed the comment tags, the screen rendered properly instead of every following field from being placed into that “empty” fieldset. <qp-template id="formTPCommissionsSetup" name="17-17-14"> <div id="colSetTPCommSetupA" slot="A"> <qp-fieldset id="fldSetTPCommSetupA" view.bind="CurrentDocument"> <!-- <field name="CurrentDocument.SalesPersonID_description"></field> --> </qp-fieldset> </div> <div id="colSetTPCommSetupB" slot="B"> <qp-fieldset id="fldSetTPCommSetupB" view.bind="CurrentDocument"> <field name="CurrentDocument.UsrTPCommRateClass"></field> </qp-fieldset> &l
I’m trying to customize a grid with dynamic columns, the number of columns are based on how many items it has on Attributes screen (CS205000). Here are the samples, Sample 1 Sample 2 I have the code in EntryMatrix_RowSelected event which will try to hide a column(s) based on certain condition I tried using this code, but it didn’t work,PXUIFieldAttribute.SetVisibility(sender, "Extra Small", PXUIVisibility.Invisible);PXUIFieldAttribute.SetVisible(sender, "Extra Small", false); I can’t also use this since it has no direct DAC attribute,PXUIFieldAttribute.SetVisibility<DAC.attribute>(sender, null, PXUIVisibility.Invisible);PXUIFieldAttribute.SetVisible<DAC.attribute>(sender, null, false); Is there other way to hide column(s) maybe by name or index?
Hello:We’re looking at the feasibility of converting to modern UI in production when it leaves the Beta.I’ve ran into several interesting things, but one that feels concerning in the long run. It is common in our custom code to have DAC’s with properties decorated as the following example: [PXFormula(typeof(Selector<MyCustomClass.vendorID, Vendor.acctName>))]In classic UI, these formulas are calculated correctly as soon as the DAC is exantlated (as expected?).However, in modern UI, the above PXFormula is never calculated (verified with a break point put on an explicit setter). This was a bit of a surprise as we were tending to approach the UI as being two different display layers - ‘views’ - built on top of the underlying model and controller. Is this a bug? If not a bug is the construction we are using deprecated or invalid and only working unintentionally? is there a property in the PXFormula that would make this work? If not can you suggest an alternative approach?We se
Hello everyone,I’m having the following problem: I’m trying to convert a Classic UI screen into Modern UI and 3 of the buttons are not getting hidden for some reason but there’s a try that my colleague tried doing a while ago and the buttons are working as expected there but I’m unable to recreate them for some reason using the automatically converted screen into Modern UI. The buttons I’m having that issue are “Confirm, Generate and Change Order” also another thing I noticed is that we cant reuse the Transactions variable because if we do, the Subcontracts grid is not being automatically loaded on page refresh or load.The version of Acumatica I’m working with is 2025 R2. Here’s the automatically generated source code: I’ll have to paste the source code into pastebin since the source code is a bit too long and the post cannot be createdthe HTML filethe TS file that contains the viewinfoand the actual views TS file now the files from my colleague:The HTML filethe TS file Now the C# cod
In my case, I’m customizing SO301000 and enabling the import button on the Detail grid with the following:@gridConfig({ actionsConfig: { import: {hidden: false}, }})But, this seems to replace the settings that the base screen is using including: syncPosition: trueHow to I merge my configuration instead of replacing the existing gridConfig settings?
I’m trying to programatically created Sales Shipments: given a despatch message from the third-party warehouse, I locate the sales order and then use CreateShipmentIssue to construct the shipment.This works fine when I run the action as a user. But fails every time when running as a Process via the automation scheduler.My code simplifies to:orderGraph.Clear();orderGraph.Document.Current = PXSelect<SOOrder,Where<SOOrder.orderNbr,Equal<Required<SOOrder.orderNbr>>>>.Select(orderGraph, orderNbr);PXAdapter adapter = new PXAdapter(PXView.Dummy.For<SOOrder>(orderGraph)) { AllowRedirect = false, MassProcess = false };var orders = orderGraph.CreateShipmentIssue(adapter, receivedItem.ShippedDate, siteID, DateTime.UtcNow);The error is:PX.Data.PXRowPersistingException: Error: 'CuryID' cannot be empty. at PX.Data.PXDefaultAttribute.RowPersisting(PXCache sender, PXRowPersistingEventArgs e) at PX.Data.PXCache.AttributeHandlersSquasher`1.<>c__DisplayClass2_0`1.&
Here’s my scenario: on Acumatica 26.100.0175.3, I have an environment with two tenants, let’s call them Tenant A and Tenant B. Tenant B is configured as a Test Tenant.I have a simple customization project that includes both custom fields to extend existing DACs (in this case, the CR.BAccount, SO.SOOrder and SO.SOLine DACs), as well as a new custom action button on SOOrderEntry. Both Tenants have the same Customization Projects loaded (via Export / Import). When I publish the projects in Tenant A, the custom action appears in both Tenant A and Tenant B, but the custom fields only appear in Tenant A. When I publish the project in Tenant B, the inverse happens (fields disappear from Tenant A, appear in Tenant B, and the new custom action still appears on both).I can’t make the custom fields appear in both Tenants at the same time for some reason. I’ve never had this issue in any other environment. I’m at a loss to explain what is going on here...
My customization file looks like this (the relevant part, I think):<template> <field remove="#fsColumnA-Order field[name='CustomerRefNbr']"></field> <field name="CurrentDocument.ShipVia" after="#fsColumnA-Order field[name='CustomerOrderNbr']"></field> <field modify="#fsColumnB-Order field[name='OrderDesc']" after="#fsColumnB-Order field[name='ContactID']"></field> <field remove="#fsColumnB-Order field[name='CuryID']"></field> <field name="CurrentDocument.UsrOrderAlerts"></field> <field remove="#fsColumnB-Order field[name='DestinationSiteID']"></field> <field name="CurrentDocument.CreatedByID_description" after="#fsColumnB-Order field[name='CurrentDocument.UsrOrderAlerts']"></field>The following error appears on the screen:Error occured during HTML merge for 'SO301000', original source will be used instead. Error: Error: In HTML extension 'C:\Windows\TEMP\905219b4-17ee-4d7e-b95
Hi Team,In Acumatica, on the Journal Transactions screen, there is a Customer/Vendor field that is currently disabled. I have enabled this field, and I want it to work the same way as the Vendor field in Bills and Adjustments.In that screen, if a vendor has a branch restriction, the vendor does not appear in the selector when working in a different branch. I want the Customer/Vendor field in Journal Transactions to follow the same behavior.I have tried several code approaches, but I am still not getting the expected result. Does anyone know how to correctly apply branch restriction to this field so that the selector only shows vendors/customers allowed for the current branch?Any guidance or solution would be appreciated.Thank you. #region ReferenceID [PXDBInt()] [PXSelector(typeof(Search<BAccountR.bAccountID>), SubstituteKey = typeof(BAccountR.acctCD), DescriptionField = typeof(BAccountR.acctName))] [CustomerVendorRestrictor] [PXUIField(D
I did my homework and found this article which explains how to retrieve an attribute from a KV table.I am trying to get an attribute from POReceiptItemLotSerialAttributesHeaderKvExt. The main table is obviously POReceiptItemLotSerialAttributesHeader.When I try to get the attribute the object is null.In my code, I get the POReceiptItemLotSerialAttributesHeader record. Then, I try to pull the Attribute using that record for the attribute “AttributeSEEDCALC”.Here is the code in my extension. public class POReceiptEntry_Extension : PXGraphExtension<PX.Objects.PO.POReceiptEntry> { #region Event Handlers protected void _(Events.RowUpdated<INItemLotSerialAttribute> e) { var row = (INItemLotSerialAttribute)e.Row; if (row == null) return; string measurement = null; double seedsPerLB = 0; double seedsPerGR = 0; double dweight = 0; double dseedsPer = 0; POReceipt pOReceipt = Base.Document.Current; if (pOReceipt == null) return; POReceiptItemLotSerialAttribut
I am trying to customize the Item Class selector in the Appointment screen (FS300200) → Details tab → Add Items popup. My requirement is to filter the list of Item Classes based on custom business logic. Initially, I tried to achieve this using a CacheAttached event by creating an extension for AppointmentEntry and modifying the FSSiteStatusFilter.ItemClass selector attribute. However, my customization is not taking effect.While debugging, I noticed that the FSSiteStatusFilter cache is available under the AppointmentEntry graph instance. However, when I open the AppointmentEntry graph code in Visual Studio, I cannot find the related view or filter implementation there.Based on this, I assume that this functionality is coming from a separate AppointmentEntry graph extension.I started investigating the implementation: The Add Items button triggers the showItem callback command. I found this command in the Field Service library under: AddItemLookupBaseExt<TGraph, TDocument, TItemInfo
I tried using @columnConfig({ textAlign: TextAlign.Left }) in ts for my field, but it does not change its position.
I read this post I need fill parameters from POOrder.VendorID and POLine.InventoryID. But RowSelectorClick event not callback in tracnsaction grid. Can you any idea for help me?
Currently, the Acumatica FedEx Easy Post integration does not support the following FedEx label formats:4X6.75_LEADING_DOC_TAB 4X6.75_TRAILING_DOC_TABRequirement:Add support for the following label stock types in the FedEx Easy Post plugin: 4X6.75_LEADING_DOC_TAB 4X6.75_TRAILING_DOC_TAB please guide me on how you configured it? Any details or suggestions would be greatly appreciate...
We would like to sync PDF files into Shopify and display them on the storefront. The files have been successfully synced, but the issue is that we cannot open the files in Shopify. Could you assist us in resolving this?Or any alternatives on how we can flow this into Shopify?
I am working on a Field Services customization which adds an extra state to the appointment workflow for a particular service order type. The state, called “Ready to Bill”, sits between Completed and Closed. I have an action defined in a graph extension of FSAppointmentEntry which runs some custom billing logic. The intent is to have users run this action before they can close a completed appointment, so that the detail lines are updated based on our business rules and the charges are all correct. The action itself is working perfectly.The problem I have? No matter what I do, I cannot get the UI button for the action to actually transition the state of the appointment. I followed the instructions in the open university course W150 and the wiki:Extend System Workflow Add new state Add existing action (picked my action, defined in code, from the list) Add my action to the Completed state Add transition to the Completed stateThe instructions just end here, as if that is all you need to do
I’m trying to add a custom field in the mobile app to the Appointment Details screen, and I have not been having any success. I am able to add and remove existing fields, but the custom field will not appear. It is in the Web Service → Service description and its value is displaying in the field on the FS300200 web page.This is how I have been attempting to add it. I’ve been using the remove command to verify the mobile app is reading my latest update, so I’ve tried it without that as well.update screen FS300200 { update container "AppointmentRecords" { remove field "Other#Description" add field "ServiceOrderHeader#CustomerJobName" { displayName = "Job Name" placeAfter field "Description" } }} This is the field in the FSServiceOrder DAC extension: public sealed class FSServiceOrderExt : PXCacheExtension<PX.Objects.FS.FSServiceOrder>{ #region CustomerJobName [PXDBString(100, IsUnicode = true)] [PXUIField(DisplayName = "Customer J
When I open the browser console and write something like:function disableBranchSelector() { console.log("Disabling branch selector"); $('.branch-selector__button.dropdown-toggle').prop('disabled', true); } it works from the console and the dropdown is locked. But when I write this code in the Customization Project Screen Editor (as I usually write JS), it doesn’t work. I think the Sales Order screen JS doesn’t have access to this part of the screen, and that’s why it doesn’t work. How can I disable or hide this dropdown? What can I actually do with it?
How can I customize the system to not allow a user to change the Branch if certain conditions are met?
Hello, Not quite two months into our Acumatica implementation. I have some older customization packages/version I’d like to remove from production. Is it truly as simple as selecting the row of the customization version and selecting X to delete?
We are receiving an error when attempting to publish any customization in a SaaS 2025 R2 sandbox. We were able to publish these same customizations successfully in this environment a few days earlier, and nothing has changed as far as I’m aware. I have already tried clearing cache and a front end Application Restart, as well as unpublishing and republishing. The customizations validate successfully - the error occurs during the publication process. Has anyone else seen this error, and what is the solution in a SaaS environment?
Hello! My company is new to Field Services. Sometimes we want to over ride the contact, but ONLY want it to modify the contact box area, NOT the Address info. ALSO, sometimes when I pick a contact I want it to be the contact persons email and phone number, and sometimes I want it to be the basic company contact information. This would likely require a check box customization to choose which decision needs to be made for that specific service order. Any guidance on Out of the Box or customization is appreciated
I have an advanced customization product which is causing unexpected behavior with the REST API. There are currently two cases reported of such behavior:Environment: 25 R1, multi-nodeSymptom: when using OAuth 2.0 with Resource Owner Password Credentials, after a successful authentication returns <script>window.open("/Main","_top");</script> on the first request and a blank 200 on subsequent requests. API requests not using OAuth 2.0 (just authenticating with user / password work fine). Behavior cannot be reproduced locally (with client’s data and customizations) or in the client’s Acumatica-provisioned sandbox. Client is working around the issue by only publishing my customization on the main node and sending API requests to the processing node. Environment: 25 R2 (modern UI)Symptom: when logging into the connected instance through the Jigx app with OAuth 2.0 with Authorization Code, the client receives an error from the Jigx app indicating they are unable to sign in. Beh
After upgrading to 26R1, I’m now getting this new Exception (didn’t happen in 24R1):"A PXGraphExtension instance has been passed as a query parameter to the Select method."This happens on a Select using the POLine object: public class POMaintExtension : PXGraphExtension<POOrderEntry> { public SelectFrom<POLine> .Where<POLine.orderNbr.IsEqual< POOrder.orderNbr.FromCurrent>> .View POLineView; private void DeviceHubPrint() { foreach (object objPOL in POLineView.SelectMain(this)) //throw Exception...Question: did something change with POLine causing this new behavior?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.