Quantcast
Channel: Tryton
Viewing all 67 articles
Browse latest View live

Foundation board renewal 2017

$
0
0

The 2017 foundation board renewal process has finished. We are happy to anounce that the new board is composed by:

  • Axel Braun from Germany
  • Jonathan Levy from the United States of America
  • Korbinian Preisler from Germany
  • Nicolas Évrard from Belgium
  • Pedro Luciano Rossi from Argentina
  • Sebastián Marró from Argentina
  • Sergi Almacellas Abellana from Spain

Congratulations to Nicolas Évrard as he became the second president of the Tryton foundation board.

We nearly reached the website redesign goal of our budget for 2017. You can help to make it happen by making a donation.


Live streaming for the Tryton Unconference 2017

$
0
0
TUL2017

The Tryton Unconference 2017 is only two weeks away. Registration is still open. But for those who can not make it, we will broadcast a live streaming on our Youtube channel.

The first day, 7th December 2017, is dedicated to business oriented talks.

The second day, 8th December 2017, is focused on developer talks.

Informations and registration are available at https://tul2017.tryton.org/. If you have question about the organisation, please contact the foundation at foundation@tryton.org.

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

Newsletter January 2018

$
0
0

As new year resolution, we plan to make a monthly post about what happened in the Tryton project.

A lake covered by snow

TUL2017

The annual Tryton Unconference 2017 took place from the 7th to 10th December at Liège. It started with 2 days of talks and finished with 2 days of code sprint. We also celebrated the 10th anniversary of the project with some drinks and cakes. For those who could not attend, the talks have been registered and the video and slides are available here (note: a technical issue prevented to correctly record the sound the first day but it is still watchable). Some pictures of the events have also been published.

Drop GTK+-2

The desktop client is supporting since one year both version of GTK+ 2 and 3. It is now time to have only GTK+-3 and thus be able to use new features of this version. The build environment for Windows and Mac has been updated to produce builds with the new version of the library.

New Release Process

A discussion started at the #TUL2017 to have longer term release for Tryton. A new process has been discussed which has a majority of positive feedback. So the series ending by 0 (like 5.0) will be supported for 5 years and the others for 1 year. We will keep the rate of one release every 6 month. The new schema will start with the series 5.0 which will be released the 1st October 2018.

Python 3

At the #TUL2017, we discussed about when to drop the support for Python 2 for which upstream support ends in 2020. So we must ensure to stop supporting Python 2 for any series that should still be supported in 2020. The result is that 5.0 will be the first release with only Python 3 support for the server side and also for the desktop client.

Order Line Description

The description of order lines (sale, purchase, invoice etc.) are no more filled automatically. This prevent to duplicate the content from the product form to each lines. But also simplify and speedup the creation of a line from the code. Moreover the product supplier information can be stored on the purchase line. This information can be used on the purchase line instead of the product information. It allows to search per supplier references and to display on the report as description for the line, the reference of the product from the supplier.

Promotion Coupon

This new module allows to create coupon that are used to apply a promotion on the sale. The coupon can be configured to be usable only a specific number of times globally or per party.

PYSON Domain Validation

For PYSONdomain, the ORM have the simple strategy to validate records to group them per evaluated domain and then make a search per domain. But it is not optimal when evaluated domains are likely to be unique per record because this generate a search per record. A new case has been added to handle this which searches by grouping multiple domains at once and thus reduce the number of queries.

Dialog Size

Until now, dialog were created with a smaller size than the parent window. But it had the disadvantage to create quickly too small dialog windows. So this behaviour has been changed to use always the same size as the parent.

Query for currency rate

The Tryton design for currency rate is a table with the rate and a date from which the rate applies until another row is added for the currency with a later date. A new method has been added Currency.currency_rate_sql which returns a SQL query that produces for each currency the rate, start_date and end_date. This is useful to get a currency rate in a larger SQL query. This method uses the window functions if available on the database back-end to produce optimized query.

Standalone Lines Workflow

Tryton allows to work with standalone lines instead of pre-generated document to follow the grouping method of external sources. But this requires to have enough origin information to select them. So to improve the workflow the supplier stock moves show the purchase order and the invoice lines show their origin.

Reconcile from Statement

Some users have the workflow to reconcile the lines of the statement they just validated. For this we added a button on statement to launch the reconciliation wizard for the generated account move lines.

Bug fixes & Improvements

  • issue5233: The web client format the numeric values with the user locale but also use an input of type 'number' for editing. This allow to have the right virtual keyboard on mobile.
  • issue6875: The autocompletion was not shown when the user changed existing value in an editable list.
  • issue6978: The inventory lines is now read-only until date and location are filled.
  • issue6132: The user is warned if he tries to confirm a purchase order for a different warehouse than the warehouse of the purchase request.
  • issue7009: Catch all exceptions when evaluating value on pyson widget.
  • issue6934: Search and order translated fields using derivative language.
  • issue6915: Show in reconciliation receivable/payable with negative/positive balance
  • issue7005: Remove definition of rules on user. The group should be the only place where access rights are assigned to the user.
  • issue7014: Use a date instead of a boolean for reconciled field on invoice.
  • issue7013: Use canonical JSON form for Dict value.
  • issue7016: Add relate from drop shipment to sale and purchase.
  • issue7031: Fix missing party name on invoice report on series 4.6.

New Service Company

The company m-ds has joined the [list of companies providing services](/services.html) on Tryton.

Ongoing Works

Wesite Redesign

The Foundation has launch the process of redesigning the website as we reached the financial goal. A company has been hired to make this design but we are looking for your inputs.

New Version Notification

The work has started to provide to the desktop client notification for bug-fix releases. It is important because the desktop client is the only part of the Tryton suite for which the update needs to be managed by the user. And we often see users not updating it and reporting issues which have already been fixed.

Support for geographic objects

An external backend with support of geographic fields is under review. It will support only PostGIS in a first time but maybe SpatiaLite will be added in the future. The backend adds all the standard geometry type of columns and supports the operator = and != in the domain. More operations can be added by using python-sql.

Newsletter February 2018

$
0
0

The is the second monthly news for Tryton. The developers have not been idle during the month of January.

A steaming lake with a sunset behind

XML Style

The XML style guideline has been updated to remove the constraint of 80 columns. It appeared that this rule did not produce good readable file. Instead we accept to have the opening tag on a single line or one attribute per line.

GIS

A new back-end trytond-gis has been added to support geographic types. It works with PostGIS for now but contribution is welcome to add others like SpatiaLite. The tryton ORM support the fields: GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON and GEOMETRYCOLLECTION; and the operators = and !=. Of course it is possible to write SQL queries that use other geometric operators thanks to the extensibility of python-sql.

Modify Header Wizard

On document like sale, purchase or invoice, there are often constraint that prevent to modify the header once a line has been filled. For example, on the sale it is not allowed to change the currency when there are lines. This is because the unit price computed on the lines depend on the currency selected. But in some cases, the user may really want to change those header fields because he wants to correct a mistake. Now it is possible to edit the header fields thanks to the Modify Header Wizard which takes care of recompute the lines according to the changes.

Sale with modify wizard running

Post Clearing Moves

A cron task has been added that will post automatically the clearing moves after a delay. The delay is configured on the payment journal.

Stripe Payment

If the customer disputes the payment, a dispute status will be update on the Tryton payment. When the dispute is closed, the payment is updated according if the company win or lose. Some missing charge events has been added. In particular, the refund event which may update the payment amount when it is partial.

New Version Notification

The desktop client has a new option to check if new version for the same series has been published. It takes care of the build for Windows and MacOS.

Register Mixin

A new mechanism has been introduced by issue4735 which allows to extend with the same Mixin all the existing pool objects that are subclasses of a target. A usage example is to extend the Report.convert method of all existing reports to add support for another engine.

Docker Image with libreoffice

Tryton is able to convert the Open Document generated files by the report engine into any format supported by LibreOffice. The default Docker image does not have the requirements for such conversion because it almost triple the size of the image. But now with issue7054, we will publish also images with the suffix -office which contains all the requirements.

Add mnemonic to label of fields

The desktop client had already mnemonic for all button. But with issue2312, they are also added to all field labels. This allow to jumb quickly to any visible field by pressing ALT + <the underlined key>.

Tryton form with mnemonic

Keyword for button

The current form buttons are automatically added to the toolbar under the action menu for fast access. Now with issue7067, the developer can define under which toolbar menu the button will be put. The available options are action, relate or print.

MySQL backend removed

We have decided to remove the MySQL backend from the core of Tryton. The back-end was not tested on our continuous integration server and so it has many failures like not supporting Python3. The current code has been move to its own repository. This module will not be part of the release process until some volunteer make it green on the test server.

Bug fixes & Improvements

  • issue7035: The MacOS X build since the switch to brew contained optimized code for the build machine. Now the build uses non-optimized options.
  • issue6946: The TimeDelta field uses now also the context of the Group of records to format its values. This also applies to the sum on list view.
  • issue7063: It enforces the consistency for the currency between the display digits and the rounding factor.
  • issue7058: The name attribute of the tag image can now be a field. In this case, it will display the icon from the value of the field.
  • issue6400: The currency module receives the tooltips as defined in this task.

Newsletter March 2018

$
0
0

We can see by the number of improvements and issues solved this month that the release 4.8 is approaching quickly,

Ice melting

Icon on tab

Sao, the web client, received the support of icon on tab of the forms. Meanwhile on the desktop client, the same icon on tab has been moved on the left of the label.

Stock quantity per template

The stock quantity was only computed per product because it is the column stored in the stock move. But it may be useful for some cases to compute the stock quantity per template. Indeed products from the same template share the same default unit of measure so their quantities can be summed. So issue7068 added on the products_by_location method the possibility to group by product columns like the template, but also a relate action from the template which show quantity per locations.

Spell checking

The spell checking is now activated on the web client. The spell checking can be activated on any text widget by adding the spell attribute with a PYSON expression that returns the language code.

More protections against flooding

A malicious hacker could flood the LoginAttempt table by sending failing request for different logins. Even if the size of the record is limited and the records are purged frequently. So the server limits the number of attempt also per IP network. The size of the network can be configured for each version (IPv4 and IPv6). This are only the last level of protection, it is still recommended to use a proxy and to set up IDS.

