M18 ERP Documentation

website·Indexed 34 days ago

https://m18doc.multiable.com/

Technical documentation for M18 ERP, covering Core Web Services for CRUD operations, JSF component libraries, and specialized modules including HCM (Payroll, Leave, and Attendance Management), BPM, EBI, and Warehouse Management. Includes guides for front-end development using ViewListener and ViewController, OAuth 2.0 authentication, and XML configuration.

Tokens
277.6K
Snippets
1.4K
Records
1.6K
Agent score
47%

What's inside M18

  1. Overview of M18 RESTful Web Services

    M18 provides a suite of RESTful web services designed for third-party developers to facilitate seamless integration and data synchronization between M18 and external systems. The API ecosystem is divided into core services and specialized modules including Business Process Management (BPM), Enduser-driven Business Intelligence (EBI), Schedule Management (SCM), and Document Management System (DMS).
  2. Overview of the EBI (Enduser-driven Business Intelligence) creation workflow

    Creating an EBI report involves a sequential pipeline of data retrieval and aggregation steps:

    1. Create Query: Retrieve data directly from the database using SQL and custom input parameters.
    2. Create QuerySet: Connect multiple Queries together. QuerySets serve as the data source for EBI reports or Combined QuerySets.
    3. Create Combined Set (Optional): Combine multiple QuerySets using set operations: Minus, Union, Union All, or Intersect.
    4. Create EBI: Use the EBI Builder to generate the final report based on a QuerySet or Combined Set.
    5. Export EBI: Manage the report via the EBI XML Console.
  3. Overview of the EBI creation workflow

    Enduser-driven Business Intelligence (EBI) reports are created through a multi-step pipeline that transforms database queries into end-user reports. The general workflow is:

    1. Create Query: Retrieve data from the database using SQL and custom input parameters.
    2. Create QuerySet: Connect multiple Queries together. QuerySets are used to generate EBI reports or Combined QuerySets.
    3. Create Combined Set (Optional): Combine multiple QuerySets using operations such as Minus, Union, Union All, or Intersect.
    4. Create EBI: Use the EBI Builder to create the final report based on a QuerySet or Combined Set.
    5. Export EBI: Manage the report via the EBI XML Console.
  4. Query workflow node participants

    Retrieve information about workflow node participants, including both historical actions ('done') and pending tasks ('todo').
    # GET http://127.0.0.1:8080/jsf/rfws/bpm/wfs/handlerInfo/[wfInstanceId]
    
    # Headers:
    # authorization: Bearer <token>
    # client_id: <client_id>

    Example Response:

    {
        "size": 2,
        "values": [
            {
                "code": "B",
                "atvtyKey": "UserTask_15hry6g",
                "type": "done",
                "userId": 2,
                "desc": "Englishtest3",
                "info": "wf.pass",
                "logTime": "2017-06-22 14:41:16"
            },
            {
                "code": "B",
                "atvtyKey": "UserTask_1txbhvu",
                "type": "todo",
                "userId": 2,
                "desc": "Englishtest3",
                "logTime": "2017-06-22 14:41:29"
            }
        ]
    }
  5. Retrieve a picking list for LSP operations

    Retrieve detailed information about a picking list, including its status, associated logistic provider, parcels (with dimensions and weight), and products (including lot numbers and quantities).
    JsonObject data = new JsonObject();
    data.addProperty("beId", 173);
    data.addProperty("id", 33);
    
    RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data.toString());
    
    String url = "http://" + server + "/jsf/rfws/erp/lsp/pickinglist/get/";
    
    Request request = new Request.Builder()
      .url(url)
      .addHeader("client_id", MyValue.clientID)
      .addHeader("authorization", "Bearer " + access_token)
      .addHeader("cache-control", "no-cache")
      .post(requestBody)
      .build();
    
    OkHttpClient client = new OkHttpClient();
    Response response = client.newCall(request).execute();
  6. M18 Platform Architecture Overview

    The M18 platform is built on J2EE and deployed using the WildFly (Java EE Server) application server. It utilizes a MySQL database. The architecture consists of:

    • Front-end: Developed using JSF (JavaServer Faces), a component-based web framework.
    • Back-end: Developed using EJB (Enterprise JavaBeans), which encapsulates business logic and handles requests from the JSF layer to interact with the MySQL database.
  7. M18 Web Services Overview

    M18 provides a suite of RESTful web services designed for third-party developers to enable seamless integration and data synchronization with external systems. The services are categorized by functional modules including Core, Business Process Management (BPM), Enduser-driven Business Intelligence (EBI), Schedule Management (SCM), Document Management System (DMS), ERP (Retail, Third-Party Logistics, Trading, Finance, and Warehouse Management), and HCM (Attendance, Leave, Payroll, and Labour Law Compliance).
  8. Customize M18 standard mobile app features

    The M18 standard mobile app (supporting Android and iOS) can be modified via the [Mobile App Setup] module. This allows administrators to hide unused standard features, integrate additional installed app features, or customize the behavior of existing features.
  9. Customize M18 standard mobile app features

    The M18 standard mobile app (Android and iOS) can be modified using the [Mobile App Setup] module. This allows administrators to hide unwanted standard features, integrate additional installed app features, or customize the behavior of existing features.
  10. Understand M18 View Types

    The M18 platform utilizes several distinct view types displayed within the browser window:

    • App View: The main M18 browser window.
    • Frame View: A view displayed as a tab within the App View.
    • Module View: A specialized Frame View where data is bound to back-end module data.
    • Dialog View: A pop-up window within the App View.
    • Namecard View: A small floating window used to display additional information for lookup fields.

    All views are defined using JSF files in .xhtml format.

  11. M18 Platform Architecture Overview

    The M18 platform is a J2EE-based system deployed using the WildFly (Java EE Server) application server. It utilizes a MySQL database for storage. The architecture consists of:

    • Front-end: Developed using JSF (JavaServer Faces), a component-based web framework.
    • Back-end: Developed using EJB (Enterprise JavaBeans), which encapsulates business logic and handles requests from the JSF layer to interact with the MySQL database.
  12. Understand the Payroll Calculation Result data structure

    The M18 HCM Web Service for retrieving employee payroll calculation results returns a JSON object containing a list of payroll account entries. Each entry provides details about specific payroll components such as basic salary, incentives, and mandatory/voluntary contributions (e.g., MPF).
    {
        "size": 48,
        "values": [
            {
                "empId": 1150,
                "paccDesc": "Basic Salary (Monthly)",
                "paccType": "X",
                "cur": 10,
                "pacc": "BSMO",
                "paccid": 91,
                "mpfConDate": "2017-12-05 11:34:40"
            }
        ],
        "fields": [
            { "name": "empId", "fieldClassName": "Long" },
            { "name": "paccid", "fieldClassName": "Long" },
            { "name": "pacc", "fieldClassName": "String" },
            { "name": "paccDesc", "fieldClassName": "String" },
            { "name": "paccType", "fieldClassName": "String" },
            { "name": "amt", "fieldClassName": "Double" },
            { "name": "cur", "fieldClassName": "Long" },
            { "name": "formulaDesc", "fieldClassName": "String" },
            { "name": "mpfTrxNo", "fieldClassName": "String" },
            { "name": "mpfConDate", "fieldClassName": "Date" }
        ]
    }