diff --git a/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.json b/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.json index cdcd21e..fbf0d66 100644 --- a/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.json +++ b/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.json @@ -94,9 +94,10 @@ ], "grid_page_length": 50, "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 1, "links": [], - "modified": "2026-04-08 13:43:45.894498", - "modified_by": "admin@example.com", + "modified": "2026-04-10 14:38:29.994830", + "modified_by": "Administrator", "module": "General Administration Management System", "name": "Meeting Room Booking", "naming_rule": "Expression", diff --git a/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.py b/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.py index c0cb1f2..1044ff6 100644 --- a/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.py +++ b/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking.py @@ -3,7 +3,7 @@ import frappe from frappe.model.document import Document -from frappe.utils import getdate, nowdate, get_time +from frappe.utils import getdate, nowdate, get_time, get_datetime class MeetingRoomBooking(Document): @@ -84,3 +84,39 @@ def validate_duplicate_booking(self): f"Room already booked from {booking.from_time} to {booking.to_time} for this day" ) +@frappe.whitelist() +def get_meeting_room_events(start, end, filters=None): + """ + Calendar event generator for Meeting Room Booking + """ + + filters = frappe.parse_json(filters) if filters else {} + + bookings = frappe.get_all( + "Meeting Room Booking", + fields=[ + "name", + "meeting_room", + "booking_date", + "from_time", + "to_time", + "status" + ], + filters=filters + ) + + events = [] + + for b in bookings: + start_dt = get_datetime(f"{b.booking_date} {b.from_time}") + end_dt = get_datetime(f"{b.booking_date} {b.to_time}") + + events.append({ + "name": b.name, + "start": start_dt, + "end": end_dt, + "title": b.meeting_room, + "status": b.status + }) + + return events diff --git a/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking_calendar.js b/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking_calendar.js new file mode 100644 index 0000000..0abe34a --- /dev/null +++ b/gams/general_administration_management_system/doctype/meeting_room_booking/meeting_room_booking_calendar.js @@ -0,0 +1,30 @@ +frappe.views.calendar["Meeting Room Booking"] = { + + field_map: { + start: "start", + end: "end", + id: "name", + title: "title", + status: "status" + }, + + style_map: { + "Pending": "warning", + "Approved": "success", + "Rejected": "danger", + "Cancelled": "secondary" + }, + + filters: [ + { + fieldtype: "Link", + fieldname: "meeting_room", + options: "Room", + label: "Room" + } + ], + + + get_events_method: "gams.general_administration_management_system.doctype.meeting_room_booking.meeting_room_booking.get_meeting_room_events" +}; +