Contents tagged with Acumatica

  • 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

  • How to speedup parallel processing in Acumatica

    Hello everybody,

    recently I've get advice from Acumaitca on how to speed up parallel processing of sales orders creation with usage of Multithreading. Their advice was to add following line in web.config:

        <add key="AsyncNumbering" value="true" />

    With that line your Acumatica graphs will have separate numbering sequences which can create some gaps in your numberings, but definetely speed up creation of new lines. more

  • Abbreviations in Warehouse management

    Hello everybody,

    today I want to leave a note on warehouse abbreviations. For me all of them are not easy to keep in mind, so I decided to post them here:

    Abbreviation

    Meaning

    3PL

    Third party logistics

    ADC

    Automated data collection

    APS

    Advanced planning & scheduling

    ASN

    Advanced shipment notifications

    ASRS

    Automated Storage Revival system

    ASP

    Application service provider

    ISV

    Independent software vendor

    AIDC

    Automatic identification and data collection

    BOM

    Bill of material is a list materials required to produce an item

    CCD

    Charged coupled device is a barcode scanner that takes digital image of the barcode instead of … more

  • Some properties of graph in Acumatica

    Hello everybody,

    today I want to mention few interesting properties of Graph in Acumatica:

    IsImport

    IsExport

    IsMobile

    Names are pretty self-explanatory, but let's go a bit deeper.

    IsImport

    Imagine following situation: you created some code in graph, and have huge desire to add some logic, which will be executed only when it is used in Import mode. For example in case of import you'd like not to add discount. How to tell this to Acumatica? For example like this:

    if (!sender.Graph.IsImport) AddDiscount(sender, doc);

    This will tell to Acumatica not to add discount to your entity during Import.

    IsExport

    Another use case. Imagine, that you want some logic to be executed during … more

  • Prediction customization

    Hello everybody,

    here I want to describe in more details what I mean when I say prediction customization.

    As name says by itself, I want to make something that will help you to make predictions. 

    Predictions for what? 

    Acumatica has plenty of entities: invoices, sales orders, employees, taxes, acounts payable, acounts receivable, fixed assets, etc. I want to make customization, that will use some machine learning techniques in order to say something like: in the next month based on history of your your sales, you'll have 2000 sales orders. Or based on your current history, you'll pay 300 000 taxes in the next two months. Or based on your history of hiring, in next three years you'll … more

  • Acumatica clipboard functionality

    Hello,

    today I want to drop few lines about working with copy/paste functionality of Acumatica.

    For full canceling insertion from Clipboard, you can use the following in your graph:

    public override bool CanClipboardCopyPaste()

    {

    return false;

    }

    Also you can use attribute PXCopyPasteHiddenFields. That attribute says that specified fields of the primary DAC of the data view will no be copied when the copy-paste feature is used.

    Another attribute which you can consider is PXCopyPasteHiddenView. This attribute says that cache corresponding to the primary DAC of the data view is not copied when the copy-paste feature is used.

    And one more useful fields in graph itself is … more

  • How to override part of C# code in Automation Steps in Acumatica

    Hello everybody,

    today I want to share one interesting gotcha which took plenty of efforts from mine side in order to understand it.

    Recently I got an assignment to modify behaviour of Create Prepayment action at purchase orders. 

    If to look at CreatePreapyment implementation, it has following part of code:

    if (this.Document.Current == null)

      return;

    this.Save.Press();

    APInvoiceEntry instance = PXGraph.CreateInstance<APInvoiceEntry>();

    if (this.Document.Current.PrepaymentRefNbr == null)

    {

    if to put simply it checks if current purchase order already has a prepayment, and in case if it has, then give to a user error message. 

    Imagine, that you need to modify that behaviour for … more

  • How to override Create Prepayment in Acumatica without usage of custom delegate

    Hello everybody,

    today I want to share with you on how to override Action CreatePrepayment in Acumatica.

    General rule of overriding methods in Acumatica according to T300 manual is like this:

    Create delegate.

    Add [PXOverride] over your method which is named exactly as base method ( in our case CreatePrepayment )

    Add your implementation

    For example you can achieve it like this:

    //Create your delegate

    public delegate void CreatePrepaymentDelegate();

    [PXOverride]

    public void CreatePrepayment(CreatePrepaymentDelegate baseDel)

    {

        // your code of overriding

    }

    Way from manual T300 is perfectly workable, but  I propose you to use feature of .Net which is named Action, … more