Developers
Coding style
A list of coding style rules to be used when developing in vtenext. File encoding: UTF-8....
Using AI
Tips on how to use LLM to help writing/refactoring vte code
Weak comparisons
Backward Incompatible Changes View https://www.php.net/manual/en/migration80.incompatible.php K...
RequestHandler
What is RequestHandler? RH (alias for RequestHandler) provides secure, centralized access to HTT...
Routing system
Previously, index.php directly included the module file to process the action, based on the actio...
Database best practices
Best practices (all versions) Avoid methods that do automatic html conversion, like query_result...
Escaping
How to properly escape html/js code in Smarty templates and PHP files
Introduction
Starting with vtenext version 26.01, all variables outputted by Smarty templates (for example {$V...
Escaping rules
1. Avoid html code in php Avoid generating html code directly in php, or outputting it, if pos...
Cheat sheet
Quick reference if you just need to know how to escape stuff! Do's and Don'ts Use only quer...
SDK 2
This manual describes the SDK methods that allow customization of vtenext.
Include custom php/js/css files
In order to include your custom code (that will be included in every page) you need to register t...
Javascript overrides and extensions
Some commonly used Javascript functions can be replaced or extended to change their behavior. To ...
Standard PHP replacement
You can replace the standard php files of the modules, such as DetailView.php, EditView.php and s...
Inclusion of other files
To associate files or folders to a module, so that they are imported automatically, the following...
Custom Uitypes
You can add new types to the existing ones and manage them completely without changing other code...
Smarty Custom Templates
You can create your own templates, which replace the standard ones (such as EditView.tpl and so o...
Popup
Two actions are available for managing popup. You can insert a php script before the query is mad...
Presave
You can enter your own script when you press the "Save" button in EditView mode. To register a sc...
Advanced query
You can modify the query executed to load the data in ListView, RelatedList and Popup mode in ord...
Page Header
You can customize the user icon, the settings icon or the blue bars at the top of the pages of VT...
Translations
Translations can be customized for each language and module installed. To modify or insert a new ...
Fields Visibility
You can change the visibility of the various fields (value of $readonly) and other variables in t...
Home Blocks
New blocks can be added to the home of VTE via SDK. The blocks cannot be deleted from the interfa...
Custom Buttons
Buttons can be added under the main menu. To insert a new button use the following method: SDK::...
Transitions Manager
You can change the selection options for the picklists managed by the transitions manager, as wel...
PdfMaker Custom Functions
Custom functions can be added in the PDFMaker module. To insert one use: SDK::setPDFCustomFuncti...
Custom Folders and Reports
Custom folders can be created using the following API. SDK::setReportFolder($name, $description)...
Turbolift Counter
When changing the standard extraction criteria of a related list, for example using another metho...
SDK Processes
Process log
The way of viewing the logs has changed in the various vtenext releases and is summarized as foll...
Import Processes with a script
From version 18.05 (rev. 1696) it is possible to import processes previously exported in the form...
SDK
You can add custom functions to processes, click here for more details.
Portal v2
Theme documentation https://adminlte.io/docs/3.2/ https://github.com/ColorlibHQ/AdminLTE htt...
Migration to PHP ≥ 8.3
New developers features in vtenext 26.04
In version 26.04 some additional changes have been made to the code to simplify the development o...
Mailscanner (Mail Converter)
Several Mailscanner classes are now exendable via SDK::setClass: MailScanner MailScannerActio...
Record conversion
In the latest version the handling of record conversion (converting a Quote to a SalesOrder, or a...
CSV Import
One of the classes used by the standard CSV Import (the one available from any module's ListView)...
VteSync (synchronizations)
VteSync connectors are now extendable via SDK::setClass so it's easier to add new functionalities...
ListView extendability
The ListViewController class has been refactored to be more perfomant and easily extendable. For...
Webforms
The class WebformCapture is now extendable via SDK::setClass and the main method captureNow has b...
Code Review Skill
A skill for use with AI agents integrated into your IDE is available at tools/skill/review-sdk-26...
Help us improve
Developer documentation is constantly evolving! We are constantly committed to improving the qua...