The web_user implement also the same protection.

Reset password

The administrator can now reset the password of the user with a simple click. The server will generate a random reset password which is available for 1 day by default and send it by email to the user. This reset password is only valid until the user has set a new password. It is also possible to reset this way the admin password using the trytond-admin command line tool.

Add cache when checking XML record

Tryton prevents by default to modify records that are part of the setup (which are created by XML file in the modules). This requires to make a query on the ModelData table on each modification or deletion. But usually only a few models have such records, so we could put in memory the list of models that should be checked. So this allows to skip the query for most of the models and thus save some queries.

Add depends on Button

Buttons can be defined with PYSON expressions for the invisible or readonly attributes. Some times, the developer wants to be sure that the field used in the PYSON expressions are read by the client. So a depends attributes have been added which ensure that the listed fields will be included in all the view where the button is displayed.

Remove deprecated feature on GTK+-3

As the desktop client development has switched to GTK+-3. A cleaning of deprecated features has started:

Database connection leak

The PostgreSQL backend uses a pool of connections for performance. During a load test, we has detected a leak of connections from this pool. Some code were not protected by a try/finally to ensure to put always put back the connection used.

A generic contact mechanism retrieval

Similar to the design of the addresses which can be flagged for invoice or delivery usage, the contact mechanism receive the same feature. So the code may now request a contact mechanism of a type and for a specific usage. For example, it is possible now to define which email address of a party should be used to send the invoices. The modules notification_email has been updated to use this method.

FEC export prior to closing fiscal year

It is often requested to be able to export the FEC on a non-closed fiscal year. So the issue5306 make it possible such export. In this case, the generated file will not have an official name as it is still a draft.

Tooltips

More modules have been reviewed for tooltips:

Bug fixes & Improvements

  • issue7085: The unittest for fields have been refactored to follow the best practice: Arrange, Act, Assert.
  • issue7041: The email notification module was putting in the email header the list of blind carbon copied emails.
  • issue7057: The import zip script from the country module is now Python3 compatible.
  • issue7071: Since few releases the date format from the user language was not correctly set and so the client was falling back to the system format. This is now fixed and a common method is used everywhere to ensure coherence.
  • issue7076: All ComboBox has been reviewed to ensure to disable 'scroll-event' and prevent 'move-active' when read-only.
  • issue7087: It prevents to get the same session keys when creating many session with one call. In practice, such call does not exist in standard modules.
  • issue7101: The Promotion registration was missing from the issue6827, this is now fixed. So now the shipment cost is really the unit price when computing the promotion.
  • issue7107: The shipping reference and label were kept when copying packages. But as those values come from the carrier, they should be reset.
  • issue7064: It enforces the consistency for the unit of measure between the display digits and the rounding factor.
  • issue7079: It ensures that all modules requested have been activated by the testing tools. The silent failure was often the source of time lost when writing tests.
  • issue7097: It fixes the string formatting of TrytonException under Python3.
  • issue7092: It improves the performance of Party.address_get by relying on the ORM cache instead of doing a search query. So successive calls to the method will no more perform a query to the database.
  • issue7118: With this change, trytond will not more try to delete translations when a record is deleted if it has not at least one translatable field.
  • issue7104: The shipment cost is improved to not be computed when no goods is shipped. But also in case of return sale, the original shipment cost is not re-computed.
  • issue7112: It prevents to set time converter with a value of zero because the clients do not support such configuration.
  • issue2939: We have closed a pretty old feature request which prevents to close a period if there are still running asset lines.
  • issue6931: The inventory should not remove line for inactive products as there could still be some quantity left in the location.
  • issue7011: The consignment create also invoice line when product are consumed at the production or from the production locations.
  • issue7083: The idempotency key for Stripe payment is always filled. Before it was only set if the checkout process was used.
  • issue7110: The context has a new optional key _request which contains some informations like the remote address, the HTTP host etc. Those values are correctly setup if the server run behind a proxy which set the X-Forwarded headers.
  • issue7022: The invoice lines from backorder are now correctly linked to right stock moves.
  • issue6987: The party required option is hidden for non deferral accounts because they do not support this feature.
  • issue7094: Fix the exception management in the desktop client following the refactoring from issue6907.
  • issue7120: In some cases, the SQLite backend did not create the columns with the right types.
  • issue5182: The usage of chardet to detect the encoding of HTML in the rich text widget was never fully reliable. Now we try common standard encoding and fallback to ASCII.
  • issue7106: The default search on party will now also search on contact mechanism.
  • issue7141: The API of Product.products_by_location and StockMixin._get_quantity have been changed. They no more accept a product_ids argument by only a grouping_filter. The two options were overlapping and creating errors when misused.
  • issue7159, issue7160 and issue7161: They fix the computation of price when the quantity is negative (aka return).

Foundation Budget 2018

$
0
0
Budget

Budget for 2018

The Foundation has decided to publish a budget for 2018. This is the result of requests from the community will to know what are the plans of the Foundation. Of course as the revenue of the Foundation relies only on donation, we can not guarantee that every things will be realized. Indeed we have ordered the points by priority. Each point will be activated once we have we reach its donation level.

We will like to thank everyone who donated to the foundation. Here are the donations from past years. Thanks to previous year donations, we started the redesing of the website. The first proposal is now available.

Budget points

  • 500€: Infrastructure (rental and maintenance of servers).
  • 750€: Miscellaneous management fees.
  • 1300€: Buy a new mac mini for better MacOS support.
  • 5300€: Organization of first hackathon by inviting key developers for a week-end.
  • 10000€: Organization of a documentation writing hackathon by inviting key developers and end-users for a week-end.

You can help the Foundation by making a donation. We will apreciate to get enought donations before the next tryton release, scheduled for 23th of April, in order to buy a new mac mini so we can improve the MacOS support.

Newsletter April 2018

$
0
0

To prepare the coming release 4.8, a lot of pending developments have been finalized before the development freeze. The release 4.8 is scheduled for 23rd April. Until there, we are requesting everyone to help us finding and fixing the remaining bugs. The translation process will start the 2nd April until 20th April at 20:00 CEST. You can contribute your translations on Pootle.

Spring

Erase Party

To help companies to be compliant with the right to erasure from the GDPR, a new wizard to erase a party has been developed. It erase personal information linked to the party like the name, addresses, contact mechanisms etc. It removes also those data from the history tables. But each module adds check to prevent erasure if pending documents for the party still exist.

Match against product category

All the matching criteria against product categories have been unified between all the modules. Any product category will match against itself or any parent category. This is the chosen behavior because it is the less astonishing.

Request depending on shipment method

The sale with the shipment method On Invoice Paid will create the purchase requests and/or drop shipments when the lines are fully paid. Before they were created directly on validation.

Sale reporting

The sale modules receive reports on aggregated data. The report engine allows to browse the Revenue and Number of sale per:

  • Customer
  • Product
  • Category
  • Country> Subdivision

Those data are over Period, Company and Warehouse. The reports also show a sparkline for the revenue trend which can be drilled down.

Purchase request quotation

The new module allows to manage requests for quotation to different suppliers. Each request will collect quotation information from the supplier. The preferred quotation will be used to create the purchase.

Improve reconciliation performance

The previous API to reconcile lines allowed only to create one reconciliation at a time. But as this can trigger the processing of the invoice for example, it can be a bottleneck if you are reconciling a lot of different lines like a statement can do. So the API has been improved in the most backward compatible way to allow to create many reconciliation at once.

Update chart of account

It happens that users need to customize the configuration of the chart of account that comes from a template. Until now, this would prevent any further update without loosing those customization. Now, the records that are synchronised with a template are read-only by default. A check box allows to edit the value and to remove the record from the update process.

Create second chart of account

Sometimes, user may create by mistake a second chart of account. There are very rare case when such creation is valid. As it is a complex task to correct such mistake, we added a warning when creating a second chart of account.

Spanish chart of account

The module, which was published for the first time in the last series 4.6, needs a deep cleaning. The last changes in the accounting modules raised concerns about choices made for this chart. So it was decided to temporary exclude the module from the release process and to not guarantee a migration path.

Import OFX statement

The new module account_statement_ofx implements the import of Open Financial Exchange statement.

Tax report on cash basis

The new module account_tax_cash allows to report taxes based on cash. A tax group to report on cash basis are defined on the Fiscal Year or Period. But they can also be defined on the invoices per supplier.

The implementation of this new module also improved existing modules. The tax lines are verified against modification on closed period. The registration of payment on the invoice is limited to the amount of the invoice.

New tax report definition

Until now, only one tax code was allowed per tax. This was too restrictive. For some country it was needed to create null children taxes to allow more complex reporting. Now, tax codes are no more defined on the tax but instead they contains a list of tax lines. Those lines can define the base or the amount of the tax. On the report, the lines of each tax code are summed per period.

Improve stock location browsing

When there is a very large number of location, the tree Locations Quantity become difficult to use. Especially if you are searching in which location a product is. So we added the option to open this view as a list, this way it is possible to search location by quantity of the product.

Inventory behavior for empty quantity

We found that there are two different expectation from users about the default behavior of the inventory when the quantity is not explicitly set. Some expect that the product quantity should be considered as 0. And others expect that the product quantity is not changed. So we added an option on the inventory to choose the behavior when an inventory line has no quantity.

Assignation in Supplier Shipment Return

Until now, the assignation process was not using children location but this did not work if the location was a view. So now, we assign using the children only if the location is a view.

Support same input and storage location

The supplier shipment support to receive the goods directly in the storage location. This way the invetory steps is skipped.

Create invoice for all sub-projects

Until now, only sub-projects having the same party were invoiced. With issue7096, an invoice for each different party will be created.

Fallback user for email notification

The email notification skip the recipients if the target field is empty. For example if a notification is defined on the Invoice with the Party as recipient and the Party has not an email address, then the invoice will not be sent. By adding a fallback recipients, the email is sent to specific user email which could be a secretary which will be in charge of sending it or a mailbox for a printer which will print it automatically etc.

Limit the expansion of tree

For now, it will no more be possible to expand a node that have too much records. This is needed to prevent to consume all the resources of the client. When such case happen, the client will switch to the form view where normally the children will be displayed in a list view.

Button registration

