Implement PXTransactionScope

Sometimes, part of your coding requires you to revert any transactions that were processed in the middle of a transaction. Acumatica Framework has the function to cope with that. That is using the PXTransactionScope(); As mentioned also in the Blog before by Sergey Marenich (ctrl + click to follow link : https://asiablog.acumatica.com/2015/11/using-scopes-in-acumatica.html) PXTransactionScope– this scope will initialize new transaction, so you can wrap-up some changes into transaction, when system will revert all changes together on any exception. Do not forget to call commit for the transaction scope before dispose it. Sample code snippet below is one of the many ways you can implement the PXTransactionScope. You must call the method ts.Complete(); to… Read more

Rename Acumatica Instance

Hi All, Once in a while everyone need to rename Acumatica instance to the better name. In this article I want to share with you 2 ways how you can do that Using Wizard Acumatica Configuration Wizard has a nice function to rename any of the installed instances. Renaming includes the Instance name and Virtual Directory Name. To do so: Open Wizard Go to “Perform Application Maintenance” Choose instance you want to rename Click “Instance Info” Use “Rename” links next to “Instance Name” or “Virtual Directory Name” Don’t forget to Save and close the window using OK button. Sql Server Database should be renamed manually, but wizard can help to… Read more

Run report with Side Panel

Hi everyone, Since version 2018R2, Acumatica has released feature call Side Panel on generic inquiry screen. It is a great feature to enhance the usability. In case that you have missed it, you can also check released notes here and configuration here. With side panel now, you can help user work more effectively by avoiding to many navigation. In one screen, you can do a lot of things for instance: view details of record or linked object, review dashboard, report, etc … Today I would like to share about the configuration. It can help user who need to work with some report or printed form can access it easier. Let… Read more

Acuminator Outlining

Hello everyone!This is a third post in the series describing Acuminator. It will be dedicated to the feature called outlining. So, what does outlining mean? It’s an ability to collapse code parts unimportant to you at the moment in the code editor. I’m sure every .Net developer that uses Visual Studio or VS Code has seen this feature. You can collapse classes, methods and many other syntax structures. In C#, you can also add your own collapsible blocks with regions. Acuminator Outlining Now you may ask: “How is this feature related to Acumatica?” There are many really big BQL queries in Acumatica code. Some of them do not even fit… Read more

Where Acumatica name came from?

Hi All, Just a short interesting question “Why Acumatica is named Acumatica”? Actually it is combination of words Accounting (accou-) and Automatics (-matic). So we get “Accu-matic-a” 🙂 Last “A” is just for good sound. Also if you ever found wandering why PXGraph is named as Graph, than there is a reason – it is related to data structure inside. Using DataViews you define relation between database tables. These relations looks like a graph-structure as has a lot of direct and indirect references back and forth. So that is the reason.

Field Event Sequence

Hi All, As you may know from, Acumatica events are triggered in the specific sequence. But there is sequence not only for event types, events for different row and field will be triggered within a specific sequence too. Rows With rows it is a bit easy:Insert/Update happens in the sequence how it was triggered. If you update a value it will trigger an event sequence for specific cache that was updated. In case event updates other caches, that they will be triggered also as soon as cache.Update/Insert/Delete is called.Save/Delete happens for primary cache first as it is associated with the button, than it will call PXParent Attributes in the sequence… Read more

Page Refresh and Redirection

Hi All, As you know Acumatica page submits all data to the server though different callbacks. This is good for network performance, but brings some limitations – like redirection. Unfortunately it is not possible to use Response.Redirect() during the callbacks as browser script does not expect it and can’t properly react. To solve some of these issues Acumatica uses different exceptions (like PXRedirectRequiredException, PXReportRequiredException and so on). These Exceptions will be handled by base code (Callback Manager) and translated to text commands that will be handled in JavaScript. For instance, PXRedirectRequiredException(WindowMode.New, SuppressFramceset = false) will be translated to eRedirect3:+<SomeURL>. You can read more about this mechanism here. This code is… Read more

Flags in PXGraph

Hi All, A short but useful article today – PXGraph is a center of the whole business logic in Acumatica framework and can be triggered from different places: UI, Web Services API, Mobile, Import and so on. As a developer you sometimes need to know what is the context of the request you are processing right now, so you can adjust the business logic. For this purpose PXGraph has a set of flags that are automatically triggered during different operations. Here they are: graph.IsImport – flag will be automatically set when Import/Export engine is working. This will be true for Import/Export scenarios, Web Services, Copy/Paste action, Mobile. So almost all… Read more

Success Story in Acumatica

Original Post is located here: https://www.facebook.com/acumaticarussia/posts/323585055218750 If you ask me about my 12 years story in Acumatica, I would say it was the story of luck multiplied by hard work. Part 1: Moscow: Hiring It was all started right after bachelor’s degree at my university. I started to search for a job and a friend of mine recommended a company with name SW Soft. I went there on interview where Mike and Andrew gave me two tasks (we still give it to all new candidates). Later these guys became great mentors for me. One of the tasks I have completed only from the second attempt. I still remember my fillings… Read more

Calculating Grid Totals on an Inquiry Form

One of the common requirements that one may have for the inquiry form is to have Totals calculated for some column in the grid. It may seem a simple task, but there are some unexpected obstacles that make it hard to implement the feature properly. Straightforward Solution We can implement the requirement with the help of a filter delegate. Assume that we have the filter view and the grid view. Add a field for accumulated result to the filter DAC. In the filter delegate get records from the grid view. For example: This code works, but it has several issues: It does not consider user defined filter for the grid Filter… Read more

Configuration Lot/Serial with Custom Date Format

Hi all, In Acumatica, we have ability to configure for the auto incremental number Lot/Serial in the stock item. Today I would share about using the configuration with Custom Date Format. Firstly, you need to make sure that the Lot/Track Serial need to be enable in Feature. Secondly, you need to create the configuration by navigate to the screen Lot Serial Classes. As you already know in this screen, we will defined how we can track our Lot/Serial. Now try the configuration as image bellow: Thirdly, navigate your browser to stock item screen. In this scree, we will mapping the configuration to specified stock item. Finally, you have finish the… Read more

Acuminator Coloring

Good day, everyone!This is a second post in the series dedicated to the Acuminator. Today I would like to tell you more about the Acuminator syntax coloring. Feature Overview Syntax coloring is one of the most common and useful features given to programmers by development tools. It uses a simple idea – to emphasize some text in program by coloring it in different colors. This allows quickly and clearly show to a reader keywords, variable declarations and many other useful things. Our attention is drawn to words with a different color and this is used to show us the important parts of the code. The color itself also gives some… Read more

Acuminator Diagnostics Tips

Hello, everyone! This article starts a series of posts devoted to Acuminator. Acuminator is an extension for Visual Studio. It strives to achieve two goals – to check that Acumatica Framework is used correctly by means of static analysis and to ease work with Acumatica for developers. You can read more details about the project on GitHub. In this post I want to share with you a couple of useful tips about Acuminator diagnostics: The documentation and justification for every diagnostic can be found here. You can see diagnostics for all open files in Visual Studio’s Error List window. Every time you open or close code file the list with… Read more

Saving Entry from Custom Button

Hey! It’s a pretty common situation when you need to call the Save action from your button. You could use it in graph extension or directly in the base graph. We will use the extension as the example but the code almost the same for the pure graph. There are two requirements: A button should use the IEnumerable version of the method, not void. A method without the return brokes navigation after saving. A user could get blanked screen when saving a new document. A method should be decorated with PXButton attribute with CommitChanges = true property, otherwise, the Save button could stay in enabled status after saving. Not tested with CommitChanges in… Read more

How to Use Delta Synchronization with OData API

For various reporting, BI, or data warehousing scenarios you often need a way to export and synchronize data between an Acumatica instance and your solution. OData API is a good fit for read-only scenarios, and it is widely used by different ISV solutions and external BI services such as Power BI. But reading the whole entity set every time when you need fresh data is very resource-consuming, so the preferred way is to use delta sync. What Is Delta Synchronization Delta (Differential) sync is a type of synchronization technology that only synchronizes newly created or updated records. It drastically reduces the amount of data passed between an Acumatica instance and… Read more

Remove Action Menu from Actions Drop-down

Hi All, Show example for you today – how to remove action from menu based on example of ChangeID function in CustomerMaint graph. Problem If you take VendorMaint and try to find who ChangeID is declared there you will be able to find following code: So you can see here that ChangeID button is added as a menu to the Action button. This works pretty well accordingly to example with adding sub-menu actions here. Now the question – what if we need to remove or hide this action? We can’t use automation steps as they cannot make button invisible. We cannot use PXUIFieldAttribute on ChangeID as this button is already… Read more

Open a Report in Acumatica

Hi All, Following a previous post about redirection architecture I want to show you an example of how can you use it to open a report. Here we need to use PXReportRequiredException, as it designed to open reports. But also we need to provide a report name and report parameters. Report Name is just a Screen ID that you can find in the sitemap Report Parameters is a Dictionary<string, string> that is basically a key-value pair. Key is a parameter name and value is a value. Parameter names are taken directly from the report. Here is the example code to create a button for report. I get this code from… Read more

Redirection and Dialog in Acumatica

Hi All, In the web application is mostly one-way communication – Browser send request, server receives it and response. This means If we don’t use a special technologies like a Web Sockets, that there is no way for server to communicate tho the browser Also if we don’t really know where is the user and if he still will interact with us. So here we have 2 major questions: How to return control to user when server logic needs it? Prevent data further data modifications? For example if dialog is required when user clicked save. In Acumatica we have solved these problems with exceptions. When we need to rise a… Read more