We are proud to announce the 6.4 release of Tryton.
This release provides many bug fixes, performance improvements and some fine tuning. What is also significant is the addition of 9 new modules.
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. One optional manual operations could be needed, see Migration from 6.2 to 6.4.
Here is a list of the most noticeable changes:
Changes for the User
It is now possible for modules to display a notification message from the server while the user is filling in a form. This is already used by the sale_stock_quantity
module to display a message when user selects a product which has a forecast quantity that is not enough for the order.
Users can now choose which optional columns are displayed on list and tree views. All modules have been reviewed to make non-essential columns optional and thus provide a lean interface by default.
Some views can now be used to edit but not create new records. This can be used, for example, to setup an editable list that allows the data to be modified, but creating a new record will always use the form view.
The CSV import now skips empty rows inside One2Many
fields. It is now possible to import many One2Many
fields in the same file but with different lengths.
The CSV import error messages have been improved to include the model, field and column. This makes it much easier to find and solve problems with the CSV data.
More
- Display the number of selected records
- Humanize the count result
- Order not sorted Selection by index definition
- Use expire delay instead of UTC datetime in reset password email
Web Client
Reference fields can now be opened from the list and tree views like Many2One
fields. They are rendered as a link which opens a new tab using the form of the target model.
Desktop Client
CSV exports encoded in UTF-8 now include, by default, the Byte Order Mark to increase compatibility with other systems.
The multi-selection widget now uses the same default selection behavior as other lists. This solves inconsistency in the behavior.
Accounting
The reconciliation wizard now has an option to automatically reconcile the default suggestions. This speeds up the process for accounting with a lot of entries when the system is well configured.
Similar to the debit type, we now have also an optional credit type on accounts. Of course an accountant can only have one optional debit or credit type.
The general ledger now displays, by default, debit/credit columns only when there are actually lines in the account for the period. And it also display the number of lines.
We now use the invoice date (instead of the accounting date) to enforce the sequence order for customer invoices. This is more flexible and is still consistent with most country’s rules.
When interactively validating a supplier invoice with the same reference as an existing one, Tryton raises a warning as the user may be entering the same invoice twice.
Lines in a payable or receivable account can now only be added to a payment if they have a maturity date. This avoids creating payments for purely accounting lines.
The receivable payments can now be processed without needing to be approved first, just submitted. This simplifies the workflow for receiving payments like checks where there is no need for a second approval.
It is also now possible to edit the amount of a payment that is in a processing state. This is because sometimes a different amount is read from a check compared to the amount read by the bank.
We no longer create dunnings for lines with a pending payment.
It is no longer possible to select reconciled payments or groups when entering a statement. This simplifies the selection task for the user, and for the rare case where they still need to select a reconciled payment, they can still unreconcile them before selection.
The clearing line of a payment is now automatically reconciled with all the statement lines linked to it.
The user can now choose the allocation method to apply to the shipment cost.
More
- Prevent creating fiscal year before closed one
- Prevent changing the type of journal with posted moves
- Mute reconciled payable/receivable lines
- Add delegated amount on move lines
- Handle errors in move template expression
- Rename split lines into reschedule lines
- Prevent delete tax identifier used on invoice
- Add shipments reference on invoice and invoice line
- Add approving employee on refunds
- Store sepa message id and sepa payment info id
- Add Stripe setup intent expire delay
- Create default statement journal
- Remove 61 tax code - no longer used in AEAT303
- Include 120, 122, 123 and 124 new keys in model 303 format
Banking
Tryton can now fill in or create the related bank from an IBAN.
When searching for a bank name, Tryton also searches on the BIC.
Party
The country name on a printed address is always shown in English in order to follow the international standard.
The SIREN and SIRET codes are now managed as identifiers on the party.
A party identifier can now be linked to one of the addresses of the party. The SIRET number uses this new feature.
The “autonomous city” is now allowed as subdivision for Spain.
All the lines of the street are now used as part of the record name of an address.
Product
It is now forbidden to decrease the number of digits of a unit of measure. This prevents invalidating existing quantities linked to the unit.
We now warn users who try to deactivate a product that still has stock.
Production
The stock move form now also shows, where applicable, the production it is linked to.
Purchase
It is now possible to define a default currency for each supplier.
Sale
It is now possible to define a default currency for each customer.
The origin name of an invoice line for advance payment is now filled in with the advance payment condition name.
The advance payments are now recalled with a negative quantity instead of a negative price.
The opportunities reports now use real date fields to display the month instead of two fields - year and month. This improve the search possibilities.
Sales made by POS are now included in the general sales reports.
When registering cash change given using the POS, we use a negative debit or credit in the accounts. This prevents artificially increasing the totals.
A notification is now displayed directly to the user when entering in a sale of goods whose forecast quantity is not high enough to cover the sale.
Stock
Tryton now also recalculates the cost price on the moves of drop shipments.
The assignation process now uses the lot number as criteria if it is populated.
Upward and downward traces have been added to stock lots to improve lot traceability.
It is now possible to select the UPS notification service.
The forecasts are now applied to all the stock supplies instead of only the purchase requests.
More
- Add location or warehouse in shipment tree view
- Add warehouses selection to supply stock wizard
- Allow package type to be deactivated
- Add volume dimensions to package
- Use configured unit for measurements
- Add packages weight
- Filter out moves without quantity from package
- Prevent early planning of production missing moves
- Compute early date for partial quantity of stock move
- Update early date base on internal incoming requests
Web Shop
Tryton now supports editing orders from Shopify.
New Modules
Account Spanish SII
The Account Spanish SII Module allows sending invoices to the SII portal. This is legal requirement for some Spanish Companies.
Account Invoice Watermark
The Account Invoice Watermark Module adds a draft or paid watermark to the printed invoice.
Account Receivable Rule
The Account Receivable Rule Module defines rules to reconcile receivables between accounts.
Account Stock Shipment Cost Weight
The Account Stock Shipment Cost Weight Module adds “By Weight” as an allocation method for shipment costs.
Account Tax Non-Deductible
The Account Tax Non-Deductible Module allows the definition of non-deductible taxes and adds reports for them.
Purchase Product Quantity
The Purchase Product Quantity Module permits enforcing minimum and rounded quantities to be purchased per supplier from purchase requests.
Sale Invoice Date
The Sale Invoice Date Module fills in the invoice date for invoices created by sales.
Sale Product Quantity
The Sale Product Quantity Module permits enforcing minimum and rounded quantities to be sold per product.
Stock Shipment Cost Weight"
The Stock Shipment Cost Weight Module adds “By Weight” as an allocation method for shipment costs on the carrier.
Changes for the System Administrator
The CORS configuration is now also applied to the root path.
Tryton now automatically retries sending emails if there is a temporary failure status.
We removed the password validation based on entropy. It was not a good measurement for robustness of password.
The login methods receive the options ip_address
and device_cookie
.
Country
The script to load postal codes now uses the Tryton CDN for more reliability.
We now support pycountry 22.1.10.
Changes for the Developer
We now use the unittest discover method as a replacement for the deprecated test
command from setuptools.
The documentation now contains a tutorial on how to create a Tryton module.
The models now have an on_change_notify
method which is used to display messages on the client while user is filling in a record.
The ModelStorage
has now a validate_fields
method which permits validation to occur only when specific fields have been modified. This is useful if the validation is expensive. All the modules have been reviewed to take advantage of this new feature.
The depends
on the Field
are now python sets. It is also no longer necessary to define depends for the states, domain and digits expression. Tryton calculates them automatically. However, it is still needed for the context if you want to be sure that it will always be set.
We include in the view only the depends fields that are needed for that type of view (editable or not).
We prevent creating or deleting singletons. The corresponding actions are disabled in the clients.
The Reference
fields use a dictionary for domain
and search_order
. The keys are the name of the target model.
It is possible to define a field on a tree view as optional. The user will then have the choice of whether to display it or not.
The creatable
attribute on tree and form views allows defining whether the view can be used to create new records or not. If not the client will switch to another view from which records can be created.
The local cache of instances created by Function
fields are now populated with the values that have already been read. This speed up the calculation of these fields.
The value of Function
fields are now cached during the transaction if it is readonly.
We use the JSONB
column type to store Dict
fields on PostgreSQL backend.
More
- Test all XML view and SVG icon files are used
- Add support for Python 3.10
- Remove support for Python 3.6
- Drop support for PyPy and psycopg2cffi
- Remove support for pysqlite2
- Add limit to search_count
- Limit board action domain to active id and ids
- Call view_get for board view
- Apply view inheritance to board
- Apply view inheritance to all matching elements
- Set view_id in the context when calling view_attributes
- Make warning check re-entrant
- Deduplicate entries in domain inversion’s simplify
- Allow button access to be deactivated
- Always return tuple for MultiSelection
- Use default selectors instead of select
- Add batch option to push queue tasks
- Support ref value for reference field
- Enforce ref model in XML data
- Support limit and offset to ModelSQL count search and search_count
- Add RPC view_get method to View
- Manage DatabaseDataError in ModelSQL
- Use RENAME and DROP COLUMN with SQLite backend
- Support window functions with SQLite backend
- Use datetime for user role planning
Web Client
We now use ECMAScript version 6.
Desktop Client
We added an option to define the logging output location.
Accounting
A date must always be set in order to calculate taxes.
We enforce the same type for the children of an account with a type set.
A unique Reference
field is now used to on the statement line instead of multiple Many2One
fields.
More
- Add amount_line_paid property on payments
- Rename generate_message button to sepa_generate_message
- Store allocation of landed cost and shipment cost factors
Banking
We enforce the uniqueness of the IBAN and permit only one per bank account.
More
- Remove starting wildcard when searching account number
Country
The script to load subdivisions no longer fails for unknown subdivision types.
Web Shop
A route has been added to support the Shopify webhook for orders. This allows quicker order synchronization.
We removed the API backoff time and now support request retries using the Shopify Retry-After
header.
We modify only the metafields managed by Tryton.