Friday, 29 December 2017

Change Azure VMSize for Acumatica Package

Hi All,

Past several years Microsoft has added multiple possible VM sizes (that you can check here) and they actually will not stop at this point.
azure

So we need a good way to easily change some properties, if we want to have custom Azure configurations. Today i want to share with you the way how can you repack Acumatica Azure package.

To complete there steps you need to have installed:
  • Microsoft .Net 4.0+ for running PowerShell script.
  • Azure SDK 2.9+ You can download it here. Actually you just need a one single tool that will do packing - MicrosoftAzureAuthoringTools-x64.msi. Than you will be able to find a CSPack.exe tool by this path "C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin" CSPack can generate *.cspkg files, that are actually should be uploaded to Azure
  • 7zip.exe for extracting files
The idea about this approach, that Azure package is just a Zip file, that can be extracted. So we can extract it, change required configuration and pack it back.

Here you can see folders structure that I have prepared for this task:
folders structure acumatica
  • In the "In" folder you should put your Acumatica Service.cspkg right there.
  • "Out" folder will contains repacked file in the end of process.
  • "Package" folder contains some tools and temporary extracted files required for the process.
     folder contains acumatica
    • "7za.exe" - 7zip console tool
    • "template.txt" list of system files required for packing
    • "properties.txt" list of additional required properties
  • "1-extract.bat" will extract data from standard package.
  • "2-pack.bat" will pack data back after modification of properties.
  • "ServiceDefinition.csdef" is Azure csdef file that contains some properties and actually includes vmsize that we need to change. 
vmsize

So the entire scenario:
  1. Download Acumatica Azure Package from Acumatica web site.
  2. Put Package to "In" folder
  3. Run Extract.bat
  4. Change vmsize in the "ServiceDefinition.csdef" file to required size for your company
  5. Run Pack.bak 
  6. Get Result package from "Out" folder.

Code files:

Have a nice Installation.

Wednesday, 27 December 2017

Link Between GL And AP/AR

Hi There,

In case you have not seen that before, Acumatica has links between GL Batch lines and AP/AR Invoices lines - Following conditions should be applied:

  • GLTrain,TranType = ARTran.TranType;
  • GLTrain,RefNbr = ARTran.RefNbr;
  • GLTrain,LineNbr= ARTran.TranLineNbr;
TranLineNbr is populated on release of a document in another module with the number of the corresponding line in that document.

Please note that TranLineNbr can be empty in some cases. For example if you have consolidation posting to GL, than multiple AP/AR trans will be combined in one GL line, in that case TranLineNbr cannot be evaluated. Specially this field is not populated when PX.Objects.GL.GLTran.SummPost is ON.

Using that knowledge you can update something in GL from AP/AR transactions. For Example:

protected void GLTran_TranLineNbr_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
{
       GLTran row = (GLTran)e.Row;

       if (row != null
&& row.RefNbr != null && row.TranType != null && row.TranLineNbr != null)
       {
              ARTran tran = PXSelect<ARTran,
                      Where<ARTran.tranType, Equal<Required<ARTran.tranType>>,
                             And<ARTran.refNbr, Equal<Required<ARTran.refNbr>>,
                             And<ARTran.lineNbr, Equal<Required<ARTran.lineNbr>>>>>>.
Select(Base, row.TranType, row.RefNbr, row.TranLineNbr);
              if (tran != null && tran.Date != null)
              {
                      row.TranDate = tran.Date;
              }
       }
}

Have a nice Customization.

Calling Base Actions by example of Generating Time Cards

Hi All,

Just a short article where I can share with you customization that can generate time cards from uploaded time activities.
 time cards
Customization doing following:
  • Selects the first and the last unreported (where no time-cards assigned) activity from currently selected employee.
  • Goes week by week between first and last activities
  • Create a new time card for every week using TimeCardMaint graph
  • Code also automatically submit time card for approval
  • In case there is unreported activity for already submitted or released time card, code can automatically generate time card correction and submit it again.

