Slow month where we concentrate on reducing technical debt and optimizing the code. We fit in some new features and the constant bug-fixing activity. Nice!

Create Custom Fields with table and column name

We can now select the table and column names of custom fields in the layout editor. The table is a select box where we can choose between the custom and the main table of the module. The column name is a normal input box where we put the field name we want to create.

There is no duplication check on the field name so, be careful!

custom field table and column name creating

custom field table and column name viewing

Features and Implementor/Developer enhancements

  • add separate HTML element to the application message so we can set messages dynamically
  • Backup System: We review, clean, and refactor the Backup code.
  • GenDoc:
    • permit relating generated document with any entity
    • send "save as document" context information
    • set generated document name into workflow context
    • support field mapping business map and record context for setting fields in the generated document record
  • Workflow now supports scheduled SQL with getFromContext
  • style Settings: eliminate background image in table headers
  • Custom View now permits filtering on NULL/empty dates
  • Custom View None selection in standard filters to delete them

None Standard Filter Option

EvolutivoFW Standard Code Formatting, Security, Optimizations, and Tests

  • EvolutivoFW Standard Formatting (a lot)
  • Documentation: code and wiki.
    • function headers and help messages
    • FieldInconsistency: comment about override parameter __AcceptInconsistencies
    • wiki documentation keeps going
  • Refactor and Optimize code
    • SonarQube recommendations. This month we made another BIG effort. Read why in the insights section.
    • php:S6600 Remove the parentheses from return call
    • php:S125 Remove this commented out code
    • php:S1117 Local variables should not have the same name as class fields
    • reduce duplicate code
    • Rector basic set up and test in vtlib directory. Interesting tool!
    • substitute variables for their value, reduce SQL columns, reduce query_result, simplify debug message, direct returns
    • optimize reports endpoint calls to do less database operations
  • PHP 8.4 testing and fixes
  • update DOMPurify to 3.2.0
  • update HTMLPurifier to 4.18
  • CI: correct duplicate specification and exclude duplicate control
  • Unit Tests: keeps getting more and more assertions. We increment the code coverage measure in one point!

Others

  • Anchors must have content and the content must be accessible by a screen reader Web:S6827
  • use correct variable for AutoNumber workflow expression calculation
  • add BrowserVariables initialization to Popup
  • Calendar
    • repeat events class and make methods private
    • yearly repeat events interval was incorrect
  • clean DMS UI for filename
  • prevent Menu infinite loop and render the first menu if the default is deleted
  • add label for detail view widget blocks in Layout Editor
  • add decimal fields CSS to List View properties (lv-decimal-float)
  • incorrect label in Mail Converter workflow option
  • automatically check checkbox when editing textarea in MassEdit screen and skip read-only and hidden fields
  • Master Grid
    • first load detection separated for each instance
    • init event variable for popup master grids
  • Filter get sort options only if required, do not apply the second sort field if no sorting is active
  • make Smarty methods and local property private
  • delete unused variable and set autonumber to a more significant prefix in Tasks
  • set parent_id record in Upload Widget context
  • getWSID and getCRMID support for special 0x format
  • XML object reference as a string in vtlib
  • Web Service
    • decode HTML of queued operation result
    • eliminate warning by setting a default value
    • put in queue condition fix and optimization
    • accepting non web service values for User reference fields (like other fields)
  • Workflow
    • SQL expression processing for math operations and maybe others too
    • executeSQL expression for debugging
    • pass workflow context on Launch Workflow rule evaluation
    • allow editing of multi-picklist fields in the Upsert task
  • Translations
    • Global Variables

Insights

After updating Sonarqube last month I fell into the gamification trap looking way too much at the dashboard numbers and putting in a lot of effort into optimizing the code base. I also tried out Rector, like I didn't have enough with Sonarqube! It is a very nice tool that can be helpful in the future once we get it configured correctly.

You can see the difference in KPIs this month.

November Insights

November December
Sonarqube November Sonarqube December

Thanks for reading.

Previous Post