Newsletter January 2025

During the last month we continued to fix bugs, improve the behaviour of things, and resolve performance issues - building on the other changes since our last release. We also added some new features which you can find out more about in this newsletter.

For an in depth overview of Tryton development you can take a look at our issue tracker and also see the issues and merge requests filtered by label.

Changes for the User

Sales, Purchases and Projects

It is common, for marketing purposes, to show the sale amount before the promotion and also the amount once the promotion has been applied. So we’ve now added the original amounts before the promotion.

We’ve strengthened the process of confirming sales with a payment and added a scheduled task to confirm sales based on payments.

Accounting, Invoicing and Payments

We now use the payment-element for Stripe checkouts.

To help users decide if they really want to overrule a credit limit, we now show the amount the credit limit has been exceeded by, the dunning level, the amount and the account code.

We’ve now added reporting with latest date and amount per statement journal.

The move description and description on the general ledger line have been merged together. As the move origin is a fall-back of the line origin, the description is now calculated as the move description.

Stock, Production and Shipments

Most of the time users are only interested by the storage, view and warehouse location types, so we filter out the other location types by default now.

User Interface

We’ve now added the relation to a foreign model for relational fields listed in Administration → Models → Models.

The search on model.fields.Char and model.fields.Text in the client will give different results when using Text: = or Text: ="" depending on whether the text is NULL or an empty string. So we now convert NULL values for Char and Text fields to an empty string when searching for Char or Text field values.

We now display the link symbol when hovering over a many2one or reference column in tree views.

We now prevent iOS input zooming in Sao.

The icons that we use are now more explicit:

System Data and Configuration

We updated the country subdivision types:

More
  • European collectivity
  • Federal entity
  • Overseas departmental collectivity
  • Overseas unique territorial collectivity
  • State city

We now support searching on subdivision codes when searching a pattern.

We’ve merged the Colombian Business Tax Number (co_rut) tax identifier into the Colombian Identity Code (co_nit).

We’ve also updated the tax identifiers:

More
  • Brazillian Company Identifier
  • Canadian Business Number
  • Croatian Identification Number

New Documentation

The contents of the Migration Topic have been moved into the Migration section of the Tryton documentation.

New Releases

We released bug fixes for the currently maintained long term support series
7.0 and 6.0, and for the penultimate series 7.4 and 7.2.

Security

We enforce the record rules for resources now like we did with model access rules.

We now also use the party access rules for address, contact mechanism and identifier.

Changes for the System Administrator

We now log the request-duration at the wsgi-app-level instead of the with_pool level to get more accurate timings.

Changes for Implementers and Developers

We now test that the on_change_with getter has the same name as the Function-field using it.

Updating XML-records which could be modified manually by the users is a complex task. In general the process works automatically, but sometimes the user has to manually check and decide whether to synchronize the model data from the menu entry Administration → Models → Data.
As we no longer import data like countries or currencies from the XML files, the whole mechanism is no longer necessary.
So we now, in general, forbid the manual modification of XML introduced data and always synchronise the XML-data with the database, even if it was modified. The only exception to this is if the noupdate flag is set on the XML data, in this case we just apply the XML-data once when the module is activated and leave the maintenance of that data to the users.

We now propagate notifications to the parent group on screens without an info bar, like a One2Many with an editable list.

Also we now call on_change_notify for fields updated by on_change and on_change_with methods.

We now support object-instances in addition to object-ids as default values.

We’ve added the metadata columns, by default, to ModelSQL based on table queries:

More
  • create_uid,
  • create_date,
  • write_uid and
  • write_date

The data is now included as part of the ir.model.Report header key.

We now test that ids are of the right type when instantiating ModelStorage.

We now validate integer digits when they are not None.

We support EXTRACT from INTERVAL in the SQLite backend to be able to extract epoch durations.

Both msg_gettext and msg_ngettext have been added to the Report context.

Authors: @dave @pokoli @udono

2 Likes