Contents tagged with Acumatica

  • How to speed up Acumatica debugging with tunning web.config

    Hello everybody,

    today I want to make short post on how to speed up Acumatica debugging. I'll share with you options that worked on my machine. 

    In case if you have something to add, I mean something that really affects speed up of page loading, you are welcomed to  do it. 

    Setting #1:

    To your <compilation debug="True" secion apped following line optimizeCompilations="True". In mine web.config I've got following look and feel:

    <system.web>

        <compilation debug="True" defaultLanguage="c#" numRecompilesBeforeAppRestart="9999" targetFramework="4.7.1" batch="True" optimizeCompilations="True">

    Setting #2 and #3:

    To your appSettings add/update key CompilePages and InstantiateAllCaches … more

  • Filters in Acumatica

    Hello everybody,

    in this article I want to describe how filtering in Acumatica work. When I say filtering, I mean following UI part:

    In manuals T100 - T300 there is almost nothing about how filters work, so I want to share few bits of development information.

    Storage

    All information about filters is stored in database in tables FilterRow and FilterHeader.

    Take a look on screenshot of FilterInformation for some custom applied filter:

     

    As you can see from screenshot Acumatica stores information about filters by FilterID, and has information like Condition, values, Close brackets, operators and so on.

    Also there are DAC classes FilterRow and FilterHeader, but you can find them only … more

  • Predefined Size Values in Acumatica

    Hello everybody,

    today I want to leave a post on Predefined size values for ColumnWidht, LabelsWidth, ControlSize properties of the PXLayoutRule component and LablesWidth and Size properties of a control:

    Value

    ColumnWidth in Pixels

    LabelsWidth and ControlSize of a Layout Rule; LabelsWidth and Size Properties of a Control in Pixels

    XXS

    100px

    40px

    XS

    150px

    70px

    S

    200px

    100px

    SM

    -

    150px

    M

    250px

    200px

    XM

    300px

    250px

    L

    350px

    300px

    XL

    400px

    350px

    XXL

    450px

    400px

    As you can see from presented table XL is not always the same XL, and it depends from the context more

  • How to have few Acumatica versions on single machine

    Hello everybody,

    today I want to leave a short comment about how to make few Acumatica instances of single developer machine. 

    As you already know or maybe know, Acumatica recommends to have one version of Acumatica. But what if you want more? Is Acumatica merciful enough to allow you this? The answer on this question is strong yes! 

    All that you need to do, is to install version that you need, and then preserve following folders in safe place:

    Data

    Database

    Files

    Portal

    And then you can uninstall them and install another version. 

    Then for installing specific instance of Acumatica you'll need to run AcumaticaConfig.exe file and you'll be ready to go.  more

  • Performance difference in Acumatica between MS SQL and MySQL

    Hello everybody,

    today I want to write a few words about performance difference between MySQL and MS SQL in Acumatica.

    Relatively recently Acumatica provided possibility to use MySQL as it's database. For some unknown reason

    I didn't notice anybody who decided to use MySQL as their database solution. If you know any, please let me know,

    how they like their experience. 

    For me as developer it become interesting to check performance of MySQL vs MS SQL. Especially from standpoint of servers. 

    Take note on how one of mine task managers look like:

    as you can see I have 40 logical cores or 20 physical cores. Try to guess what is price of license for MS SQL for using at such a computer? … more

  • How to handle time consuming operations in Acumatica from code

    Hello everybody,

    today I want to make a short note on how to handle cases if you need to execute some kind of long operation in Acumatica. Once I had a task, create code that executes some kind of web requests that take some amount of time. When I used simple button, that approach died because of time out. In order to handle it I've decided to use PXLongOperation.StartOperation.

    Below goes full sample of code:

    public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>

    {

        public PXAction<SOOrder> Test;

        [PXProcessButton(Tooltip = "Test")]

        [PXUIField(DisplayName = "Test")]

        public virtual IEnumerable test(PXAdapter adapter)

        {

            PXLongOperation. … more

  • ISV solutions for Acumatica

    Hello everybody,

    today I want to write a few words about ISV solutions for Acumatica. ISV stands for Independent software vendor so ISV Solution means independent software vendor solution for Acumatica. 

    All ISV solutions are now splitted in three categories:

    Embedded - based only on Acumatica xRP Framework and Customization tools

    Connected - based only on Acumatica WEB services API

    Composite - has combination of embedded and connected features

    Acumatica will provide to their partners with excel file, which is needed to be filled before Acumatica gives it's approval on the solution. For each of those categories Acumatica will request different input from ISV, but if to summarize … more

  • Depreciation vs Amortization

    Hello everybody,

    today I want to write a short note about Depreciation and Amortization and whati is the difference between both. 

    So both of them reflect information about loosing value of some non current asset. If company bought something for one price, and with time that something looses it's value.

    What the difference?

    Depreciation is connected to tangible asset.

    Amortization is connected to intangible asset.

    For example loosing of value of laptop is characterized by depreciation.

    Loosing of value of software is characterized by amortization. more

  • AR vs AP

    Hello everybody,

    this post is intended for Acumatica developers which wonder about difference between AR and AP screen or as they named accounts payable and accounts receivable. If to speak simply both of them are intended for future benefits. The difference is just who is receiver of those benefits: your company ( accounts receivable ) or not your company ( accounts payable ).

    Consider example: your company sells laptops. In case if HP gave you 10 latpops, then information about them will be written at your accounts payable. But for HP those laptops will be at accounts receivable. Let's say somebody made agreement with your company, that they will pay you in two months for 2 out of your 1 … more

  • Key features of Acumatica

    Hello everybody,

    today I want to make a post about by no means exhaustive but quite descriptive list of features in Acumatica.

    Main features Acumatica

    Accounts payable

    Accounts receivable

    Advanced CRM - convert prospects to accounts with 1 click

    Advanced accounting - multi-currency, consolidation ledgers

    Advanced billing

    Advanced distribution - inventory, sales, purchasing

    Allocate expenses

    Budget tracking

    CRM integration

    Campaign management

    Case management

    Cash management

    Currency management

    Customer management

    Customer portals

    Distribution management

    Employee portal (timesheets, expense reports)

    Enterprise features - mid-sized business costs

    Expense management … more

  • Contract API Optimization

    Today, I want to re-tell about Contract API Optimization. Materials get from conference of Acumatica and introduction by Joshua van Hoesen.

    Three point of ineterst

    Utilisation of ReturnBehavior

    Avoid graph logic by creating Generic Inquiry for data retrieval

    Multi-Threading

    Introduction

    With the continued advancement of integrated software solutions, there has also been a need to address legacy business processes and how they may be implemented in a modern framework. These business processes tend to rely heavily on collecting large amounts of raw data from disparate sources and aggregating it together for further processing.

    Some companies whose business process … more

  • Acumatica Test Framework in Acumatica. Part 2 (Practice)

    In this part we implement real automation test for creating POOrder - screen PO301000;

    Before to start, please read first part of rhis post. 

    The main steps:

    Create solution and add nedeed components from SDK folder

    Add new project (Net library) to solution 

    Configure generator and run it for create .cs class with all components on screen PO301000

    Add POOrder.cs and describe some methods for test

    Add the main class (for example F100_Part1_Lesson1.cs) where we describe Execute() method

    Run solution, view result of test

           Create solution and add nedeed components from SDK folder

    CCreate a test solution by using Visual Studio 2017 as follows:

    In Visual Studio 2017, … more

  • Acumatica Test Framework in Acumatica. Part 1 (theory)

    Ok, Acumatica provides as part of platform is Acumatica Test Framework. Acumatica test Framework is a set of tools and libraries that can be used for unattended black-box testing of any product or customization that is based on Acumatica Platform right in your favorite browser. For interacting with UI controls and components Acumatica Test Framework uses Selenium Web Driver. You can read more about Selenium here or nice example of it is this video.

    The high level diagram of Test Framework components is described here:

    Acumatica Test Framework Architecture:

    As you can see here the core thing of the test framework is Element IDs – Each HTML element has own ID how browser can find it. … more

  • How to use Chart component in Acumatica

    Hello everybody,

    today I want to share one more trick on how to chart in Acumatica. Imagine following case: you have some information about your sales orders, and want somehow to visualize it wiht nice picture. 

    How to do it? You can use charting component of windows. Here I've described building elements of charting library. Charting library is located at System.Drawing library.

    Main purpose of this article is to demonstrate how to use Charting library without going deep about image management. 

    Basically code shows how to load filtered information about sales order add data points, generate dynamic picture and show it on the form.

    Firstly let me show to you picture part:

    <%@ Page  … more

  • Dependency Injection with Acumatica and Autofac from inside customization

    Hello everybody,

    today I want to write a few words about something that I consider as cool achievement: dependency injection in Acumatica with help of Autofac. Before sharing any code I'd like to mention why Autofac and not other framework? Because Acumatica itself is built on Autofac. For you as a developer it basically means that you can omit nuger versioning or any kind of versioning with Acumatica. You just reference Autofac, and it will be available for you in your project.

    Keeping this idea in mind, let's suppose that you have following class in your code:

    public class EmailNotificationSender : IEmailNotificationSender

    {

        public void SendEmail(string to, string subject, string  … more

  • How to use column name in DB that differs from field name in DAC class

    Hello everybody,

    today I want to leave a short workaround for the following case:

    you have DAC class, with column Data, but in db you have column BlobData. How to map your BlobData on Data? For such case you can use attribute DatabaseFieldName.

    Take a note, how Acumatica used it:

    [PXDBBinary(DatabaseFieldName = "Data")]

    public virtual byte[] BlobData { get; set; } more

  • How to send email via Acumatica notifications mechanism

    Hello everybody,

    Today I want to share a note on how to send email via Acumatica notifications mechanism:

    var sender = new NotificationGenerator

    {

        To = "someone@example.com",

        Subject = $"Subject information {DateTime.Now:d}",

        Body = "Body od message",

        BodyFormat = EmailFormatListAttribute.Text

    };

    sender.Send();

    With such code, Acumatica will send email.

    more

  • Notes on Acumatica developers summit 2018

    Hi all,

    Recently I visited virtual developers conference for Acumatica.

    Here I want to document some details that were mentioned during that summit.

    First of all, I'd like to say that idea from Gabriel Michaud about making some global functionality for each page.

    Using PXGraph extension for creating a global button

    Consider for example how to implement a global button using PXGraphExtension:

    public class GloalGraphExtension : PXGraphExtension<PXGraph>

    {

        public override void Initialize()

        {

            if (!string.IsNullOrEmpty(Base.PrimaryView))

           {

               //Add a "Test" button in the toolbar    

               Type primaryViewItemType = Base.Views[Base.PrimaryView]. … more

  • Acumatica developers conference 2018 part 1

    Hello everybody,

    I want to summarize what I've seen and heard at latest Acumatica Developers conference.

    First of all, I'd like to say that idea from Gabriel Michaud about using of attributes that can save plenty of time during development.

    Part 1

    Everyday trips and tricks (Magic attributes and BQL operands)

    Lets start. For examle how to make a field required (or visible, or enabled) dynamically:

    Traditional way (old version):

    protected virtual void SOOrder_RowSelected(PXCache cache, PXRowSelectedEventArgs e)

    {

        SOOrder doc = e.Row as SOOrder;

        if (doc == null)

        {

               return;

        }

        if (doc.OrderType == "SO")

        {

              PXDefaultAttribute. … more

  • Select distinct values in Acumatica selector

    Hello everybody,

    today I want to post how to make distinct select from some column in Acumatica.

    So, imagine that you've decided not to normalize some column for Acumatica to SOOrder class. For example like this:

    public class SOOrderExt: PXCacheExtension<SOOrder>

        {

            #region Region

            public abstract class region : IBqlField

            {

            }

            [PXDBString(255)]

            [PXUIField(DisplayName = "Region", Visibility = PXUIVisibility.Visible)]

            public virtual string Region { get; set; }

            #endregion

    Then in other place, if you need to make distinct selector for Region, you can use code like this:

    #region Region

     public abstract class region  … more