Hooks on Child Table not working

Hi,

I am trying to add hooks on Project User child table. I want to send mail to project user when the user is removed from the project.

Hence, I am trying to add hooks in the custom app on “on_trash” doc_event. But it is not working.

Also, I am adding same “on_trash” method in ProjectUser.py in erpnext/projects/doctype/project_user/project_user.py file. but it’s not working too.

Please help!!!

Thank you.

Events only works for parent doctypes.

You have to add hook on project doctype

1 Like

Thanks for the reply saurabh.
but if I add a hook “on_update” of Project doctype, how would I get removed user so that I could send removal email to that user?

Do I have to use “before_insert” event?

I have the same question. Did you ever figure this out?

I figured this out in Javascript. You can use _remove, for example, with a child table field labeled “Company Contact” and named “contacts”:

Use this javascript:

frappe.ui.form.on('Company Contact', {
	contacts_remove: function (form, doctype, id) {
		// console.log(id);
		frappe.call({
			method: "custom_app.companies.doctype.company.company.remove_company_from_contact",
			args: {
				"company_contact": id
			},
			callback: function(r) {
				if(r.message) {
					frappe.msgprint(r.message);
				}
			}
		});
	}
});

where your python file has a corresponding function, such as:

@frappe.whitelist()
def remove_company_from_contact(company_contact):
    company_contact = frappe.get_doc("Company Contact", company_contact)
    contact = frappe.get_doc('Contact', company_contact.contact)
    contact.company = None
    contact.company_role = None
    contact.save()
    frappe.db.commit()
    message = frappe._('Company removed from contact')
    return message
1 Like

extending this approach, it seems there is also a contacts_add trigger for when a child table row gets added. But I couldn’t find a contacts_update trigger?? I.e. an event that gets fired when a child table row is edited??