We are proud to announce the 6.2 release of Tryton .
This release provides many bug fixes, performance improvements and some fine tuning. What is also remarkable is the addition of not less than 13 new modules of which we would like to highlight the basis for point of sale and integration with Shopify.
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. No manual operations are required.
Here is a list of the most noticeable changes:
Changes for the User
It is now possible to import and export data from binary fields using CSV. The data is encoded into base64 in the file.
You can now customize the name of the records used in the report to construct the filename.
The code of the language must now be unique in the system. This removes possible ambiguity with the translations.
The web client now has, on each tree view, a button to fold/unfold the selected rows.
Keyboard shortcuts (aka accesskey) have been added to every widget and the buttons of the web client. By pressing
CTRL+F1, the keys are shown next to each widget and button.
It is now possible to configure rules to automatically debit the customer with a direct debit payment. These rules are compatible with all the payment modules like SEPA, Stripe and Braintree. The payments are created by launching a wizard from the payment menu.
The invoice and dunning form now have an action to launch a wizard to reschedule the payment terms. This wizard allows new terms to be defined by splitting up the existing line.
When updating an asset, we now store a revision which contains the updated data, a document as the origin and a description.
It is also possible to reset an asset that does not yet have posted lines back to draft. This gives some grace time to correct any mistakes. And it is also possible to force the re-calculation of the pending lines.
Invoices create a tax line for the base of manual taxes.
We’ve added the intra-community VAT for each tax rate for the Spanish chart of account.
There is now a succeed button on the payment group which marks all its payments as succeeded.
Date and age fields have been added to the dunning records.
A warning is raised when a user attempts to post an invoice with a date in the future.
The statement journals can now be deactivated when they are no longer needed.
We validate that all inactivate accounts have no balance when closing a period.
We now have commission reporting by agent and period. The amount can be grouped by year, month or day and it is possible to filter for only invoiced commissions.
When creating commissions, it is now possible to select only some agents.
A country of origin can be defined for each product.
It is now possible to define one contact mechanism of each type at the creation of a party. The main usage is to ease importing parties via CSV with their email, phone etc.
When a party is replaced by another, the identifiers from the former one are transferred to the new one but are deactivated.
We added support for Austrian, Ukrainian and Vietnam identifiers and defined the Australian Business and Company Number as a tax identifier.
We added a computed field on the variants that calculates a name based on their attribute values. This avoid the need to define different suffixes for each variant if the attributes are enough to distinguish them from one another.
The service and kit products can now only have a fixed cost price. The other methods are all based on stock moves which does practically nothing for services or kits.
The list price field is no longer required for products.
All list or cost prices must now be linked to a company. And when the cost price is per warehouse, it must now be linked to a warehouse.
To allocate the production cost between the output products, Tryton use the list price. Now if one of the output products doesn’t have a list price, the production will raise a warning before ignoring it.
We calculate the purchase date for purchase requests created from requisitions. The calculation uses the lead time of the defined supplier or the best one found.
The default invoice, shipment and shipment cost methods can now be defined by customer. If they are empty then the general default method is used.
We extended the existing sale reports to have one general one without any grouping (useful to have grant total) and another grouped in a tree per customer category.
There is now a wizard to test the setup of a recurrence rule (used for subscription). As rules can be complex it is useful to be able to see the result based on a selected date.
The first cards are now supported on the Point of Sale.
The subscription always fills the date of the invoice it creates.
We added a wizard on the customer shipment (and supplier return) to print all the package labels at once. And also reprint the label just for one package. The client can sent them directly to the default printer of the host machine. (This replaces the dummy label report.)
It is again possible to group different warehouses under a view location.
The product images can now be used on web shops. There is a check box to indicate whether the image should be published to the web shops.
The Account Budget Module provides the ability to set budgets for accounts over a defined period of time. These budgets can then be used to track the total amount from relevant transactions against the budgeted amount.
Account Move Line Grouping
The Account Move Line Grouping Module adds a view that displays move lines grouped.
The Account Rule Module allows rules which substitute default accounts with other accounts.
Account Stock Shipment Cost
The Account Stock Shipment Cost Module allocates shipment costs based on invoices.
The Analytic Budget Module provides the ability to set budgets for analytic accounts over a defined period of time. These budgets can then be used to track the total amount from relevant transactions against the budgeted amount.
The Currency RO Module adds the Romanian National Bank as a source for currency exchange rates.
The Currency RS Module adds the Serbian National Bank as a source for currency exchange rates.
The Product Image Module adds images to each product and variant.
Product Image Attribute
The Product Image Attribute Module adds attributes to product images.
The Sale Point Module allows retail sales to be handled and recorded.
Stock Package Shipping MyGLS
Stock Package Shipping Sendcloud
Web Shop Shopify
Changes for the System Administrator
The non-interactive operations (like the scheduled or queued tasks) now report various errors to the “Administration → Scheduler → Errors”. When the problem has been fixed, the administrator can mark it as solved and it will be relaunched automatically.
An extra step has been added to the configuration wizard used on first login which allows the user to easily activate new modules.
trytond-stat command displays the ID of the node in addition to the process ID. This enables you to see which node the request came from.
We added support for the argon2 and scrypt password hashing methods.
We added an option to start
trytond-console in a read-only transaction.
We added two groups which give access rights to edit the accounting fields on parties and products. This provides more flexibility in privilege separation.
Changes for the Developer
In addition to MPTT we now support another method which is based on a stored path. This is a method that is faster when the tree is modified but which takes up more space.
To simplify the choice, you should use MPTT for trees that are mainly static (like the chart of accounts) and Path for trees that are often modified (like the project tree).
We improved the way digits are managed for numeric fields. Now you can set the digits attribute as the name of a field that point to a
DigitsMixin model (like the unit of measure).
Also the numeric widgets now have a
grouping attribute which specifies whether the client should group the digits or not.
We added also the
SymbolMixin which defines how to format a number with a symbol (like the unit of measure). The language and report has formatting methods that support the symbols and also empty digits.
On the user warning model we added a class method that standardizes the format of warning names based on its records.
We’ve enforced immutability on even more data structures. The transaction’s context dictionary can now only be changed by using the
set_context context manager. The value of
Dict fields now use a tuple instead of a list.
ModelSQL.lock method locks the table when called without records.
When copying records, we do not copy the values of the record that still have a default value. This lets a user copy a record for which they do not have access rights for some of the fields, but only if those fields values are still the default.
Tryton can now store, in the local cache, the relation fields if it is a read-only transaction.
You can now set the
delete attributes on the view. This disables the appropriate buttons on the user interface.
DictSchemaMixin now has a method to format their values.
sql_cast method of
Date field now accepts an optional timezone to use instead of
We added to the tools a method
set_from_header to populate the email headers to appear at best from the address.
We support the new version 2.0 of werkzeug.
We removed the record name from the title of emails constructed from a HTML report.
PYSON expressions as keys for the
In operation with dictionary.
ModelStorage has a cached method that return an estimate for the number of record in the table. This can be used to decide query strategy.
The tools receive a method to remove forbidden chars from a string.
When searching with a ‘OR’-ed domain, the ORM will use an UNION of queries instead of multiple joins. The database can run these types of query faster.
We added a combined method that does a search and returns the keys definition. This reduces the number of queries clients need to make.
We use the
bigdecimal tag for XML-RPC
We added an implementation of the
BOOL_OR operators to the SQLite back-end.
There is now a generic test that checks the validity of the domain defined on relation fields.
Another generic test has also been added which ensures that objects registered in the pool have
__slots__ defined to reduce memory consumption.
Tryton is using a slow hashing algorithm to prevent brute-force attacks but this meant the scripting client was slow when used remotely because each call needed to be authenticated by hashing the password. It is now possible to configure these scripts to create a session and use it for further calls.
We use the
bigdecimal tag for XML-RPC
We store the value of keywords extracted from the statement origin. They can now be used by the rules to find a party for a similar statement origin.
We now calculate the warehouse for each invoice line.
We renamed the
lock buttons for the fiscal year and period into
lock_ because they overrode the standard method of the same name.
We added to move lines a property which calculates the best record name for the origin.
The currency module defines a new
Monetary field which can be used to store a numeric value linked to a currency field. These fields have the correct symbol and monetary formatting set automatically.
The currency now inherits from
DigitsMixin which allows it to be used as a digits attribute.
The “Replace Party” wizard can now also update reference fields to point to the new party.
The unit of measure now inherits from
DigitsMixin which allows it to be used as a digits attribute.
The BoM can now have many inputs or outputs of the same product. We removed the unique constraint for products on the input and output lists.
The projects and tasks now used the path mechanism instead of MPTT to speed up searching on their tree structure.
The process method has been refactored into different methods. This allows a design which can process multiple purchases at once and improve speed.
The process method have been refactored into different methods. This allows a design which can process multiple sales at once and improve speed.
In order to only group within the same shipment moves with the same cost method, the cost method from the sale is now stored on the shipment.
We now provide a unique method that is used to sort the quantities to pick when assigning stock. This method can be extended to implement custom strategies like FIFO, LIFO or FEFO.
Moves now have a property which returns the warehouse to which they are linked. This property replaces the previous cost warehouse.