New Tryton release 4.0

Posted: 2016-05-02 18:00:00+00:00 release

We are proud to announce the 4.0 release of Tryton.

This is the first release of Tryton that adds support for Python 3. The server and most of the modules support it. The missing modules are mainly the ones using the WebDAV and LDAP. The client will be ported once GTK-3 support is added. The release sees also a large refactoring of the protocol stack which was previously based on the SimpleHTTPServer of Python. Now it uses a WSGI application running on the Werkzeug server by default. Any WSGI server can be used to run Tryton, this removes the design constraint of single threaded process and opens the way for using workers. All modules have been reviewed to enforce the naming convention about the document identification. The name "code" is used for all referential documents like parties, product. The name "number" is used for the internal identification of all operational documents like sales, purchases, invoices etc. And finally, the name "reference" is used for identifications from external systems like the sale order number of the supplier of your purchase. Two new languages are now available on default installation the Lao and the Simplified Chinese.

As Richard Stallman reminded to us, the migration from previous series is fully supported.

Major changes for the user

  • The new note functionality handles the management system for general textual notes on any arbitrary model in Tryton. On click it opens a notes dialog, where the user can maintain notes. The read state of every note is managed per user. Like the attachments, the icon in the tool-bar visualizes when there are notes on a model.

    Tryton note Sao note
  • The CSV import and export has been highly reworked for a better experience. The import dialog now supports drag and drop to order the selected columns like the CSV export wizard. Both wizards are able to use any of the encodings available in Python. It is now possible to configure the CSV parameters for the export result.

    Export CSV
  • The charts provided by the graph view have been improved. Now they use softer colors, thinner lines and smaller arcs. On the background, dash style is used instead normal line for axis representation. A smart transparency value is applied for filling lines to always show through it.

  • A new button in the scheduler allows running a job once, useful to run jobs on demand or to test new settings.

Accounting

  • The report design of the General Ledger, Trial Balance and Aged Balance has been re-worked. They are now based on the new dynamic views. This provides a performance burst and allows to filter the records more precisely. In addition to the previous printable output, they also gain the CSV export which is useful to perform specific operations in a spreadsheet application.

    General Ledger
  • A date field is added to the Aged Balance, to modify the date on which the calculations are based. With this feature, it is possible to generate reports based on a past date as if it would have been generated by ignoring reconciliation that happened after that date.

  • The functionality of Third Party Balance is merged into the Aged Balance. We found that the Third Party Balance computed the same data as the Aged Balance with the type Customers and Suppliers.

Party

  • The Name field on party is no longer required for input. This solves a long standing request to be able to maintain parties where the name is not known on creation.

Product

  • A configuration form is added to the product module with these options:

    • The default value for Use Category fields.
    • The default value for the Cost Price Method.
  • It was not always easy to explain the design of products with the templates, especially when it was not really relevant for the current business. So we have redesigned both views to be very similar and indeed they use the exact same design. The fields, that do not exist on the product, are automatically replaced by the value of the template.

    Product Variant
  • The field Category is replaced by a Categories field, to support the ability of adding many categories to one product. This is very useful for example to create multi-axis categories for web shop.

Classification

This new module defines the reference basis to create different kinds of classifications for products. It adds a generic field Classification on the product form.

Classification Taxonomic

This new module introduces the taxonomic classification of products as an example using the new Classification module. It includes classifications by Taxon and by Cultivar.

Purchase

  • The field Delivery Time on product supplier is replaced by Lead Time which increases the precision from days to microseconds.
  • For each warehouse, it is now possible to define the location where the goods are picked in case of supplier return. If this location is not defined, the default storage will be used.

Request

The purchase request functionalities have been decoupled from stock_supply and sale_supply modules into a new separate module named purchase_request. This is to prepare future work that will use only purchase requests without the need of other stock_supply features.

  • A new state Exception is added to the purchase request. This is useful to manage cancelled purchase when linked to drop shipments.

Sale

  • The field Delivery Date on model Sale Line is renamed into Shipping Date to avoid any confusion.
  • The field Delivery Time on product form is replaced by Lead Time which increases the precision from days to microseconds.
  • The custom history management on Sale Opportunity is replaced by the general revision functionality of the client. This increases its precision and works automatically for any new fields.

Stock

  • The address of the destination warehouse of the Internal Shipment is now displayed on the report.
  • Now it is possible to manually do a move with the new Do button. This is useful for example to get correct accounting when you have long living productions.
  • Supplier return shipments now have a supplier and a delivery address fields. Those fields will be automatically populated for shipments created from purchase.

Production

Routing

This new module defines the routings, steps and operations for productions. A routing is a list of ordered steps and each step is defined by a generic operation.

Work

