diff --git a/erpnext/venue/report/item_booking_rate/item_booking_rate.py b/erpnext/venue/report/item_booking_rate/item_booking_rate.py index ce8e79df4c735e6943c0a55ac5d4b10a2c43a692..3e625b872799c3438cba96bc795f82aef4799440 100644 --- a/erpnext/venue/report/item_booking_rate/item_booking_rate.py +++ b/erpnext/venue/report/item_booking_rate/item_booking_rate.py @@ -23,17 +23,24 @@ def get_data(filters): if not filters.get("date_range"): return [] + bookings_is_installed = "bookings" in frappe.get_installed_apps() + status_filter = ( "Confirmed, Not confirmed" if filters.get("status") == "Confirmed and not confirmed" else "Confirmed" ) + fields = ["status", "name", "item", "starts_on", "ends_on"] + if bookings_is_installed: + fields.append("booking_resource") + + item_booking = frappe.get_all( "Item Booking", filters={ "starts_on": ("between", filters.get("date_range")), "status": ("in", (f"{status_filter}")), }, - fields=["status", "name", "item", "booking_resource", "starts_on", "ends_on"], + fields=fields, ) items_dict = defaultdict(dict) @@ -51,8 +58,10 @@ def get_data(filters): # Get minutes booked for ib in item_booking: - if "booking_resource" not in items_dict[ib["item"]]: + if bookings_is_installed and "booking_resource" not in items_dict[ib["item"]]: items_dict[ib["item"]]["booking_resource"] = ib["booking_resource"] + elif not bookings_is_installed and "item" not in items_dict[ib["item"]]: + items_dict[ib["item"]]["item"] = ib["item"] if "total" not in items_dict[ib["item"]]: items_dict[ib["item"]]["total"] = 0.0 @@ -106,7 +115,7 @@ def get_data(filters): items_dict[item]["percent"] = (items_dict[item]["total"] / items_dict[item]["capacity"] if items_dict[item]["capacity"] else 1.0) *100.0 sorted_list = sorted( - [{"item": f"{x}: {items_dict[x]['booking_resource']}", **items_dict[x]} for x in items_dict], + [{"item": f"{x}: {items_dict[x]['booking_resource'] if bookings_is_installed else items_dict[x]['item']}", **items_dict[x]} for x in items_dict], key=lambda x: x["item"].lower(), ) @@ -312,7 +321,7 @@ def get_chart_data(data): chart_data = [x for x in data if x.get("bookings")] return { "data": { - "labels": [x.get("booking_resource") for x in chart_data], + "labels": [x.get("booking_resource") for x in chart_data] if "bookings" in frappe.get_installed_apps() else [x.get("item") for x in chart_data], "datasets": [ { "name": _("Capacity (Hours)"),