To ensure that all buttons may have their access rights configured. A new test has been added to ensure that all buttons are registered. We added also the string, help and confirm attributes to ir.model.button. So they can be shared between different views.

Expandable group widget

The group widget can be defined as expandable by adding the attribute expandable. If the value is 1, it starts expanded and if the value is 0, it starts unexpanded. Both clients support it.

Reset changes in pop-up

Until now, when changes on a record from a pop-up window were cancelled, the client reset it using the stored value from the server or delete it if it was not yet stored. Now, the clients will restore the record to the state it had before opening the pop-up.

Stability in rendering of web client

We have pushed many small improvements to sao, the web client, which fixes small jump of elements of the page:

Better keyboard navigation

The buttons of widget are now skipped from tab navigation in sao, the web client. The actions of those buttons are available via keyboard shortcuts.

Position and count on web client

The web client receives finally the label that positions the selected record in the list and shows the number of record in the list.

Editable list view

The management of editable list/tree has been completely reworked. Now the full row become editable on the first click. The focus is kept on the line if it is not valid. The edition is stopped when the user click outside the view.

Tooltips

More modules have been reviewed for tooltips:

Deactivated records

The clients shows next to the search input a toggle button for all model that can be deactivated. This allows the user to make search against deactivated records and to now that such functionality exists.

Simplified API for session management

The previous API was based on the ORM methods. This makes unnecessary more complicated to implement alternative session manager. So we created a simplified API agnostic to the ORM: new, remove, check and reset.

Exclude constraint

We have added the support for *EXCLUDE* constraints. An EXCLUDE constraint is a kind of extension to the UNIQUE constraint which can be applied on a subset of the rows and on expression instead of only columns. For more information, please read the EXCLUDE documentation of PostgreSQL.

This new constraint has been implemented on party category name to ensure that top level (parent IS NULL) names are also unique.

It has also replaced the unique email of web user to only applies to the active user.

Conditional class registration

It is now possible for a module to register class only if a specified sets of modules is activated. This replace the silent skip that existed previously. Existing modules that were using this silent skip must be updated to use the depends keyword otherwise they will fail.

Conditional field in XML

Sometimes a module depends optionally on another but it may need to fill in the XML record a field that is defined on the optional module. We added a depends keyword on the field which makes it ignored if the list of modules is not activated.

Deactivation of records

A new mixin has been added to add logical suppression to a Model. But also we ensure that the client is aware that the model is deactivatable. All the modules have been updated to use this new mixin.

Consistent context usage in proteus

Since the introduction of context management in proteus, the client library, the context management was taken from different places in an inconsistent way. We changed the library to always use the context and configuration at the time the instance was created. Some testing scenario may need some adjustment as they could rely on the previous behavior.

Bug fixes & Improvements

  • issue7183: It ensures that the legal notice and description of the taxes are correctly translated using the party language.
  • issue7163: It fixes the evaluation on the client sides for domain like [('lines', '=', None)] when lines is empty.
  • issue7164: The web client was wrongly sending deleted or removed lines for on_change calls.
  • issue7171: The module sale_subscription was not adding the Subscriptions to the Replace Party wizard.
  • issue7142: It adds missing modification check of the move when a line is created.
  • issue6560: The deposit business logic has been moved from the wizard to the invoice model to ease usage from the code.
  • issue3516: Improve the update of dunning level by removing write call from a loop.
  • issue7072: It rationalize and unify how context is built in the clients.
  • issue6833: The quantities are correctly synchronized between the supplier and customer moves of the drop shipments.
  • issue7078: We added a domain on the account children to ensure to have a consistent behaviour with the constraint from the parent.
  • issue7153: Now, get_reconcile_lines_for_amount returns actually the best combination of the lines.
  • issue7205: Clear cache of all ModelSingleton records as they are all the same but just the id change.
  • issue7175: It removes the silent failure option in the TableHandler.
  • issue7176: We added to sao, the web client, the same date and date-time widgets shortcuts as for tryton, the desktop client.
  • issue7143: The wizard runtime context is added to the wizard context.
  • issue6947: The sum list feature has been implemented to sao, the web client.
  • issue7201: It prevents float precision error after the division by factor.
  • issue5925: We upgraded sao, the web client, to use use the major version 3 of jQuery.
  • issue7172: The email for web user is only required for active user.
  • issue7238: The field description (aka label) is used as record name when available.
  • issue7117: The name of the context model is added to the context itself.
  • issue7241: The toolbar of read-only richtext widget is now correctly disabled.
  • issue7222: The asset lines are read-only as they are managed by the workflow.
  • issue6747: Income statement opens the general ledger.
  • issue7240: It fixes the time in the evaluation of PYSON.DateTime on sao.
  • issue7203: It applies the tax rule on standalone invoice line.
  • issue7249: A new test ensures that depends on _parent_ contains also the relation.
  • issue7248: Manage modal closing for Form and Wizard.
  • issue7262: A relate is used instead of a wizard to open the product cost history. So the window title will be more accurate.
  • issue7148: Disable button when clicked to prevent multiple execution.
  • issue7148: Create record with a synchronous call to avoid multiple creation.
  • issue7253: Extend the no stock move check from Product Template to the Product.
  • issue7263: Fix DATE_TRUNC custom implementation for SQLite.
  • issue7250: Add BC47 transformer and use it for toLocaleString and lang attribute.
  • issue7287: A deep copy of the context is done before processing the RPC. This prevent side effect when the call must be repeated due to database operational error.
  • issue7267: The French chart of account has the proper kind for the stock accounts.

New Tryton release 4.8

$
0
0

We are proud to announce the 4.8 release of Tryton. This is the last release that will support Python2, as decided on the last Tryton Unconference, next versions will be only Python3 compatible.

In this way we introduced a new way of dynamic reporting. For now it's only available on sale module, but the plan is to extend it to more modules in newer releases. The effort to make all the Desktop client features available on the Web client has continued on this release. This resulted in fixing many small details and adding some missing features on the web client. Of course this release also includes many bug fixes and performance improvements. We added Persian as an official language for Tryton.

As usual the migration from previous series is fully supported. Some manual operation may be required, see migration from 4.6 to 4.8.

Major changes for the user

  • The clients show a toggle button next to the search input for all models that can be deactivated. This allows the user to search for deactivated records and to know that the model is deactivable.
Sao list with inactive records option
  • Until now, when changes on a record from a pop-up window were cancelled, the client resets it using the stored value from the server or deletes it if it was not yet stored. Now, the clients will restore the record to the state it had before opening the pop-up, which is a more expected behaviour for the user.
  • It's no longer possible to expand a node that has too much records. This is needed to prevent to consume all the resources of the client. In such case the client will switch to the form view where normally the children will be displayed in a list view which supports loading records on the fly when scrolling.
  • To help companies to be compliant with the right to erasure from the GDPR, a new wizard to erase a party has been developed. It erases personal information linked to the party like the name, addresses, contact mechanisms etc. It removes also those data from the history tables. Each module adds checks to prevent erasure if pending documents for the party still exist.
  • A name has been added to the contact mechanism. It can be used for example to indicate the name of the recipient of an email address or to distinguish between the phone number of reception, accounting and warehouse.
  • The default search on party will now also use contact mechanism values.
  • Similar to the design of the addresses which can be flagged for invoice or delivery usage, the contact mechanism received the same feature. So the code may now request a contact mechanism of a specific type. For example, it is now possible to define which email address of a party should be used to send the invoices.
  • All the matching criteria against product categories have been unified between all the modules. Any product category will match against itself or any parent category. This is the chosen behavior because it is the least astonishing.

Desktop

  • The desktop client already has mnemonic for all button but now they are also added to all field labels. This allow to jump quickly to any visible field by pressing ALT + <the underlined key>.
Tryton form with mnemonic
  • The desktop client has a new option to check if a new bug fix version has been published. It takes care of the notification on Windows and MacOS.
Tryton with the notification of a new version available
  • The Many2One fields in editable tree now show the icons to open the related record or clear the selection. This unifies the behaviour with the form view.
Tryton with Many2One icons on editable tree

Web

  • Numeric values are now formatted with the user locale and use an input of type 'number' for editing. This allows to have the right virtual keyboard on mobile devices.
  • The web client finally receives the label that positions the selected record in the list and shows the number of records in the list.
Sao toolbar with selected record label
  • The spell checking is now activated by the browser, so fields with the spell attribute defined will have spell checking activated.
  • The buttons of widgets are now skipped from tab navigation in the web client. The actions of those buttons are available via keyboard shortcuts.
  • The management of editable list/tree has been completely reworked. Now the full row becomes editable on the first click. The focus is kept on the line if it is not valid. The editing is stopped when the user clicks anywhere outside the view.
  • The sum list feature has been implemented in sao.
Sao sum of move's credit and debit
  • The same shortcuts of the Date and DateTime widgets available on tryton can now be used on web client.
  • Many2One fields are displayed on tree view as clickable link which opens the related record form view to allow quick edition.

We have pushed many small improvements which fix small jump of elements of the page:

Accounting

  • The general ledger accounts are now opened from the Income Statement rows. This allows to see the details of the computed amounts.
  • It happens that users need to customize the configuration of the chart of account that comes from a template. Until now, this would prevent any further update without loosing this customization. Now, the records that are synchronized with a template are read-only by default. A check box allows to edit the value and thus remove the record from the update process.
  • Users may create a second chart of account by mistake. There are very rare cases when such creation is valid. As it is a complex task to correct such mistake, we added a warning when creating a second chart of account.
  • Now an error is raised when closing a period if there are still asset lines running for it.
  • Until now, only one tax code was allowed per tax. This was too restrictive. For some country it was needed to create null children taxes to allow more complex reporting. Now, tax codes are no longer defined on the tax but instead they contain a list of tax lines. Those lines can define the base or the tax amount. On the report, the lines of each tax code are summed per period. All chart of accounts have been updated to follow this design.

Tax report on cash basis

The new account_tax_cash module allows to report taxes based on cash. The groups of taxes to report on cash basis are defined on the Fiscal Year or Period. But they can also be defined on the invoices per supplier.

The implementation of this new module also improved existing modules. The tax lines of closed period are verified against modification. The registration of payment on the invoice is limited to the amount of the invoice.

Spanish chart of account

