From e9c1d0ad526404325f3d57a52337df8757bc2373 Mon Sep 17 00:00:00 2001 From: Yash Chaubey <101944829+yash14023@users.noreply.github.com> Date: Wed, 15 Oct 2025 12:46:02 +0530 Subject: [PATCH 1/5] perf: optimize company monthly sales query using date range (#48942) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * perf: optimize company monthly sales query using date range instead of DATE_FORMAT * perf: optimize company monthly sales query using date range (cherry picked from commit 4ede97ae2b86e5e6daa68a04608eafa5d4ec4574) --- erpnext/setup/doctype/company/company.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index 58fef47d725..0d66cc8b72b 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -11,7 +11,7 @@ from frappe.cache_manager import clear_defaults_cache from frappe.contacts.address_and_contact import load_address_and_contact from frappe.custom.doctype.property_setter.property_setter import make_property_setter from frappe.desk.page.setup_wizard.setup_wizard import make_records -from frappe.utils import cint, formatdate, get_link_to_form, get_timestamp, today +from frappe.utils import add_months, cint, formatdate, get_first_day, get_link_to_form, get_timestamp, today from frappe.utils.nestedset import NestedSet, rebuild_tree from erpnext.accounts.doctype.account.account import get_account_currency @@ -614,27 +614,29 @@ def install_country_fixtures(company, country): def update_company_current_month_sales(company): - current_month_year = formatdate(today(), "MM-yyyy") + from_date = get_first_day(today()) + to_date = get_first_day(add_months(from_date, 1)) results = frappe.db.sql( - f""" + """ SELECT SUM(base_grand_total) AS total, - DATE_FORMAT(`posting_date`, '%m-%Y') AS month_year + DATE_FORMAT(posting_date, '%%m-%%Y') AS month_year FROM `tabSales Invoice` WHERE - DATE_FORMAT(`posting_date`, '%m-%Y') = '{current_month_year}' + posting_date >= %s + AND posting_date < %s AND docstatus = 1 - AND company = {frappe.db.escape(company)} + AND company = %s GROUP BY month_year - """, + """, + (from_date, to_date, company), as_dict=True, ) monthly_total = results[0]["total"] if len(results) > 0 else 0 - frappe.db.set_value("Company", company, "total_monthly_sales", monthly_total) From 98414385e51716a9fd82992eb2c7577231938df6 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 22 Dec 2025 16:47:38 +0530 Subject: [PATCH 2/5] fix: available qty not fetched on selection of batch --- erpnext/public/js/utils/serial_no_batch_selector.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js index ee6b5de28cd..6fd7f7f4588 100644 --- a/erpnext/public/js/utils/serial_no_batch_selector.js +++ b/erpnext/public/js/utils/serial_no_batch_selector.js @@ -381,7 +381,7 @@ erpnext.SerialNoBatchSelector = class SerialNoBatchSelector { query: "erpnext.controllers.queries.get_batch_no", }; }, - onchange: function () { + change: function () { const batch_no = this.get_value(); if (!batch_no) { this.grid_row.on_grid_fields_dict.available_qty.set_value(0); From 5c9e0bba2f9d67f86d50ae93ff69729e04bd3134 Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Tue, 23 Dec 2025 16:14:19 +0530 Subject: [PATCH 3/5] fix(patch): fallback for frankfurter settings v14 patch (cherry picked from commit 50bb1ce31d2768682dfabbd3ed0fabc24001a050) --- .../update_currency_exchange_settings_for_frankfurter.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/erpnext/patches/v14_0/update_currency_exchange_settings_for_frankfurter.py b/erpnext/patches/v14_0/update_currency_exchange_settings_for_frankfurter.py index a67c5a26237..f8abf913e3b 100644 --- a/erpnext/patches/v14_0/update_currency_exchange_settings_for_frankfurter.py +++ b/erpnext/patches/v14_0/update_currency_exchange_settings_for_frankfurter.py @@ -2,6 +2,15 @@ import frappe def execute(): + try: + from erpnext.patches.v16_0.update_currency_exchange_settings_for_frankfurter import execute + + execute() + except ImportError: + update_frankfurter_app_parameter_and_result() + + +def update_frankfurter_app_parameter_and_result(): settings = frappe.get_doc("Currency Exchange Settings") if settings.service_provider != "frankfurter.app": return From 1dee10077c1258119e865682e17d004530f3b02f Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Wed, 24 Dec 2025 11:24:44 +0530 Subject: [PATCH 4/5] fix(deps): pin urllib3<2 v2 has breaking changes, and some other ERPNext dependencies pull in newer requests, which has urllib3<3 mentioned. Signed-off-by: Akhil Narang --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index af0fbffd9ff..076ebe8f694 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,9 @@ dependencies = [ "python-youtube~=0.8.0", "taxjar~=1.9.2", "tweepy~=3.10.0", + + # Pin for compatibility, v2 has breaking changes + "urllib3>=1.26.4,<2", ] [build-system] From d713f39fce569575d44c187c4997c7b1721d66f3 Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Wed, 24 Dec 2025 12:15:49 +0530 Subject: [PATCH 5/5] fix: disable uv Seems to cause an issue with dependency resolution when installation dev dependencies Signed-off-by: Akhil Narang --- .github/helper/install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/helper/install.sh b/.github/helper/install.sh index cb82d2ad733..876afc2a6bc 100644 --- a/.github/helper/install.sh +++ b/.github/helper/install.sh @@ -4,6 +4,8 @@ set -e cd ~ || exit +export BENCH_DISABLE_UV=1 + sudo apt update && sudo apt install redis-server libcups2-dev pip install frappe-bench