#33 | Get all child locations for a particular location set the filter

This commit is contained in:
Jordi Albert 2022-09-12 16:09:35 +02:00
parent 3f10e77d93
commit 234061f8d1
4 changed files with 25 additions and 1 deletions

View File

@ -135,3 +135,6 @@ doc_events = {
# "Task": "msp.task.get_dashboard_data"
# }
override_doctype_class = {
"Location": "msp.overrides.location.CustomLocation.CustomLocation"
}

View File

@ -0,0 +1,18 @@
import frappe
from erpnext.assets.doctype.location.location import Location
class CustomLocation(Location):
@frappe.whitelist()
def get_all_child_locations_from_location(self):
parent_location_name = self.name
locations_to_filter = []
return self.search_child_locations(locations_to_filter, parent_location_name)
def search_child_locations(self, locations_to_filter, parent_location_name):
locations_to_filter.append(parent_location_name)
child_locations = frappe.db.get_list('Location', {'parent_location': parent_location_name}, ['name'])
if child_locations:
for child_location in child_locations:
self.search_child_locations(locations_to_filter, child_location['name'])
return locations_to_filter

View File

View File

@ -1,7 +1,10 @@
frappe.ui.form.on('Location', {
refresh(frm) {
frm.add_custom_button('Show IT Objects in Location', () => {
frappe.set_route('List', 'IT Object', { location_full_path: ['like', `%${frm.doc.location_name}%`] })
frm.call('get_all_child_locations_from_location',{})
.then((response) => {
frappe.set_route('List', 'IT Object', { location: ['in', `${response.message.toString()}`] })
})
})
}
});