Contents tagged with Acumatica
today I want to write a few words about UI in Acumatica and if to be more precise about combination of splitter with other UI controls.
As you maybe know, in order to allow user to modify height of input control, splitter conrol should be used.
For now I found following configuration of splitter useful:
<px:PXSplitContainer runat="server" ID="PXSplitContainer" Height="100%" Width="100%" Panel1MinSize="120" Panel2MinSize="120"
SplitterPosition="210" Size="3" SkinID="Transparent" Orientation="Horizontal">
<AutoSize Enabled="true" Container="Window" MinHeight="300" MinWidth="100" />
<ContentLayout AutoSizeControls="True" Orientation="Horizontal" /> … more
today I want to write a few words about two types of buttons in Acumatica.
usual form of declaration
unusual form of declaration
What is difference from code prospecitve?
In the begining they are equal:
public PXAction<Shipment> CancelShipment;
Even very similar with attributes:
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Cancel Shipment")]
[PXUIField(DisplayName = "Release")]
But different with declaration:
protected virtual void cancelShipment()
protected virtual IEnumerable release(PXAdapter adapter)
and different with last statement. Those with PXAdaapter should return … more
this post is intended for those people who want to make development for Acumatica, but don't know where to start or how to start. Or for those, who know C#, but absolutely can't figure out how to work with Acumatica.
So, first of all, I'll describe some general ideas, and then provide few examples of how development for Acumatica is done.
Acumatica has the following development or extension schema.
Acumtica is installed on some IIS server. Further in this document I'll name it production instance or production.
Developer installs Acumatica on hiw working computer with IIS. Without IIS development for Acumatica will not be possible
Developer creates his extensions … more
Recently I've posted following question on stackoverflow:
I have following request from my customer to be implemented in Acumatica:
Create form which have input fields on top.
Form should have first grid, which reacts on parameters on top
Form should have second grid, which reacts on top parameters and grid 1.
Form should have third grid, which reacts on top parameters and grid 1 and 2. Acumatica has following master templates: Form2Detail.master, FormDetail.master, FormTab.master, FormView.master, ListView.master, TabDetail.master, Workspace.master. But there is nothing like Form3Detail.master. Also three grids are not available in T200, T300 manuals of Acumatica. So, my … more
today I want to continue few more details about customization internals. In one of my long time ago posts I've described how to create customization file by yourself without Acumatica engine.
Today I want a bit extend my comment with few more details.
Quite often it is needed to add sql code to your customization. How to do it? Acumatica customizations allows it with usage of projext.xml file.
Take a loot at following example:
<Customization level="0" description=""> <File AppRelativePath="Bin\Blablabla.Acumatica.dll" FileID="d701b330-7c72-4f51-b1ae-75c4e2c02194" /> <File AppRelativePath="Pages\AP\AP306010.aspx" FileID="b9e88968-7f36-4cfc-9383-caed8363c269" /> < … more
today I want to share simple trick of how to show smart tag at DataSource control in Acumatica. Recently I had to generate class, and for my disappointment I wasn't able to get window that can generate class for me. So, in order to get that window, following steps are needed:
1. Go to design mode
2. In properties window select ds
3. Press Show Smart Tag keyboard combination - [Shift]+[Alt]+[F10]
4. Choose anything what you need.
today I want to document in my blog interesting behavior of PXFilter in Acumatica.
First of all, few words about it's behavior. If Acumatica sees PXFilter, it will create single record, which will remain only in cache and never will travel to the db. Recently I faced interesting issue, fields from PXFilter DAC object was updated only once. After deep investigation I've found that it is because anything that works with PXFilter shouldn't have any field marked as IsKey. If field is marked as IsKey, it will not be updated after each modification of UI. more
today I want to share with you one way of importing data from Acumatica.
After many versions of binding to strings Acumatica made really big change in their web service decisions. They made their services more compile time oriented.
Adding new web service reference should be done only in the following way:
1. In the menu select Project -> Add Service reference
2. In the Pop up type something like "https://localhost/WebServiceAPITest/entity/Default/5.30.001?wsdl" without quotes.
3. Click Go
4. Here you can feel some freedom, and give namespace which you prefer for your web services.
5. Click Ok.
Here I want to post way how to get all Stock items with … more
recently I was asked about my level of knowledge in Acumatica.
Here I want to make short summary of my Acumatica certificates:
Below also goes pdf editions of my certificates ( which I downloaded from acumaticauniversity.com ):
T900 T101 T100 S400 T300 T200 more
today I want to share one trick which can save you few lines of code.
Imagine case: you created graph, and want to read something from db, and then set current property of that graph view to some value. How to do it in one line? The anser is simple, with help of Search<>
For example it can be like this:
public PXSelectOrderBy<SalesOrder, OrderBy<Asc<SalesOrder.orderNbr>>> Orders;
graph.Orders.Current = graph.Orders.Search<SalesOrder.orderNbr>(order.OrderNbr); more
Today I want to share notice of how to work with processing screens.
But of course not in very standard situation. One of my clients requested me the following: he wanted at processing screen to select some items in screen in part 1, then monitor
results in part two, and see some totals in part three.
As you understand it's not easy to ahcieve this goal only with help of selectors. It is possible with usage of delegates in Acumatica and with usage of it's cache.
Initial initialization of page was the following:
public class RRCashRequestProcessor : PXGraph<RRCashRequestProcessor>
public PXCancel<CreatePaymentFilter> Cancel; … more
today I want to write few words how to work with selectors in Acumatica.
So, imagine, you have the following selector in Acumatica:
<px:PXSelector ID="NmbUsrBillPMTask" runat="server" DataField="UsrBillPMTask"/>
In order to make it work as selector, you need to do the following:
if you'll do it, you'll receive following selector:
And if you choose there some value, you'll be able to see id represented as number. In my case it was 727.
But what if you want to make it more readable?
Then you can add following part:
[PXSelector(typeof(Search<PMTask.taskID>), SubstituteKey = typeof(PMTask.taskCD))]
Then instead of … more
today I want to share note about Current2 and Current in Acumatica.
Current2 inserts really current value of record, while Current inserts curretly selected value or default. I was surprised, that Current2 inserts exactly the value of record. more
today I want to note about redirects. In Acumatica you can redirect user to another webpage. Acumatica provides option of redirecting to following scenarios:
To another page in Acumatica
To another report
To any destination url
Try to gues, how redirections are implemented? As exception. If you consider it as wrong approach, I can partially agree with you. But only partially, because redirecting to antoher page is really some kind of exceptional situation.
Below goes code of redirecting to page PM302000 at some TaskID and some projectid selected, which will be opened in new window:
UsrPMTaskReplace taskRepl = JiraAccountTasks.Current;
ProjectTaskEntry graph = … more
today I want to share one important note, for search of which I've spent for two hours.
In grid I've added button in the following way:
<AutoCallBack Command="RemovePMTask" Target="ds" >
Initially described it in the following way:
<px:PXDSCallbackCommand Name="RemovePMTask" Visible="False"
Then added code for button in graph, and noticed terrible behaviour. In my action I wasn't able to get currently selected record in grid. After wondering for two … more
today I want to share with you one trick that sometime can be useful. Imagine, that you constructed some BQL query and want to get only one record from db with ommiting others or in other words if you need TOP 1. For this purpose you can use SelectSingle method that generates SQL statement with TOP 1 records to return and executes faster. more
today I want to shre small note of how to generate timestamp for Acumatica objects ( in case if you use for some reason PXDataBase.Insert or PXDataBase.Update)
PXDataBase has public method SelectTimeStamp.
public static byte SelectTimeStamp()
So, in case if you need to put in variable t TimeStamp you can do the following:
var t = PXDatabase.SelectTimeStamp();
And variable t will have timestamp more
Few notes about PXAccumulatorAttribute
If to inherit from PXAccumulatorAttribute, you'll have access to member _SingleRecord. If to set in constructor to true, you'll configure single record update mode.
There is PrepareInsert method. This method intended for updating policy for the data fields.
PrepareInsert is invoked within Persist method, before Acumatica framework generates SQL commands for inserted data records.
Among paramethers of PrepareInsert method there is PXAccumulatorCollection, which has method Update. In this method it's possible to configure fields which will be updated during PrepareInsert
Method Update has following policies: PXDataFieldAssign.AssignBehavior. … more
Today I want to share some details about inner kitchen of Checkboxes in grid of Acumatica.
If to look inside of generated grid of Acumatica with FireFox Dom and style inspector, you can see following structure:
Item with checkbox is implemented as td, which has div, and has another div. The first level div has data for internal ( Acumatica presentation ),
and second div, or internal div has data for user display.
Once I had task to disable callback from checkbox. You may wonder why somebody can have such task. The reason each tick at checkbox made
roundtrip to server, called number of delegates, which significantly slowed down perfomance. By the way, CommitChanges=" … more
Today I want to share short glimps how to Enable/Disable menu item. Let's some menu. For example it looks like this:
Suppose, we added menu action Activate in the following way:
public PXAction<EPEmployee> Activate;
[PXUIField(DisplayName = "Activate")]
protected virtual IEnumerable activate(PXAdapter adapter)
// menu action was added like this:
public override void Initialize()
Let's say we want to disable menu item Activate. It can be achieved with usage of RowSelected event and SetEnabled function. In my case I used the following construction:
protected virtual void EPEmployee_ … more