• Sage 300 Current Users screen

    I came accross a query posted in the Sage community regarding the date time in current users screen. It was about the screen opened time in the current users screen in Sage 300, is it based on Users PC or Server time, as there may be scenario that the different users are located in different time zone.

    Below is my findings.

    In summary , i would say it's based on the time zone in the server time which hosted Shared Data…

  • Failed to Import the ActiveX Control

    Over the last couple of years, some partners have had an issue where they were not able to add a VB OCX to a WinForms screen as they would receive a message from Visual Studio stating : "Failed to import the ActiveX control. Please ensure it is registered properly". See this link in the Reports, Macros, and Customizations forum: https://www.sagecity.com/us/sage300_erp/f/sage-300-reports-macros-and-customizations…

  • Sage 300 Advanced Complex Passwords

    Introduction

    Sage 300 passwords are becoming more complex, and the minimum size has increased!

    Sage 300 prior to 2022.2 (April 2022)
    • A basic password must start with a character and can contain numbers.
    • A complex password follows the basic configuration and additionally must contain one special character and one number.
    • If the Require Minimum Password Length option is enabled, the minimum password length is 4 characters…
  • Sage 300 - Sage CRM Integration Guide

    The integration between Sage 300 and Sage CRM creates a link that enables Sage CRM and Sage 300 to share information as it is entered into either program.

    After integration, front-office personnel can create customer quotes and orders in Sage CRM and then promote those quotes and orders to Sage 300. As quotes and orders are processed, both systems are updated, preventing redundant data entry and enabling front-office…

  • Sage 300 2020 Web SDK

    Introduction

    The Sage 300 Web SDK (SDK) is a collection of wizards, utilities, samples and documentation for developing Web Screens for the Sage 300 Application.

    This week we released the Sage 300 2020 Web SDK to coincide with the release of the Sage 300 2020 Application.

    It’s Available!

    The SDK is available at https://github.com/SageNADev/Sage300-SDK.

    Branches

    As described in a previous blog and in the README…

  • Sage 300 Unicode Support in the Web Screens

    Introduction

    Sage 300 supports English, French, Spanish, Traditional Chinese, and Simplified Chinese languages.

    Customers, using non-English languages in the Web Screens, may encounter pain points in the following areas:

    1. Different languages between the SQL Server database and the application server's system locale
    2. Different languages between the Sage 300 user’s language (locale) and the application server's system…
  • Sage 300 How to Debug into a Business View from a Sage 300 Web Screen

    Introduction

    Some developers may already know how to debug into your C/C++ Accpac Business View while debugging/running your module’s Sage 300 Web Screen. But, for those who do not, this little tip is very handy.

    This tip allows you to debug into your Accpac Business View (where you have the source) and from your module’s Sage 300 Web Screen.

    Debugging in the IDE

    You have your solution loaded in the Visual…

  • Sage 300: How to Create a Class in Visual Studio from JSON

    Introduction

    Some developers may already know how to create a class from JSON metadata. But, for those who do not, this little tip is very handy.

    I’ll use the Sage 300 Web API and create classes based upon the ARCustomers endpoint. Of course, this also possible with any JSON metadata, but since this is a Sage 300 blog, using Sage 300 metadata feels right.

    I give credit for this tip to Vega and I’m simply providing…

  • Sage 300 How to Return Super View Values from the Process Service

    Introduction

    So, you are developing Web Screens for Sage 300 and you want to be able to check a field value or some field values that are returned from the super view. In the Sage 300 Desktop, which is based upon the Visual Basic 6.0 development environment, this is simple and straight-forward.

    But, how is this done in the Web Screens where the process is handled by a Worker Role?

    This article will explain how this is…

  • Sage 300 Compiling Web Screens in Release Mode Tip

    Introduction

    When developing Web Screens for Sage 300, a developer typically compiles and runs in Debug mode within the Visual Studio IDE.

    Changing to Release mode and compiling the solution performs an additional step which is to deploy or copy the required assemblies and files to the developer’s local Sage 300 installation. This is beneficial for the developer to see the screens running via the Sage 300 homepage.…

  • Compiling Sage 300 Views with C++

    As you are probably aware, Sage 300 views can be compiled with a C++ compiler. You have probably noticed the:

    #if defined(__cplusplus)

    namespace A4WAPI {

    #endif

    wrappers in the program files and

    #ifdef __cplusplus

    extern "C" {

    #endif

    in the header files, but if you are like me, have never had a need to compile a view with C++, so never thought much about it. I’m certainly not recommending that you do compile…

  • Sage 300 and Visual Studio’s Code Maps

    Introduction

    The Sage 300 web screens are comprised of 113+ Visual Studio projects. This represents a large and complex code base. Simply opening a project and viewing the components and references to understand the relationships and dependencies can be a daunting task.

    The relationships and dependencies between not only projects but also classes and methods are sometimes best understood when presented visually.

    Microsoft…

  • Allow users to select a custom report file

    Printing reports in the VB UI is pretty straight forward and fairly well documented. You specify the report name in the RptName() function. Example:  RptName = "XXREPT01"

    Then, create a section in the report descriptor file (the xxrpt.ini file) with the same name. The report descriptor file defines things like the parameters for the report. You have probably noticed that if you don’t have a section in the xxrpt…

  • Sage 300 Optional Resource Files

    Introduction

    The Sage 300 Web Screens use Resource Files (Resx files) to localize strings, text, captions, messages, etc. that are presented in the screens. Behind the scene, these Resx files are supported by Microsoft’s Resource Manager class and framework.

    So, what happens if a Resx file for a language is not provided or blank values exist in a Resx file?

    Supported Languages

    Before we begin, let’s identify the…

  • Sage 300 JavaScript Bundle Names

    Introduction

    JavaScript Bundling is a technique that can be used to improve request load times. The Sage 300 Web Screens use this technique to bundle the required JavaScript files on a per screen basis.

    Known Issue

    There is a known issue that bundle names with a dot will generate a 404 error condition in certain situations. While the Sage 300 bundle names do not have a dot in the bundle name, it was recently discovered…

  • Sage 300 Date Utility

    Introduction

    Microsoft’s DateTime Structure is an object that represents an instant in time, typically expressed as a date and time of day.

    In Sage 300’s Web Screens, we use this object for dates and times in our C-Sharp code. However, we do not use its numerous properties and methods directly. Instead, we have encapsulated this functionality in our DateUtil class.

    Let’s me explain why we came to the decision…

  • Sage 300 Open Source SDK First Partner Contribution

    Introduction

    The Sage 300 Web SDK (SDK) is a collection of wizards, utilities, samples and documentation for developing Web Screens for the Sage 300 Application.

    This article is about the first partner contribution to the SDK!

    Ecosystem Benefits

    As I mention in the README document for the SDK in GitHub:

    All tools can only be so much to everyone in order to consider everyone’s based needs while providing functionality…

  • Open Source Web SDK – Policies and Procedures

    Introduction

    In my previous article, I shared my thoughts on open sourcing the Sage 300 Web SDK (SDK) and how, in my opinion, this will benefit the Sage 300 Ecosystem.

    In this article, I am introducing the SDK as Open Source Software (OSS) and will explain the changes to the original vision since the idea of open source was first presented along with the policies and procedures for the repository.

    It’s Available!…
  • Open Sourcing the Web SDK

    Introduction

    In this article, I want to share my thoughts on open sourcing the Web SDK for Sage 300 and how, in my opinion, this will benefit the Sage 300 Ecosystem.

    Open Source Software

    Let's start by first defining what Open Source Software (OSS) is:

    Open-source software (OSS) is computer software with its source code made available with a license in which the copyright holder provides the rights to study, change…

  • Implementing an External Finder

    Introduction

    The following question was recently asked:

    I am a developer working in my Sage assigned module and I need to invoke a finder from one of the standard Sage modules (i.e. AR, AP, GL, etc.). How do I do this?

    This article will illustrate the steps required to invoke a finder from a module other than what is currently being developed.

    Example

    To illustrate the steps involved in adding a finder from another module…

  • Sage 300c Transition

    Stephen Smith

    As most, if not all, are aware, Stephen Smith, Sage 300 Enterprise Architect, retired at the end of February, 2016.

    I want to acknowledge Stephen’s leadership, mentoring, friendship, his knowledge of the Sage 300 product, technologies and the accounting industry. These qualities and attributes will be missed by all at Sage. Stephen was at Sage (and Computer Associates) for over 22 years and has certainly…

  • Sage 300c Web Services

    Introduction

    Hand in hand with true HTML/JavaScript/CSS Web UI’s you also want to access the same logic from other general programs using RESTful Web Services. This gives a general API to access the application which doesn’t require any Sage 300 components be installed on the client computer and doesn’t require the calling application be on the same computer or even at the same location.

    ASP.Net MVC

  • Accessing Sage 300c’s Business Logic from the Web UIs

    Introduction

    In the Sage 300 VB UIs, a user would do something in the UI (press a button or tab out of a field) and then the VB UI would be notified of this and would possibly execute a number of Sage 300 Business Logic (View) calls and based on their results update various other fields and possibly provide user feedback via a message box.

    In the Web UIs we want to do similar processing since we want to re-use the tried…

  • Stateless Versus Stateful Sage 300c Web UIs

    Introduction

    When two computers communicate they use a well-defined communications protocol. In Browser to Server communications these are often broadly categorized as either stateless or stateful. A stateless communications protocol doesn’t require that anything be remembered between calls. In web applications this is desirable for a number of reasons:

    • often calls are load balanced across multiple servers (perhaps…
  • Adding a Grid to Your Sage 300 Web UI

    Introduction

    The grid or table control is a key element for data entry in any Accounting application. With Sage 300 we use the grid control to enter things like Order or Invoice details. Interactions with a grid control tend to be quite complex. The data has to be managed so it is loaded only a page at a time (often called virtual scrolling), since there could be thousands of detail lines and loading them all at once…