diff --git a/inn/inn_hotels/doctype/inn_reservation/inn_reservation_card.py b/inn/inn_hotels/doctype/inn_reservation/inn_reservation_card.py new file mode 100644 index 0000000..dba372b --- /dev/null +++ b/inn/inn_hotels/doctype/inn_reservation/inn_reservation_card.py @@ -0,0 +1,32 @@ +import frappe +from datetime import date + + +@frappe.whitelist() +def get_card_number_expected_departure(): + today = date.today().isoformat() + data = frappe.db.count("Inn Reservation", {"status": ["!=", "Finish"], "expected_departure": today}) + + result = { + "value": data, + "fieldtype": "Int", + "route_options": {"expected_departure": today, "status": ["!=", "Finish"]}, + "route": ["inn-reservation"] + } + + return result + + +@frappe.whitelist() +def get_card_number_expected_arrival(): + today = date.today().isoformat() + data = frappe.db.count("Inn Reservation", {"status": ["!=", "In House"], "expected_arrival": today}) + + result = { + "value": data, + "fieldtype": "Int", + "route_options": {"expected_arrival": today, "status": ["!=", "In House"]}, + "route": ["inn-reservation"] + } + + return result \ No newline at end of file diff --git a/inn/inn_hotels/doctype/inn_room_booking/inn_room_card_owner_webcard.py b/inn/inn_hotels/doctype/inn_room_booking/inn_room_card_owner_webcard.py new file mode 100644 index 0000000..e076ca0 --- /dev/null +++ b/inn/inn_hotels/doctype/inn_room_booking/inn_room_card_owner_webcard.py @@ -0,0 +1,266 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Core Initiative and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document +from dateutil.parser import parse +from datetime import date, timedelta + +def count_all_room(start_date, end_date): + default_availability = frappe.db.count("Inn Room") + try: + start_date = parse(start_date, False).date() + except ValueError: + raise frappe.ValidationError("{start_date} is not a valid date string") + + try: + end_date = parse(end_date, False).date() + except ValueError: + raise frappe.ValidationError("{end_date} is not a valid date string") + + delta = end_date - start_date + if delta.days < 0: + raise frappe.ValidationError("start date must before end date") + + return default_availability * delta.days + +@frappe.whitelist() +def count_sold_room(start_date = None, end_date=None): + if start_date == None and end_date == None: + start_date = date.today().isoformat() + end_date = date.today() + timedelta(days=1) + end_date = end_date.isoformat() + + + try: + start_date = parse(start_date, False).date() + except ValueError: + raise frappe.ValidationError("{start_date} is not a valid date string") + + try: + end_date = parse(end_date, False).date() + except ValueError: + raise frappe.ValidationError("{end_date} is not a valid date string") + + delta = end_date - start_date + if delta.days < 0: + raise frappe.ValidationError("start date must before end date") + + + total_sold = 0 + # calculate reservation start before start_date and reservation end after start date + current_sold = frappe.db.get_values(doctype="Inn Room Booking", filters={"start": ["<", start_date], "end": [">", start_date], "room_availability": "Room Sold"}, fieldname=["start", "end"], as_dict=True) + for ii in current_sold: + room_end_date = ii.end + if room_end_date > end_date: + room_end_date = end_date + + days_sold = (room_end_date - start_date).days + total_sold += days_sold + + + # calculate reservation start after start_date and reservations start before before_date + current_sold = frappe.db.get_values(doctype="Inn Room Booking", filters=[["start", "between", [start_date, end_date]], ["room_availability", "=", "Room Sold"]], fieldname=["start", "end"], as_dict=True) + for ii in current_sold: + room_start_date = ii.start + room_end_date = ii.end + if room_end_date > end_date: + room_end_date = end_date + + days_sold = (room_end_date - room_start_date).days + total_sold += days_sold + + return { + "value": total_sold, + "fieldtype": "Int" + } + +@frappe.whitelist() +def count_available_room(start_date=None, end_date=None): + if start_date == None and end_date == None: + start_date = date.today().isoformat() + end_date = date.today() + timedelta(days=1) + end_date = end_date.isoformat() + + + default_availability = frappe.db.count("Inn Room") + try: + start_date = parse(start_date, False).date() + except ValueError: + raise frappe.ValidationError("{start_date} is not a valid date string") + + try: + end_date = parse(end_date, False).date() + except ValueError: + raise frappe.ValidationError("{end_date} is not a valid date string") + + delta = end_date - start_date + if delta.days < 0: + raise frappe.ValidationError("start date must before end date") + + + all_room = default_availability * delta.days + + total_sold = 0 + # calculate reservation start before start_date and reservation end after start date + current_used = frappe.db.get_values(doctype="Inn Room Booking", filters={"start": ["<", start_date], "end": [">", start_date]}, fieldname=["start", "end"], as_dict=True) + for ii in current_used: + room_end_date = ii.end + if room_end_date > end_date: + room_end_date = end_date + + days_sold = (room_end_date - start_date).days + total_sold += days_sold + + + # calculate reservation start after start_date and reservations start before before_date + current_used = frappe.db.get_values(doctype="Inn Room Booking", filters=[["start", "between", [start_date, end_date]]], fieldname=["start", "end"], as_dict=True) + for ii in current_used: + room_start_date = ii.start + room_end_date = ii.end + if room_end_date > end_date: + room_end_date = end_date + + days_sold = (room_end_date - room_start_date).days + total_sold += days_sold + + return { + "value": all_room - total_sold, + "fieldtype": "Int" + } + +@frappe.whitelist() +def count_ooo_room(start_date=None, end_date=None): + if start_date == None and end_date == None: + start_date = date.today().isoformat() + end_date = date.today() + timedelta(days=1) + end_date = end_date.isoformat() + + + try: + start_date = parse(start_date, False) + except ValueError: + raise frappe.ValidationError("{start_date} is not a valid date string") + + try: + end_date = parse(end_date, False) + except ValueError: + raise frappe.ValidationError("{end_date} is not a valid date string") + + delta = end_date - start_date + if delta.days < 0: + raise frappe.ValidationError("start date must before end date") + + + total_sold = 0 + # calculate reservation start before start_date and reservation end after start date + current_ooo = frappe.db.get_values(doctype="Inn Room Booking", filters={"start": ["<", start_date], "end": [">", start_date], "room_availability": "Out of Order"}, fieldname=["start", "end"], as_dict=True) + for ii in current_ooo: + room_end_date = ii.end + if room_end_date > end_date: + room_end_date = end_date + + days_sold = (room_end_date - start_date).days + total_sold += days_sold + + + # calculate reservation start after start_date and reservations start before before_date + current_ooo = frappe.db.get_values(doctype="Inn Room Booking", filters=[["start", "between", [start_date, end_date]], ["room_availability", "=", "Out of Order"]], fieldname=["start", "end"], as_dict=True) + for ii in current_ooo: + room_start_date = ii.start + room_end_date = ii.end + if room_end_date > end_date: + room_end_date = end_date + + days_sold = (room_end_date - room_start_date).days + total_sold += days_sold + + return { + "value": total_sold, + "fieldtype": "Int" + } + +def calculate_total_rate_and_sold(start_date, end_date): + try: + start_date = parse(start_date, False).date() + except ValueError: + raise frappe.ValidationError("{start_date} is not a valid date string") + + try: + end_date = parse(end_date, False).date() + except ValueError: + raise frappe.ValidationError("{end_date} is not a valid date string") + + delta = end_date - start_date + if delta.days < 0: + raise frappe.ValidationError("start date must before end date") + + total_sold = 0 + total_rate = 0 + cached_rate = {} + # calculate reservation start before start_date and reservation end after start date + current_sold = frappe.db.get_values(doctype="Inn Reservation", filters={"arrival": ["<", start_date], "expected_departure": [">", start_date]}, fieldname=["arrival", "expected_departure", "room_rate"], as_dict=True) + for ii in current_sold: + room_end_date = ii.expected_departure + if room_end_date > end_date: + room_end_date = end_date + + days_sold = (room_end_date - start_date).days + total_sold += days_sold + + if ii.room_rate not in cached_rate: + room_rate = frappe.db.get_value(doctype="Inn Room Rate", filters={"name": ii.room_rate}, fieldname="final_total_rate_amount") + cached_rate[ii.room_rate] = room_rate.final_total_rate_amount + + total_rate = cached_rate[ii.room_rate] * days_sold + + + # calculate reservation start after start_date and reservations start before before_date + current_sold = frappe.db.get_values(doctype="Inn Reservation", filters=[["expected_arrival", "between", [start_date, end_date]]], fieldname=["expected_arrival", "expected_departure", "room_rate"], as_dict=True) + for ii in current_sold: + room_start_date = ii.expected_arrival + room_end_date = ii.expected_departure + if room_end_date > end_date: + room_end_date = end_date + + days_sold = (room_end_date - room_start_date).days + total_sold += days_sold + + + if ii.room_rate not in cached_rate: + room_rate = frappe.db.get_value(doctype="Inn Room Rate", filters={"name": ii.room_rate}, fieldname="final_total_rate_amount") + cached_rate[ii.room_rate] = room_rate + total_rate += cached_rate[ii.room_rate] * days_sold + + return total_rate, total_sold + +@frappe.whitelist() +def calculate_average_rate(start_date=None, end_date=None): + if start_date == None and end_date == None: + start_date = date.today().isoformat() + end_date = date.today() + timedelta(days=1) + end_date = end_date.isoformat() + total_rate, total_sold = calculate_total_rate_and_sold(start_date, end_date) + if total_sold == 0: + value = 0 + else: + value = total_rate / total_sold + + return { + "value": value, + "fieldtype": "Currency" + } + +@frappe.whitelist() +def calculate_total_rate(start_date=None, end_date=None): + if start_date == None and end_date == None: + start_date = date.today().isoformat() + end_date = date.today() + timedelta(days=1) + end_date = end_date.isoformat() + total_rate, _ = calculate_total_rate_and_sold(start_date, end_date) + return { + "value": total_rate, + "fieldtype": "Int" + } \ No newline at end of file diff --git a/inn/inn_hotels/number_card/arrival/arrival.json b/inn/inn_hotels/number_card/arrival/arrival.json new file mode 100644 index 0000000..4078ee3 --- /dev/null +++ b/inn/inn_hotels/number_card/arrival/arrival.json @@ -0,0 +1,22 @@ +{ + "color": "#ECAD4B", + "creation": "2024-02-22 13:27:29.372728", + "docstatus": 0, + "doctype": "Number Card", + "filters_json": "null", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Arrival", + "method": "inn.inn_hotels.doctype.inn_reservation.inn_reservation_card.get_card_number_expected_arrival", + "modified": "2024-02-22 13:52:18.349937", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Arrival", + "owner": "Administrator", + "report_function": "Sum", + "show_percentage_stats": 1, + "stats_time_interval": "Daily", + "type": "Custom" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_hotel_aar_room_sold/inn_hotel_aar_room_sold.json b/inn/inn_hotels/number_card/inn_hotel_aar_room_sold/inn_hotel_aar_room_sold.json new file mode 100644 index 0000000..d30e090 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_hotel_aar_room_sold/inn_hotel_aar_room_sold.json @@ -0,0 +1,23 @@ +{ + "color": "#B4CD29", + "creation": "2024-02-22 14:19:41.547594", + "docstatus": 0, + "doctype": "Number Card", + "filters_config": "[{\n fieldname: \"start_date\",\n label: \"Start Date\", \n fieldtype: \"Date\",\n reqd: 1\n}, {\n fieldname: \"end_date\",\n label: \"End Date\",\n fieldtype: \"Date\",\n reqd: 1\n}]", + "filters_json": "{}", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Hotel AAR Room Sold", + "method": "inn.inn_hotels.doctype.inn_room_booking.inn_room_card_owner_webcard.calculate_average_rate", + "modified": "2024-02-22 14:20:11.160526", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Hotel AAR Room Sold", + "owner": "Administrator", + "report_function": "Sum", + "show_percentage_stats": 1, + "stats_time_interval": "Daily", + "type": "Custom" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_hotel_available_room/inn_hotel_available_room.json b/inn/inn_hotels/number_card/inn_hotel_available_room/inn_hotel_available_room.json new file mode 100644 index 0000000..8ed5856 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_hotel_available_room/inn_hotel_available_room.json @@ -0,0 +1,23 @@ +{ + "color": "#4F9DD9", + "creation": "2024-02-22 14:18:15.704194", + "docstatus": 0, + "doctype": "Number Card", + "filters_config": "[{\n fieldname: \"start_date\",\n label: \"Start Date\", \n fieldtype: \"Date\",\n reqd: 1\n}, {\n fieldname: \"end_date\",\n label: \"End Date\",\n fieldtype: \"Date\",\n reqd: 1\n}]", + "filters_json": "{}", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Hotel Available Room", + "method": "inn.inn_hotels.doctype.inn_room_booking.inn_room_card_owner_webcard.count_available_room", + "modified": "2024-02-22 14:26:58.050253", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Hotel Available Room", + "owner": "Administrator", + "report_function": "Sum", + "show_percentage_stats": 1, + "stats_time_interval": "Daily", + "type": "Custom" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_hotel_expected_departure/inn_hotel_expected_departure.json b/inn/inn_hotels/number_card/inn_hotel_expected_departure/inn_hotel_expected_departure.json new file mode 100644 index 0000000..208227e --- /dev/null +++ b/inn/inn_hotels/number_card/inn_hotel_expected_departure/inn_hotel_expected_departure.json @@ -0,0 +1,22 @@ +{ + "color": "#CB2929", + "creation": "2024-02-22 13:52:41.666131", + "docstatus": 0, + "doctype": "Number Card", + "filters_json": "null", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Hotel Expected Departure", + "method": "inn.inn_hotels.doctype.inn_reservation.inn_reservation_card.get_card_number_expected_departure", + "modified": "2024-02-22 13:52:47.344662", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Hotel Expected Departure", + "owner": "Administrator", + "report_function": "Sum", + "show_percentage_stats": 1, + "stats_time_interval": "Daily", + "type": "Custom" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_hotel_out_of_order_room/inn_hotel_out_of_order_room.json b/inn/inn_hotels/number_card/inn_hotel_out_of_order_room/inn_hotel_out_of_order_room.json new file mode 100644 index 0000000..ce030c9 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_hotel_out_of_order_room/inn_hotel_out_of_order_room.json @@ -0,0 +1,23 @@ +{ + "color": "#CB2929", + "creation": "2024-02-22 14:19:05.566491", + "docstatus": 0, + "doctype": "Number Card", + "filters_config": "[{\n fieldname: \"start_date\",\n label: \"Start Date\", \n fieldtype: \"Date\",\n reqd: 1\n}, {\n fieldname: \"end_date\",\n label: \"End Date\",\n fieldtype: \"Date\",\n reqd: 1\n}]", + "filters_json": "{}", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Hotel Out of Order Room", + "method": "inn.inn_hotels.doctype.inn_room_booking.inn_room_card_owner_webcard.count_ooo_room", + "modified": "2024-02-22 14:19:05.566491", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Hotel Out of Order Room", + "owner": "Administrator", + "report_function": "Sum", + "show_percentage_stats": 1, + "stats_time_interval": "Daily", + "type": "Custom" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_hotel_total_room_rate_sold/inn_hotel_total_room_rate_sold.json b/inn/inn_hotels/number_card/inn_hotel_total_room_rate_sold/inn_hotel_total_room_rate_sold.json new file mode 100644 index 0000000..2251834 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_hotel_total_room_rate_sold/inn_hotel_total_room_rate_sold.json @@ -0,0 +1,23 @@ +{ + "color": "#B4CD29", + "creation": "2024-02-22 14:20:48.773195", + "docstatus": 0, + "doctype": "Number Card", + "filters_config": "[{\n fieldname: \"start_date\",\n label: \"Start Date\", \n fieldtype: \"Date\",\n reqd: 1\n}, {\n fieldname: \"end_date\",\n label: \"End Date\",\n fieldtype: \"Date\",\n reqd: 1\n}]", + "filters_json": "{}", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Hotel Total Room Rate Sold", + "method": "inn.inn_hotels.doctype.inn_room_booking.inn_room_card_owner_webcard.calculate_total_rate", + "modified": "2024-02-22 14:20:52.035188", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Hotel Total Room Rate Sold", + "owner": "Administrator", + "report_function": "Sum", + "show_percentage_stats": 1, + "stats_time_interval": "Daily", + "type": "Custom" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_hotel_total_room_sold/inn_hotel_total_room_sold.json b/inn/inn_hotels/number_card/inn_hotel_total_room_sold/inn_hotel_total_room_sold.json new file mode 100644 index 0000000..1782476 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_hotel_total_room_sold/inn_hotel_total_room_sold.json @@ -0,0 +1,23 @@ +{ + "color": "#29CD42", + "creation": "2024-02-22 14:09:07.947730", + "docstatus": 0, + "doctype": "Number Card", + "filters_config": "[{\n fieldname: \"start_date\",\n label: \"Start Date\", \n fieldtype: \"Date\",\n reqd: 1\n}, {\n fieldname: \"end_date\",\n label: \"End Date\",\n fieldtype: \"Date\",\n reqd: 1\n}]", + "filters_json": "{}", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Hotel Total Room Sold", + "method": "inn.inn_hotels.doctype.inn_room_booking.inn_room_card_owner_webcard.count_sold_room", + "modified": "2024-02-22 14:17:32.135413", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Hotel Total Room Sold", + "owner": "Administrator", + "report_function": "Sum", + "show_percentage_stats": 1, + "stats_time_interval": "Daily", + "type": "Custom" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_room_clean/inn_room_clean.json b/inn/inn_hotels/number_card/inn_room_clean/inn_room_clean.json new file mode 100644 index 0000000..d447361 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_room_clean/inn_room_clean.json @@ -0,0 +1,25 @@ +{ + "aggregate_function_based_on": "", + "color": "#29CD42", + "creation": "2024-02-15 10:49:01.017490", + "docstatus": 0, + "doctype": "Number Card", + "document_type": "Inn Room", + "dynamic_filters_json": "[]", + "filters_json": "[[\"Inn Room\",\"room_status\",\"in\",[\"Vacant Clean\",\"Occupied Clean\",null],false]]", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Room Clean", + "modified": "2024-02-22 19:10:22.680125", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Room Clean", + "owner": "Administrator", + "parent_document_type": "", + "report_function": "Sum", + "show_percentage_stats": 0, + "stats_time_interval": "Daily", + "type": "Document Type" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_room_dirty/inn_room_dirty.json b/inn/inn_hotels/number_card/inn_room_dirty/inn_room_dirty.json new file mode 100644 index 0000000..e3c09b8 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_room_dirty/inn_room_dirty.json @@ -0,0 +1,25 @@ +{ + "aggregate_function_based_on": "", + "color": "#ECAD4B", + "creation": "2024-02-22 11:19:08.977767", + "docstatus": 0, + "doctype": "Number Card", + "document_type": "Inn Room", + "dynamic_filters_json": "[]", + "filters_json": "[[\"Inn Room\",\"room_status\",\"in\",[\"Vacant Dirty\",\"Occupied Dirty\",null],false]]", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Room Dirty", + "modified": "2024-02-22 19:10:35.593176", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Room Dirty", + "owner": "Administrator", + "parent_document_type": "", + "report_function": "Sum", + "show_percentage_stats": 0, + "stats_time_interval": "Daily", + "type": "Document Type" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_room_not_available/inn_room_not_available.json b/inn/inn_hotels/number_card/inn_room_not_available/inn_room_not_available.json new file mode 100644 index 0000000..109a412 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_room_not_available/inn_room_not_available.json @@ -0,0 +1,25 @@ +{ + "aggregate_function_based_on": "", + "color": "#CB2929", + "creation": "2024-02-22 11:20:39.257569", + "docstatus": 0, + "doctype": "Number Card", + "document_type": "Inn Room Booking", + "dynamic_filters_json": "[]", + "filters_json": "[[\"Inn Room Booking\",\"room_availability\",\"in\",[\"Out of Order\",\"Under Construction\",null],false],[\"Inn Room Booking\",\"status\",\"!=\",\"Finished\",false]]", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Room Not Available", + "modified": "2024-02-22 19:10:37.708974", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Room Not Available", + "owner": "Administrator", + "parent_document_type": "", + "report_function": "Sum", + "show_percentage_stats": 0, + "stats_time_interval": "Daily", + "type": "Document Type" +} \ No newline at end of file diff --git a/inn/inn_hotels/number_card/inn_room_ready/inn_room_ready.json b/inn/inn_hotels/number_card/inn_room_ready/inn_room_ready.json new file mode 100644 index 0000000..7754d32 --- /dev/null +++ b/inn/inn_hotels/number_card/inn_room_ready/inn_room_ready.json @@ -0,0 +1,25 @@ +{ + "aggregate_function_based_on": "", + "color": "#29CD42", + "creation": "2024-02-22 11:17:21.807333", + "docstatus": 0, + "doctype": "Number Card", + "document_type": "Inn Room", + "dynamic_filters_json": "[]", + "filters_json": "[[\"Inn Room\",\"room_status\",\"=\",\"Vacant Ready\",false]]", + "function": "Count", + "idx": 0, + "is_public": 0, + "is_standard": 1, + "label": "Inn Room Ready", + "modified": "2024-02-22 19:10:09.233112", + "modified_by": "Administrator", + "module": "Inn Hotels", + "name": "Inn Room Ready", + "owner": "Administrator", + "parent_document_type": "", + "report_function": "Sum", + "show_percentage_stats": 0, + "stats_time_interval": "Daily", + "type": "Document Type" +} \ No newline at end of file diff --git a/inn/inn_hotels/workspace/operations/operations.json b/inn/inn_hotels/workspace/operations/operations.json index da13126..97456f1 100644 --- a/inn/inn_hotels/workspace/operations/operations.json +++ b/inn/inn_hotels/workspace/operations/operations.json @@ -1,6 +1,6 @@ { "charts": [], - "content": "[{\"id\":\"i7DzVS_nkY\",\"type\":\"header\",\"data\":{\"text\":\"Operation Management\",\"col\":12}},{\"id\":\"Gi2GP3MT6X\",\"type\":\"card\",\"data\":{\"card_name\":\"Housekeeping\",\"col\":4}},{\"id\":\"_L-N8SbO58\",\"type\":\"card\",\"data\":{\"card_name\":\"Master Data\",\"col\":4}},{\"id\":\"4QGFFgwgVI\",\"type\":\"card\",\"data\":{\"card_name\":\"Transaction Config\",\"col\":4}}]", + "content": "[{\"id\":\"i7DzVS_nkY\",\"type\":\"header\",\"data\":{\"text\":\"Operation Management\",\"col\":12}},{\"id\":\"EpO3dCM01u\",\"type\":\"header\",\"data\":{\"text\":\"House Keeping Room Status\",\"col\":12}},{\"id\":\"OZB3uvBCDs\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Ready\",\"col\":3}},{\"id\":\"eVIAAPoNTT\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Clean\",\"col\":3}},{\"id\":\"fRbcanV6Aa\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Dirty\",\"col\":3}},{\"id\":\"s3jTK677fD\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Not Available\",\"col\":3}},{\"id\":\"mP4DTk4p76\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"Gi2GP3MT6X\",\"type\":\"card\",\"data\":{\"card_name\":\"Housekeeping\",\"col\":4}},{\"id\":\"_L-N8SbO58\",\"type\":\"card\",\"data\":{\"card_name\":\"Master Data\",\"col\":4}},{\"id\":\"4QGFFgwgVI\",\"type\":\"card\",\"data\":{\"card_name\":\"Transaction Config\",\"col\":4}}]", "creation": "2023-12-15 14:57:37.238569", "custom_blocks": [], "docstatus": 0, @@ -197,11 +197,28 @@ "type": "Link" } ], - "modified": "2024-02-16 13:26:50.425136", + "modified": "2024-02-22 11:21:15.729238", "modified_by": "Administrator", "module": "Inn Hotels", "name": "Operations", - "number_cards": [], + "number_cards": [ + { + "label": "Not Available", + "number_card_name": "Inn Room Not Available" + }, + { + "label": "Ready", + "number_card_name": "Inn Room Ready" + }, + { + "label": "Dirty", + "number_card_name": "Inn Room Dirty" + }, + { + "label": "Clean", + "number_card_name": "Inn Room Clean" + } + ], "owner": "Administrator", "parent_page": "Home", "public": 1, diff --git a/inn/inn_hotels/workspace/reservation/reservation.json b/inn/inn_hotels/workspace/reservation/reservation.json index c80c06e..716cfa6 100644 --- a/inn/inn_hotels/workspace/reservation/reservation.json +++ b/inn/inn_hotels/workspace/reservation/reservation.json @@ -1,6 +1,6 @@ { "charts": [], - "content": "[{\"id\":\"mQhBeS--Rl\",\"type\":\"header\",\"data\":{\"text\":\"Reservation\",\"col\":12}},{\"id\":\"BxqoGNVQ4q\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Inn House\",\"col\":3}},{\"id\":\"NjOnJ7GpSF\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Check Out\",\"col\":3}},{\"id\":\"lf4XkzibVt\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"x8GJwV8hzM\",\"type\":\"card\",\"data\":{\"card_name\":\"Transaction\",\"col\":4}},{\"id\":\"-GtWnq-goz\",\"type\":\"card\",\"data\":{\"card_name\":\"City Ledger\",\"col\":4}},{\"id\":\"8XQ43ifBk4\",\"type\":\"card\",\"data\":{\"card_name\":\"Night Audit\",\"col\":4}}]", + "content": "[{\"id\":\"mQhBeS--Rl\",\"type\":\"header\",\"data\":{\"text\":\"Reservation\",\"col\":12}},{\"id\":\"BxqoGNVQ4q\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Inn House\",\"col\":3}},{\"id\":\"wZnRYcYnXv\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Arrival\",\"col\":3}},{\"id\":\"wtb_GqbdIZ\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Departure\",\"col\":3}},{\"id\":\"NjOnJ7GpSF\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Check Out\",\"col\":3}},{\"id\":\"nrjSQoFUDF\",\"type\":\"header\",\"data\":{\"text\":\"Room Sold\",\"col\":12}},{\"id\":\"Ik_PvcF5sO\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Sold\",\"col\":4}},{\"id\":\"WsrVm9DRLn\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Available\",\"col\":4}},{\"id\":\"4UtfBl96nC\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Out of Order\",\"col\":4}},{\"id\":\"eAOak1AJ_L\",\"type\":\"header\",\"data\":{\"text\":\"Room Revenue Summary\",\"col\":12}},{\"id\":\"sKu5ru_37L\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"ARR\",\"col\":6}},{\"id\":\"mxvXiLXtkU\",\"type\":\"number_card\",\"data\":{\"number_card_name\":\"Total Sold\",\"col\":6}},{\"id\":\"lf4XkzibVt\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"x8GJwV8hzM\",\"type\":\"card\",\"data\":{\"card_name\":\"Transaction\",\"col\":4}},{\"id\":\"-GtWnq-goz\",\"type\":\"card\",\"data\":{\"card_name\":\"City Ledger\",\"col\":4}},{\"id\":\"8XQ43ifBk4\",\"type\":\"card\",\"data\":{\"card_name\":\"Night Audit\",\"col\":4}}]", "creation": "2023-12-15 13:51:19.164024", "custom_blocks": [], "docstatus": 0, @@ -138,15 +138,39 @@ "type": "Link" } ], - "modified": "2024-02-16 13:26:49.991944", + "modified": "2024-02-22 19:09:03.891400", "modified_by": "Administrator", "module": "Inn Hotels", "name": "Reservation", "number_cards": [ + { + "label": "Arrival", + "number_card_name": "Arrival" + }, + { + "label": "Total Sold", + "number_card_name": "Inn Hotel Total Room Sold" + }, + { + "label": "Available", + "number_card_name": "Inn Hotel Available Room" + }, + { + "label": "Out of Order", + "number_card_name": "Inn Hotel Out of Order Room" + }, { "label": "Inn House", "number_card_name": "Inn House" }, + { + "label": "ARR", + "number_card_name": "Inn Hotel AAR Room Sold" + }, + { + "label": "Departure", + "number_card_name": "Inn Hotel Expected Departure" + }, { "label": "Check Out", "number_card_name": "Check Out"