-
- Downloads
[FIX] web: fix kanban view progressbars related to records in another group (groupby:week)
* IMPACTED VERSIONS 12.0+ * HOW TO REPRODUCE locale : Locale is en_US (or other SUNDAY based) view: CRM - My Pipeline - Kanban view groupBy: date_deadline:week (Expected closing) records: one record with a planned activity, on date_deadline = 2021-05-02 (SUNDAY) one record with no planned activity, on date_deadline = 2021-05-09 (SUNDAY) remark: don't keep any other record in MAY for better visibility * PROBLEM The progressbar of the week containing 2021-05-09 displays information about the record from the week containing 2021-05-02 * CAUSE 1. PostgreSQL `date_trunc` function follows ISO8601 which essentially means that the start of a WEEK is always MONDAY. There is no argument to change this. 2. _read_group_format_result https://github.com/odoo/odoo/blob/27da86a138089c1838e4b94f8a6976995b9c1fff/odoo/models.py#L2210-L2219 - Computes a label for a group of records. - Follows the locale for the label of the week, based on a date which is always a MONDAY because of `date_trunc`. 3. read_progress_bar https://github.com/odoo/odoo/blob/88957afca09662af7eaa19df1e40b3699e45e79e/addons/web/models/models.py#L167-L175 - Associates a group label to a record. - Follows the locale for the label of the week, based on the date of a record which can be any day of the week. If the record is related to a SUNDAY and SUNDAY is the first day of the week, it would have been in a group with a different label in (2.) than in (3.) prior to this change. * FIX In 3., before associating a label to a record, we truncate the date to the ISO start of the period, so that the label is determined for a record in the same conditions than in 2. The locale is still used to get language-dependent outputs with babel, but the grouping will always follows ISO8601 (date_trunc). * TEST Added a test for this problem case TASK-ID : 2517848 closes odoo/odoo#69946 Signed-off-by:Raphael Collet (rco) <rco@openerp.com>
Loading
Please register or sign in to comment