This new module completes the routing module by creating the Works of a production based on its routing. A Work is linked to a Work Center which defines the cost using one of these two methods: Per Cycle or Per Hour. The cost of a work is computed using the Cycles created on it and later added to the global cost of the production.

Major changes for the developer

  • The domains are now accepting a new parent_of operator which recursively returns all the records that are parents of the searched records. This is the opposite of the existing child_of operator.
  • It is now possible to inherit from a view that already inherits another view from a different model.
  • The new where domain operator is useful when you need to search on a xxx2Many with a full sub-domain instead of separated clauses. It has the advantage to avoid to fetch an intermediary result by using a sub-query.
  • The Transaction design has been reworked to be closer to the design defined by the PEP-0249. This new design allows to support nested transactions. It also supports multiple cursors for the same transaction, reducing the memory consumption when iterating over large result sets.
  • A new context model is introduced, to save the trouble of writing simple wizards for configuring reports by setting some values in the context. With this new design, the developer can define a model for which each field will define the values of the context. The form of this model will be displayed on top of the view and the view will be automatically reloaded when the context is changed.
  • Now its possible to have reports in plain, XML, HTML and XHTML reports. With this change the report infrastructure can be reused for example to design email templates.
  • This release adds support for the Two-Phase commit protocol which allows to coordinate distributed transactions. By default, Tryton uses a single transaction from the database back-end. But when Tryton has to communicate with other systems, it is good to use TPC to keep data integrity. The implementation follows the API of the Zope Data Manager. The data managers of the Zope community can be used within Tryton.
  • Thanks to the two-phase commit protocol now mails can be sent when the transaction is committed, so if something goes wrong and the transaction is rolled back no mails are sent.

Accounting

  • The reconciliation process now stores the date of the reconciliation. By default, it is the highest date of the reconciled lines. This allows to filter reconciled lines based on this date, for example to generate a report with the unreconciled lines before a specific date.

  • The Credit Notes have been merged into the Invoices. They are now standard invoices with negative quantities. This allows to easily group both types into a single document. The numbering can still be differentiated depending on the sign of the lines.

    Note: with the merge of Invoice and Credit Note, the signs of the taxes for Credit Note must be inverted manually.

Product

  • Uom.round is now an instance method which makes more sense according to its signature.

Purchase

  • The Purchase has received a done transition like the Sale to allow extensions to perform some action when this transition is performed.
  • It is now possible to search Purchase Requests using the Purchase field.

WebDAV

WebDAV has been decoupled from trytond into a separate module which improves the modularity of the system. Indeed many setups do not use the WebDAV so it was a little bit bloated to have it into the base. Also dependencies of this module prevented to add the support of Python 3 to trytond. So, for now, the WebDAV protocol is managed by a separated process but it will probably return in the future into the main process.

I Jornadas Tryton in Barcelona - Call for talks

Posted: 2016-03-24 00:51:07+00:00 jornadas

As already announced on the Spanish mailing list, several Spanish companies who provide services around Tryton are organizing the I Jornadas Tryton in Barcelona, which will be held on 23th and 24th May at an excellent location, the Mobile World Centre.

The plan is that the content of the conference will be split between user-oriented on Monday 23th and developer-oriented on Tuesday 24th.

Subscription is already open at Eventbrite.

Yet the event will not succeed without your participation, so it's time to collect your proposals to make a presentation for the event, which will be held in Spanish.

Topics may target users or developers and can include, among others:

Do not hesitate to send us your proposal. We're looking forward to learn about what you know and how Tryton is changing businesses around you.

Just send an e-mail to jornadas.tryton@gmail.com before 17th April with a short explanation of what your talk will be about.

Tryton Unconference 2016 - Call for locations

Posted: 2016-03-23 14:05:31+00:00 TUL

After last year's excellent Tryton Unconference in Buenos Aires, the Tryton Foundation already started to think about this year's unconference, which will be held just after 4.2 release due in autumn.

If you're interested as an individual or organization to host TUx 2016 (our sixth unconference already!) do not hesitate to send your application to foundation@tryton.org before 30th April.

Which city will follow Liège, Barcelona, Leipzig and Buenos Aires?

Videos of the Tryton Unconference 2015

Posted: 2016-01-01 09:00:00+00:00 TUBA video
The videos recorded during the last Tryton Unconference 2015 are available. The slides can also be downloaded.

Security Release for issue5167

Posted: 2015-12-17 07:00:00+00:00 release security

Synopsis

A vulnerability in trytond has been found by Cédric Krier, that allow a malicious authenticated user to write on fields for which he doesn't have access (see issue5167).

Impact

Any authenticated user can write on field for which he doesn't have access. Other access rights are correctly enforced.

Workaround

There is no workaround.

Resolution

All users should upgrade trytond to the latest version.

Affected versions per series: <=3.8.0, <=3.6.4, <=3.4.7 and <=3.2.9

