Four important changes this month along with the normal set of bug fixes and enhancements. Normal pre-summer month!

Tax Calculation Errors

We have detected and fixed two errors in the tax calculation of the inventory modules this month. We have installed the coreBOS Advanced Tax control modules for a client and found that there was an error that affected these modules when individual tax mode was selected. While fixing the calculations, we found an error in the calculations when creating inventory modules of tax mode individual with discounts in the product lines from the web service API. We fixed the error, refactored the code and created (more) unit tests.

So, if you are creating inventory modules in tax mode individual through the web service API you MUST update and then edit and save the records to get the correct values (ask for help if you need it). Note that the only records that are affected are those that contain a discount in one or more of the product lines.

Also, while reviewing the calculations, we saw that the application permitted adding a global discount to the total in individual tax but that is illegal because the discount would be applied to the total with taxes which is incorrect. I suppose this won't affect too many people because you simply shouldn't be doing that at all but the application permitted you to do it, so we have eliminated that possibility.

  • corebos.filter.TaxCalculation.isExternal and corebos.filter.TaxCalculation.getTaxSQLColumns events for inventory module export and similar SQL manipulation
  • use the application function to get shipping taxes instead of direct database call so all the events are executed
  • hide the global discount row and reset discount fields in inventory modules when Individual tax mode is selected
  • Inventory meta-information class
  • web service: fix total for individual tax mode, eliminate global discount as it is not supported in individual mode

OnlyOffice integration

Which we talked about in the OnlyOffice Integration post

  • move the OnlyOfficeEdit function to the global scope
  • restructure notification error reporting
  • Documents OOEditLink detail view widget
  • update document version and trigger workflows on OnlyOffice update
  • GenDoc merge and edit with OnlyOffice integration


Keeps getting better, (I have to dedicate a post to this!). This month we get filtering and custom icons per file type among other things.

  • filter documents records
  • add and render file icons
  • add Application_DMS_OrderByFolders Global Variable for sorting folders
  • add the option to remove 'Entity' column from the list view with the Application_DMS_RemoveEntityColumn global variable
  • add condition query map in listview
  • prevent form submission on search
  • use the correct document type for spreadsheet files in OnlyOffice as per their documentation
  • version files before sending them for processing to the OnlyOffice server


  • add support for new OOXML table-columns element
  • denormalized documents query in detail view widget
  • foreach conditions regular expression was incorrect and better detection of module. This is a VERY important fix!
  • GenDoc merge and edit with OnlyOffice integration
  • GenDoc_AskForDocument_Information: When active, a popup asking for additional document information will appear before saving the merged document. Killing yet another PDFMaker functionality!

PDFMaker Document Information

Evolutivo Document Information

Features and Implementor/Developer enhancements

  • move the Popup search section to a separate template so we can use it in other places. Style and optimize vertical space and eliminate background image
  • Import: check 'save map' when the map name field changes
  • import: support update empty in import map
  • add read-only attribute and remove the create button in different Tasks views

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, eliminate nested ternary operation
    • substitute variables for their value, reduce SQL columns, reduce query_result, simplify debug message
    • Taxes: move utility functions to their own script
    • Export: simplify if-else with standard module properties
    • Inventory: move constant function call outside of loop
    • use the application showDefaultCustomView function instead of overwriting it in Colorizer
    • modify cobropagoconfig table to InnoDB
  • Security fixes and updates
    • update DOMPurify to 3.1.5
  • PHP constant updates
  • CI: adding drone.yml and necessary files to build and push an image. Change the location of the docker file
  • Unit Tests: keeps getting more and more assertions.

Global Variables

  • Application_DMS_RemoveEntityColumn: Remove the "Entity" column in DMS.
  • Application_DMS_OrderByFolders: Sort folders in DMS based on some given fields. The default sort for folders is the "sequence" field.
  • Export_Remove_RelatedModule_Label: Remove the Related Module name from export values. After way too much insisting I give in to this request which I think is incorrect. It permits eliminating the module prefix in exported related columns. Customer success I guess.
  • GenDoc_AskForDocument_Information: When active, a popup asking for additional document information will appear before saving the merged document.
  • Application_Export_Format: This variable permits us to set default values in the export screen. Select the default format to be exported. The default value is CSV.
  • Application_Export_FilterColumns: This variable permits us to set default values in the export screen. Allow export only for visible columns. The default value is 0.
  • HomePage_Permit_CopyTo: Set to 1 to permit users to copy their Home page layout to other users.


  • first load change sets check correctly set current user and fetch changesets which are not executed
  • Settings access: set detail view permissions for Users, Groups and Profiles
  • make the User field clickable if the current user has view permissions
  • eliminate reference to the old Events module
  • use labels and apply the same format for foreign modules in the Export process
  • correct the custom filter edit action for normal filters
  • open duplicate record handling in Import if the global variable is active
  • check for minutes before adding the seconds parameter on the date time
  • show value for user reference fields and make it non-editable in the TUIGrid list view
  • avoid die if MSSQL extension is not installed
  • set current_user to admin in Notifications
  • convert2Sql warning messages: migrate it to loop over array elements without numeric index
  • fill in HTML field by direct ID if not found any other way in related field capture
  • move code to one file in lowercase to avoid issues in Windows operating systems
  • skip validating empty conditions in Advanced Search
  • Tiddly Wiki integration: Tiddler import handle ondragover and prevent default action in handlepaste
  • ToolTip settings icon
  • check if ClickHouse integration is active and use the correct database reference
  • Correctly filter deleted comments in ModComments widget getComments method
  • Workflow
    • email can be sent when email-opt-out field is hidden
    • refactor conditional to use "isset" for consistency in getFromContext function
    • follow LDS and put the label on the left of the input instead of on top of it
  • Translations


May Insights

May June
Sonarqube May Sonarqube June

Thanks for reading.

Previous Post Next Post