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.
Web Client
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.
Accounting
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.
More
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.
Commission
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.
Customs
A country of origin can be defined for each product.
Party
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.
More
We added support for Austrian, Ukrainian and Vietnam identifiers and defined the Australian Business and Company Number as a tax identifier.
Product
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.
More
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.
Production
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.
Purchase
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.
Sale
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.
More
The first cards are now supported on the Point of Sale.
The subscription always fills the date of the invoice it creates.
Stock
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.
Web Shop
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.
New Modules
Account Budget
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.
Account Rule
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.
Analytic Budget
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.
Currency Romanian
The Currency RO Module adds the Romanian National Bank as a source for currency exchange rates.
Currency Serbian
The Currency RS Module adds the Serbian National Bank as a source for currency exchange rates.
Product Image
The Product Image Module adds images to each product and variant.
Product Image Attribute
The Product Image Attribute Module adds attributes to product images.
Sale Point
The Sale Point Module allows retail sales to be handled and recorded.
Stock Package Shipping MyGLS
The Stock Package Shipping MyGLS Module allows package labels to be generated for shipments using MyGLS webservices.
Stock Package Shipping Sendcloud
The Stock Package Shipping Sendcloud Module allows package labels to be generated for shipments made by any of Sendcloudâs supported carriers.
Web Shop Shopify
The Web Shop Shopify Module provides a way to manage Shopify stores. It uploads products, variants and collections to Shopify, and downloads orders, transactions and creates fulfillments.
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.
The 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.
More
We added support for the argon2 and scrypt password hashing methods.
We added an option to start trytond-console
in a read-only transaction.
Accounting
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.
The 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.
More
You can now set the create
and delete
attributes on the view. This disables the appropriate buttons on the user interface.
The DictSchemaMixin
now has a method to format their values.
The sql_cast
method of Date
field now accepts an optional timezone to use instead of UTC
.
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.
We support PYSON
expressions as keys for the In
operation with dictionary.
The 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_AND
and 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.
Scripting Client
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.
More
We use the bigdecimal
tag for XML-RPC
Accounting
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.
More
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.
Currency
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.
Party
The âReplace Partyâ wizard can now also update reference fields to point to the new party.
Product
The unit of measure now inherits from DigitsMixin
which allows it to be used as a digits attribute.
Production
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.
Project
The projects and tasks now used the path mechanism instead of MPTT to speed up searching on their tree structure.
Purchase
The process method has been refactored into different methods. This allows a design which can process multiple purchases at once and improve speed.
Sale
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.
Stock
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.