diff --git a/addons/account/views/account_analytic_line_views.xml b/addons/account/views/account_analytic_line_views.xml index 5ff9c9c634d..99396a77ae9 100644 --- a/addons/account/views/account_analytic_line_views.xml +++ b/addons/account/views/account_analytic_line_views.xml @@ -47,6 +47,7 @@ + @@ -64,7 +65,7 @@ - + @@ -79,5 +80,12 @@ + + + Analytic Reporting + account.analytic.line + pivot + + diff --git a/addons/account/views/account_menuitem.xml b/addons/account/views/account_menuitem.xml index 741b8a51a3b..6c5865b0cd3 100644 --- a/addons/account/views/account_menuitem.xml +++ b/addons/account/views/account_menuitem.xml @@ -38,6 +38,7 @@ + diff --git a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js index 8baf23d8ebc..e9564114063 100644 --- a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js +++ b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js @@ -366,7 +366,7 @@ export class AnalyticDistribution extends Component { get tags() { return this.listReady.map((dist_tag) => ({ id: dist_tag.id, - text: `${dist_tag.analytic_account_name}${dist_tag.percentage > 99.99 && dist_tag.percentage < 100.01 ? "" : " " + this.formatPercentage(dist_tag.percentage)}`, + text: `${dist_tag.percentage > 99.99 && dist_tag.percentage < 100.01 ? "" : this.formatPercentage(dist_tag.percentage) + " "}${dist_tag.analytic_account_name}`, colorIndex: dist_tag.color, group_id: dist_tag.group_id, onClick: (ev) => this.tagClicked(ev, dist_tag.id), diff --git a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.xml b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.xml index c45722bb950..92dd344eca7 100644 --- a/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.xml +++ b/addons/analytic/static/src/components/analytic_distribution/analytic_distribution.xml @@ -51,7 +51,7 @@ class="o_input" inputmode="numeric" type="text" - t-att-value="formatPercentage(dist_tag.percentage)" + t-att-value="dist_tag.analytic_account_id or dist_tag.percentage ? formatPercentage(dist_tag.percentage) : ''" t-on-click.stop="" t-on-change="(ev) => this.percentageChanged(dist_tag, ev)"/> diff --git a/addons/analytic/static/tests/analytic_distribution_tests.js b/addons/analytic/static/tests/analytic_distribution_tests.js index 46f7ad38b21..39c4e2d1b8f 100644 --- a/addons/analytic/static/tests/analytic_distribution_tests.js +++ b/addons/analytic/static/tests/analytic_distribution_tests.js @@ -152,11 +152,11 @@ QUnit.module("Analytic", (hooks) => { assert.containsOnce(target, ".o_field_analytic_distribution", "widget should be visible"); assert.containsN(target, ".badge", 2, "should contain 2 tags"); - assert.strictEqual(target.querySelector(".badge .o_tag_badge_text").textContent, "RD 30.3%", - "should have rendered tag 'RD 30.3%'" + assert.strictEqual(target.querySelector(".badge .o_tag_badge_text").textContent, "30.3% RD", + "should have rendered tag '30.3% RD'" ); - assert.strictEqual(target.querySelectorAll(".badge .o_tag_badge_text")[1].textContent, "FI 69.7%", - "should have rendered tag 'FI 69.7%'" + assert.strictEqual(target.querySelectorAll(".badge .o_tag_badge_text")[1].textContent, "69.7% FI", + "should have rendered tag '69.7% FI'" ); assert.containsN(target, ".o_delete", 2, "tags should contain a delete button"); @@ -262,13 +262,13 @@ QUnit.module("Analytic", (hooks) => { await click(target.querySelector(".o_select_button")); let percentageEls = [...popup.querySelectorAll("table#plan_5 .o_analytic_percentage input")]; - let expectedPercentages = ['100%', '0%', '0%']; + let expectedPercentages = ['100%', '0%', '']; for (const [i, el] of percentageEls.entries()) { assert.equal(el.value, expectedPercentages[i], `1: Percentage Element ${i} should be ${expectedPercentages[i]}`); } // modify the percentage of tag 1, tag 2 is filled await editInput(percentageEls[0], null, "50"); - expectedPercentages = ['50%', '50%', '0%']; + expectedPercentages = ['50%', '50%', '']; for (const [i, el] of percentageEls.entries()) { assert.equal(el.value, expectedPercentages[i], `2: Percentage Element ${i} should be ${expectedPercentages[i]}`); } @@ -290,21 +290,21 @@ QUnit.module("Analytic", (hooks) => { await click(target.querySelector(".o_select_button")); percentageEls = [...popup.querySelectorAll("table#plan_5 .o_analytic_percentage input")]; - expectedPercentages = ['40%', '50%', '10%', '0%', '0%', '0%']; + expectedPercentages = ['40%', '50%', '10%', '0%', '0%', '']; for (const [i, el] of percentageEls.entries()) { assert.equal(el.value, expectedPercentages[i], `4: Percentage Element ${i} should be ${expectedPercentages[i]}`); } // modify percentage of the tag 1 (focused), balance goes to the first zero (tag 4) await editInput(document.activeElement, null, "10"); - expectedPercentages = ['10%', '50%', '10%', '30%', '0%', '0%']; + expectedPercentages = ['10%', '50%', '10%', '30%', '0%', '']; for (const [i, el] of percentageEls.entries()) { assert.equal(el.value, expectedPercentages[i], `5: Percentage Element ${i} should be ${expectedPercentages[i]}`); } // modify percentage of tag 4, balance goes to the first zero (tag 5) await editInput(percentageEls[3], null, "20"); - expectedPercentages = ['10%', '50%', '10%', '20%', '10%', '0%']; + expectedPercentages = ['10%', '50%', '10%', '20%', '10%', '']; for (const [i, el] of percentageEls.entries()) { assert.equal(el.value, expectedPercentages[i], `6: Percentage Element ${i} should be ${expectedPercentages[i]}`); } @@ -326,7 +326,7 @@ QUnit.module("Analytic", (hooks) => { percentageEls = [...popup.querySelectorAll("table#plan_5 .o_analytic_percentage input")]; expectedPercentages = ['10%', '50%', '10%', '30%']; for (const [i, el] of percentageEls.entries()) { - assert.equal(el.value, expectedPercentages[i], `7: Percentage Element ${i} should be ${expectedPercentages[i]}`); + assert.equal(el.value, expectedPercentages[i], `8: Percentage Element ${i} should be ${expectedPercentages[i]}`); } assert.equal(popup.querySelector("table#plan_5 tr:last-of-type .o_analytic_account_name input").value, "", "Last tag's account is empty"); diff --git a/addons/analytic/views/analytic_line_views.xml b/addons/analytic/views/analytic_line_views.xml index 4c97ac0ccd4..2aaacf76d2b 100644 --- a/addons/analytic/views/analytic_line_views.xml +++ b/addons/analytic/views/analytic_line_views.xml @@ -29,6 +29,7 @@ + @@ -112,8 +113,9 @@ account.analytic.line + - + @@ -181,4 +183,4 @@

- \ No newline at end of file +