# Tryton Release 7.8

**URL:** https://discuss.tryton.org/t/tryton-release-7-8/9015
**Category:** News
**Created:** [December 16, 2025, 7:00am UTC](https://discuss.tryton.org/t/tryton-release-7-8/9015 "2025-12-16T07:00:20Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [December 16, 2025, 7:00am UTC](https://discuss.tryton.org/t/tryton-release-7-8/9015/1 "2025-12-16T07:00:20Z")

</div>

![Free Two women planning social media marketing strategy with a laptop and smartphone.](https://discuss-cdn.tryton.org/uploads/default/original/2X/4/45bc6efea797666f4452b9e2413ed18118985d93.jpeg "Credit: Pexels by Arina Krasnikova")

We are proud to announce the 7.8 release of [Tryton](https://www.tryton.org/).  
This release provides many bug fixes, performance improvements and some fine tuning.  
You can give it a [try on the demo server](https://www.tryton.org/demo), [use the docker image](https://hub.docker.com/r/tryton/tryton/) or [download it here](https://www.tryton.org/download).  
As usual [upgrading from previous series](https://docs.tryton.org/7.8/server/topics/setup_database.html#update-a-database) is fully supported.

Here is a list of the most noticeable changes:

## Changes for the User

### Client

We added now a drop-down menu to the client containing the user’s notifications. Now when a user clicks on a notification, it is marked as _read_ for this user.  
Also we implemented an _unread counter_ in the client and raise a user notification pop-up when a new notification is sent by the server.

Now users can subscribe to a chat of documents by toggling the notification _bell-icon_.  
The chat feature has been activated to many documents like sales, purchases and invoices.

 ![Conversation between Jim and Dwight on a sale order](https://discuss-cdn.tryton.org/uploads/default/original/2X/7/76b741587c1f19d7b634d07c2b5772eda8f358b9.png)

Now we display the buttons that are executed on a selection of records at the bottom of lists.

 ![List of draft payments with a submit button](https://discuss-cdn.tryton.org/uploads/default/original/2X/2/2178ba0f4a13975aa5e52c0706b889c81bb2f8bc.png)

We now implemented an easier way to search for empty relation fields:  
The query `Warehouse: =` will now return records without a warehouse instead of the former result of records with _warehouses having empty names_. And the former result can be searched by the following query: `"Warehouse.Record Name": =`.

Now we interchanged the _internal ID_ by the _record name_ when exporting `Many2One` and `Reference` fields to CSV. And the export of `One2Many` and `Many2Many` fields is using a list of record names.

We also made it possible to import `One2Many` field content by using a list of names (like for the `Many2Many`).

#### Web

We made the keyboard shortcuts now also working on modals.

### Server

On scheduled tasks we now also implemented user notifications.  
Each user can now subscribe to be notified by scheduled tasks which generates notifications. Notifications will appear in the client drop-down.

### Accounting

On supplier invoice we now made it possible to set a payment reference and to validate it. Per default the _Creditor Reference_ is supported. And on customer invoices Tryton generates a payment reference automatically. It is using the _Creditor Reference_ format by default, and the _structured communication_ for Belgian customers. The payment reference can be validated for defined formats like the “Creditor Reference”. And it can be used in payment rules.

 ![Customer invoice with payment reference](https://discuss-cdn.tryton.org/uploads/default/original/2X/a/a9aeb827e2aec239f81e1fb176da2964450fe91c.png)

Now we support the Belgian _structured communication_ on invoices, payments and statement rules. And with this the reconciliation process can be automated.

 ![Supplier invoice with structured communication](https://discuss-cdn.tryton.org/uploads/default/original/2X/1/1be18d40b86e701453f35f685907bd6e9d72dd59.png)

We now implemented when succeeding a group of payments, Tryton now will ask for the _clearing date_ instead of just using _today_.

Now we store the address of the party in the SEPA mandate instead of using just the first party address.

We now added a button on the accounting category to add or remove multiple products easily.

### Customs

Now we support _customs agents_. They define a party to whom the company is delegating the customs between two countries.

### Incoterm

We now added also the old version of _Incoterms 2000_ because some companies and services are still using it.

Now we allow the modification of the incoterms on the customer shipment as long as it has not yet been _shipped_.

### Product

We now make the list of variants for a product sortable. This is useful for e-commerce if you want to put a specific variant in front.

Now it is possible to set a different _list price_ and _gross price_ per variant without the need for a custom module.

We now made the _volume_ and _weight_ usable in price list formulas. This is useful to include taxes based on such criteria.

### Production

Now we made it possible to define phantom bill-of-materials (BOM) to group common inputs or outputs for different BOMs. When used in a production, the phantom BOM is replaced by its corresponding materials.

We now made it possible to define a production as a disassembly. In this case the calculation from the BOM is inverted.

### Purchasing

Now we restrict the run of the _create purchase wizard_ from purchase requests which are already _purchased_.

And also we now restrict to run the create quotation wizard on purchase requests when it is no longer possible to create them.

It is now possible to create a new quotation for a purchase request which already has received one.

Now we made the client to open quotations that have been created by the wizard.

We fine-tuned the supply system: When no supplier can supply on time, the system will now choose the _fastest supplier_.

### Sales

Now we made it possible to encode refunding payments on the sale order.

We allow now to _group invoices_ created for a _sale rental_ with the invoices created for _sale orders_.

In the _sale subscription lines_ we now implemented a _summary_ column similar to sales.

### Stock

We now added two new stock reports that calculates the inventory and turnover of the stock. We find this useful to optimize and fine-tune the order points.

 ![Inventory report](https://discuss-cdn.tryton.org/uploads/default/original/2X/6/6d34f71ba73388319db3429a39df37222eebc7f9.png)

 ![Inventory turnover report](https://discuss-cdn.tryton.org/uploads/default/original/2X/f/f965c0719b939e1dfb04129037c599788eb06dc3.png)

Now we added the support for international shipping to the shipping services: DPD, Sendcloud and UPS.

And now we made Tryton to generate a default shipping description based on the custom categories of the shipped goods (with a fallback to “General Merchandise” for UPS). This is useful for international shipping.

We now implemented an _un-split_ functionality to correct erroneous _split_ moves.

Now we allow to _cancel_ a drop-shipment in state _done_ similar to the other shipment types.

### Web Shop

We now define the _default Incoterm_ per web shop to set on the _sale orders_.

Now we added a status URL to the sales coming from a web shop.

We now added the URL to each product that is published in a web shop.

Now we added a button on _sale_ from the _web shop_ to force an update from the web shop.

We did many improvements to extend our Shopify support:

- Support the credit refunds
- Support of taxes from the shipping product
- Add an option to notify the customers about fulfilment
- Add a set of rules to select the carrier
- Support of product of type “kit”
- Set the “compare-at” price using the non-sale price
- Set the language of the customer to the party
- Add admin URL to each record with a Shopify identifier

## New Modules

### EDocument Peppol

The [_EDocument Peppol Module_](https://docs.tryton.org/7.8/modules-edocument-peppol/) provides the foundation for sending and receiving  
electronic documents on the [Peppol network](https://peppol.org/).

### EDocument Peppol Peppyrus

The [_EDocument Peppol Peppyrus Module_](https://docs.tryton.org/7.8/modules-edocument-peppol-peppyrus/) allows sending and receiving electronic  
documents on the [Peppol network](https://peppol.org/) thanks to the free [Peppyrus service](https://www.peppyrus.be/).

### EDocument UBL

The [_EDocument UBL Module_](https://docs.tryton.org/7.8/modules-edocument-ubl/) adds electronic documents from [UBL](https://docs.oasis-open.org/ubl/os-UBL-2.4/UBL-2.4.html).

### Sale Rental

The [_Sale Rental Module_](https://docs.tryton.org/7.8/modules-sale-rental/) manages rental order.

### Sale Rental Progress Invoice

The [_Sale Rental Progress Invoice Module_](https://docs.tryton.org/7.8/modules-sale-rental-progress-invoice/) allows creating progress invoices for  
rental orders.

### Stock Shipment Customs

The [_Stock Shipment Customs Module_](https://docs.tryton.org/7.8/modules-stock-shipment-customs/) enables the generation of commercial  
invoices for both customer and supplier return shipments.

### Stock Shipping Point

The [_Stock Shipping Point Module_](https://docs.tryton.org/7.8/modules-stock-shipping-point/) adds a shipping point to shipments.

## Changes for the System Administrator

### Server

We now made the server stream the JSON and gzip response to reduce the memory consumption.

Now the `trytond-console` gains an option to execute a script from a file.

We now replaced the `[cron] clean_days` configuration by `[cron] log_size`. Now the storage of the logs of scheduled tasks only depends on its _size_ and no longer on its _frequency_.

Now we made the login process send the URL for the host of the bus. This way the clients do not need to rely on the browser to manage the redirection. Which wasn’t working on recent browsers, anyway.

We now made the login sessions only valid for the IP address of the client that generates it. This enforces the security against _session leak_.

Now we let the server set a `Message-Id` header in all sent emails.

### Product

We added a timestamp parameter to the URLs of product images. This allows to force a refresh of the old cached images.

### Web Shop

Now we added routes to open products, variants, customers and orders using their Shopify-ID. This can be used to customize the admin UI to add a direct link to Tryton.

## Changes for the Developer

### Server

In this release we introduce notifications. Their messages are sent to the user as soon as they are created via the bus. They can be linked to a set of records or an action that will be opened when the user click on it.

We made it now possible to configure a `ModelSQL` based on a `table_query` to be materialized. The configuration defines the interval at which the data must be refreshed and a wizard lets the user force a refresh.  
This is useful to optimize some queries for which the data does not need to be exactly fresh but that could benefit from some indexes.

Now we register the _models, wizards_ and _reports_ in the `tryton.cfg` module file. This reduces the memory consumption of the server. It does no longer need to import all the installed modules but only the activated modules.  
_This is also a first step to [support typing](https://discuss.tryton.org/t/tryton-language-server/6837/6) with the Tryton modular design._

We now added the attribute `multiple` to the `<button>` on `tree` view. When set, the button is shown at the bottom of the view.

Now we implemented the declaration of _read-only_`Wizards`. Such wizards use a read-only transaction for the execution and because of this _write access_ on the records is not needed.

We now store only immutable structures in the `MemoryCache`. This prevents the alteration of cached data.

Now we added a new method to the `Database` to clear the cached properties of the database. This is useful when writing tests that alter those properties.

We now use the SQL `FILTER` syntax for aggregate functions.

Now we use the SQL `EXISTS` operator for searching `Many2One` fields with the `where` domain operator.

We introduced now the `trytond.model.sequence_reorder` method to update the sequence field according to the current order of a record list.

Now we refactored the `trytond.config` to add cache. It is no more needed to retrieve the configuration as a global variable to avoid performance degradation.

We removed the `has_window_functions` function from the `Database`, because the feature is supported by all the supported databases.

Now we added to the `trytond.tools` `pair` and `unpair` methods which are equivalent implementation in Python of the `sql_pairing`.

### Proteus

We now implemented the support of [total ordering](https://docs.python.org/3/library/functools.html#functools.total_ordering) in Proteus `Model`.

### Marketing

We now set the `One-Click` header on the marketing emails to let the receivers unsubscribe easily.

### Sales

Now we renamed the _advance payment conditions_ into _lines_ for more coherence.

### Web Shop

We now updated the Shopify module to use the GraphQL API because their REST-API is now deprecated.

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [December 15, 2025, 11:49pm UTC](https://discuss.tryton.org/t/tryton-release-7-8/9015/2 "2025-12-15T23:49:35Z")

</div>



---

<div class="post-metadata">

### Author: ![sim6](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/sim6/32/3756_2.png) [@sim6](https://discuss.tryton.org/u/sim6)
#### Post date: [December 18, 2025, 11:58am UTC](https://discuss.tryton.org/t/tryton-release-7-8/9015/3 "2025-12-18T11:58:03Z")

</div>

Thanks!

> [@ced](#):
>
> As usual [upgrading from previous series](https://docs.tryton.org/7.8/server/topics/setup_database.html#update-a-database) is fully supported.

The link is broken.

---

<div class="post-metadata">

### Author: ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)
#### Post date: [December 18, 2025, 11:58am UTC](https://discuss.tryton.org/t/tryton-release-7-8/9015/4 "2025-12-18T11:58:31Z")

</div>

The documentation was not yet fully generated. It is now.

---

<div class="post-metadata">

### Author: ![system](https://discuss-cdn.tryton.org/uploads/default/original/1X/c6f8ec0a40525cdcd50058c734283450a4b3d38b.png) [@system](https://discuss.tryton.org/u/system)
#### Post date: [January 15, 2026, 7:00am UTC](https://discuss.tryton.org/t/tryton-release-7-8/9015/5 "2026-01-15T07:00:54Z")

</div>

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