Tuesday, 26 December 2017

Dashboards and Reports on Mobile

Hi All,

Do you know that Acumatica Mobile native app has supported dashboards and reports since release of version 2017 R2.
dashboards and reports acumatica
Here you can see YouTube video with full presentation of Acumatica Mobile capabilities - Acumatica Mobile App - Functionality and Customization

But in this article I want to show you how to configure it by you own. Welcome under the cut.

Monday, 25 December 2017

Restore Large Snapshot

Hi Everyone,

Have you seen such error before when you try to upload snapshot of the size more than a gigabyte?
The Error message: "Snapshot file size exceed the maximum allowed size".
Acumatica Snapshot Size Limits
There are multiple reasons why it is not allowed - connection stability, IIS limitations, Memory size, on the fly processing limitations and so on.

But what you still need to restore a snapshot and you need to in any possible way? Lucky you there is a stable way for that using Acumatica Configuration Wizard.

Monday, 18 December 2017

Visual Studio Code Snippets

Hi All,

If you search on ways to optimize your development experience you can try to look at the code snippets for Acumatica events and DAC fields.

Here it comprehensive instruction on how to develop own code snippets.
I want to share with you snippets I use in my own local environment. Please follow the installation Instructions:

  • Below you will see the XML code from GitHub Gist that you need save as a file: Acumatica.snippet
  • Place this file to snippets location : C:\Users\<username>\Documents\Visual Studio 2015\Code Snippets\Visual C#\My Code Snippets
    • Code Snippets
  • Launch your Visual Studio and try to use it.

    • Code Snippets

Code snippet is under the cut.

Wednesday, 13 December 2017

Synchronize User Passwords between Companies with SQL Trigger

Hi Everybody,

Here want to share with you one easy way how to easily sync passwords between users in all companies in Acumatica - we can use SQL triggers.
A trigger is a special kind of code that automatically executes when an event occurs in the database server. Database Engine execute trigger when a user tries to modify data through a data using Update/Delete/Insert commands.

In our case we can catch the event when password is changed in specific company and distribute it to all other companies we need.

Code:

Have a nice configurations.

Thursday, 7 December 2017

Copy Dashboard

Hi All,

Previously I shared with you how to copy dashboards using SQL script.

Starting from Acumatica 2017R2 you can also copy dashboards with 2 more ways:
  • Using customization project
  • Export/Import from/to XML buttons

Steps using Customization Project:
  1. Go to Customization Projects and create a new one.
  2. Find Dashboards section In the Customization Browser.
  3. Find and Select there a dashboard that you want to copy.
    1. Steps copy dashboard acumatica
  4. Go and publish this customization to other companies
    1. Steps copy dashboard acumatica
Done, you can use it now.
Please note that you can export customization project and copy dashboards to other Acumatica Instance.

Steps using Export/Import from/to XML
Another way you have Export to Xml/Import from Xml buttons on Dashboards. These buttons will allow you get copy and upload dashboards definitions between databases and servers.
copy dashboard acumatica


Have a nice Configurations!

Monday, 4 December 2017

Multi-Company Drop-Down

Hi All,

Today want to show you how to have different values of drop-down in different companies:
  • Company One
    • Values 1, 2, 3
    • Labels "1", "2", "3"
  • Company Two
    • Values 3, 4, 5
    • Labels "1", "2", "3"
To do this we can use following nice features in Acumatica Platform:
  1. PX.Data.Update.PXInstanceHelper.CurrentCompany - to get ID of current company
  2. FieldSelecting - Event where you can change/adjust value just before it will be included in response to browser.
  3. e.ReturnState = PXStringState.CreateInstance(...) - State contains full description of control that should be generated in the user interface with app UI properties and configurations. By adjusting state on the fly you can change list of allowed labels and values
  4. Custom Attributes - to reuse one logic in many places
Please see full code example under the cut.