Lending App version compatibility

Which version of Lending app is compatible with Frappe version-15?
i am getting error while installing the version-15 of lending app regarding the Duplicate entry of tabLoan Product primary key.

Installing lending…
Updating DocTypes for lending : [========================================] 100%

Running post-install patches to patch existing data…

An error occurred while installing lending: (1062, “Duplicate entry ‘Loan Product’ for key ‘PRIMARY’”)
Traceback with variables (most recent call last):
File “apps/frappe/frappe/commands/site.py”, line 484, in install_app
_install_app(app, verbose=context.verbose, force=force)
context = {‘sites’: [‘techintegraerp.com’], ‘force’: False, ‘verbose’: False, ‘profile’: False}
apps = (‘lending’,)
force = False
_install_app = <function install_app at 0x7f1450e6dc60>
filelock = <function filelock at 0x7f1450e5fbe0>
exit_code = 0
site = ‘techintegraerp.com
app = ‘lending’
err = IntegrityError(1062, “Duplicate entry ‘Loan Product’ for key ‘PRIMARY’”)
File “apps/frappe/frappe/installer.py”, line 326, in install_app
frappe.get_attr(after_install)()
name = ‘lending’
verbose = False
set_as_patched = True
force = False
sync_jobs = <function sync_jobs at 0x7f14503f7d00>
sync_for = <function sync_for at 0x7f1450410820>
sync_customizations = <function sync_customizations at 0x7f1451f816c0>
sync_fixtures = <function sync_fixtures at 0x7f1450410a60>
app_hooks = {‘after_install’: [‘lending.install.after_install’], ‘app_description’: [‘Open Source Lending software’], ‘app_email’: [‘contact@frappe.io’], ‘app_include_js’: [‘lending.bundle.js’], ‘app_license’: [‘GNU General Public License (v3)’], ‘app_name’: [‘lending’], ‘app_publisher’: [‘Frappe Technologies Pvt. Ltd.’], ‘app_title’: [‘Frappe Lending’], ‘audit_trail_doctypes’: [‘Loan Balance Adjustment’, ‘Loan Disbursement’, ‘Loan Interest Accrual’, ‘Loan Refund’, ‘Loan Repayment’, ‘Loan Write Off’], ‘bank_reconciliation_doctypes’: [‘Loan Repayment’, ‘Loan Disbursement’], ‘before_tests’: [‘lending.utils.before_tests’], ‘doc_events’: {‘Company’: {‘validate’: [‘lending.overrides.company.validate_loan_tables’]}}, ‘get_amounts_not_reflected_in_system_for_bank_reconciliation_statement’: [‘lending.loan_management.utils.get_amounts_not_reflected_in_system_for_bank_reconciliation_statement’], ‘get_entries_for_bank_clearance_summary’: [‘lending.loan_management.utils.get_entries_for_bank_clearance_summary’…
installed_apps = [‘frappe’, ‘erpnext’, ‘hrms’, ‘nationalpf’, ‘payments’]
app = ‘erpnext’
required_app = ‘erpnext’
after_install = ‘lending.install.after_install’
File “apps/lending/lending/install.py”, line 236, in after_install
run_patches(get_post_install_patches())
File “apps/lending/lending/install.py”, line 227, in run_patches
frappe.get_attr(f"lending.patches.v15_0.{patch}.execute")()
patches = (‘rename_loan_type_to_loan_product’, ‘generate_loan_repayment_schedule’, ‘update_loan_types’, ‘make_loan_type_non_submittable’, ‘migrate_loan_type_to_loan_product’, ‘add_loan_product_code_and_rename_loan_name’, ‘update_penalty_interest_method_in_loan_products’)
patch = ‘rename_loan_type_to_loan_product’
File “apps/lending/lending/patches/v15_0/rename_loan_type_to_loan_product.py”, line 13, in execute
rename_doc(
File “apps/frappe/frappe/model/rename_doc.py”, line 177, in rename_doc
rename_parent_and_child(doctype, old, new, meta)
doctype = ‘DocType’
old = ‘Loan Type’
new = ‘Loan Product’
force = True
merge = False
ignore_permissions = False
ignore_if_exists = False
show_alert = True
rebuild_search = True
doc = None
validate = False
old_usage_style = ‘Loan Product’
new_usage_style = None
meta = <Meta: DocType>
File “apps/frappe/frappe/model/rename_doc.py”, line 328, in rename_parent_and_child
frappe.qb.update(doctype).set(“name”, new).where(Field(“name”) == old).run()
doctype = ‘DocType’
old = ‘Loan Type’
new = ‘Loan Product’
meta = <Meta: DocType>
File “apps/frappe/frappe/query_builder/utils.py”, line 87, in execute_query
result = frappe.db.sql(query, params, *args, **kwargs) # nosemgrep
query = ‘UPDATE tabDocType SET name=%(param1)s WHERE name=%(param2)s’
args = ()
kwargs = {}
child_queries =
params = {‘param1’: ‘Loan Product’, ‘param2’: ‘Loan Type’}
execute_child_queries = <function patch_query_execute..execute_child_queries at 0x7f14503a6d40>
prepare_query = <function patch_query_execute..prepare_query at 0x7f14503a6dd0>
File “apps/frappe/frappe/database/database.py”, line 230, in sql
self._cursor.execute(query, values)
self = <frappe.database.mariadb.database.MariaDBDatabase object at 0x7f1450395f30>
query = ‘UPDATE tabDocType SET name=%(param1)s WHERE name=%(param2)s’
values = {‘param1’: ‘Loan Product’, ‘param2’: ‘Loan Type’}
as_dict = 0
as_list = 0
debug = False
ignore_ddl = 0
auto_commit = 0
update = None
explain = False
run = True
pluck = False
as_iterator = False
trace_id = None
File “env/lib/python3.10/site-packages/pymysql/cursors.py”, line 153, in execute
result = self._query(query)
self = <pymysql.cursors.Cursor object at 0x7f144fea7e50>
query = “UPDATE tabDocType SET name=‘Loan Product’ WHERE name=‘Loan Type’”
args = {‘param1’: ‘Loan Product’, ‘param2’: ‘Loan Type’}
File “env/lib/python3.10/site-packages/pymysql/cursors.py”, line 322, in _query
conn.query(q)
self = <pymysql.cursors.Cursor object at 0x7f144fea7e50>
q = “UPDATE tabDocType SET name=‘Loan Product’ WHERE name=‘Loan Type’”
conn = <pymysql.connections.Connection object at 0x7f144fea7d90>
File “env/lib/python3.10/site-packages/pymysql/connections.py”, line 563, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
self = <pymysql.connections.Connection object at 0x7f144fea7d90>
sql = b"UPDATE tabDocType SET name=‘Loan Product’ WHERE name=‘Loan Type’"
unbuffered = False
File “env/lib/python3.10/site-packages/pymysql/connections.py”, line 825, in _read_query_result
result.read()
self = <pymysql.connections.Connection object at 0x7f144fea7d90>
unbuffered = False
result = <pymysql.connections.MySQLResult object at 0x7f144f02bf10>
File “env/lib/python3.10/site-packages/pymysql/connections.py”, line 1199, in read
first_packet = self.connection._read_packet()
self = <pymysql.connections.MySQLResult object at 0x7f144f02bf10>
File “env/lib/python3.10/site-packages/pymysql/connections.py”, line 775, in _read_packet
packet.raise_for_error()
self = <pymysql.connections.Connection object at 0x7f144fea7d90>
packet_type = <class ‘pymysql.protocol.MysqlPacket’>
buff = bytearray(b"\xff&\x04#23000Duplicate entry 'Loan Product' for key 'PRIMARY'“)
packet_header = b’9\x00\x00\x01’
btrl = 57
btrh = 0
packet_number = 1
bytes_to_read = 57
recv_data = b”\xff&\x04#23000Duplicate entry ‘Loan Product’ for key ‘PRIMARY’"
packet = <pymysql.protocol.MysqlPacket object at 0x7f144f1b78b0>
File “env/lib/python3.10/site-packages/pymysql/protocol.py”, line 219, in raise_for_error
err.raise_mysql_exception(self._data)
self = <pymysql.protocol.MysqlPacket object at 0x7f144f1b78b0>
errno = 1062
File “env/lib/python3.10/site-packages/pymysql/err.py”, line 150, in raise_mysql_exception
raise errorclass(errno, errval)
data = b"\xff&\x04#23000Duplicate entry ‘Loan Product’ for key ‘PRIMARY’"
errno = 1062
errval = “Duplicate entry ‘Loan Product’ for key ‘PRIMARY’”
errorclass = <class ‘pymysql.err.IntegrityError’>
pymysql.err.IntegrityError: (1062, “Duplicate entry ‘Loan Product’ for key ‘PRIMARY’”)

this is the error i am getting

image