A lot of development has finally landed, laying a solid foundation for the upcoming 6.0 release.
Changes for the User
We’ve improved the default ordering for shipments and production orders. It is now based on either the effective date or the planned date.
The shipping labels can now be stored in the filestore. Doing this can help to reduce the size of the database.
The price list formula can explicitly use the list price of a product. This is useful for some regulated business where the purchase price is fixed based on the public price.
The report that shows the quantities of a product by warehouse can now display it for multiple products. We also added a relate from assigned shipments and productions to show the quantities for all the products included in the document.
It is now possible to modify the dimension of packages. By default, they are filled in with the value from the package type. The main use case is for pallets where the height is only known after it is filled in.
The import and export CSV dialog for the web client now supports drag and drop on the columns to reorder them.
Any stock moves that get cancelled are now automatically removed from the package they were linked to.
When exporting tree structures as CSV data the first column is now indented.
The client now allows sending emails with any of the record’s existing attachments.
Changes to the shipment cost on shipments has been simplified. This has been done by adding an edit checkbox which helps avoid unexpected re-calculations of the cost when moves are changed.
We replaced the “Print General Journal” with a generic report on accounting moves. This provides more flexibility on what content is printed.
It is now possible to configure the party identifiers that are available.
We removed the unpractical tree structure from companies. The user’s “Main Company” has been replaced by a flat list.
It is now possible to define a supplier invoice line as a price correction to update the cost price of its product.
When the carrier cost is not fully covered by the shipment cost paid by the customer, the unsold part is added to the outgoing moves as a shipment cost.
The calculated weight of a shipment parcel now also includes the weight of the package used.
The Purchase Price List Module allows price lists to be defined for suppliers.
The Stock Shipment Cost Module adds a shipment cost to outgoing moves. This cost is added to the product margin reports.
The Stock Quantity Issue Module helps to solve stock quantity issues.
The Product Cost Warehouse Module allows the cost price of products to be calculated separately for each warehouse.
The Stock Quantity Early Planning Module helps reduce stock levels by proposing earlier use of stock.
The Autopilot Module stores all user inputs in a blockchain, automatically analyses and predicts the best next logical step in business (yes, AI with tensor flow) and finally act autonomous, e.g. purchase products and sell them, without human interaction.
The Avatar Module adds an avatar to each party.
Changes for the System Administrator
The groups can have now a parent from which they inherit their access permissions. This is useful, for example, when creating “Administration” groups which normally have all the rights from the standard group along with some additional rights.
We added a new command
trytond-stat which displays the currently processed requests, tasks and jobs for each of the
trytond processes on the host.
Changes for the Developer
We’ve added a method to post invoices by batch. It delegates the numbering to a deferred task. This can be used to reduce contention on the invoice numbering sequence.
We’ve added a generic test in the
company module that ensures the
company context is set on fields that target a company multivalue model.
A new route decorator has been added to allow
null as its origin. This is useful for web-extensions like Chronos as browsers now use this origin instead of the extension ID.
Model.__access__ is a new attribute which contains the names of a relation field for which the access rights must also be checked. This simplifies the definition of access rights for documents composed of several models like, for example, the invoice with lines and taxes.
The actions can now define whether they run on the selected records (as usual) or the listed records.
Also if the action is run on a tree structure then a path for each record is sent to the server.
The context fields of parent records are now automatically added to the
on_change calls. This ensures that records are instantiated with the proper context.
The sequence definition has been simplified. The type is now directly stored on the sequence with a
Many2One and the next value is obtained using an instance method.
When recalling a deposit it is now possible to specify a maximum amount to be recalled.
It is now possible to use a URL as the source of an icon.
The code has been updated to iterate over the database cursor when possible instead of using
For the back-ends that support it,
Text fields can be searched with full text and similarity. A new internal
FullText field type is available which helps to store and index
The distance between parties has been moved from the
party_relationship to the
party module. This was done so that third parties can use, by default, the minimal
distance field without depending on the
We added an
AvatarMixin which adds support for avatars on any model. The avatar is then publicly available through a URL. The URL accept a size parameter that resizes the image on the fly. Each resized image is stored in a cache.