Merge branch 'develop' into fixed-process-loss-in-job-card
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index c9c9c9c..3e418c4 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -3,7 +3,7 @@
import frappe
-__version__ = "14.0.0-dev"
+__version__ = "15.0.0-dev"
def get_default_company(user=None):
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 77dbc8f..c821fcf 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -39,7 +39,10 @@
setup_wizard_stages = "erpnext.setup.setup_wizard.setup_wizard.get_setup_stages"
setup_wizard_test = "erpnext.setup.setup_wizard.test_setup_wizard.run_setup_wizard_test"
-before_install = "erpnext.setup.install.check_setup_wizard_not_completed"
+before_install = [
+ "erpnext.setup.install.check_setup_wizard_not_completed",
+ "erpnext.setup.install.check_frappe_version",
+]
after_install = "erpnext.setup.install.after_install"
boot_session = "erpnext.startup.boot.boot_session"
diff --git a/erpnext/regional/report/irs_1099/irs_1099.py b/erpnext/regional/report/irs_1099/irs_1099.py
index 66ade1f..c5d8112 100644
--- a/erpnext/regional/report/irs_1099/irs_1099.py
+++ b/erpnext/regional/report/irs_1099/irs_1099.py
@@ -10,7 +10,7 @@
from frappe.utils.jinja import render_template
from frappe.utils.pdf import get_pdf
from frappe.utils.print_format import read_multi_pdf
-from PyPDF2 import PdfWriter
+from pypdf import PdfWriter
from erpnext.accounts.utils import get_fiscal_year
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 1d5428a..74c1ee2 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -2,12 +2,14 @@
# License: GNU General Public License v3. See license.txt
+import click
import frappe
from frappe import _
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
from frappe.utils import cint
+import erpnext
from erpnext.setup.default_energy_point_rules import get_default_energy_point_rules
from erpnext.setup.doctype.incoterm.incoterm import create_incoterms
@@ -41,6 +43,25 @@
frappe.throw(message) # nosemgrep
+def check_frappe_version():
+ def major_version(v: str) -> str:
+ return v.split(".")[0]
+
+ frappe_version = major_version(frappe.__version__)
+ erpnext_version = major_version(erpnext.__version__)
+
+ if frappe_version == erpnext_version:
+ return
+
+ click.secho(
+ f"You're attempting to install ERPNext version {erpnext_version} with Frappe version {frappe_version}. "
+ "This is not supported and will result in broken install. Switch to correct branch before installing.",
+ fg="red",
+ )
+
+ raise SystemExit(1)
+
+
def set_single_defaults():
for dt in (
"Accounts Settings",