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