The module, which was published for the first time in the last series 4.6, needs a deep cleaning. The last changes in the accounting modules raised concerns about choices made for this chart. So it was decided to temporary exclude the module from the release process and to not guarantee a migration path. The work to fix the module has started and we expect to be able to release a fixed version soon.

Invoicing

  • The description on invoice line is now optional. If a product is set the invoice report will show the product name instead of the line description.
  • The reconciliation date is now shown on the invoice instead of the Boolean reconciled. This provides more information for a single field.
  • The Move lines now show which invoice they pay.
  • An error is raised when trying to overpay an invoice.

Payment

A cron task has been added that will post automatically the clearing moves after a delay. The delay is configured on the payment journal.

Stripe Payments

  • If the customer disputes the payment, a dispute status will be update on the Tryton payment. When the dispute is closed, the payment is updated according if the company wins or loses.
  • Some missing charge events has been added. In particular, the refund event which may update the payment amount when it is partial.

Statement

account_statement_ofx

This new module adds the automatic import of OFX file as statement. The OFX format is a common format which is supported in various countries, like the United States.

Stock

  • The stock quantity was only computed per product because it is the column stored in the stock move. But it may be useful for some cases to compute the stock quantity per template. Indeed products from the same template share the same default unit of measure so their quantities can be summed. This release adds on the products_by_location method the possibility to group by product columns like the template, but also a relate action from the template which show quantity per locations.
  • When there is a very large number of locations, the tree Locations Quantity becomes difficult to use. Especially if you are searching in which location a product is. So we added the option to open this view as a list, this way it is possible to search location by quantity of the product.
List of locations with product stock
  • We found that there are two different expectation from users about the default behavior of the inventory when the quantity is not explicitly set. Some expect that the product quantity should be considered as 0. And others expect that the product quantity is not changed. So we added an option on the inventory to choose the behavior when an inventory line has no quantity.
  • Until now, the assignation process for supplier return shipment was not using children location but this did not work if the location was a view. Now we assign using the children if the location is a view.
  • The supplier shipment support to receive the goods directly in the storage location. This way the inventory step is skipped.

Project

  • Until now, only sub-projects having the same party were invoiced. Now an invoice for each different party will be created.

Sale

  • The description on sale line is now optional. This prevents to copy the product name to sale description as it is now shown on the sale report.
  • In case a different product is shipped to the customer if the invoice method is based on shipment, this shipped product will be used for the invoice. Previously only the initially sold product was always used.
  • Now it is possible to edit the header fields thanks to the new Wizard which takes care of recompute the lines according to the changes.
Sale with modify wizard running
  • Reports on aggregated data has been added to the sale module. The report engine allows to browse the Revenue and Number of sale per:

    • Customer
    • Product
    • Category
    • Country> Subdivision

    Those data are over Period, Company and Warehouse. The reports also show a sparkline for the revenue trend which can be drilled down.

Sales per customer with sparklinesSale revenue per customer graph
  • The sale with the shipment method On Invoice Paid will create the purchase requests and/or drop shipments when the lines are fully paid. Before they were created directly on validation.
  • The shipment cost is not more computed when returning goods.

sale_promotion_coupon

This new module allows to create coupons that are used to apply a promotion on the sale. The coupon can be configured to be usable only a specific number of times globally or per party.

Purchase

  • The product supplier can be used now on the purchase line. This allows to display the supplier definition of this product.
  • Now it is possible to edit the header fields thanks to the new Wizard which takes care of recompute the lines according to the changes.
  • The description on purchase line is now optional. This prevents to copy the product name to purchase description as it now shown on the purchase report. The same change have been applied on purchase requests and requisitions.
  • In case a different product is received from the supplier if the invoice method is based on shipment the received product will be used on the invoice. Previously the purchased product was always used.
  • The user is warned if he tries to confirm a purchase order for a different warehouse than the warehouse of the linked purchase request.

Purchase request quotation

  • This new module allows to manage requests for quotation to different suppliers. Each request will collect quotation information from the supplier. The preferred quotation will be used to create the purchase.

Notification

  • Now it is possible to filter which type of email to use for sending the notification.
  • The email notification skip the recipients if the target field is empty. For example if a notification is defined on the Invoice with the Party as recipient and the Party has not an email address, then the invoice will not be sent. Adding a fallback recipients the email is sent to specific user email which could be a secretary which will be in charge of sending it or a mailbox for a printer which will print it automatically etc.

Tooltips

The following modules have received tooltips:

  • account_credit_limit
  • account_dunning
  • carrier
  • carrier_weight
  • currency
  • product_attribute

Major changes for the developer

  • Starting from this release the tryton client will only support the version 3 of GTK+-3. This will allow to migrate it to Python3.
  • The group widget can be defined as expandable by adding the attribute expandable. If the value is 1, it starts expanded and if the value is 0, it starts unexpanded. Both clients support it.
  • To ensure that all buttons may have their access rights configured a new test has been added. We added also the string, help and confirm attributes to ir.model.button. So they can be shared between different views.
  • The monetary format is now defined on the language instead of the language. According to User Experience best practices the amount should be displayed in the user language format event if it's a foreign currency.
  • It's now possible to manually define an exceptional parent of a language. This allows to use a custom monetary format for each country of the Latin American language.
  • Dict fields are now stored using it's canonical representation. This allows to make equity comparison between them.
  • The language formatting has been simplified to expose the instance methods: format, currency and strftime. A classmethod get is added to return the language instance of the code or the transaction language.
  • The previous API for session management was based on the ORM methods. This makes more complicated to implement alternative session manager. We created a simplified API agnostic to the ORM: new, remove, check and reset.
  • If the database has the required features (for PostgreSQL: the unaccent function), the ilike search will be performed on unaccented strings per default on all Char. This can be deactivated by setting the attribute Char.search_unaccented to False.
  • We have added the support for EXCLUDE constraints. An EXCLUDE constraint is a kind of extension to the UNIQUE constraint which can be applied on a subset of the rows and on expression instead of only columns. For more information, please read the EXCLUDE documentation of PostgreSQL.
  • It is now possible for a module to register classes to the pool only if a specified sets of modules is activated. This replaces the previous silent skip. Existing modules that were relying on the old behaviour must be updated to use the depends keyword otherwise they will crash at start up.
  • Sometimes a module depends optionally on another but it may need to fill from the XML record a value for a field that is defined on the optional module. We added a depends keyword on the field which ignores it if the list of modules is not activated.
  • The clients now support the definition of a specific order and context when searching from a field like Many2One, Reference, One2Many etc. This is useful to have preferred record on top of the list of found records.
  • A new mixin has been added to add logical suppression to a Model. But also we ensure that the client is aware that the model is deactivable. All the modules have been updated to use this new mixin.
  • The context model name is now available on the screen context. This allows for example to change the behaviour of a wizard depending on the context model.
  • Tryton prevents by default to modify records that are part of the setup (which are created by XML file in the modules). This requires to make a query on the ModelData table on each modification or deletion. But usually only a few models have such records, so we now put in memory the list of models that should be checked. This allows to skip the query for most of the models and thus save some queries.
  • Buttons can be defined with PYSON expressions for the invisible or readonly attributes. Some times, the developer wants to be sure that the field used in the PYSON expressions are read by the client. A depends attributes have been added which ensure that the listed fields will be included in all the view where the button is displayed.
  • The administrator can now reset the password of the user with a simple click. The server will generate a random reset password which is available for 1 day by default and send it by email to the user. This reset password is only valid until the user has set a new password. It is also possible to reset this way the admin password using the trytond-admin command line tool.
  • The context has a new optional key _request which contains some information like the remote address, the HTTP host etc. Those values are correctly setup if the server run behind a proxy which set the X-Forwarded headers.
  • A malicious hacker could flood the LoginAttempt table by sending failing request for different logins. Even if the size of the record is limited and the records are purged frequently. The server now limits also the number of attempt per IP network. The size of the network can be configured for each version (IPv4 and IPv6). This are only the last level of protection, it is still recommended to use a proxy and to set up IDS.
  • The name attribute of the tag image can now be a field. In this case, it will display the icon from the value of the field.
  • Now it is possible to extend with the same Mixin all the existing pool objects that are subclasses of a target. An usage example is to extend the Report.convert method of all existing reports to add support for another engine.
  • We have decided to remove the MySQL backend from the core of Tryton. The back-end was not tested on our continuous integration server and so it has many failures like not supporting Python3. The current code has been move to its own repository. This module will not be part of the release process until some volunteer make it green on the test server.
  • The current form buttons are automatically added to the toolbar under the action menu for fast access. Now the developer can define under which toolbar menu the button will appear.
  • Tryton now uses LibreOffice instead of unoconv for converting between report formats. There were some issues with unoconv, which where fixed by using libreoffice directly. Now we publish also docker images with the suffix -office which contains all the requirements for the report conversion.
  • A new Currency.currency_rate_sql method has been added which returns a SQL query that produces for each currency the rate, start_date and end_date. This is useful to get a currency rate in a larger SQL query. This method uses the window functions if available on the database back-end to produce optimized query.
  • Since the introduction of context management in proteus, the client library, the context management was taken from different places in an inconsistent way. We changed the library to always use the context and configuration at the time the instance was created. Some testing scenario may need some adjustment as they could rely on the previous behavior.

Accounting

  • The previous API to reconcile lines allowed only to create one reconciliation at a time. But as this can trigger the processing of the invoice for example, it can be a bottleneck if you are reconciling a lot of different lines like a statement can do. So the API has been improved in the most backward compatible way to allow to create many reconciliation at once.
  • The invoice now has a method to add and remove payments which should always be used.

Web

  • The limit of authentication request per per network is also applied to the web users.
  • Thanks to the implementation of the exclude constraint, the uniqueness of the email of web user only applies to the active users.

Translation Release for series 4.8

$
0
0

Due to a mistake in the process of generating the translations, the initial release of series 4.8 contained some unstranslated strings. We decided to make new set of releases with the correct translations even if it breaks the rule of no database updates for bug fix releases.

If you have already updated your server to the series 4.8, you need to also update the database for this bug fix release. Sorry for the inconvenient.

This release additionaly includes the Spanish Chart of Accounts which has cleaner design and is now available for the 4.8 series.

Newsletter June 2018

$
0
0

