diff --git a/erpnext/locale/fr.po b/erpnext/locale/fr.po index c17c0ffb233514accb0d95b6ecf3d8c9d738ef55..1960f34de4cbc9ee5c11adc003848185ba828926 100644 --- a/erpnext/locale/fr.po +++ b/erpnext/locale/fr.po @@ -57483,7 +57483,7 @@ msgstr "Cette commande contient des articles récurrents et est liée à l'abonn #: selling/doctype/sales_order/sales_order.js:599 msgid "This order contains some recurring items.
A subscription will be automatically generated on submission if a recurring period is set." -msgstr "Cette commande contient des articles récurrents.
Un abonnement sera automatiquement généré à la validation si une période de récurrence est définie." +msgstr "Cette commande contient des articles récurrents.
Un abonnement ne sera automatiquement généré à la validation que si une période de récurrence est définie." #: accounts/report/bank_transaction_categories/bank_transaction_categories.js:22 msgid "This quarter" diff --git a/erpnext/venue/doctype/booking_credit_type/booking_credit_type.json b/erpnext/venue/doctype/booking_credit_type/booking_credit_type.json index 3e49be94486671c11f55a64bed4d6ac942338014..1be16c4d0db614cbc63a32e9799a2dd474a94198 100644 --- a/erpnext/venue/doctype/booking_credit_type/booking_credit_type.json +++ b/erpnext/venue/doctype/booking_credit_type/booking_credit_type.json @@ -105,7 +105,7 @@ "link_fieldname": "booking_credit_type" } ], - "modified": "2023-03-20 14:55:21.418044", + "modified": "2024-11-26 16:39:32.210780", "modified_by": "Administrator", "module": "Venue", "name": "Booking Credit Type", @@ -124,9 +124,22 @@ "select": 1, "share": 1, "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Venue Manager", + "select": 1, + "share": 1, + "write": 1 } ], "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/venue/doctype/booking_credit_type/booking_credit_type.py b/erpnext/venue/doctype/booking_credit_type/booking_credit_type.py index 65ad370660f0e6fa77b8d99d87caeff9b9c3c53a..a423ee3ee35856de4f7082fb9ba007ccbf3592f5 100644 --- a/erpnext/venue/doctype/booking_credit_type/booking_credit_type.py +++ b/erpnext/venue/doctype/booking_credit_type/booking_credit_type.py @@ -5,6 +5,27 @@ from frappe.model.document import Document class BookingCreditType(Document): + # begin: auto-generated types + # This code is auto-generated. Do not modify anything in this block. + + from typing import TYPE_CHECKING + + if TYPE_CHECKING: + from frappe.types import DF + + from erpnext.venue.doctype.booking_credit_type_conversions.booking_credit_type_conversions import ( + BookingCreditTypeConversions, + ) + + conversion_table: DF.Table[BookingCreditTypeConversions] + credits: DF.Int + disabled: DF.Check + item: DF.Link + label: DF.Data + uom: DF.Link + validity: DF.Duration | None + # end: auto-generated types + def validate(self): self.validate_conversions() diff --git a/erpnext/venue/doctype/booking_credit_type_conversions/booking_credit_type_conversions.json b/erpnext/venue/doctype/booking_credit_type_conversions/booking_credit_type_conversions.json index 75ed1d322b46dbd2e6ff9114266643f5bfff0aef..c6a8bd3c5d6d14ddebaa5c73f1af92dff9f77fd8 100644 --- a/erpnext/venue/doctype/booking_credit_type_conversions/booking_credit_type_conversions.json +++ b/erpnext/venue/doctype/booking_credit_type_conversions/booking_credit_type_conversions.json @@ -40,7 +40,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-03-20 16:28:44.165045", + "modified": "2024-11-26 16:38:52.196041", "modified_by": "Administrator", "module": "Venue", "name": "Booking Credit Type Conversions", @@ -49,4 +49,4 @@ "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/venue/doctype/booking_credit_type_conversions/booking_credit_type_conversions.py b/erpnext/venue/doctype/booking_credit_type_conversions/booking_credit_type_conversions.py index 151e1c776c6d30aecf46f89d2321e4f93fbeaf10..71cc503047536395ea5046a946020748a1674f63 100644 --- a/erpnext/venue/doctype/booking_credit_type_conversions/booking_credit_type_conversions.py +++ b/erpnext/venue/doctype/booking_credit_type_conversions/booking_credit_type_conversions.py @@ -5,4 +5,20 @@ import frappe from frappe.model.document import Document class BookingCreditTypeConversions(Document): + # begin: auto-generated types + # This code is auto-generated. Do not modify anything in this block. + + from typing import TYPE_CHECKING + + if TYPE_CHECKING: + from frappe.types import DF + + credits: DF.Int + item: DF.Link + parent: DF.Data + parentfield: DF.Data + parenttype: DF.Data + uom: DF.Link + # end: auto-generated types + pass diff --git a/erpnext/venue/doctype/item_booking/item_booking.py b/erpnext/venue/doctype/item_booking/item_booking.py index 1c73db2072181a9859a95330fa8642457383419f..d999f4502cf290eb0082ec03fa86eb57da54c052 100644 --- a/erpnext/venue/doctype/item_booking/item_booking.py +++ b/erpnext/venue/doctype/item_booking/item_booking.py @@ -786,6 +786,21 @@ def get_availabilities( ).get_available_slots() +def _parse_date_or_datetime(s: str): + from frappe.utils.data import convert_utc_to_system_timezone + + if isinstance(s, str): + if s.endswith("Z"): + d = get_datetime(s.rstrip("Z")) + d = convert_utc_to_system_timezone(d) + return d.replace(tzinfo=None) + + if len(s) <= 10: + return datetime.datetime.strptime(s, "%Y-%m-%d") + + return get_datetime(s) + + class ItemBookingAvailabilities: def __init__( self, @@ -802,16 +817,8 @@ class ItemBookingAvailabilities: self.start = start self.end = end self.limit = int(limit) - self.init = ( - datetime.datetime.strptime(self.start, "%Y-%m-%d") - if isinstance(self.start, str) - else get_datetime(self.start) - ) - self.finish = ( - datetime.datetime.strptime(self.end, "%Y-%m-%d") - if isinstance(self.end, str) - else get_datetime(self.end) - ) + self.init = _parse_date_or_datetime(self.start) + self.finish = _parse_date_or_datetime(self.end) self.user = user or frappe.session.user if user == "*" and not frappe.has_permission("Item Booking", "read"): @@ -1021,7 +1028,13 @@ class ItemBookingAvailabilities: slots.extend(self._get_all_slots(line, simultaneous_booking_allowed)) for slot in slots: - output.append(self.get_available_dict(slot)) + out = self.get_available_dict(slot) + try: + count = get_booking_count(self.item, out.get("start"), out.get("end")) + out.remaining = count.get("remaining") + except Exception: + pass + output.append(out) for scheduled_item in user_scheduled_items: added = False