Tryton Release 6.4

We are proud to announce the 6.4 release of Tryton.
This release provides many bug fixes, performance improvements and some fine tuning. What is also significant is the addition of 9 new modules.
You can give it a try on the demo server, use the docker image or download it here.
As usual migration from previous series is fully supported. One optional manual operations could be needed, see Migration from 6.2 to 6.4.

Here is a list of the most noticeable changes:

Changes for the User

It is now possible for modules to display a notification message from the server while the user is filling in a form. This is already used by the sale_stock_quantity module to display a message when user selects a product which has a forecast quantity that is not enough for the order.

Users can now choose which optional columns are displayed on list and tree views. All modules have been reviewed to make non-essential columns optional and thus provide a lean interface by default.

Some views can now be used to edit but not create new records. This can be used, for example, to setup an editable list that allows the data to be modified, but creating a new record will always use the form view.

The CSV import now skips empty rows inside One2Many fields. It is now possible to import many One2Many fields in the same file but with different lengths.

The CSV import error messages have been improved to include the model, field and column. This makes it much easier to find and solve problems with the CSV data.

  • Display the number of selected records
  • Humanize the count result
  • Order not sorted Selection by index definition
  • Use expire delay instead of UTC datetime in reset password email

Web Client

Reference fields can now be opened from the list and tree views like Many2One fields. They are rendered as a link which opens a new tab using the form of the target model.

Desktop Client

CSV exports encoded in UTF-8 now include, by default, the Byte Order Mark to increase compatibility with other systems.

The multi-selection widget now uses the same default selection behavior as other lists. This solves inconsistency in the behavior.


The reconciliation wizard now has an option to automatically reconcile the default suggestions. This speeds up the process for accounting with a lot of entries when the system is well configured.

Similar to the debit type, we now have also an optional credit type on accounts. Of course an accountant can only have one optional debit or credit type.

The general ledger now displays, by default, debit/credit columns only when there are actually lines in the account for the period. And it also display the number of lines.

We now use the invoice date (instead of the accounting date) to enforce the sequence order for customer invoices. This is more flexible and is still consistent with most country’s rules.

When interactively validating a supplier invoice with the same reference as an existing one, Tryton raises a warning as the user may be entering the same invoice twice.

Lines in a payable or receivable account can now only be added to a payment if they have a maturity date. This avoids creating payments for purely accounting lines.

The receivable payments can now be processed without needing to be approved first, just submitted. This simplifies the workflow for receiving payments like checks where there is no need for a second approval.
It is also now possible to edit the amount of a payment that is in a processing state. This is because sometimes a different amount is read from a check compared to the amount read by the bank.

We no longer create dunnings for lines with a pending payment.

It is no longer possible to select reconciled payments or groups when entering a statement. This simplifies the selection task for the user, and for the rare case where they still need to select a reconciled payment, they can still unreconcile them before selection.

The clearing line of a payment is now automatically reconciled with all the statement lines linked to it.

The user can now choose the allocation method to apply to the shipment cost.

  • Prevent creating fiscal year before closed one
  • Prevent changing the type of journal with posted moves
  • Mute reconciled payable/receivable lines
  • Add delegated amount on move lines
  • Handle errors in move template expression
  • Rename split lines into reschedule lines
  • Prevent delete tax identifier used on invoice
  • Add shipments reference on invoice and invoice line
  • Add approving employee on refunds
  • Store sepa message id and sepa payment info id
  • Add Stripe setup intent expire delay
  • Create default statement journal
  • Remove 61 tax code - no longer used in AEAT303
  • Include 120, 122, 123 and 124 new keys in model 303 format


Tryton can now fill in or create the related bank from an IBAN.

When searching for a bank name, Tryton also searches on the BIC.


The country name on a printed address is always shown in English in order to follow the international standard.

The SIREN and SIRET codes are now managed as identifiers on the party.

A party identifier can now be linked to one of the addresses of the party. The SIRET number uses this new feature.

The “autonomous city” is now allowed as subdivision for Spain.

All the lines of the street are now used as part of the record name of an address.


It is now forbidden to decrease the number of digits of a unit of measure. This prevents invalidating existing quantities linked to the unit.

We now warn users who try to deactivate a product that still has stock.


The stock move form now also shows, where applicable, the production it is linked to.


It is now possible to define a default currency for each supplier.


It is now possible to define a default currency for each customer.

The origin name of an invoice line for advance payment is now filled in with the advance payment condition name.
The advance payments are now recalled with a negative quantity instead of a negative price.

The opportunities reports now use real date fields to display the month instead of two fields - year and month. This improve the search possibilities.

Sales made by POS are now included in the general sales reports.

When registering cash change given using the POS, we use a negative debit or credit in the accounts. This prevents artificially increasing the totals.

A notification is now displayed directly to the user when entering in a sale of goods whose forecast quantity is not high enough to cover the sale.


Tryton now also recalculates the cost price on the moves of drop shipments.

The assignation process now uses the lot number as criteria if it is populated.

Upward and downward traces have been added to stock lots to improve lot traceability.

It is now possible to select the UPS notification service.

