From a1fa6594757f4cefa504c020df565902cdc57b25 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 2 Sep 2015 12:56:29 +0530 Subject: [PATCH 1/3] [fix] Delete Time Logs while deleting company transactions --- .../company/delete_company_transactions.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/erpnext/setup/doctype/company/delete_company_transactions.py b/erpnext/setup/doctype/company/delete_company_transactions.py index 87c13754bf4..0253674287a 100644 --- a/erpnext/setup/doctype/company/delete_company_transactions.py +++ b/erpnext/setup/doctype/company/delete_company_transactions.py @@ -16,6 +16,8 @@ def delete_company_transactions(company_name): frappe.throw(_("Transactions can only be deleted by the creator of the Company"), frappe.PermissionError) delete_bins(company_name) + + delete_time_logs(company_name) for doctype in frappe.db.sql_list("""select parent from tabDocField where fieldtype='Link' and options='Company'"""): @@ -60,3 +62,20 @@ def delete_for_doctype(doctype, company_name): def delete_bins(company_name): frappe.db.sql("""delete from tabBin where warehouse in (select name from tabWarehouse where company=%s)""", company_name) + +def delete_time_logs(company_name): + # Delete Time Logs as it is linked to Production Order / Project / Task, which are linked to company + frappe.db.sql(""" + delete from `tabTime Log` + where + (ifnull(project, '') != '' + and exists(select name from `tabProject` where name=`tabTime Log`.project and company=%(company)s)) + or (ifnull(task, '') != '' + and exists(select name from `tabTask` where name=`tabTime Log`.task and company=%(company)s)) + or (ifnull(production_order, '') != '' + and exists(select name from `tabProduction Order` + where name=`tabTime Log`.production_order and company=%(company)s)) + or (ifnull(sales_invoice, '') != '' + and exists(select name from `tabSales Invoice` + where name=`tabTime Log`.sales_invoice and company=%(company)s)) + """, {"company": company_name}) \ No newline at end of file From 0ca3e3d89e72a0da14c8438a5076cff25655c4ff Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 2 Sep 2015 13:09:48 +0530 Subject: [PATCH 2/3] [fix] Clear notification count while deleting company transactions --- erpnext/setup/doctype/company/delete_company_transactions.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/erpnext/setup/doctype/company/delete_company_transactions.py b/erpnext/setup/doctype/company/delete_company_transactions.py index 0253674287a..cb735c12bf8 100644 --- a/erpnext/setup/doctype/company/delete_company_transactions.py +++ b/erpnext/setup/doctype/company/delete_company_transactions.py @@ -6,6 +6,7 @@ import frappe from frappe.utils import cint from frappe import _ +from frappe.desk.notifications import clear_notifications @frappe.whitelist() def delete_company_transactions(company_name): @@ -23,6 +24,9 @@ def delete_company_transactions(company_name): tabDocField where fieldtype='Link' and options='Company'"""): if doctype not in ("Account", "Cost Center", "Warehouse", "Budget Detail", "Party Account"): delete_for_doctype(doctype, company_name) + + # Clear notification counts + clear_notifications() def delete_for_doctype(doctype, company_name): meta = frappe.get_meta(doctype) From e1d2bef3893127ce8fde18e8b2c250360017786e Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 2 Sep 2015 14:07:46 +0530 Subject: [PATCH 3/3] [fix] Dont delete Employee while deleting company transactions --- erpnext/setup/doctype/company/delete_company_transactions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/setup/doctype/company/delete_company_transactions.py b/erpnext/setup/doctype/company/delete_company_transactions.py index cb735c12bf8..f7334b1e6d1 100644 --- a/erpnext/setup/doctype/company/delete_company_transactions.py +++ b/erpnext/setup/doctype/company/delete_company_transactions.py @@ -22,7 +22,7 @@ def delete_company_transactions(company_name): for doctype in frappe.db.sql_list("""select parent from tabDocField where fieldtype='Link' and options='Company'"""): - if doctype not in ("Account", "Cost Center", "Warehouse", "Budget Detail", "Party Account"): + if doctype not in ("Account", "Cost Center", "Warehouse", "Budget Detail", "Party Account", "Employee"): delete_for_doctype(doctype, company_name) # Clear notification counts