Posted: 2015-04-20 18:00:00+00:00
We are proud to announce the 3.6 release of Tryton.
The release shows the official support of PyPy which is
an alternative implementation of Python which focuses on speed and efficiency.
As usual, migration from previous series is fully supported with the obvious
exception of the ldap_connection module which was removed.
Major changes for the user
A new color scheme for the graphs has replaced the single brightness
variance. Now the color scheme also changes the hue for each color by the
golden angle (which ensure a color will not be picked twice).
The dictionary widget receive completion on key searching like the other
The date/time widgets have been completely rewritten to be more flexible on
the format to enter. But they are also more practicable when used with mouse
only thanks to the real pop-up for the calendar and the drop down for the
Columns of list view that have always the same value are hidden automatically
because they don't provide information. For example, the list of posted
invoices will not show the state column because by definition they are all
It is now possible to add a description to the cancel move from the wizard.
A new option to only show the balance appears in the General Ledger.
Tax can now be configured to modify the base price for the next taxes in the
It is now possible to define templates for common moves. When running a
template, the user will be asked to encode some data like an amount or a
party, then an account move will be generated with those inputs.
A printable report exists now for the depreciation of assets.
The account charts for France and Belgium has been updated. And the Belgium
one is now translated in dutch.
A test wizard is available now to see the result generated by the payment
term. As the payment terms are quite flexible because they support to apply
many deltas (instead of only one), it is not always easy to forecast the
coverage is now extended to the pain.001.003.03 and 008.003.02 flavors
which are used in Germany. And it is also possible to re-generate a SEPA
message in case of wrong configuration on the first generation.
The statements create moves grouped by default by number, date and party. So
when one statement line is split for invoice reconciliation, only one move
will be created now and the origin of this move will be the group of the
Tax rules can now depend on the origin and the destination country thanks to
the new module account_tax_rule_country.
custom (non-standard) format of SEPA is added by the new module
A new type deposit of account is added by the new module account_deposit.
It allows to invoice deposit and recall later this amount on the next
- The price list can now be defined as tax included. Tryton will then compute
the price without taxes based on the taxes applied.
- A new state won was added to the sale opportunity. It goes to this state
automatically when at least one of its sale is confirmed and all others are
also confirmed or canceled.
- The amount of the opportunity is updated accordantly to the amount of the
linked sales. This will give more accurate reports.
- The computation of the shipment cost is now computed only at the quotation.
This lower the load on the client when the order is pretty large as the cost
will be computed only once instead of each times a line is added.
- The new module sale_extra allow to add extra line on sale based on
criteria. The extra can be either a free product or an extra service cost
- There is now a relate from the product to its order points.
- The creation of purchase request warns also on late production like it does
for late incoming shipment.
- The Shelf Live/Expiration Dates are now supported with the new module
stock_lot_sled. When a lot is expired, it is no more used to compute the
forecast quantity of the stock.
This new area is managed by a set of new commission modules.
The commissions are created for the agent defined on a sale or invoice using a
It is also possible to define principals on the products to which commissions
must be repaid.
Major changes for the developer
- It is now allowed to have many times the same field in list/tree view.
- There is no more a datetime widget for list/tree, two columns with one
widget date and one widget time should be used instead.
- A new field TimeDelta appears in this release to represent a duration. It
replace the float_time widget which had some rounding issue. This new field
is already used in the timesheet and project modules.
- The One2Many widget can be configured to use a Cartesian product with the
selections of many values for Many2One or Reference fields.
- A method restore_history_before is added to ModelSQL which behaves like
the existing restore_history but restore the records just before the
- The on_change methods have been migrated to a behaviour more consistent
with the Active Record Pattern used in Tryton.
Instead of returning a dictionary with the values to change, now the instance
is directly changed. This allow to chain easily the on_change methods or
reuse them in other methods reducing the duplication.
- The method save on ModelStorage is now a dualmethod which means that it
can be called as usual as an instance method but also as a class method with
a list of records. Saving many records at once this way improves the
performance as the method will minimize the number of queries to the database
and will validate the result by bunch.
- The Dict field received a translated method to create descriptors which
translate the values or the keys like the same method on Selection field.
- It is now allowed to use the dotted notation in the order clause of a search.
The ORM will
automatically generate the needed joins.
- The API
of the Report class has been reworked to improve the customization of the
engine. The formatting methods are now more strict to prevent silent failure.
- The safe_eval (which was not sure to be safe) has been completely removed.
In the places where the evaluated code was any way safe, the standard eval
is used. For evaluated code from outside, a JSON notation is now used.
Some utilities have been developed to ease the creation of JSON from XMl or in the views.
- A new kind of button has been added which works on non-saved record. They are
quite similar to on_change but they are triggered by a click on a button
instead of a change of field.
- A new method reverse_compute has been added to Tax which allow to compute
the base amount from the taxed amount.
- The sign of the second currency amount is enforced to be the same as debit -
- The analytic account management has been reworked to use a really One2Many
instead of the pseudo-field. This simplification was possible thanks to the
recent new features like the usage of Reference field on One2Many.
- The vat number is now stored in its compact format.
- The number of decimal for internal price calculations is now a configuration
parameter price_decimal. This parameter is used everywhere to ensure
consistency between all modules.
- Their lines support both mixed invoice type (Invoice vs Credit Note) per line
when computing the invoiced quantity.
- A new state staging is added to the move. Such state doesn't impact at all
the computation of the stock level. It is used for supply on sale, to create
moves in advance.
- Inactive products are still computed for the stock level.
- The computation of assigned move has been improved to take only in
consideration outgoing move assigned not the incoming. This result in a less
optimistic for the stock level and thus prevent to assign a move with an
incoming one that is just assigned but not yet done.
- Forecasts are now automatically deactivated when their period is in the past.
Posted: 2015-03-26 10:00:00+00:00
This year, there will be 2 Foundation members
(Sharoon Thomas and Cédric Krier) present during the PyCon 2015 at Montréal. PyCon is the largest annual
conference for the Python community which Tryton is
a part of.
If you want to meet Tryton's people, we will host an Open Space and sprint on Tryton will be organized.
Posted: 2015-03-23 12:00:00+00:00
An agreement signed between the Fundació Universitat Autònoma de Barcelona
(FUAB) and NaN·tic
will allow all International Trade students to use Tryton in their practical
classes. The Catalan company NaN·tic will deploy and set up this software for
30 students a year ensuring them "a 100% real experience" during their
practical classes. This means that they are going to learn how to manage
business opportunities, sales, purchasing, production, logistics... to
summarize: all Tryton’s functionalities. NaN·tic will also provide assistance
and technical support to all the teachers staff to ensure a successful
Albert Cervera, NaN·tic co-founder and Tryton’s Foundation board member,
explained that "this agreement will let students work in a technological
environment like those that can be found in any business. Using this tool
they’ll improve their knowledge of business management and, by extension, their
chances to land on the job market". In addition, Cervera also noted that "with
this deal Fundació UAB obtains an ERP with large benefits and with excellent
growth prospects, while Tryton is introduced to the university thankfully to an
institution as prestigious as the Fundació UAB." Albert Cervera remarked the
importance of recognition to the open source technologies by highly reputed
institutions as university foundations. Cervera is totally convinced that this
type of agreement can be replicated by many other universities anywhere in the
NaN·tic has also announced collaboration with other universities such as
Universitat de Barcelona, where they showcase Tryton to students of Businsess
Administration. In this case, around 90 students a year will be in touch
with an ERP for the first time in their life thanks to Tryton and NaN·tic.
Yet this is just the beggining. Other agreements with several Catalan
educational institutions are being negotiated right now. NaN·tic expects to
have 10 such agreements by the end of the year which will ensure a bright
future for Tryton in Catalonia. Hopefully, other countries will follow as in
Leipzig NaN·tic already offered their help to the Tryton community if other
organizations want to lead the same initiative in other countries.
Posted: 2015-02-16 12:00:00+01:00
It's time to plan the fifth TUx and put a capital letter in the x.
The Tryton Foundation is calling for community members (individuals or
organizations) that want to establish a local team and host our 2015 global
event in November.
Previous editions have taken place in Belgium, Spain and Germany.
Please send your application to firstname.lastname@example.org. You have time until 30th
If you have any questions please feel free to contact us on the tryton@
mailing list .
Posted: 2014-10-20 18:00:00+00:00
We are proud to announce the 3.4 release of Tryton.
In addition to the usual improvements of existing features for users and
developers, this release has seen a lot of work done on the accounting part.
Of course, migration from previous series is fully supported with the obvious
exception of the ldap_connection module which was removed.
Major changes in graphical user interface
The search of relation record has been re-worked to take advantage of the
auto-completion. The search box of the pop-up window is filled with the text
entered in the widget.
The search/open button of the Many2One widget is now inside the entry
box and the create button is removed in favor of auto-completion actions or
pop-up button. This change allow to harmonize the size of all widgets inside
A new image widget is available on list/tree view.
The client can now perform a pre-validation before executing a button action.
The validation is based on a domain and so the offending fields can be
highlighted and focused instead of having an error message pop-up.
The selection label are now available in addition of the internal value for
the export data (CSV) functionality.
The export data window is now predefined with the fields of the current view.
This gives a fast way to export what you see.
The predefined export can now be replaced directly with a new selection of
fields. This eases the process of creating such predefined exportation.
It is now possible to re-order the list of the exported fields using drag and
The range operator of the search box is now including on both endpoints. It
appears to be less astonishing behavior for users even if the previous
behavior including-excluding had some practical advantages.
The client loads now plug-ins defined in the user local directory
Major changes on the server side
- A new Mixin MatchMixin is
introduced. It allows to implement a common pattern in Tryton to find records
that match certain values.
- Another UnionMixin is also introduced. It allows to define a ModelSQL
which is the UNION of some
- Actually, Tryton doesn't update a record defined in a XML file if this one
has been modified outside the XML. Now, it is possible to find those
records and force the update to get the record synchronised with the XML.
- A Python descriptor has
been added to the Selection field. It allows to define an attribute on a
Model which will contains the selection label of the record. It is planned to
update all the reports to use such descriptor instead of hard-coded values.
- A new configuration file format is introduced for the server. It is easily
extendable to be used by modules. For example, the ldap_authentication
module starts using it in replacement of the removed ldap_connection.
- It is now possible to give a logging configuration files to setup the server
logging. This file uses the Python logging configuration format.
- The context defined on relation fields are now used to instantiate the target.
- The SQL clause for a domain on a field can be now customized using a
domain_<field> method. This method allows in some cases a more efficient
SQL query. The method is designed to support joins.
- The access rights has been reworked to be active only on RPC calls. With this
design, Tryton follows the principle of checking input on the border of the
application. So it is no more required to switch to the root user when
calling methods requiring some specific access rights as far as it is not
from an RPC call.
A new wizard to help reconcile all accounts has been added. It loops over
each account and party and makes a proposal of lines to reconcile if it
could find one. This really speeds up the reconciliation task.
There is also another new wizard to ease the creation of cancellation moves.
The wizard also reconciles automatically the line with the cancelled sibling.
A new option Party Required on account has been added. This option makes
the party required for move lines of this account and forbids it for others.
- It is now possible to configure which tax rounding to use. There are two
ways implemented: per document and per line. The default stays per document.
- It is now possible to change a succeeded payment to failed.
Account Payment SEPA
- The scheme Business to Business is supported for direct debit.
- The mandate receives now a default unique identification using a configured
- The module supports now the bank to customer debit/credit notification
- A report to print a standard form for mandate has been added.
- It is now possible to order the statement lines and to give them a number.
With those features, it is easier to reproduce the same layout of a bank
- A report for statement has been added. For example, it can be used when using
the statement for check deposit.
- A validation method can be defined on the statement journal. The available
methods are: Balance, Amount and Number of Lines. This helps to uses
the statement for different purposes like bank statement or check deposit.
Account Stock Continental/Anglo-Saxon
- The method is now defined on the fiscal year instead of being globally
activated on module installation.
- It is now possible to store zip code per country. A script is provided to
load zip codes from GeoNames.
- The module ldap_connection has been replaced by an entry in the
configuration file of trytond.
- The new zip code from the module country is used to auto-complete zip and
city field on address.
- The Confirmed state has been split into Confirmed and Processing, just
like the Sale workflow.
Sale Supply Drop Shipment
- The management of exception on drop shipment is propagated from the sale to
- The Account Payment Clearing module allows to generate clearing account
move when a payment has succeeded between the receivable/payable account to a
clearing account. The clearing account will be reconciled later by the
Proteus is a library to access Tryton like a client.
- It is now possible to run reports. It is useful for testing them.
- A new duplicate method is added which is similar to the copy menu entry of
Posted: 2014-09-30 10:00:00+00:00
A vulnerability in trytond has been
found by duesenfranz, that might allow a
malicious user to execute arbitrary commands on the server via the safe_eval
function (see issue4155).
Any authenticated user can run arbitrary commands on the server with the
permissions of the trytond user.
There is no workaround.
All users should upgrade trytond to the latest version of the used series.
Any security concerns should be reported on the bug-tracker at
https://bugs.tryton.org/ with the type security.
Posted: 2014-09-15 12:00:00+00:00
This year the annual Tryton Unconference will
take place in Leipzig the 14th, 15th
and 16th of November at the Leipzig University of Applied Sciences.
This will be the fourth global meeting where users, developers and interested
people will have the opportunity to discover or talk about Tryton.
Until now, the following talks are proposed:
- What's new in Tryton 3.4
- Synchronisation engine: The case study of Jamaica health records
- Writing your first module for Tryton
(More to be announced on our Lanyrd page)
The second Foundation Supporter Meeting will take place on
Saturday 15h, 18.00.
On Sunday 16th, a Sprint is planned at
the Hackerspace sublab.
Registration is available at TUL 2014.
If you like to give a talk, please announce it on Lanyrd.
If you want to request a talk on a specific topic, you can send your request to
the Tryton mailing list.
If you have question about the organisation, please contact the foundation at
And don't forget to spread the word! #TUL2014
Posted: 2014-06-05 12:00:00+00:00
Finally, the videos
recored during the
last Tryton Unconference 2013 are available. It took some time to synchronize
the sound with the image but thanks to Pierre-Louis Bonicoli we have them now.
Posted: 2014-04-21 20:00:00+00:00
We are happy to announce the 3.2 release of Tryton.
This release mainly consolidates many new functionalities added in last two
years. Also it prepares the future migration to Python 3 by dropping the
support for Python 2.6. But also as usual there are many bug-fixes,
improvements and new modules (see below).
Of course, migration from previous series is fully supported.
Major changes in graphical user interface
The client uses the local timezone to display date time.
The copy/paste on editable list has been improved to add new lines if needed
beside of updating existing records.
The buttons of the view are also available in the action menu. This allows
fast access using keyboard shortcuts but also trigger the button for a list
of selected records.
Buttons and wizards can now trigger actions from the client side. This means
it behaves like if the user clicked on one of the tool bar buttons.
The client uses now a pool of connections, this allows to speed up the client
on requests that can be parallelized.
The attachment button can now receive drag & drop of file to quickly create
There is a new widget multi-selection, it uses the Many2Many field as
backend. It is very useful and more visual when there is a small number of
The client allows to browse the revisions of a record if it is historized. It
also works on a full list of records, in this case the client shows the
result of the search as if it was done at the revision date.
Major changes on the server side
- The server runs internally always in UTC timezone.
- The ModelStorage.write method receives the similar improvements as the
ModelStorage.create in version 2.8. This means it can write different
values to many sets of records in one call and so this improves the
performance by validating all the records at once and also it will validate
only the modified and dependant fields. Also the action values of relation
fields have been updated with the same interface.
- A new decorator fields.depends is introduced to replace the deprecated
on_change, on_change_with, selection_change_with and autocomplete
fields attributes. This decorator applies on the called methods and the
result will be the sum of all depends of all the modules, this brings much
more flexibility to the modularity.
- Tryton uses bcrypt to hash password if the library is available.
- All types of field can now have a domain to constraint its value and most of
the domains are supported for pre-validation and inversion on the client
- The on_change returned value of One2Many uses now an index for the add
keyword. This allows to define the position of the new record in the list
instead of being always at the bottom.
- A new method ModelSQL.restore_history allows to restore the values of a
record as they were at a specific date time.
- A new journal type write-off has been added to ease the creation of
- Taxes has now an optional start and end, this allows to manage the changes
French Chart of Account
- The French chart of account has been updated for the new tax rates of 2014.
- The module prevents now to use an already paid invoice in draft statements.
- It uses the new index of on_change to add the new split line under the
Account Stock Continental
- The creation of account move for stock move is speed-up.
- The IBAN numbers are now validated and formatted.
- A new timezone field is added to the company to get the right date for today.
- The employee is also taken from the context just like the company. This
allows to use many clients with the same user but different employees.
- It is now possible to define the effective date of a production. This allows
to enter past productions.
- There is now a warning when trying to receive a supplier stock move without
an origin. Normally, the origin should be a purchase order.
- The purchase tries to create links between stock moves and invoice lines.
- The same warning exists for customer move without origin.
- The sale tries as the purchase to create links between stock moves and
- Supplier Shipment Return can now have partial assignation
- The computation of stock quantities has been reworked to allow easy
customization and better search.
- It is now possible to define the effective date for all shipments. This
allows to enter past shipments.
- A new relate has been added from lot to moves.
- The Party Relationship module defines different types of relations between
- The Account Payment module allows to generate grouped payments for
receivable and payable account move lines.
- The Account Payment SEPA module allows to generate SEPA files for
- The Stock Package module allows to store packaging information about
customer and supplier return shipments.
- The Sale Shipment Grouping module adds an option to define how stock moves
generated from sales will be grouped.
- The Account Credit Limit module manages credit limit of parties.
- The Sale Credit Limit module adds confirmed sale to the credit amount of
Posted: 2013-11-04 10:00:00+00:00
A vulnerability in tryton has been
found, that might allow a malicious server to send a crafted extention as
answer to a report request leading the client to write the report on any file
of the client host with the right of the user running the client (see
Any file can be created on the client host with the access permissions of the
user running the client.
Users should connect only to trusted servers.
All users should upgrade to the latest version of the used series.
Any security concerns should be reported on the bug-tracker at
http://bugs.tryton.org/ with the type security.