We are proud to announce the 7.0 Long Term Support release of Tryton which will remain supported until November 2028. As usual migration from previous series is fully supported. The Migration Category lists any manual operations that may be required during the migration process.
While developing the 7.0 release we fixed various bugs and incorrect behaviour, sped-up performance issues and added many new features some in form of new modules.
During this time we also released bug fixes for the maintained series - 5.0, 6.0, 6.6 and 6.8. But now with the 7.0 release, we’ll be merging the last of the changes to the 6.6 series and closing it afterwards. Then series 6.6 will no longer be maintained by the Tryton project.
Changes for the User
New Modules
Our modules collection is growing up to 204 functional modules:- The Document Incoming Module Series collects and processes incoming documents like invoices. It is also able to utilize OCR services like typeless.
- The Inbound Email Module defines rules to apply to inbound emails.
- The Product Price List Cache Module can be used to pre-compute the prices for each product and price list. This improves the performance of price lists with a large number of lines.
Video: Screencast of the brand new document incoming module series.
Sales, Purchase and Project
Tryton now warns the user when receiving more quantity of a product than ordered. This should avoid mistakes like putting or forgetting the decimal delimiter or typos. The same applies to receiving returned products sold.
Now the price is only required on purchase confirmation. This way users can send requests for quotation without prices and when receiving a quotation, they edit the draft purchase to set the received prices.
With the use of the account_stock_landed_cost
module Tryton now uses the price of the last purchase from the same supplier as product price. With this module activated, the cost price of a product is no longer the best guess for the price of a new purchase. Also the cost price of a product is not really relevant as price for new purchases, because it may include extra costs like the landed cost.
For purchases and sales we’ve added actions to trigger the creation of draft documents to make following-up manual invoice and shipment methods easier for the users. As the user may need to manually create those documents anyway, we provide an action that creates those documents as if the method On Order had been used.
The sale and purchase amendment fields are now displayed when an order transitions into the processing state, to allow the creation of amendments directly.
Depending on the complexity of an order, users sometimes wanted to have a different delay for the state change to processing for sales and purchases, which is now possible.
Read More…
On purchase requests we’ve added new domains to filter for quoted and received records.
Tryton now uses the shipping date instead of sale date to check the stock quantities used by the planned quantity and stock forecast.
In the stock_package* modules we renamed the code field to number.
In the sale product view we now show the sum of product quantities of the stock in all selected warehouses.
The invoiced amount of a project work is calculated with the quantity from timesheet lines or the invoiced progress of the involved works. It is now required, that the quantity of the invoice line is equal to the quantity on the project works and it is no longer possible to change the quantity of an invoiced project.
Accounting, Invoicing and Payment
On account moves Tryton now displays the description of the origin-field when no other description is filled. Usually we let the user relay on the origin record name to understand the ledger. But it is not always enough, the origin may have a description content which could be useful for the accountant.
Tryton now warns when a move line with payment is going to be cancelled, grouped, rescheduled or delegated. And vice versa now Tryton warns when a payment with reconciled line is going to be submitted, approved or proceeded.
Now we allow an account admin user to print a posted or paid invoice to refresh data without using the cached invoice document. This way, some data (like layout, addresses, etc.) can be updated on the invoice report. The previous printed report revisions are stored in an invoice cache.
The account moves generated from currency exchange values are now automatically posted by the system. This prevents the need to handle forgotten unposted currency exchange moves and avoids having to deal with them manually.
To correctly consider payable and receivable lines, we also post cancelled, grouped, rescheduled and delegated accounting moves when an origin accounting move is posted.
The supplier invoice’s reference can now be changed in non draft states.
When deferring an invoice with an analytic setup the analytic account is now also deferred.
Tryton now asks for a date when creating an account move from a template.
We now show the reconciliation lines of an invoice that is in a cancelled state, because when it is refunded with a credit note, it is cancelled instead of paid.
As it is very useful to get the total of waiting balances, we added the sum to the aged balance terms and balance.
In the project_invoice
module we now show the invoice line field on the time sheet line form. This is useful to get an understanding of the invoiced hours. The field is not shown if the user doesn’t have read access to invoice lines.
To have a clearer picture of the debts of a company, we’ve added receivables and payables to it.
Invoice lines now have pay, block and unblock payment buttons to be able to directly create payments from within the invoice form.
Read More…
Now Tryton sets the employee who validates or posts an invoice.
In Tryton you are now able to collect and process checks using the account_payment
module.
Tryton now includes the new PISTE API for france, which is based on Oauth 2.0.
A selection widget is now used for the journal field. This prevents the creation of journals directly from documents and makes it simpler for users to select them.
For consistency Tryton now no longer considers the party field when searching in the invoice record name.
Stock, Production, Quality and Shipment
We defined a new menu entry Inventory & Stock / Warehouses which opens a view to list all warehouses to get the knowledge of product quantities for selected warehouses.
The shipment state is now printed on several stock reports and warehouse country is printed on the delivery note
Now we check all quantities in shipments for products and lots.
Tryton now displays the delay for stock moves and shipments. It stores the original planned date from the sale and purchase. As moves and shipments are rescheduled by a cron task, Tryton now computes the delay with the actual planned date or the effective date. This provides a visual hint about the delay and can be used as a trigger for delay-notifications.
We now reschedule and update the planned date for late productions and allow it to be changed while running the production. This avoids generating new production requests if there is already one running.
On production works we now store the employee who set a cycle to running, done or cancelled.
We’ve updated the UPS shipping to use the new OAuth 2.0 security model for all APIs.
The existing access-key-based authorisation is now deprecated by UPS.
Read More…
You can now deactivate a quality control if it is no longer needed, if, for example, the product is discontinued.
We now store the actual product cost price on the stock move. It is used when the cost price of the move isn’t the same as the cost price of the product. The product cost price is filled in for outgoing stock moves and used to preserve the cost history.
The shipments now support locations of type view as a storage location in their warehouses.
We now display the cost of production works.
We now also allow searching for an inventory by location. This is useful when the warehouse has a lot of locations.
User Interface
Following the Google Materials Icon convention we now distinguish the icons for save and download. Because save is used to store on the server and download is used to retrieve data from the server and store it locally.
Tryton is now able to auto-complete values on demand from external sources.
Video: Screencast of the new autocomplete feature showing a party completed with a given VAT Number, only.
Now we use the grid layout instead of table-layout to implement the form-container in sao.
Now it is possible to directly copy the link from the URL-widget, without the need to open it before.
The Tryton client does no longer set automatically the value if only one record was found. As the search is fuzzy we need to ensure that the user always validates the resulting value by manually selecting it.
User applications that are created from the user’s preferences are now put directly in the validated state to improve the user experience.
We added several new identifiers in Tryton according to the stdnum
release of version 1.19:
Read More…
- Algerian Tax Number identifier
- Belgian BIS Number identifier
- Belgian National Number identifier
- Egyptian Tax Registration Number identifier
- European VAT on e-Commerce - One Stop Shop identifier
- Faroese Tax Number identifier
- Ghanaian Taxpayer Identification Number identifier
- Guinean Tax Number identifier
- Indian VAT number identifier
- Indian Voter ID identifier
- Macedonian Tax Number identifier
- Moroccan Tax Number identifier
- Pakistani Computerised National Identity Card Number identifier
- Portuguese Identity Number identifier
- Slovenian Corporate Registration Number identifier
- Slovenian Unique Master Citizen Number identifier
- Thai Memorandum of Association Number identifier
- Thai Personal Identification Number identifier
- Thai Taxpayer Identification Number identifier
- Tunisian Tax Number identifier
The search offset is now reset when the filter is changed. This is an improvement on the old behaviour because if a user moved to a later page (updating the offset), then changed the filter, it resulted in no records being shown. This was because not enough records were found to show any at that offset. With the new behaviour, the first page of the records will be always shown after the filter is updated.
It is now possible to copy selected records on the web-client. A new contextual menu item has been added to mimic the feature which is available on the desktop client using the keyboard shortcut.
All the number fields are now first sorted by length. This provides a more natural order for the most common cases where the content is just a number or a number with a prefix.
We now validate and normalize email addresses and convert them to ASCII to help avoid user input mistakes.
In CSV exports with the option selected to use locale format, we now use the local time zone for date-time fields.
Master Data and Configuration
Now Tryton displays a preview of sequence to be generated, because users may have difficulties to realize how the generated sequence will look like when they configure it.
We now allow the use of the current date as a substitution in the sequence fields prefix and suffix, formatted using strftime-format. Instead of prefixing the strftime-format code with (%)
we use an underscore (_)
. E.g. the formatting code ${date_Y}
will be replaced by the year of the actual date.
Changes for the System Administrator
Now Tryton also supports Python 3.12.
The account dunning email logs have been merged into the general email archives.
The Tryton client configuration, profiles and plug-ins are now transferred from the previous version to the new version on first use of a new client.
Now, when saving a CSV export definition, the options to export listed records or selected records and to ignore search limit are also saved. Printing an export as a report will also make use of the new saved options.
We removed migrations prior to 5.0.
Changes for Implementers and Developers
Now it is possible to specify a database statement timeout on RPC calls. It should avoid evaluating huge queries that can take up to some hours and more importantly eat up all the memory and CPU dedicated to the database. Thankfully postgres has an option available on the sessions: statement_timeout
that allows to limit the time spent on each statement of the session. The default timeout is set to 60
We added new attributes to buttons: xexpand, xfill, yexpand, yfill
We removed the user
and employee
keys from the rule context because of performance reasons. Rules based on user or employee keys are now solved by groups
.
Tryton now supports add, update, remove
and delete
as a result of on_change_with
of One2Many
and Many2Many
fields.
Tryton has now support for scanning codes like bar-codes or QR-codes.
Video: Screencast demonstrating a scan of an unknown bar-code first and then scanning a known one.
The PostgreSQL backend now supports BTREE_GIN
indexing . Also support for similarity expressions have been improved. Last but not least, the expressions are now filtered.
At the start of a transaction we check if a used table is locked. Otherwise we raise a TransactionError and the transaction will be restarted with the table added to the list of tables to lock. This ensures that we always read the last committed values when a table is locked.
It is now possible to use the width
attribute in button columns of tree views. See also our documentation about views.
Tryton now supports encoding TimeDelta
values into PYSON. The comparison of timedeltas is also supported in PYSON.
We added a sum_tree
helper method which is a common pattern which can be unified and reused.
We moved the representation of sum
in XML from the bottom row of the Tryton client into the column header. And the sum
attribute is now converted into a boolean type.
Our base documentation has been greatly improved with a new chapter about the internal resource module.
Read More…
Now the MatchMixin
matches None
and False
. If the value is False
and the pattern is None
, we have a match. The behaviour is similar to the search functionality.
Tests can now execute the same scenario with a list of different global variables defined in a JSON list.
For consistency, we have renamed the close state to closed in state fields that had that option.
We changed the logging process of the dispatcher by using a lazily evaluated object, which will shorten huge structures that could appear in the log.
For your convenience we’ve added a database completion for the database option of the trytond-console
command.
To ease containerized deployments we’ve added some more environment variables to the command line.
Now you can use TRYTOND_LOGGING_CONFIG
to set the default for the --logconf
command line option.
Use TRYTOND_COROUTINE
as default for --coroutine
and TRYTOND_LOGGING_LEVEL
to set a logging level via environment variable.
Tryton no longer fails with a ValueError
when a message is malformed.