Non affected version per series: >=3.8.1, >=3.6.5, >=3.4.8 and >=3.2.10

Concern?

Any security concerns should be reported on the bug-tracker at https://bugs.tryton.org/ with the type security.

New Tryton release 3.8

Posted: 2015-11-02 18:00:00+00:00 release

We are proud to announce the 3.8 release of Tryton.

For the first time the release contains sao, the new web client of Tryton. It is the result of the Indiegogo campaign. It is developed using mainly jQuery and Bootstrap and its design is responsive. It requires a recent HTML5 compatible browser. Its usage doesn't require any modification on the server side, every modules are working out of the box with sao just like they do with the GTK client. A demo is available at http://demo.tryton.org using demo/demo as login/password. This brings to 3 the number of supported client for Tryton.

A lot of work has been done to improve the accessibility of the GTK and web clients. For the GTK client, we followed the GNOME Accessibility Developers Guide as much as possible and for the web client, we followed the Web Accessibility Initiative of the W3C. You can follow further progress on this topic on the issue3459.

And of course, this release contains many bug fixes and performance improvements.

As usual, migration from previous series is fully supported.

The following screenshots are based on sao but the same feature exists also on the GTK client.

Here is a comparison of the render of sao versus tryton:

Sao sale Tryton sale

Major changes for the user

  • The client is now able to generate meaningful error messages for all kind of validation. Those error messages use the same syntax as the search filter.

    Error message
  • For a better accessibility the custom background color on widget is replaced by 'bold' label for required fields and 'italic' label for editable fields. In the same spirit, the color of rows has been removed and can be replaced by icons.

    Label bold and italic
  • A new option for fast tabbing has been added to the client. If activated, it skips read-only fields when navigating with the tab key. This was the previous default behaviour which needed to be optional to allow users with disabilities to navigate on read-only field for reading.

  • The export feature now works only on selected records but it can export a tree structure.

Accounting

  • A new report showing the cash journal amounts over a period is added. This is useful to check closing cashier.

  • The French accounting generates the FEC (Fichier des Écritures Comptables).

  • The wizard that generates payments allows to set a date instead of the default which is today.

  • The default revenue and expense accounts can be configured from accounting configuration.

    Account configuration
  • The date of statements can be corrected after they are posted.

Party

  • The language of the party depends on the company now.

  • An extensible list of identifiers replace the field VAT.

    Party identifiers

Project

The computation of the project tree has been hugely improved by grouping the computation and use of better queries.

  • There is now a progress field on the projects and tasks and of course a total which is the sum of the children.

    Project progress
  • A new method to generate invoice from project has been added which is based on the progress field.

  • It is now possible to link purchase lines to a project which will be added to the cost field.

  • The time sheet works have now a total duration field which compute the duration of the work and its children.

    Hours per work

Sale

  • The delivery date on sale line shows the effective date once the goods are delivered.

  • It is now possible to deliver the sale to another party from the one on the invoice. This is the other side of the drop shipment which makes Tryton fully support drop shipments.

    Sale shipment party
  • The drop shipment now uses two distinct moves using an temporary drop location.

Purchase

  • The delivery date on purchase line shows the effective date once the goods are received.
  • Stock moves can be cancelled from the purchase view without having to create a supplier shipment.

Stock

  • It is possible to ask Tryton to recompute the average cost price of a product by replaying all the moves since the beginning.

  • It is possible to configure another picking location different from the storage location for the warehouses.

    Warehouse picking location
  • It is possible to set an internal provisioning per location which is used for internal order point by default for all products.

Landed Cost

Those new modules allow to record landed cost on supplier shipments after their reception. A new document is created to link supplier invoice lines with shipments and to define which method to use for cost allocation. For now, there are two methods available: By Value and By Weight. And thanks to the Update Cost Price wizard, the cost price of the products can recomputed taking into account the landed cost.

Landed cost

Customs

A new module allows to define the Tarif Code from the Harmonized System and its duty rate on the products. The duty rate is stored for a country over a period and two computation types are available: a fixed amount or an amount per quantity.

Sale Complaint

This new module is for managing customer complaint about sales or invoices. Actions can be defined to solve the complaints like returning the sale or crediting the invoice. A work flow for approval of the complaint actions is set up using the access rights.

Sale Promotion

It is now possible to apply formula based promotions on sales selected thanks to some criteria. The promotion changes the unit price of the line when the sale goes into quotation (and is restored if it goes back to draft) but only if the promotion is in favor of the customer. The available criteria are: the price list, a period, the quantity and the products.

Sale Stock Quantity

This new module checks at the quotation of the sale if there are enough quantity of products in the warehouse. It also checks that the new sale will not hurt older sale that will be shipped later.