The forecasts are now applied to all the stock supplies instead of only the purchase requests.

  • Add location or warehouse in shipment tree view
  • Add warehouses selection to supply stock wizard
  • Allow package type to be deactivated
  • Add volume dimensions to package
  • Use configured unit for measurements
  • Add packages weight
  • Filter out moves without quantity from package
  • Prevent early planning of production missing moves
  • Compute early date for partial quantity of stock move
  • Update early date base on internal incoming requests

Web Shop

Tryton now supports editing orders from Shopify.

New Modules

Account Spanish SII

The Account Spanish SII Module allows sending invoices to the SII portal. This is legal requirement for some Spanish Companies.

Account Invoice Watermark

The Account Invoice Watermark Module adds a draft or paid watermark to the printed invoice.

Account Receivable Rule

The Account Receivable Rule Module defines rules to reconcile receivables between accounts.

Account Stock Shipment Cost Weight

The Account Stock Shipment Cost Weight Module adds “By Weight” as an allocation method for shipment costs.

Account Tax Non-Deductible

The Account Tax Non-Deductible Module allows the definition of non-deductible taxes and adds reports for them.

Purchase Product Quantity

The Purchase Product Quantity Module permits enforcing minimum and rounded quantities to be purchased per supplier from purchase requests.

Sale Invoice Date

The Sale Invoice Date Module fills in the invoice date for invoices created by sales.

Sale Product Quantity

The Sale Product Quantity Module permits enforcing minimum and rounded quantities to be sold per product.

Stock Shipment Cost Weight"

The Stock Shipment Cost Weight Module adds “By Weight” as an allocation method for shipment costs on the carrier.

Changes for the System Administrator

The CORS configuration is now also applied to the root path.

Tryton now automatically retries sending emails if there is a temporary failure status.

We removed the password validation based on entropy. It was not a good measurement for robustness of password.

The login methods receive the options ip_address and device_cookie.


The script to load postal codes now uses the Tryton CDN for more reliability.

We now support pycountry 22.1.10.

Changes for the Developer

We now use the unittest discover method as a replacement for the deprecated test command from setuptools.

The documentation now contains a tutorial on how to create a Tryton module.

The models now have an on_change_notify method which is used to display messages on the client while user is filling in a record.

The ModelStorage has now a validate_fields method which permits validation to occur only when specific fields have been modified. This is useful if the validation is expensive. All the modules have been reviewed to take advantage of this new feature.

The depends on the Field are now python sets. It is also no longer necessary to define depends for the states, domain and digits expression. Tryton calculates them automatically. However, it is still needed for the context if you want to be sure that it will always be set.

We include in the view only the depends fields that are needed for that type of view (editable or not).

We prevent creating or deleting singletons. The corresponding actions are disabled in the clients.

The Reference fields use a dictionary for domain and search_order. The keys are the name of the target model.

It is possible to define a field on a tree view as optional. The user will then have the choice of whether to display it or not.

The creatable attribute on tree and form views allows defining whether the view can be used to create new records or not. If not the client will switch to another view from which records can be created.

The local cache of instances created by Function fields are now populated with the values that have already been read. This speed up the calculation of these fields.

The value of Function fields are now cached during the transaction if it is readonly.

We use the JSONB column type to store Dict fields on PostgreSQL backend.

  • Test all XML view and SVG icon files are used
  • Add support for Python 3.10
  • Remove support for Python 3.6
  • Drop support for PyPy and psycopg2cffi
  • Remove support for pysqlite2
  • Add limit to search_count
  • Limit board action domain to active id and ids
  • Call view_get for board view
  • Apply view inheritance to board
  • Apply view inheritance to all matching elements
  • Set view_id in the context when calling view_attributes
  • Make warning check re-entrant
  • Deduplicate entries in domain inversion’s simplify
  • Allow button access to be deactivated
  • Always return tuple for MultiSelection
  • Use default selectors instead of select
  • Add batch option to push queue tasks
  • Support ref value for reference field
  • Enforce ref model in XML data
  • Support limit and offset to ModelSQL count search and search_count
  • Add RPC view_get method to View
  • Manage DatabaseDataError in ModelSQL
  • Use RENAME and DROP COLUMN with SQLite backend
  • Support window functions with SQLite backend
  • Use datetime for user role planning

Web Client

We now use ECMAScript version 6.

Desktop Client

We added an option to define the logging output location.


A date must always be set in order to calculate taxes.

We enforce the same type for the children of an account with a type set.

A unique Reference field is now used to on the statement line instead of multiple Many2One fields.

  • Add amount_line_paid property on payments
  • Rename generate_message button to sepa_generate_message
  • Store allocation of landed cost and shipment cost factors


We enforce the uniqueness of the IBAN and permit only one per bank account.

  • Remove starting wildcard when searching account number


The script to load subdivisions no longer fails for unknown subdivision types.

Web Shop

A route has been added to support the Shopify webhook for orders. This allows quicker order synchronization.

We removed the API backoff time and now support request retries using the Shopify Retry-After header.

We modify only the metafields managed by Tryton.


A post was split to a new topic: Example of Reference field domain

I am excited to see the great improvements in the Tryton 6.4. I was quite impressed with what I saw in this release, especially because it has been out for a while now and many of us are using it on a daily basis. My love for Tryton has significantly increased.


This topic was automatically closed after 30 days. New replies are no longer allowed.