This month's release includes a variety of fixes and notable enhancements, such as improvements to workflows related to sending and generating files, making automation smoother and more efficient. We also enhanced the DMS, Wizard, and MasterGrid widgets for better user experience. As always, we performed routine code formatting and cleanup, further refining our codebase and keeping our quality indicators on point.

Master Grid

More adjustments as we continue to use this extension for solving business requirements.

  • apply filters to the set of records shown in the grid
  • force header and force save option in properties of the map
  • correct the logic of detecting treeview mode

Document Management System View

Read about it here

  • change font size of complementary information
  • get correct viewid
  • hide "load more" if nothing more to load and set extension to unknown if not found
  • support denormalized document modules
  • relate attachments with Emails when saving from DMS
  • Mail Parser: ensure UTF8 in the subject when creating

Wizard Widget

I will be creating a post for this functionality soon!

  • add workflow actions on listview
  • add QuickCreate mode
  • correct relation logic
  • find and relate parent on the form
  • set parent record on the subwizard

Features and Implementor/Developer enhancements

  • Pills enhancements: close on click outside, sort elements, divide into columns when large amount of pill options are given
  • use context in save method to send information to the workflow system
  • export query and parameter values as class properties in condition query business map in case they are needed
  • getFoldersWithNames related to a document ID
  • GenDoc now returns an error file when failing to merge
  • Workflows
    • add executeWorkflow expression function
    • Send File and Generate Document save as document feature. Two related enhancements happen this month that, combined, are incredibly powerful (like almost everything in Evolutivo). We add the possibility to save a document record in the "Send File" workflow task. This task will capture a file being sent in the context and send it to different locations; FTP, AWS, GCP, ... and, now, to a normal record in the Documents module. This permits us to generate a report and save it as a Document record, for example. Once we had that working we enhance the GenDoc Generate Document workflow task to send a merged document to the Send File task where it can be sent anywhere, not only saved as a Document record. It's an awesome combination of workflows!
    • upsert workflow task now returns the affected CRMIDs grouped by module for better detection on context: upserted_modules_ids

EvolutivoFW Standard Code Formatting, Security, Optimizations, and Tests

  • EvolutivoFW Standard Formatting
  • Documentation: code and wiki.
    • function headers and help messages
    • wiki documentation keeps going
  • Refactor and Optimize code
    • SonarQube recommendations, reduce cognitive complexity, change for loops, reduce repeated strings, long lines, collapse IF
    • substitute variables for their value, reduce SQL columns, reduce query_result, simplify debug message, direct returns
    • change obsolete HTML font for span+style
    • apply LDS and center checkboxes in Popup and Layout Editor
    • join two SQL commands into one to get value
    • change variable names to avoid class property conflict
    • move repeated download header code to a function
    • reduce duplicate code when sending emails and exporting
    • make dldCntIncrease in general.js identical to the one documents.js, not sure we can delete one of them but this makes them easier to detect
    • eliminate unnecessary PearDatabase calls
  • PHP 8.4 initial testing and fixes
    • dynamic properties in Projects
  • update DOMPurify to 3.1.7
  • update installation database
  • upgrade from VT540 scripts
  • Unit Tests: keeps getting more and more assertions. We increment the code coverage measure in one point!

Global Variables

Application_User_FilterCondition: filter assigned user list based on a condition query business map. This functionality permits us to add more SQL restrictions on the query that retrieves Users for the assigned-to field. We can only ADD restrictions, so, return LESS users, not more than are permitted.

The map would look something like this which limits users to role H3 or admin user name:

<map>
<sql>vtiger_user2role.roleid=? or vtiger_users.user_name=?</sql>
<parameters>
<parameter>'H3'</parameter>
<parameter>'admin'</parameter>
</parameters>
<return>notused</return>
</map>

Others

  • load UI when accessing Calendar on ListView script
  • missing parameter in ActivityReminderCallback
  • eliminate obsolete code related to the packages directory in the installation process
  • fix Company changeset to execute twice if module is installed during first call
  • fix Documents mass download as it was incorrect after module standardization
  • Email
    • eliminate warning when no IDList is given
    • incorrect query in related email reports due to missing concatenation
  • fix Events to use correct month and year
  • Field Dependency
    • set picklist options and target node correctly
    • trigger callback for checkbox fields
  • support for datetime fields (UIType 50) in the Layout Editor
  • fix Menu install to work on first install with autonumber fields
  • Module Builder
    • disable editing for main module blocks
    • set autonumber to end with _no
  • delete related lists based on related tab also when deleting a module
  • Payment benefit calculation with currency support and load into column_fields for workflows
  • report headers not translated after removing bunnyjs
  • fix Profile import by defining table columns and adding permission for action 7
  • Web Service
    • permit deleting inactive users and refactor code to reduce (incorrect) duplication on transfer
    • eliminate the use of peardb getinstance in favor of global adb
    • getLoginPage empty condition was incorrect
  • GenDoc: set global variables AFTER instantiating class
  • Workflow
    • revert to logged-in user in the ManyToMany task
    • unset workflowid on duplicate action|create new workflow
  • Translations

Insights

Indicators keep getting better. Slowly, but better and better!

September Insights

September October
Sonarqube September Sonarqube October

Thanks for reading.

Previous Post