Changes for the user
Allow to edit account move maturity date
The maturity date represents information, which has no impact on the accounting, but on business, only. So it is more flexible to allow to edit it.
Invoice shipment costs only, if there is a shipment
When the cost method is on order and the invoice method is on shipment, the shipment cost is only invoiced when a shipment is done. Before there was an issue with this configuration.
Same input and storage location for customer return shipment
Following similar changes for customer and supplier shipments, the customer return shipments support also to use the same input and storage location. In such case, on reception the shipment is directly marked as done.
URL in web client
The web client sao now supports URLs. This allows users to communicate information by sharing URLs.
The syntax is quite similar to the one of the desktop client since the ‘
index.html’ has been removed but uses a URL-hash instead of the full path due to the single page design.
The URL is updated to correspond to the active tab. The hash part can be changed by the user (using copy/paste) to open the corresponding tab. This allows to navigate back in the history of the browser.
The client parses the URL hash on login and launches the corresponding action.
Web client session
Better space management in web client
We have improved the navigation bar to provide more spaces to the tab list. We use an icon for the logout instead of a longer text. Now the favorites menu is a drop down of the global search. The toggle menu and Tryton brand are merged. Also it is now possible to toggle the menu for any size of the screen.
Open Many2One and Reference in new web client tab
It is now possible to open the target record in a new tab instead of a popup by pressing the
CTRL key when clicking on the “open” button. This gives access to the actions, relates and reports for this record like the right-click on desktop client does.
Removal of single windows executable
Since we have the web client sao, the need of a Windows executable without installation is very low. More over it required administration rights to be run. So we have decided to stop publishing it in future versions.
Uninstall previous version
On windows, the installer required to uninstall previous version before allowing to install a new one. In order to simplify the process, the installer ask to uninstall the previous version of the same series. In silent mode, this is done automatically without any required intervention of the user which ease automatic deployment.
The export CSV window has been improved by moving the predefined exports under the buttons that manage them. This way the view is easier to understand and the predefined list is not the default focused widget (which created inconsistent selection state).
Display current date on document
Draft documents, that are sent to customer, have not yet a date. For example a sale quotation does not have the sale date filled but the document should have at least the date when it was printed to define when starts the validity of the quotation.
So we changed the templates to print the current date if no date is yet filled.
Changes for the developer
Add sql_cast on Field
The new method
Field.sql_cast(expression) provides the database specific cast of the field values in SQL expressions.
Recursive common table expression for child_of/parent_of operators
For the evaluation of the child_of and parent_of domain operator, we used recursive ORM loops (or Modified Preorder Tree Traversal when available).
Now all supported databases support the recursive common table expression (CTE), so we could use it as default implementation.
Regarding performance recursive CTE is not better than MPTT but still avoid many round-trip compared to the recursive ORM loop.
We added a new Mixin as core feature. It provides all the needed features to manage record names in a tree structure and to check against loops. All the modules having such design have been updated to benefit from this generic implementation that is fully tested.
Limit database per host name
The Tryton server works on multiple database names (one way to support multi-company). But in shared environment, the list of database names can be very large and can leak information. For that, we added a new feature which allows to filter the list of database names per host name.
Default language in report
Until now, almost all reports were using English as fallback language because the call to
set_lang required a language code and it was easier to hard-code ‘en’ than retrieving the default language of the database.
set_lang method allow as argument
None or an instance of
ir.lang. When the value is
None, it uses the default language of the database. This is a more consistent behavior with the rest of the application. We have updated all the reports to use this new feature.
Extending depends on methods
The depends on methods was limited to only
on_change_with methods. But it showed some limitations when trying the share common code between different
on_change/_with methods. So we extended and generalized the behavior. Now we can define dependencies on any methods and use the
@fields.depends decorator on any method.