The development of Tryton is back on the road after the release of the 4.8 series. Here are the major changes of this last month.

A Sunny June Iowa Day

Changes for the user

Allow to edit account move maturity date

The maturity date represents information which has no impact on the accounting but on business only. So it is more flexible to allow to edit it.

Invoice shipment costs only, if there is a shipment

When the cost method is on order and the invoice method is on shipment, the shipment cost is only invoiced when a shipment is done. Before there was an issue with this configuration.

Same input and storage location for customer return shipment

Following similar changes for customer and supplier shipments, the customer return shipments support also to use the same input and storage location. In such case, on reception the shipment is directly marked as done.

URL in web client

The web client sao now supports URLs. This allows users to communicate information by sharing URLs. The syntax is quite similar to the one of the desktop client since the 'index.html' has been removed but uses a URL-hash instead of the full path due to the single page design. The URL is updated to correspond to the active tab. The hash part can be changed by the user (using copy/paste) to open the corresponding tab. This allows to navigate back in the history of the browser. The client parses the URL hash on login and launches the corresponding action.

Web client session

The sessions are now stored in the localStorage of the browser. This means that the session per server and database can be shared between tabs and survive a reload of the page.

Better space management in web client

We have improved the navigation bar to provide more spaces to the tab list. We use an icon for the logout instead of a longer text. Now the favorites menu is a drop down of the global search. The toggle menu and Tryton brand are merged. Also it is now possible to toggle the menu for any size of the screen.

web client with more spaces

Open Many2One and Reference in new web client tab

It is now possible to open the target record in a new tab instead of a popup by pressing the CTRL key when clicking on the "open" button. This gives access to the actions, relates and reports for this record like the right-click on desktop client does.

Removal of single windows executable

Since we have the web client sao, the need of a Windows executable without installation is very low. More over it required administration rights to be run. So we have decided to stop publishing it in future versions.

Uninstall previous version

On windows, the installer required to uninstall previous version before allowing to install a new one. In order to simplify the process, now it asks to uninstall the previous version of the same series. In silent mode, this is done automatically without any required intervention of the user which ease automatic deployment.

Export CSV

The export CSV window has been improved by moving the predefined exports under the buttons that manage them. This way the view is easier to understand and the predefined list is not the default focused widget (which created inconsistent selection state).

Export CSV predefined desktop windows

Display current date on document

Draft documents, that are sent to customer, have not yet a date. For example a sale quotation does not have the sale date filled but the document should have at least the date when it was printed to define when starts the validity of the quotation. So we changed the templates to print the current date if no date is yet filled.

Changes for the developer

Add sql_cast on Field

The new method Field.sql_cast(expression) provides the database specific cast of the field values in SQL expressions.

Recursive common table expression for child_of/parent_of operators

For the evaluation of the child_of and parent_of domain operator, we used recursive ORM loops (or Modified Preorder Tree Traversal when available). Now all supported databases support the recursive common table expression (CTE), so we could use it as default implementation. Regarding performance recursive CTE is not better than MPTT but still avoid many round-trip compared to the recursive ORM loop.

Tree Mixin

We added a new Mixin as core feature. It provides all the needed features to manage record names in a tree structure and to check against loops. All the modules having such design have been updated to benefit from this generic implementation that is fully tested.

Limit database per host name

The Tryton server works on multiple database names (one way to support multi-company). But in shared environment, the list of database names can be very large and can leak information. For that, we added a new feature which allows to filter the list of database names per host name.

Default language in report

Until now, almost all reports were using English as fallback language because the call to set_lang required a language code and it was easier to hard-code 'en' than retrieving the default language of the database. Now the set_lang method allow as argument None or an instance of ir.lang. When the value is None, it uses the default language of the database. This is a more consistent behavior with the rest of the application. We have updated all the reports to use this new feature.

Extending depends on methods

The depends on methods was limited to only on_change or on_change_with methods. But it showed some limitations when trying the share common code between different on_change/_with methods. So we extended and generalized the behavior. Now we can define dependencies on any methods and use the @fields.depends decorator on any method.

Newsletter June 2018

$
0
0

@ced wrote:

A Sunny June Iowa Day by Carl Wycoff under CC BY 2.0

Changes for the user

Allow to edit account move maturity date

The maturity date represents information, which has no impact on the accounting, but on business, only. So it is more flexible to allow to edit it.

Invoice shipment costs only, if there is a shipment

When the cost method is on order and the invoice method is on shipment, the shipment cost is only invoiced when a shipment is done. Before there was an issue with this configuration.

Same input and storage location for customer return shipment

Following similar changes for customer and supplier shipments, the customer return shipments support also to use the same input and storage location. In such case, on reception the shipment is directly marked as done.

URL in web client

The web client sao now supports URLs. This allows users to communicate information by sharing URLs.
The syntax is quite similar to the one of the desktop client since the ‘index.html’ has been removed but uses a URL-hash instead of the full path due to the single page design.
The URL is updated to correspond to the active tab. The hash part can be changed by the user (using copy/paste) to open the corresponding tab. This allows to navigate back in the history of the browser.
The client parses the URL hash on login and launches the corresponding action.

Web client session

The sessions are now stored in the localStorage of the browser. This means that the session per server and database can be shared between tabs and survive a reload of the page.

Better space management in web client

We have improved the navigation bar to provide more spaces to the tab list. We use an icon for the logout instead of a longer text. Now the favorites menu is a drop down of the global search. The toggle menu and Tryton brand are merged. Also it is now possible to toggle the menu for any size of the screen.

Open Many2One and Reference in new web client tab

It is now possible to open the target record in a new tab instead of a popup by pressing the CTRL key when clicking on the “open” button. This gives access to the actions, relates and reports for this record like the right-click on desktop client does.

Removal of single windows executable

Since we have the web client sao, the need of a Windows executable without installation is very low. More over it required administration rights to be run. So we have decided to stop publishing it in future versions.

Uninstall previous version

On windows, the installer required to uninstall previous version before allowing to install a new one. In order to simplify the process, the installer ask to uninstall the previous version of the same series. In silent mode, this is done automatically without any required intervention of the user which ease automatic deployment.

Export CSV

The export CSV window has been improved by moving the predefined exports under the buttons that manage them. This way the view is easier to understand and the predefined list is not the default focused widget (which created inconsistent selection state).

Display current date on document

Draft documents, that are sent to customer, have not yet a date. For example a sale quotation does not have the sale date filled but the document should have at least the date when it was printed to define when starts the validity of the quotation.
So we changed the templates to print the current date if no date is yet filled.

Changes for the developer

Add sql_cast on Field

The new method Field.sql_cast(expression) provides the database specific cast of the field values in SQL expressions.

Recursive common table expression for child_of/parent_of operators

For the evaluation of the child_of and parent_of domain operator, we used recursive ORM loops (or Modified Preorder Tree Traversal when available).
Now all supported databases support the recursive common table expression (CTE), so we could use it as default implementation.
Regarding performance recursive CTE is not better than MPTT but still avoid many round-trip compared to the recursive ORM loop.

Tree Mixin

We added a new Mixin as core feature. It provides all the needed features to manage record names in a tree structure and to check against loops. All the modules having such design have been updated to benefit from this generic implementation that is fully tested.

Limit database per host name

The Tryton server works on multiple database names (one way to support multi-company). But in shared environment, the list of database names can be very large and can leak information. For that, we added a new feature which allows to filter the list of database names per host name.

Default language in report

Until now, almost all reports were using English as fallback language because the call to set_lang required a language code and it was easier to hard-code ‘en’ than retrieving the default language of the database.
Now the set_lang method allow as argument None or an instance of ir.lang. When the value is None, it uses the default language of the database. This is a more consistent behavior with the rest of the application. We have updated all the reports to use this new feature.

Extending depends on methods

The depends on methods was limited to only on_change or on_change_with methods. But it showed some limitations when trying the share common code between different on_change/_with methods. So we extended and generalized the behavior. Now we can define dependencies on any methods and use the @fields.depends decorator on any method.

Posts: 1

Participants: 1

Read full topic

Newsletter July 2018

$
0
0

@ced wrote:

This month, the biggest task was to migrate the full code base of Tryton to Python 3. So the next release 5.0 will be only supported by Python 3.4 or later.

The nap by Vincent Van Gogh

Changes for the user

Don’t show search window for single result in Many2Many

When the user fill the search entry of a Many2Many for which the search result is a single record, we do not show any more the search window but add it directly. This is the same behavior as for the Many2One.

Add some margin on modal in the web client

In previous change, we made modal taking 100% of the width. But it may be confusing for the user to understand that it is a modal, so we have restored a small margin.

Shortcut reworked

Some shortcuts were in conflict with existing one from the OS or the browser. So we reworked them to minimize the overlap but keep them efficient.

Product description on subscription

Like the other documents, the subscription line does not copy the product description anymore and so reduce the duplication of data.

Removal of accounting on product

In order to have a better privilege separation between the accounting and the product manager, we removed all accounting configuration from the product and used only the accounting category to define them. So only a member of the accounting group can edit them.
This requires that prior to the migration to 5.0, all products must be setup to use an accounting category.

Prevent to modify lot

If the lot has been already used for a stock move, we forbid to change the product attribute of the lot in order to keep the integrity of the data.

Allow to configure the date of depreciation move

We added two new configurations for depreciation of assets:

  • The day of the month: First or Last
  • The month (when depreciation is yearly)

Import the statement format AEB43

The AEB43 is a format from the Spanish Association of Banks. The new module account_statement_aeb43 allow to use the standard wizard to import AEB43 files as statements.

Changes for the developer

Calendar view trigger on_change

When a new record is created from a calendar view, the start date is automatically set. Now this assignation trigger a on_change call.

Use context for windows suffix

When a tab is open from selected records, the client append automatically the name of those records to the title of the tab. The RPC call to get the record names uses now the context of the tab opened.

Better cleaning of ir.model and ir.model.field

The cleaning was run after the registration of each model but per module. So if a model was registered multiple times in the same module, the late fields were deleted before being re-create. This was an issue if they were referenced as foreign key in another table. We clean now only once after the initialization of all the modules.

Graph dependency resolution

We simplified the algorithm that resolve the graph dependency from being exponential to linear. We registered an improvement of 80% on the time for the 122 standard modules.

