The Tryton team wishes you a happy new year.
Here are the changes that the team has already prepared for the next version.

Changes for the User

We store the factors used to allocate landed costs. They will be used if the landed cost is cancelled instead of recalculating them (which can result in different factors over time).

When recalling advance payments we now invoice a negative quantity instead of a negative price.

The attention name is now part of the default address format.

Changes for the System Administrator

It is now possible to set combined authentication method options which can be used to make some of the authentication methods optional.
In a base installation of Tryton the options are for connections from an IP address in a known network and for client connections from a known device.
This can be used, for example, to enforce the second factor, such as SMS authentication, only for external IPs.

Changes for the Developer

We’ve added a simple logger to the web client which provides similar API to the python logger. The log level can be changed from the browser console by running: Sao.Logger.set_level(Sao.Logging.INFO);

We now enforce the import order in the .py files using isort (see our Python style guidelines).

The tests, run with tox, now report their coverage.

It is now possible with the creatable attribute to specify if a view can be used to create new record. The client will automatically switch to another view if the user tries to create a record from a view where this is false, even if the view is editable.

We’ve added support for Python 3.10 and removed Python 3.6 following to our policy to support only upstream supported versions.

The Shopify module will delete only the metafields that are managed by Tryton.

We’ve replaced the balanced move check Python code with an SQL query. This speeds up the process a lot especially for moves that have lots of lines.