diff --git a/addons/spreadsheet/static/src/pivot/pivot_model.js b/addons/spreadsheet/static/src/pivot/pivot_model.js index eb9963e612d..761bb03ef19 100644 --- a/addons/spreadsheet/static/src/pivot/pivot_model.js +++ b/addons/spreadsheet/static/src/pivot/pivot_model.js @@ -289,7 +289,7 @@ export class SpreadsheetPivotModel extends PivotModel { const { cols, rows } = this._getColsRowsValuesFromDomain(domain); const group = JSON.stringify([rows, cols]); const values = this.data.measurements[group]; - return (values && values[0][measure]) || ""; + return (values && values[0][measure]) ?? ""; } /** diff --git a/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js b/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js index d09d7812ee5..c1fc7d72912 100644 --- a/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js +++ b/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js @@ -599,6 +599,29 @@ QUnit.module("spreadsheet > pivot plugin", {}, () => { assert.equal(getCellValue(model, "E4"), 95); }); + QUnit.test("aggregate to 0", async function (assert) { + const serverData = getBasicServerData(); + serverData.models.partner.records = [ + { id: 1, name: "A", probability: 10 }, + { id: 2, name: "B", probability: -10 }, + ]; + + const { model } = await createSpreadsheetWithPivot({ + serverData, + arch: /*xml*/ ` + + + + `, + }); + setCellContent(model, "A1", '=ODOO.PIVOT(1, "probability", "name", "A")'); + setCellContent(model, "A2", '=ODOO.PIVOT(1, "probability", "name", "B")'); + setCellContent(model, "A3", '=ODOO.PIVOT(1, "probability")'); + assert.strictEqual(getEvaluatedCell(model, "A1").value, 10); + assert.strictEqual(getEvaluatedCell(model, "A2").value, -10); + assert.strictEqual(getEvaluatedCell(model, "A3").value, 0); + }); + QUnit.test("can import/export sorted pivot", async (assert) => { const spreadsheetData = { pivots: {