diff --git a/addons/web/static/src/views/pivot/pivot_model.js b/addons/web/static/src/views/pivot/pivot_model.js index 8fb8081ca0b..94e17f1fb44 100644 --- a/addons/web/static/src/views/pivot/pivot_model.js +++ b/addons/web/static/src/views/pivot/pivot_model.js @@ -1220,7 +1220,10 @@ export class PivotModel extends Model { rowIndex === 0 ? undefined : fields[colGroupBys[rowIndex - 1].split(":")[0]].string, - title: group.labels[group.labels.length - 1] || _t("Total"), + title: + group.labels.length + ? group.labels[group.labels.length - 1] + : _t("Total"), width: leafCount * measureCount * (2 * originCount - 1), }; row.push(cell); @@ -1271,7 +1274,10 @@ export class PivotModel extends Model { let rows = []; const group = tree.root; const rowGroupId = [group.values, []]; - const title = group.labels[group.labels.length - 1] || this.env._t("Total"); + const title = + group.labels.length + ? group.labels[group.labels.length - 1] + : this.env._t("Total"); const indent = group.labels.length; const isLeaf = !tree.directSubTrees.size; const rowGroupBys = this.metaData.fullRowGroupBys; diff --git a/addons/web/static/tests/views/pivot_view_tests.js b/addons/web/static/tests/views/pivot_view_tests.js index 50eef86b5af..7581bc9bba9 100644 --- a/addons/web/static/tests/views/pivot_view_tests.js +++ b/addons/web/static/tests/views/pivot_view_tests.js @@ -279,6 +279,48 @@ QUnit.module("Views", (hooks) => { ); }); + QUnit.test("Pivot with integer row group by with 0 as header", async function (assert) { + serverData.models.partner.records[0].foo = 0; + serverData.models.partner.records[1].foo = 0; + serverData.models.partner.records[2].foo = 0; + serverData.models.partner.records[3].foo = 0; + + const pivot = await makeView({ + type: "pivot", + resModel: "partner", + serverData, + arch: ` + + + + `, + }); + const { rows } = pivot.model.getTable(); + assert.strictEqual(rows.length, 2); + assert.strictEqual(rows[0].title, "Total"); + assert.strictEqual(rows[1].title, 0); + }); + + QUnit.test("Pivot with integer col group by with 0 as header", async function (assert) { + serverData.models.partner.records[0].foo = 0; + serverData.models.partner.records[1].foo = 0; + serverData.models.partner.records[2].foo = 0; + serverData.models.partner.records[3].foo = 0; + + const pivot = await makeView({ + type: "pivot", + resModel: "partner", + serverData, + arch: ` + + + + `, + }); + const { headers } = pivot.model.getTable(); + assert.strictEqual(headers[1][0].title, 0); + }); + QUnit.test( "pivot rendering with string attribute on non stored field", async function (assert) {