Major changes for the developer

  • The progress bar widget works with float between 0 and 1 to ease usage as percentage.
  • The rich text widget uses now a subset of HTML to allow its implementation in sao.
  • The Many2One has a new option target_search which define the kind of query to use for dereferenced search. The options are subquery and the new join (which is the default). The join method generate a faster query in most cases.
  • The SQL constraints use a similar syntax to python-sql. This gives more flexibility to implement backend for other databases.
  • Trying to create/write/delete on a Model based on a table_query raises an exception instead of a silent error.
  • The table name of a ModelSQL can be overridden with a configuration file. This allows to work around database limitations on the length of table names.
  • The new StateReport has been added to wizards, to simplify the code of wizards that run a report.
  • The style on reports has been removed, experience show that this feature was not used.
  • The PostgreSQL backend manages now schema. This allows different instances of Tryton sharing the same database.
  • The generic foreign key to create/write user on all ModelSQL has been replaced by a rule that prevent to delete users. This greatly improves scalability in some circumstances.
  • The Property field supports now float and integer values.
  • A subdirectory locale/override is supported for modules that override translations of other modules.

Accounting

  • The charts of account are no longer translatable. Instead we provide translated charts via a template using XSLT.
  • The invoice doesn't set a unit price on the line. For this feature the purchase or sale module must be used.
  • Some fields of the invoice like the note and the origin are editable after posting the invoice.

Product

  • Conversion between units no longer results in silent failures but an explicit error is risen.
  • The volume property has been added to the products.

Project

  • The tree structure of the project and the time sheet have been separated, each object has its own one.
  • The price list uses the same decimal precision as the product.
  • The cost price of the employee is stored on the time sheet line for the date of the line. This allows to sum the costs of time sheet faster

Purchase

  • The state of the purchase request is now searchable.
  • The purchase requests are generated even if the rounded quantity is zero to allow the user to still decide to purchase more.

Stock

  • Many unnecessary restrictions on the edition of move fields have been removed.
  • The expected quantity of the inventory lines is always computed even if they are added manually.
  • It is possible to create staging and draft moves using view locations. Those locations will have to be changed to really do the move.
  • The inventory uses the grouping feature to create the moves. This allows to easily support the lot (or any other extra field).

Tryton Unconference Buenos Aires 2015

Posted: 2015-08-24 12:00:00+00:00 TUBA

This year the annual Tryton Unconference will take place in Buenos Aires the 13th to 17th November at the Hotel Bauen and gcoop.

This will be the fifth edition and the first one outside the Europe. Users, developers and interested people will have the opportunity to discover or talk about Tryton.

Talk proposals and schedule are managed on Lanyrd.

The third Foundation Supporter Meeting will take place on Saturday 14th, 18.00.

A Sprint is organised at the gcoop place the 15th, 16th and 17th.

Registration is available at TUBA 2015.

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 foundation@tryton.org.

And don't forget to spread the word! #TUBA2015

Tryton Unconference Buenos Aires 2015 Extended Code Sprint

Posted: 2015-07-08 12:00:00+00:00 TUBA

We are glad to inform that the Tryton Unconference 2015 Code Sprint was extended to three days. It will be held from the 15th to 17th of November.

If you have any question about the organisation, please contact the foundation at foundation@tryton.org.

Lanyrd #TUBA2015

Tryton Unconference Buenos Aires 2015

Posted: 2015-06-11 12:00:00+00:00 TUBA

The fifth annual Tryton Unconference will take place in Buenos Aires the 13th, 14th and 15th of November.

This is the opportunity to gather together community members (users and developers), interested people, business owners and decision makers to talk about present and future of Tryton, and to discover the city of Buenos Aires.

If you have any question about the organisation, please contact the foundation at foundation@tryton.org.

So book this dates... soon there will be more information about the event. #TUBA2015

New Tryton release 3.6

Posted: 2015-04-22 18:00:00+00:00 release

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).

    Graph color scheme
  • The dictionary widget receive completion on key searching like the other widgets.

  • 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 time.

    Date widget DateTime widget
  • 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 posted.

Accounting

  • 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 list.

  • 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.

    Move Template
  • 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 behaviour.

    Payment Term Test
  • The SEPA 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 statement lines.

  • Tax rules can now depend on the origin and the destination country thanks to the new module account_tax_rule_country.

  • The CFONB custom (non-standard) format of SEPA is added by the new module account_payment_sepa_cfonb.

  • 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 invoice.

Product

  • The price list can now be defined as tax included. Tryton will then compute the price without taxes based on the taxes applied.

Sale

  • 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 etc.

Stock

  • 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.

Commission

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 commission plan. 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 datetime.
  • 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.

Accounting

  • 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 - credit.
  • 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.

Party

  • The vat number is now stored in its compact format.

Product

  • 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.

Purchase/Sale

  • Their lines support both mixed invoice type (Invoice vs Credit Note) per line when computing the invoiced quantity.

Stock

  • 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.