From 88abe119c31496e2bc288aedc6460130ff315d17 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Tue, 21 Jul 2026 11:34:40 +0530 Subject: [PATCH] fix: apply default accounting dimensions reliably on new documents Default accounting dimensions were applied from the `company` client trigger, which reads dimension data fetched asynchronously in `setup_dimension_filters`. When the trigger fired before that fetch returned, new documents were left without their default dimensions, and Sales Order never called `update_dimension` at all. - Apply defaults from the fetch callback in dimension_tree_filter.js so they no longer depend on `company`-trigger timing. This fixes the race for Sales Invoice, Purchase Invoice and Payment Entry, and populates defaults on new Sales Orders. - Add a `company()` override on SalesOrderController so the default is re-applied when the company changes, matching the sibling doctypes. Co-Authored-By: Claude Opus 4.8 --- erpnext/public/js/utils/dimension_tree_filter.js | 1 + erpnext/selling/doctype/sales_order/sales_order.js | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/erpnext/public/js/utils/dimension_tree_filter.js b/erpnext/public/js/utils/dimension_tree_filter.js index 68bf11de5d8..5b463066260 100644 --- a/erpnext/public/js/utils/dimension_tree_filter.js +++ b/erpnext/public/js/utils/dimension_tree_filter.js @@ -22,6 +22,7 @@ erpnext.accounts.dimensions = { }); me.default_dimensions = r.message[1]; me.setup_filters(frm, doctype); + me.update_dimension(frm, doctype); }, }); }, diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index edfcb0becfe..635a43c3113 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -589,6 +589,11 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex super.onload(doc, dt, dn); } + company() { + super.company(); + erpnext.accounts.dimensions.update_dimension(this.frm, this.frm.doctype); + } + refresh(doc, dt, dn) { var me = this; super.refresh();