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 have customized this report but not able to remove this space I have highlighted can anyone please help me here with this ?
I would like to display two fields from the Customer (CST.AR.30.30.00) screen, namely “Customer ID” and “Location ID” in the grid of transactions on the AP.30.40.00 screen. I know I can add fields, but I am not sure how to relate the two screens in the customization project to expose them? I need to be able to select a Customer and Location on the AP Bills and transactions, if possible. I’ve taken some screenshots below for reference.Thanks!
I am making updates to various tables in AR. After making the changes, I want to recalculate customer balances using the ARIntegrityCheck graph. I created the graph instance. My goal is to “check” the box on the customer number I want to recalculate. After I initialize the graph, all of the caches are empty. When you open the screen, the grid is populated with all the customer id’s. I thought that by creating the graph instance, the caches would be populated through the events on the graph.I’ve tried everything I can think of to get the graph “loaded”.As per below, I am trying to get a current record for the customer number I am updating. I set the checkbox to true for Selected and update the current.At the end, I click the Process button using a technique I found on Stackoverflow. I get a PXAction exception because I don’t think there is an “action” on the graph I can call.var arIntegrityCheck = PXGraph.CreateInstance<ARIntegrityCheck>(); //arIntegrityCheck.Load(); //arI
Hello,While working with fBQL or BQL I have often wanted to see what exactly the equivalent SQL statement be. Is there an inbuilt function something like like .ToSQLString() that we can use on a fBQL statement or View that can show us the equivalent SQL. So for example, if I have the following ViewSelectFrom<CSAnswers>.InnerJoin<InventoryItem> .On<InventoryItem.noteID.IsEqual<CSAnswers.refNoteID>>.Where<CSAnswers.attributeID.IsEqual<Use<slots>.AsString> .And<InventoryItem.inventoryID.IsEqual<@P.AsInt>>>.View.Select(cache.Graph, invtID) How can I see the exact SQL that’s generated (including the parameter values in the Where clause)?One option is I can run SQL profiler, but is there anything inbuilt Acumatica SDK/Framework that can help me view the SQL statement while debugging in VS?
Hello All, I’m relatively new to developing Acumatica screens. I am working on a custom processing screen that will update on hold invoices post date to a date the user chooses. This updates invoices uploaded through the system via an API where a custom field was added to have these imports batched together. These batch numbers are stored in a custom table that I load on the processing form to enter the post date and then load invoices and update said post date based off a join with the batch number. I’ve got my DAC created, graph started, and screen created. However, I’ve hit a brick wall as to why the fields are don’t allow me to edit on the custom screen. Screen is just a grid with a process and process all button. See below for my settings, let me know if I can provide additional details outside of below, imagine whatever I’m missing I simply just don’t know to include. The field i’d like to be editable is “PostDate”. Here is a bit of the DAC, from the beginning to PostDate: [Se
I am trying to create a customization to iterate through inventory items to update Prices in a BigCommerce store from a custom field I created called usrAIWHLPrice on an InventoryItem extension. I have created a new screen with a datasource which is based on a query that checks for that field not being null:public SelectFrom<InventoryItem> .Where<InventoryItemExt.usrAIWHLPrice.IsNotNull> .View InvItems;I am still getting to grips with how to do things in Acumatica so decided to just create a simple action as a first step that will create a list of inventoryitems I can iterate through and pull out the information I need. I created a button with an action: public PXAction<InventoryItem> prepareWHLData; [PXButton] [PXUIField(DisplayName = "Prepare WHL Data", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)] protected void PrepareWHLData() { PXTrace.WriteInformation("Preparing data..."); var
Hi,We have developed New Customized Scan Screens for ISV in 21R1..Is there any Changes need to do in 22R1 to get Paperless Picking??I found one link that ASPX TypeName need to change.Is there any other additional methods or Classes to change to get Paperless Picking.Can anyone Suggest me on this Please.Thanks.
I want to create a list view like this where I can have add edit icon like this one and have a link like this for editing. But don’t know how to achieve this can anyone please help.
I facing the issue with the unitcost field where datatype is decimal(25,6) and in the DAC, i have used [PXDBDecimal(typeof(Search<CommonSetup.decPlPrcCst>))]. In Company Screen i have set Price/Cost = 4 still its defaulting 6 decimal place. please guide if missed any thing to default from the company set up.
I created an extension to SOCreateShipment, to override the Data View for ‘Orders’. I made this change: public class SOCreateShipment_Extension : PXGraphExtension<SOCreateShipment> { #region Data Views [PXFilterable] public PXFilteredProcessing<SOOrder, SOOrderFilter, Where<True, Equal<True>>, OrderBy<Asc<SOOrder.requestDate>>> Orders; #endregion #region isActive public static bool IsActive() { return true; } #endregion }I wanted only to override the OrderBy for the view, but I was forced to also add a ‘Where’ clause to the PXFilteredProcessing class. Now when I run the program, the OrderBy clause works properly, but the filter for the selected rows is now selecting all rows. The View has a delegate method ‘orders’ that has a more filtered where clause. But, when I debug SOCreateShipment, the ‘orders’ delegate method is never reached. If I remove this extension, the ‘orders’ delegate metho
It looks like there has been a major refactoring of how line splitting works in Acumatica, which is great news because this moves us away from the old kvstore approach, which was not performant at scale.However, there seem to be zero practical examples of how to implement this functionality. For example, let’s say I want to add a field to POReceiptLineSplit, and then pull that field back in a SOSalesOrderLineSplittingExtension. How might I do that?@Dmitrii Naumov Do you think we could get some practical examples of how to work with the new line splitting code? It looks like there have been other requests also for this, which so far have gone unanswered...
Hello,I’m trying to resolve the following issue: custom column added to the grid contains no data.Here are the details.I am trying to customize the Run Service Contract Billing (FS501300) form to add Organization ID column into its Contracts grid.To do that I extended the ContractPeriodToPost DAC for the grid based on the following article: https://blog.zaletskyy.com/post/2020/03/09/post100 .My extension is as following.using PX.Data;using PX.Data.BQL;using PX.Objects.GL;namespace PX.Objects.FS{ public class ContractPeriodToPostExt : PXCacheExtension<ContractPeriodToPost> { public static bool IsActive() => true; #region UsrCompanyID [PXInt] [PXUIField(DisplayName = "Organization ID")] [PXDBScalar(typeof(Search<Branch.organizationID, Where<Branch.branchID, Equal<ContractPeriodToPost.branchID>>>))] public virtual int? UsrCompanyID { get; set; } public abstract class usrCompanyID : BqlInt.Field<usrCompany
I'm building an integration that needs to extract data from an Acumatica record and build a json string. My process for doing this is using an export scenario to define what data gets pulled from the record. Is there any way that I can leverage the logic in SYMappingUtils/SYImportProcessor to pull data? Ideally I want to pass the record and the mapping to a method, and it returns the mapped data/formula evaluations from that record. Below is how I've been able to get a portion of the data, but it doesn't work for most PXSelector fields. It pulls the integer key value and doesn't return the CD value like the export scenario does. Base.Views[objectName].Cache.GetValue(Base.Views[objectName].Cache.Current, fieldName);
In SO Process Orders, I am trying to change the sort sequence for SO’s displayed. The default is by Order number, but I want it sorted by RequestDate instead, when the list is initially displayed. I created a SOCreateShipment extension, and extended the BuildCommandCreateShipment() method: public class SOCreateShipment_Extension : PXGraphExtension<SOCreateShipment> { #region Event Handlers public delegate PXSelectBase<SOOrder> BuildCommandCreateShipmentDelegate(SOOrderFilter filter); [PXOverride] public PXSelectBase<SOOrder> BuildCommandCreateShipment(SOOrderFilter filter, BuildCommandCreateShipmentDelegate baseMethod) { PXTrace.WriteInformation("BuildCommandCreateShipment() started from extension"); // Add Order By Request Date to default view PXSelectBase<SOOrder> extFilter = baseMethod(filter); extFilter.OrderByNew<OrderBy<Asc<SOOrder.requestDate>>>(); string errmsg = "extFilter value is: " + extFilt
I have created an extension of SOCreateShipment, where I redefined the ‘Orders’ Data View. I now want to debug the flow for loading rows into the grid of orders. I am able to define breakpoints in the Extension, and Visual Studio breaks at the requested statements. While debugging, I also opened the base source code for SOCreateShipment, at:C:\Acumatica\MyWebApplication\App_Data\CodeRepository\PX.Objects\SO\SOCreateShipment.csand added needed breakpoints. When I open the website, attach to process, then run the application, it breaks at the statements defined in the Extension, but not the statements in the base code. I reviewed the steps in the Customization Guide, and Acumatica website, but I don’t see clear steps on how to debug the base code. Can you point me to the proper steps?
I’m puzzled over this - hopefully it’s something silly that I’m missing.I have an Action button on SOOrderEntry. The goal is to look through the detail lines on the order, create a record in another graph, update some fields on SOLine and save the order.Each time I call Actions.PressSave from within the CreateJobs method I get the error “The record cannot be saved.” I thought I was doing something wrong so I stripped out all of the code. I’ve tried it on two different Acumatica installations.public static bool IsActive(){ return true;}public PXAction<SOOrder> TestAction;[PXButton(CommitChanges = true)][PXUIField(DisplayName = "Create Test", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select, Enabled = true)]protected virtual IEnumerable testAction(PXAdapter adapter){ Base.Actions.PressSave(); var graphCopy = Base; PXLongOperation.StartOperation(graphCopy, delegate () { CreateJobs(graphCopy); }); return adapter.Get();}private static void CreateJobs(
Here is the scenario I am trying to accomplish:When an AP invoice is released using the APRelease - ReleaseInvoice process, I want to check each line of the APTran table for the given invoice. If the line item has an AllocationIDUsed code in the UsrAllocationIDUsed field, I want to delete that line and create new ones based on the setup of the custom allocation ID setup.The APTran table is not part of the signature of the ReleaseInvoice process so I don’t have access to it via a cache.My approach is to pass the “doc” into a function and do the allocation there.In order to make updates to the APTran table, I need a graph (I think).In my AllocateLine function, do I create a generic graph for each call to the function? I am pretty sure I can accomplish my goal doing it that way, but I think I might have a performance issue if the invoice has 100 APTran lines and every one of them is allocated. Yes...my customer releases HUNDREDS of AP Invoices every day and each invoice might have 50 t
Hi,I want to execute a custom logic when the user click the Release button, but only if the Release process completes successfully. How I can get the error message from the release process? This is my code. [PXOverride] public IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod) { baseMethod(adapter); _inservice.UpdateItemLocation(Base, itemloc.Cache, AddOrSubstract.Add, Base.transactions.Cache); Base.Save.PressButton(); return adapter.Get(); } Thanks,EV
I have a user defined field in the APTran table (Bills and Adjustments screen). There are actually two fields, UsrAllocationID (Unbound field for use only on the grid) and UsrAllocationID which is stored in the APTran table to save the history of the allocation ID used on the line. public class APTranExt : PXCacheExtension<PX.Objects.AP.APTran> { #region UsrAllocationID [PXInt] [PXUIField(DisplayName = "Allocation Code ID")] [PXSelector(typeof(Search<ICAllocationCode.allocationID, Where<ICAllocationCode.active.IsEqual<True>>>), typeof(ICAllocationCode.allocationCD), typeof(ICAllocationCode.description), SubstituteKey = typeof(ICAllocationCode.allocationCD), DescriptionField = typeof(ICAllocationCode.description))] public virtual int? UsrAllocationID { get; set; } public abstract class usrAllocationID : PX.Data.BQL.BqlInt.Field<usrAllocationID> { } #endregion #region UsrAllocationIDUsed [PXDBInt] [PXUIField(DisplayName = "Allocation ID
The situation is that we have web orders coming through from BigCommerce. We have popup notes defined against a lot of our customers that are important to see when adding the customer to the SO. Because the Customer is already populated when you open the SO it doesn’t pop up the notes for the Customer. Is there a way to check if the customer on the SO has notes and pop them up?Thanks for any advice, Phil
Is there anyway to change the default mode in the Upload Records from File common settings dialog?We have a client that wants to upload their lot/serial information on the shipment allocation from an Excel file. I have added the file upload using the PXImport and Allow Upload setting. The issue is if you use the default mode of Update you receive an error when trying to save the shipment. It appears this is because a record already exists in the SOShipLineSplit table. If I change the mode to Insert All like the image below it works. I’d like to default the mode to Insert on this grid. Thanks,Kurt
Can I change Acumatica Instance Tab Icon?
I have a customization that will travel through the lines of a sales order. There could be two groups of SOLine records that I need to process on the same SO.I have one main var to look at the SOLine records:var lines = SelectFrom<SOLine>. Where<SOLine.orderType.IsEqual<SOOrder.orderType.FromCurrent> .And<SOLine.orderNbr.IsEqual<SOOrder.orderNbr.FromCurrent>>>. View.Select(soOrderEntry);Then I’m using:foreach(SOLine line in lines){ //A bunch of code here}If I need another iterator to go through SOLine records on the same SO within the foreach loop and write (can I have multiple iterators on the same PXSelect?):foreach(SOLine lineTwo in lines){ //A bunch of code here}If I update lineTwo with:soOrderEntry.Transactions.Update(lineTwo);Will that update the proper record or will having multiple variables confuse the cache?
Hello,I am currently trying to add a button to Cases where I can create an opportunity. See below for graph initiation and insert. Note that this is proof of concept. #region Actions public PXAction<PX.Objects.CR.CRCase> CreateOpportunity; [PXButton(CommitChanges = true)] [PXUIField(DisplayName = "Create Opportunity")] protected void createOpportunity() { CRCase cCase = Base.Case.Current; OpportunityMaint graph = PXGraph.CreateInstance<OpportunityMaint>(); CROpportunity opty = new CROpportunity { BAccountID = cCase.CustomerID, ContactID = cCase.ContactID, //Status = "N", //ClassID = "SERVICE", //StageID = "L", Subject = cCase.Subject }; graph.Opportunity.Insert(opty); if (graph != null) { PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode
Hi,How I can override or extend the GenerateLotSerial action in the Inventory Receipt page? Thanks,Ev
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.