Newsletter April 2018

Publicado: 2018-04-01 10:00:00+00:00   |   Прочесть по-русски   |   Lire en français   |   Read in English   |   Llegeix-ho en català   |   Auf Deutsch lesen   |   Beri v slovenščini   |  Más posts sobre newsletter

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.


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.


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.