Newsletter April 2020

Tryton is a business software platform which comes with a set of modules that can be activated to make an ERP, MRP, CRM and other useful applications for organizations of any kind.
During this month, when most developers are social distancing, we recorded a lot of changes to prepare for the upcoming release 5.6 that is planned for the start of May.


Changes for the User

The calendar view can now prevent the use of drag and drop if the dates of the event cannot be changed.

We now display the lines to pay on the invoice. This makes it easier to edit the payments’ due dates when invoice payment is renegotiated.

The reference for productions is now displayed on the record name. This follows the same schema as other documents like sales and purchases.

We have improved the form that is used when creating product variants. The non-editable fields inherited from the template are no longer displayed if they are empty. This helps avoid confusing users, who may mistakenly think they need to fill them in. When creating a template from the variant form, we do not create a default variant any more. This prevents creating two variants by mistake.

Invoicing projects is now more focused on the amount rather than the duration. This makes the invoicing process easier to extend and customize.

The inventory moves are now also planned. This prevents a glitch in the stock quantity calculation between stock receipt and inventorying.

It is now possible to automatically use the maturity date from the lines paid. So, on the payment wizard if the user leaves the payment date empty, Tryton will use the maturity date from the line if there is one.

We’ve added a process button to the purchase request (like on sale and purchase). With this the administrator can force the purchase request to be processed if there was an error when running the task in the queue.

We display the user name when requesting the password. This is useful when you’ve forgotten which user you’re logged in as.

The lost and found location has been removed from the inventory and now uses the one defined on the warehouse or a parent of the inventoried location. This ensures the same lost and found location is always used, and lets the user create other lost and found locations which are not used for inventories, such as scrap locations.

We now show the move resulting from the grouping wizard. This is useful as this move is not posted by default, so the user can check or edit the move before posting it.

It is now possible to define a common prefix for the product variant’s codes on the product template. And we enforce uniqueness on the variants codes so it can be used as SKU.

It is now possible to set a unit of measure for a purchase request or requisition without a product. This follows the same behavior as the purchase order.

We now use the date of the statement line as the date of the clearing move when the line is linked to a payment.

We now support invoicing subscriptions in advance.

We continue to make invoicing projects more flexible by allowing use of products that are not based on time. In this case the unit price is considered to be the full price for the work.

Accounts from the chart of accounts can now be reported into different account types (on the balance sheet and income statement) depending on the sign of their balance. This is useful for some countries which have such reporting constraints.

We have added to sale and purchase two new fields, contact and invoice party. This makes the form very flexible and suitable for almost all use cases.

We now keep the link between the credit lines and the stock moves of the original line. This will then allow us to calculate the exact price of a product including the eventual credit note.

Deposit lines should be reconciled for performance, but we never do a write-off on those lines. So the reconciliation wizard has been changed to only propose to reconcile deposit accounts if they are balanced otherwise they are automatically skipped.

We added a visual indicator on product and location quantities.

When a subscription is closed without an end date, we automatically set it to the greatest end date of the lines.

On the Spanish chart of account we have added tax rules for regimen especial agricultura, ganaderia y pesca.

New Modules

Account Cash Rounding

The account_cash_rounding module allows cash amounts to be rounded using the cash rounding factor of the currency.
When the invoice has to round the lines to pay, the excess amount is debited or credited to the accounts defined in the accounting configuration.

Changes for the System Administrator

As it may be complicated to configure the email server options, we added an option on trytond-admin to send a test email to ensure it is working.

Changes for the Developer

The speed of displaying a calendar containing lot of events has been improved using a new strategy.

For future releases of the desktop client, we have added a build for 64bit versions of Windows which complements the existing 32bit build.

We have added an editable attribute to the calendar view which can be used to disable the use of drag and drop to edit events.

All the Python code has been cleaned up so it is 100% compliant with our style guidelines. This is enforced by using flake8 and our reviewbot :robot:.

The string format for proteus records follows the same pattern as on the server side. So it is <model name>,<id> which is compatible with the value used for Reference fields.

It is now possible to order parties according to their proximity to a reference party. The distance is calculated based on the number of steps it takes to get from the reference party to the other party by traveling along party relationships.

The DeactivableMixin automatically sets all the fields to read only when the record is deactivated. So the developer no longer has to manage this manually and this also enforces a common behavior through all the models.

We added support for Python 3.8, this means that our continuous integration system now also runs tests for this version too.

We replaced the memoize tool by functools.lru_cache from the Python standard library. This reduces our code base and we get to profit from a more widely used implementation.

When copying a record with a binary field, we do not reprocess the data if it already has a file_id. This reduces the workload and improves the storage usage for any filestore that does not automatically detect duplicate data.

Triggers are now run in the queue. This ensures that internal changes that are reverted later in the same transaction do not trigger an action. This also ensures that records that cause a trigger only fire the same trigger once per transaction.

It is now possible to define depends fields in the view_attributes actions. The required field will be added to the view automatically if it is missing and the xpath expression is matched.

1 Like