Compute production cost at the end

Instead of setting the theoretical cost on the produced product at the beginning, we set it at the end using the final cost which will include the cost of the actual work etc.

The domain is no more validated for Function field

We consider that it is the responsibility of the underlying storage to ensure the validity of the data. So we do not validate the domain on Function field. This reduces the time of record validation. Another side effect is to allow to set a domain on Function field without the need to have a searcher method.

Sao supports the width attribute on tree view

The support of width attribute was missing in sao, the web client. This is no more the case. Developers can now rely on it to design better views.

Support view_id in switch client action

The client action switch, which had only a view_type argument, accepts now also a view_id. When it is set the client will switch to this exact view and it will fetch it from the server if needed.

Improve client loading strategy

The strategy has been improved to take into account to eagerly load only the fields that are on the same view. This new strategy is mainly useful when multiple form views are defined.

Simplify start/end date on subscription line

We made the start date required on the line and fill it by default with the start date of the subscription.

Copy return new records in the same order

This assumption is used many times in the modules but it was not guarantee by the code nor the documentation. Now we ensure thanks to a unit test that the order of returned records follows the order of the input records. This change will be back-ported to all supported branches even if it changes the API because it fixes bugs in some modules.

Improve record rules validation

As the rules may depend on relational fields, we validate them after having written those fields. Also on write, we checked the rule before the modification but not after. So it was possible for a user to modify a record that he will no more be allowed to modify it back. Now, we check the rules also after the modification.

Add support for (i)like operator for domain validation

The clients pre-validate the records by evaluating the domain. Until now like and ilike operators were always evaluated as valid. But it is no more the case with the implementation of the operators as regular expressions.

Posts: 1

Participants: 1

Read full topic

Newsletter August 2018

$
0
0

@ced wrote:

This month, progress has been made on the user interface and on increasing the performance.

The Sower by Vincent Van Gogh

Changes for the user

Limit size of titles

The titles of the tabs, wizard or form can be constructed from multiple sources. But the result may be too big to fit correctly on the screen. We ellipsize them when they are larger than 80 chars and we display the full title as tool-tip.

Show number and reference

The record name of the invoice, sale and purchase shows now the document number but also the reference number (between square brackets). This ease the work of accountant when reviewing accounting moves and their origins.

New module product_price_list_parent

The product_price_list_parent module adds a Parent to the price list and the keyword parent_unit_price for the formula which contains the unit price computed by the parent price list.
With the module, it is possible to create cascading price lists.

New header bar

The desktop client uses an header bar to provide global features like the configuration menu, the action entry and the favorites. This gives more vertical spaces for the application.

Grace period after confirmation purchase or sale

We added a configurable grace period to the confirmation of purchase and sale. This period allow to reset to draft the order after it was confirmed but before the automatic processing. This feature works only if Tryton is configured with worker queue.

Counting wizard for inventory

We added a wizard on the inventory to ease the counting of product. The wizard asks for the product then for the quantity to add.
If the rounding of the unit of measure is 1, then the default value for the added quantity is also 1. This is to allow fast encoding when counting units.

New module for production outsourcing

The production outsourcing module allows to outsource production order per routing. When such outsourced production is set to waiting, a purchase order is created and its cost is added to the production.

New module for unit on stock lot

The stock_lot_unit module allows to define a unit and quantity on stock lot.
Lots with unit have the following properties:

  • no shipment may contain a summed quantity for a lot greater than the quantity of the lot.
  • no move related to a lot with a unit may concern a quantity greater than the quantity of the lot.

Changes for the developer

Fill main language in configuration

At the database initialization, the main language defined by the configuration files is stored in the ir.configuration singleton.

Validation of Dictionary field values

We add a domain field to the dictionary schema. It is validated using the dictionary value on the client side only.

PYSON is more flexible with Boolean

The PYSON syntax is strongly typed to detect type error earlier. But for developer, it can be annoying to cast expression into Boolean for If, And and Or operators. We changed their internal to automatically convert the expression into a Boolean when needed.

Reduce new transaction started by Cache

For performance reason, we improved the Cache to not start a new transaction when it is not needed. We also delayed the synchronization of the cache between host to 5 minutes.

Stop idle database connection pool

For the PostgreSQL backend, we use a connection pool which keep by default 1 connection open. But on setup with a lot of database keeping this connection can be too expensive especially if it is almost never used. Now after 30 minutes of unused the pool is closed which free the connections.
The pool for template1 does not keep any connection at all in order to avoid lock when database is created.

Using subrepository

We started an experiment to replace hgnested by subrepository. The main repository is available at tryton-env. If the result is positive, hgnested will be deactivated on hg.tryton.org.

Use of GtkApplication

The desktop client is using GtkApplication to manage the initialization, the application uniqueness, the menus and URL opens.
Now the client asks before starting for the connection parameters which can no more be changed without closing or starting a new application. The custom IPC has been replaced by the GtkApplication command line signal management.

Improve index creation

It is now possible to create index with SQL expression (instead of only columns) and with where clause. This allow to create indexes tailored for some specific queries.
There is only one limitation with the SQLite backend which can not run the creation query if it has parameters. In such case, no index is created and a warning is displayed.

Add accessor for TableHandler

In the same way as we have __table__ method to retrieve the SQL table of the ModelSQL, we added __table_handler__ method to retrieve an instance of TableHandler for the class. This simplify the code to write to make modification on the table schema like creating an index or make a migration.

Transactional queue

The first result of the crowed funding campaign of B2CK landed in Tryton.
Tryton can be configured to use workers to execute tasks asynchronously. Any Model method can be queued by calling it from the Model.__queue__ attribute. The method must be an instance method or a class-method that takes a list of records as first argument. The other arguments must be JSON-ifiable.
The task posting can be configured using the context variable: queue_name, queue_scheduled_at and queue_expected_at. The queue dispatches the tasks evenly to the available workers and each worker uses a configurable pool of processes (by default the number of CPU) to execute them. The workers can be run an a different machine as long as they have access to the database.
If Tryton has no worker configured, the tasks will be run directly at the end of the transaction.

The processing of sales and purchases have already been adapted to use the queue.

Support of Python 3.7

The version 3.7 of Python has been released about 1 month ago. The development version of Tryton has been updated to support it. So this version of Python will be supported on the next release.

Posts: 1

Participants: 1

Read full topic

Newsletter September 2018

$
0
0

@ced wrote:

This is the last month before the long term release 5.0. So many ongoing development has finally landed in Tryton.

Changes for the user

Style default button

The default buttons on desktop client have the style of suggested action.
Tryton login window

Use of message dialog

All the message dialog of the desktop client uses now the GTK MessageDialog. This unify the behavior with other GTK application.

Better dialog size

Instead of using the same size of the parent window which confused some users. Instead we let GTK compute the natural size of the dialog depending of the content. But this requires to deactivate the scrolled window. So wizard that displays full form should be run in tab instead of dialog.

New icons

We replaced the tango icons for which we missed many for business modules by a subset of the Material Icons. We also took the opportunity to curate and rationalize the list of default icons.


New party name on address

Sometimes it is needed to store on a party an address that is not the real address of the party. So his name can not be used as the name on the mailbox. So we added an optional “Party Name” on the address which is used if filled to format the address instead of the name of the linked party and the last one will be used as the attention name.

Fall-back email for dunning

When an email must be sent for dunning, the party may not have an email configured. In this case, we can now configure a fall-back address to which the email will be sent. It may be the address of the secretary for example which will be forward the dunning to the party with the proper mechanism.
The type of email can be also configured at the dunning level. In such way that they are sent to the invoice email.

Asset subscribed

The sale_subscription_asset module extends the Subscription to store which assets are rent.
The user can configure a subscription service to require an asset by defining which the lot are available. Tryton display also the lot currently available for each service.
On subscription line for such service, it is possible to reserve an asset by setting its lot number. The lot becomes required to run the subscription.
Tryton ensure that a lot can be rent only once at the same time.

Apply factor in search bar

Some numerical field can have a factor for the display. The common usage percentage field which are stored as number between 0 and 1 but are displayed with a factor of 100. For now, searching on such field is performed on value with the factor applied. This provides a better experience for the user.

Right to left support on web client

The web client supports now, like the desktop, the right to left language.

Final state for dunning

When the dunning reach the last level of the procedure, its state is changed to final instead of disappearing in the list of dunning done. This allow to still keep track of those dunning that requires manual procedure.

Support chart of account evolution

We replaced the simple active/inactive checkbox by date period on accounts and tax codes.
It is not allowed to create a move using an account at a date outside the period.
The accounting reports do not show out of period accounts or tax codes if the report is run for a date out of the period.
More over, when an account has an end date defined, we can configure a replacement account to use. in such case, operational document like sale or purchase will use the replacement account automatically. This allows to avoid to update all referential data that were still referring to the old account.

Interface with Chorus Pro

A sets of new modules has been added which allow to send invoice to Chorus Pro. Chorus Pro is the mandatory platform to send electronic invoices for French administration.
Currently the format supported is the Cross-Industry-Invoice (aka 16B-CII) from UN/CEFACT.

Removal of default accounts on journal

We have found that this design was not very optimal because it required for some case to create more journal than needed. So we replace them by write-off methods and payment methods. And for the statement, the journal statement has now an account field.

Spanish tax report

Tryton generates automatically the files for tax reporting that can be imported directly on the tax authority website.

Icons in input

We simplified the web design for the input that has buttons. The input has now a primary and/or secondary icons inside its border. This unclutter the interface and integrate better with bootstrap theme following material design.

Attachment drop down

We reworked the attachment action to be a drop down instead of opening a pop-up. This is faster to open the attachments and to add new one. It is still possible to open the pop-up window with the management entry to change or delete them.
Attachment drop down

Changes for the developer

Remove buttons

Now the buttons which depends on fields for which the user has no access, are removed automatically from the view.

Support of timestamp field on client

Until now, such field was using the default field and had no widget associated. But the default field has an empty string as default value which is not valid for a Timestamp. So now we manage Timestamp field as a DateTime field but with the representation of microseconds.

Use sqlite3.backup

Since Python 3.7, the module sqlite3 has a backup method. This allows to remove the dependency on sqlitebck to use the database cache feature when running tests.

Clean migration < 3.0

