Newsletter September 2018


(Cédric Krier) #1

This is the last month before the long term release 5.0. So many ongoing development has finally landed in Tryton.

Changes for the user

Style default button

The default buttons on desktop client have the style of suggested action.
Tryton login window

Use of message dialog

All the message dialog of the desktop client uses now the GTK MessageDialog. This unify the behavior with other GTK application.

Better dialog size

Instead of using the same size of the parent window which confused some users. Instead we let GTK compute the natural size of the dialog depending of the content. But this requires to deactivate the scrolled window. So wizard that displays full form should be run in tab instead of dialog.

New icons

We replaced the tango icons for which we missed many for business modules by a subset of the Material Icons. We also took the opportunity to curate and rationalize the list of default icons.


New party name on address

Sometimes it is needed to store on a party an address that is not the real address of the party. So his name can not be used as the name on the mailbox. So we added an optional “Party Name” on the address which is used if filled to format the address instead of the name of the linked party and the last one will be used as the attention name.

Fall-back email for dunning

When an email must be sent for dunning, the party may not have an email configured. In this case, we can now configure a fall-back address to which the email will be sent. It may be the address of the secretary for example which will be forward the dunning to the party with the proper mechanism.
The type of email can be also configured at the dunning level. In such way that they are sent to the invoice email.

Asset subscribed

The sale_subscription_asset module extends the Subscription to store which assets are rent.
The user can configure a subscription service to require an asset by defining which the lot are available. Tryton display also the lot currently available for each service.
On subscription line for such service, it is possible to reserve an asset by setting its lot number. The lot becomes required to run the subscription.
Tryton ensure that a lot can be rent only once at the same time.

Apply factor in search bar

Some numerical field can have a factor for the display. The common usage percentage field which are stored as number between 0 and 1 but are displayed with a factor of 100. For now, searching on such field is performed on value with the factor applied. This provides a better experience for the user.

Right to left support on web client

The web client supports now, like the desktop, the right to left language.

Final state for dunning

When the dunning reach the last level of the procedure, its state is changed to final instead of disappearing in the list of dunning done. This allow to still keep track of those dunning that requires manual procedure.

Support chart of account evolution

We replaced the simple active/inactive checkbox by date period on accounts and tax codes.
It is not allowed to create a move using an account at a date outside the period.
The accounting reports do not show out of period accounts or tax codes if the report is run for a date out of the period.
More over, when an account has an end date defined, we can configure a replacement account to use. in such case, operational document like sale or purchase will use the replacement account automatically. This allows to avoid to update all referential data that were still referring to the old account.

Interface with Chorus Pro

A sets of new modules has been added which allow to send invoice to Chorus Pro. Chorus Pro is the mandatory platform to send electronic invoices for French administration.
Currently the format supported is the Cross-Industry-Invoice (aka 16B-CII) from UN/CEFACT.

Removal of default accounts on journal

We have found that this design was not very optimal because it required for some case to create more journal than needed. So we replace them by write-off methods and payment methods. And for the statement, the journal statement has now an account field.

Spanish tax report

Tryton generates automatically the files for tax reporting that can be imported directly on the tax authority website.

Icons in input

We simplified the web design for the input that has buttons. The input has now a primary and/or secondary icons inside its border. This unclutter the interface and integrate better with bootstrap theme following material design.

Attachment drop down

We reworked the attachment action to be a drop down instead of opening a pop-up. This is faster to open the attachments and to add new one. It is still possible to open the pop-up window with the management entry to change or delete them.
Attachment drop down

Changes for the developer

Remove buttons

Now the buttons which depends on fields for which the user has no access, are removed automatically from the view.

Support of timestamp field on client

Until now, such field was using the default field and had no widget associated. But the default field has an empty string as default value which is not valid for a Timestamp. So now we manage Timestamp field as a DateTime field but with the representation of microseconds.

Use sqlite3.backup

Since Python 3.7, the module sqlite3 has a backup method. This allows to remove the dependency on sqlitebck to use the database cache feature when running tests.

Clean migration < 3.0

We removed the migration code from version older than 3.0.
If there are still users of such old version. They must upgrade as soon as possible to a version prior to 5.0 to be able to migrate later. The future rules will be to clean migration for 2 major releases in the past. This force to migrate at least once every 10 years.

Add Timedelta to PYSON

The PYSON missed an object to represent a timedelta value. As such value could be used in a domain on a field of the same time, we should support it.

Remove unique constraint on attachment

As it was no more useful to have a unique constraint on attachment since Removal of *DAV, we removed the constraint.

Use uWSGI in docker images

The images published by Tryton from series 4.6 are using now uWSGI as default server. This replaces the default server from Werzeug which is not considered production ready.

Use UUID on timesheet lines

In order to prevent Chronos (the web extension for timesheet) to create duplicate lines on bad network response time, we added a unique UUID field on the lines.

Use passlib to check password

We replaced custom password check by passlib, a generic library for password hashing. A configuration file for passlib can be set otherwise the default schemes are bcrypt (if installed) or pbkdf2_sha512. When the configuration change, the passwords are updated to the new scheme on the next log-in of the user.
The migration from older version is done automatically when the user log-in the first time.

New session management

The Double session timeout has been implemented. So the session expired now after 30 days but some operations like posting an invoice or approve a payment requires a fresh session. A fresh session is a session which has no request interruption longer than 5 minutes since its creation.
When a user change his password, all his active sessions are invalidated. This prevent any attacker who had stolen the password to keep a session active after the password change.

Fully configure Tryton with environment variables

In order to simplify the configuration of the docker image, Tryton will parse environment variables that follows the syntax TRYTOND_<SECTION>__<NAME>. Such values are set before the load of configuration files.

Load custom CSS and Javascript

The web client will try to load custom.css and custom.js by default. This allow to customize it by just serving those files.

Real-time notification

We added a BUS to Tryton. It allows the server to send message to the client. It is using long polling as push mechanism.
The first usage is the possibility to send notification which are short message with a priority. The web client display them by using the Web Notification and the desktop client using the GNotification which unfortunately is not yet implemented on Windows nor MacOS.

Improved ModelStorage.copy

The copy method has been extended to have more flexibility on the copy result.
The default dictionary accept a callable as value. It will be called for each copied record with a dictionary of the copied values. It must return the new value for the new record.
Also the default dictionary support the dotted notation for the Many2One keys. In such case, the value will be used as default dictionary to copy the pointed record.