We removed the migration code from version older than 3.0.
If there are still users of such old version. They must upgrade as soon as possible to a version prior to 5.0 to be able to migrate later. The future rules will be to clean migration for 2 major releases in the past. This force to migrate at least once every 10 years.

Add Timedelta to PYSON

The PYSON missed an object to represent a timedelta value. As such value could be used in a domain on a field of the same time, we should support it.

Remove unique constraint on attachment

As it was no more useful to have a unique constraint on attachment since Removal of *DAV, we removed the constraint.

Use uWSGI in docker images

The images published by Tryton from series 4.6 are using now uWSGI as default server. This replaces the default server from Werzeug which is not considered production ready.

Use UUID on timesheet lines

In order to prevent Chronos (the web extension for timesheet) to create duplicate lines on bad network response time, we added a unique UUID field on the lines.

Use passlib to check password

We replaced custom password check by passlib, a generic library for password hashing. A configuration file for passlib can be set otherwise the default schemes are bcrypt (if installed) or pbkdf2_sha512. When the configuration change, the passwords are updated to the new scheme on the next log-in of the user.
The migration from older version is done automatically when the user log-in the first time.

New session management

The Double session timeout has been implemented. So the session expired now after 30 days but some operations like posting an invoice or approve a payment requires a fresh session. A fresh session is a session which has no request interruption longer than 5 minutes since its creation.
When a user change his password, all his active sessions are invalidated. This prevent any attacker who had stolen the password to keep a session active after the password change.

Fully configure Tryton with environment variables

In order to simplify the configuration of the docker image, Tryton will parse environment variables that follows the syntax TRYTOND_<SECTION>__<NAME>. Such values are set before the load of configuration files.

Load custom CSS and Javascript

The web client will try to load custom.css and custom.js by default. This allow to customize it by just serving those files.

Real-time notification

We added a BUS to Tryton. It allows the server to send message to the client. It is using long polling as push mechanism.
The first usage is the possibility to send notification which are short message with a priority. The web client display them by using the Web Notification and the desktop client using the GNotification which unfortunately is not yet implemented on Windows nor MacOS.

Improved ModelStorage.copy

The copy method has been extended to have more flexibility on the copy result.
The default dictionary accept a callable as value. It will be called for each copied record with a dictionary of the copied values. It must return the new value for the new record.
Also the default dictionary support the dotted notation for the Many2One keys. In such case, the value will be used as default dictionary to copy the pointed record.

Posts: 1

Participants: 1

Read full topic

Release 1.0.0 of python-sql

$
0
0

@ced wrote:

We are proud to announce the release of the version 1.0.0 of python-sql.

python-sql is a library to write SQL queries in a pythonic way. It is mainly developed for Tryton but it has no external dependencies and it is agnostic to any framework or SQL database.

In addition to bug-fixes, this release contains the following improvements:

  • Add Flavor filter_ to fallback to case expression
  • Allow to use expression in AtTimeZone
  • Add comparison predicates
  • Add COLLATE

python-sql is available on PyPI: https://pypi.org/project/python-sql/1.0.0/

Posts: 1

Participants: 1

Read full topic


Release 0.8.1 of relatorio

$
0
0

@ced wrote:

We are glad to announce the release 0.8.1 of relatorio.
Relatorio is a templating library which provides a way to easily output several kinds of files (odt, ods, png, svg, …).

It is a bug-fix release which includes:

  • Add support for Python 3.7
  • Escape invalid XML characters
  • Enforce closing tag to be the same directive as the opening
  • Use compression for zip file
  • Write mimetype as first file of the zip file

The package is available on https://pypi.org/project/relatorio/0.8.1/
The document is available on https://relatorio.readthedocs.io/en/0.8.1/

Posts: 1

Participants: 1

Read full topic

Tryton Release 5.0

$
0
0

@ced wrote:

We are proud to announce the 5.0 release of Tryton. This is the first Long Term Support release which means that it will be supported for 5 years.
As usual the migration from previous series is fully supported. Some manual operation may be required, see Migration from 4.8 to 5.0.

Contents:

Notes for users

User Interface

New design

The design of the desktop and web client has been reworked a lot to be more pleasant and less cluttered.
We chose a new set of icons which can be fully shared between desktop and web client. So a user will not get lost when switching from one client to the other. The new icons are based on the Material Design Icons from Google which are simple and clear.
In the web client we moved the field icons inside the input widgets. This spares some extra decorations and makes it look like the desktop client.
For the desktop client we use a new standard base, which allows a better integration into the desktop environment. For example the application menu is rendered in the global toolbar on macOS.


Attachments

In Tryton it is possible to attach files to any document. Until now the toolbar button poped up a dialog with a list of attached files. It required a lot of steps from the user to add a new file or to open an existing one, - even with dragging & dropping the file on the attachment button.
To speed up the tasks we changed the button to show a drop down list of all attached files. When the user clicks on a file, it opens directly. In the drop down list there are two additional operations available:

  • the Add… option which opens a file selector and creates the attachment, and
  • the Manage… option which opens the former popup dialog.

Attachment drop down

Keyboard Shortcuts

The shortcuts between the two clients are now unified as much as possible. In cases where a unification is not possible the web client uses the ALT key. E.g. the desktop client uses CTRL+w to close a tab. This shortcut doesn’t work in the web client, because the browsers would catch it, to close the browser tab with the whole application running inside. So the web client use ALT-w instead. The keyboard shortcuts are listed by pressing F1 on the web client and shown in the form menu of the desktop client.

Web Client

The web client has some missing features compared to the desktop client, as its development started later. Every release we reduce this feature-gap and this release isn’t an exception.
The desktop client has a contextual menu on relation fields which allows to open a record, launch actions and reports etc. Such a contextual menu isn’t available on the web client, but we added an option, to open the relational record in a new tab if the CTRL key is pressed. This gives easy access to all the features in the toolbar.
The file selection widget has been simplified. It does no longer open an intermediate dialog with a file selection button. Now it opens the file selection dialog directly.
The desktop client supports the right-to-left languages since a long time, and now the web client does too.


Moreover it is now possible to toggle the menu on large screens. This allows the user to use the full screen when needed.
We updated the address bar of the browser to correspond to the current tab. The URL in the address bar can be shared to open the same tab by different users, like in the desktop client. Opening a shared URL doesn’t require a re-login, because the browser stores the session as long as it is valid. The user can also use the back and forward buttons of the browser to switch to the previous or next tab. This is useful when the user closes a tab by error.
Similar to the desktop client the web client doesn’t open the same tab twice. It puts the focus on the existing tab instead. In difference to the desktop client there is no extra option to force opening a tab multiple times, because in a browser environment the user is able to open the same URL in multiple new tabs.

Financial Accounting

Accounts Removed from Product

For simplicity and responsibility separation, we removed the accounting definition like the revenue and expense accounts or the taxes from the product form in favor of a unique accounting category. This simplifies the product creation for the product administrators as they do not need any more to care about the accounting properties. The accounting categories now must be managed by accounting administrators only.

Account Evolution

In some countries, the chart of accounts evolve frequently over time. The previous solution based on the logical deletion was not flexible enough because such inactive account should still be active on some fiscal year. Instead it is now possible to define a validity period on accounts and tax codes. The accounts and codes are then visible for all the reports that cross their period.
In case an invalid account was used on a referential document like a party or an accounting category, a replacement account can be defined. This account will be used transparently instead of the original on all operational documents (like sales or purchase). This avoid the need to reconfigure all the parties or categories.

Tax Export for Spain (AEAT)

The Spanish authorities have defined standard files for tax reporting. Tryton generates automatically the files: Modelo 111, Modelo 115 and Modelo 303. This simplifies the submission to the authorities website and helps to prevent errors.

Chorus Export

The French administration requests suppliers to send their invoices for French public entities through the Chorus Pro portal. Tryton can automate this task. It will send every 15 minutes all supplier invoices posted for a party configured for Chorus Pro to the portal.
But the portal requires in addition to the user/password credential, an SSL certificate signed by a recognized authority.
Chorus Pro supports many formats of invoices. We choose to implement the Cross-Industry-Invoice from UN/CEFACT. As this is a standard format, it can be also re-used for other EDI integration.

AEB43 Import Statement

Tryton adds the AEB43 format to the bank statement import functionality. It is a format commonly used in Spain.
With CODA and OFX, this raises the number of supported bank statement formats to 3.
Automating the bank statements is an important benefit of Tryton because it reduces encoding errors and speeds up the update of the receivable and payable accounts.

Write-off and Payment Methods

The default credit and debit accounts on the journal have been removed. They were used only for payment, statement and write-off. We decided that it is better to have methods that define those accounts. So we can now configure write-off methods which can be used for reconciliation but also payment methods which are used to register payments on invoices.
Another advantage is that the new behavior avoids the need to create journals per method.

Dunning

Sometimes customers do not pay even after the last level of the dunning procedure. Instead of losing track of those dunnings which should require manual procedure, Tryton keeps them now under the “Final” tab until they are finally resolved.
In the same idea of supporting a manual procedure, when an email is sent for dunning but the party does not have an email set, Tryton can send the email to a fall-back address. This address may be a secretary for example which will be in charge of forwarding the dunning to the right address.

Date of Asset Depreciation

The depreciation moves can be posted every month or every year. But until now it was at the anniversary of the depreciation start. It is now possible to configure if it should be posted on the first or the last day of the month and at which month of the year. This allows to conform better with the fiscal year of the company.

Sales

Grace Period

Sales now can be configured to have a grace period after the confirmation. This grace period allows to reset the sale order to draft before it will be processed. This is very useful because most of the time the user will notice his mistake just a few seconds after he clicked the confirm button.

Parent on Price List

A frequent feature requests was to have the possibility in a price list to use the price of another price list. This is now possible. If you define a parent list then you can use the parent_unit_price keyword in the formula.
This feature allows to define complex cascading price lists.

Inventory & Stock

Counting Wizard

We provide a new way to make inventories by counting each product in the location.
The wizard starts by asking the product or lot which is counted:

Then it shows the current counting result and asks for the quantity to add (by default 1 for product with unit measure of 1):

It loops over those two steps until the user finishes the wizard. Then the inventory is updated for each product with the result of the count.

Lot Unit

It is now possible to define the maximum quantity of a lot. Tryton will do its best to enforce this constraint. For example, it will not allow a shipment to contain moves of the lot with a sum greater than the quantity of the lot. Or it will not allow to create a move for a quantity greater than the lot.
This new feature can be used to define a lot as a serial number, it just requires to set 1 unit as maximum quantity.

CRM

Attention Name

Sometimes it is needed to store on a party an address that is not the real address of the party. So his name can not be used as the name on the mailbox. So we added an optional “Party Name” on the address which is used to format the address and the name of the party is used as the attention name.

Purchasing

Grace Period

Just like for the sales, the purchases can be configured to have a grace period after the confirmation. This grace period allows to reset the order to draft before it will be processed.

Manufacturing

Outsourcing

It is now possible to outsource production orders. To activate this feature, the routing should have a supplier and production service configured. In this case when the production is set to waiting state, a purchase order to the supplier is created for the configured service with the quantity corresponding to the produced quantity. The purchase costs will be added to the production costs which will be used to update the cost price of the produced product.

Subscription Management

Asset

Some subscription contracts involve the renting of an company’s asset, so on the subscription service, it is now possible to define a list of assets to rent with the service.
Tryton keeps track of which asset is rent per subscription and it ensures that an asset is not rent twice for the same period.

Notes for developers

The major change in this release is the migration of the full code base to Python 3 which means only Python 3.4 or later are supported. We also added support for the new version 3.7 of Python.

Transactional queue

Tryton can be configured to use workers to execute tasks asynchronously. Any Model method can be queued by calling it from the Model.__queue__ attribute. The method must be an instance method or a class-method that takes a list of records as first argument. The other arguments must be JSON-ifiable.
The task posting can be configured using the context variable: queue_name , queue_scheduled_at and queue_expected_at . The queue dispatches the tasks evenly to the available workers and each worker uses a configurable pool of processes (by default the number of CPU) to execute them. The workers can be run on a different machine as long as they have access to the database.
If Tryton has no worker configured, the tasks will be run directly at the end of the transaction.

The processing of sales and purchases have already been adapted to use the queue (see above).

Real-time notification

We added a BUS to Tryton. It allows the server to send messages to the client. It is using long polling as push mechanism.
The first usage is the possibility to send notifications which are short messages with a priority. The web client displays them by using Web Notification and the desktop client by using GNotification which unfortunately is not yet implemented on Windows nor on MacOS.
For now, the bus is disabled by default and must be activated in the configuration.

New session management

The Double session timeout has been implemented. So the session now expires after 30 days. Some operations like posting an invoice or approving a payment requires a fresh session. A fresh session is a session which had no request interruption longer than 5 minutes since its creation.
When a user changes his password, all his active sessions are invalidated. This prevents any attacker who had stolen the password to keep a session active after the password change.

Web client session

The sessions are now stored in the localStorage of the browser. This means that the session per server and database can be shared between tabs and survives a reload of the page.

Improved ModelStorage.copy

The copy method has been extended to have more flexibility on the copy result.
The default dictionary accepts now a callable as value. It will be called for each copied record with a dictionary of the copied values. It must return the new value for the new record.
Also the default dictionary supports the dotted notation for the Many2One keys. In such case, the value will be used as default dictionary to copy the pointed record.

Extending depends on methods

The depends on methods were limited to only on_change or on_change_with methods. But it showed some limitations when trying the share common code between different on_change/_with methods. So we extended and generalized the behavior. Now we can define dependencies on any methods and use the @fields.depends decorator on any method.

Recursive common table expression for child_of/parent_of operators

For the evaluation of the child_of and parent_of domain operator, we used recursive ORM loops (or Modified Preorder Tree Traversal when available).
Now all supported databases support the recursive common table expression (CTE), so we could use it as default implementation.
Regarding performance recursive CTE is not better than MPTT but still avoids many round-trips compared to the recursive ORM loop.

Improve client loading strategy

The strategy has been improved to take into account to eagerly load only the fields that are on the same view. This new strategy is mainly useful when multiple form views are defined.

Improve index creation

It is now possible to create indexes with a SQL expression (instead of only columns) and with a where clause. This allow to create indexes tailored for some specific queries.
There is only one limitation with the SQLite back-end which can not run the creation query if it has parameters. In such case, no index is created and a warning is displayed.

Posts: 4

Participants: 2

Read full topic

Foundation board renewal 2017

$
0
0

The 2017 foundation board renewal process has finished. We are happy to anounce that the new board is composed by:

  • Axel Braun from Germany
  • Jonathan Levy from the United States of America
  • Korbinian Preisler from Germany
  • Nicolas Évrard from Belgium
  • Pedro Luciano Rossi from Argentina
  • Sebastián Marró from Argentina
  • Sergi Almacellas Abellana from Spain

Congratulations to Nicolas Évrard as he became the second president of the Tryton foundation board.

We nearly reached the website redesign goal of our budget for 2017. You can help to make it happen by making a donation.

Live streaming for the Tryton Unconference 2017

$
0
0
TUL2017

The Tryton Unconference 2017 is only two weeks away. Registration is still open. But for those who can not make it, we will broadcast a live streaming on our Youtube channel.

The first day, 7th December 2017, is dedicated to business oriented talks.

The second day, 8th December 2017, is focused on developer talks.

Informations and registration are available at https://tul2017.tryton.org/. If you have question about the organisation, please contact the foundation at foundation@tryton.org.

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

Newsletter January 2018

$
0
0

As new year resolution, we plan to make a monthly post about what happened in the Tryton project.

A lake covered by snow

TUL2017

The annual Tryton Unconference 2017 took place from the 7th to 10th December at Liège. It started with 2 days of talks and finished with 2 days of code sprint. We also celebrated the 10th anniversary of the project with some drinks and cakes. For those who could not attend, the talks have been registered and the video and slides are available here (note: a technical issue prevented to correctly record the sound the first day but it is still watchable). Some pictures of the events have also been published.

Drop GTK+-2

The desktop client is supporting since one year both version of GTK+ 2 and 3. It is now time to have only GTK+-3 and thus be able to use new features of this version. The build environment for Windows and Mac has been updated to produce builds with the new version of the library.

New Release Process

A discussion started at the #TUL2017 to have longer term release for Tryton. A new process has been discussed which has a majority of positive feedback. So the series ending by 0 (like 5.0) will be supported for 5 years and the others for 1 year. We will keep the rate of one release every 6 month. The new schema will start with the series 5.0 which will be released the 1st October 2018.

Python 3

At the #TUL2017, we discussed about when to drop the support for Python 2 for which upstream support ends in 2020. So we must ensure to stop supporting Python 2 for any series that should still be supported in 2020. The result is that 5.0 will be the first release with only Python 3 support for the server side and also for the desktop client.

Order Line Description

The description of order lines (sale, purchase, invoice etc.) are no more filled automatically. This prevent to duplicate the content from the product form to each lines. But also simplify and speedup the creation of a line from the code. Moreover the product supplier information can be stored on the purchase line. This information can be used on the purchase line instead of the product information. It allows to search per supplier references and to display on the report as description for the line, the reference of the product from the supplier.

Promotion Coupon

This new module allows to create coupon that are used to apply a promotion on the sale. The coupon can be configured to be usable only a specific number of times globally or per party.

PYSON Domain Validation

For PYSONdomain, the ORM have the simple strategy to validate records to group them per evaluated domain and then make a search per domain. But it is not optimal when evaluated domains are likely to be unique per record because this generate a search per record. A new case has been added to handle this which searches by grouping multiple domains at once and thus reduce the number of queries.

Dialog Size

Until now, dialog were created with a smaller size than the parent window. But it had the disadvantage to create quickly too small dialog windows. So this behaviour has been changed to use always the same size as the parent.

Query for currency rate

The Tryton design for currency rate is a table with the rate and a date from which the rate applies until another row is added for the currency with a later date. A new method has been added Currency.currency_rate_sql which returns a SQL query that produces for each currency the rate, start_date and end_date. This is useful to get a currency rate in a larger SQL query. This method uses the window functions if available on the database back-end to produce optimized query.

Standalone Lines Workflow

Tryton allows to work with standalone lines instead of pre-generated document to follow the grouping method of external sources. But this requires to have enough origin information to select them. So to improve the workflow the supplier stock moves show the purchase order and the invoice lines show their origin.

Reconcile from Statement

Some users have the workflow to reconcile the lines of the statement they just validated. For this we added a button on statement to launch the reconciliation wizard for the generated account move lines.

Bug fixes & Improvements

  • issue5233: The web client format the numeric values with the user locale but also use an input of type 'number' for editing. This allow to have the right virtual keyboard on mobile.
  • issue6875: The autocompletion was not shown when the user changed existing value in an editable list.
  • issue6978: The inventory lines is now read-only until date and location are filled.
  • issue6132: The user is warned if he tries to confirm a purchase order for a different warehouse than the warehouse of the purchase request.
  • issue7009: Catch all exceptions when evaluating value on pyson widget.
  • issue6934: Search and order translated fields using derivative language.
  • issue6915: Show in reconciliation receivable/payable with negative/positive balance
  • issue7005: Remove definition of rules on user. The group should be the only place where access rights are assigned to the user.
  • issue7014: Use a date instead of a boolean for reconciled field on invoice.
  • issue7013: Use canonical JSON form for Dict value.
  • issue7016: Add relate from drop shipment to sale and purchase.
  • issue7031: Fix missing party name on invoice report on series 4.6.

New Service Company

The company m-ds has joined the [list of companies providing services](/services.html) on Tryton.

Ongoing Works

Wesite Redesign

The Foundation has launch the process of redesigning the website as we reached the financial goal. A company has been hired to make this design but we are looking for your inputs.

New Version Notification

The work has started to provide to the desktop client notification for bug-fix releases. It is important because the desktop client is the only part of the Tryton suite for which the update needs to be managed by the user. And we often see users not updating it and reporting issues which have already been fixed.

Support for geographic objects

An external backend with support of geographic fields is under review. It will support only PostGIS in a first time but maybe SpatiaLite will be added in the future. The backend adds all the standard geometry type of columns and supports the operator = and != in the domain. More operations can be added by using python-sql.

Viewing all 67 articles
Browse latest View live




Latest Images