diff --git a/erpnext/venue/doctype/event_registration/event_registration.py b/erpnext/venue/doctype/event_registration/event_registration.py index 5f83f0acaeb7aa488cf4e0271ba801e72602c88e..0b4525b33f90fb673734bae7c9f5e1e2213a6df9 100644 --- a/erpnext/venue/doctype/event_registration/event_registration.py +++ b/erpnext/venue/doctype/event_registration/event_registration.py @@ -6,7 +6,7 @@ from functools import cached_property import frappe from frappe import _ from frappe.model.document import Document -from frappe.utils import is_desk +from frappe.utils import cint, is_desk from erpnext.utilities import webshop_app_import_guard @@ -90,7 +90,7 @@ class EventRegistration(Document): return frappe.get_doc("Event", self.event) def validate(self): - if self.qty < 1: + if cint(self.qty) < 1: self.qty = 1 self.validate_duplicates() @@ -125,9 +125,13 @@ class EventRegistration(Document): ): DuplicateRegistrationEmail.throw(self) - if self.user and frappe.db.exists( - "Event Registration", - {"user": self.user, **base_filters}, + if ( + self.user + and self.user != "Guest" + and frappe.db.exists( + "Event Registration", + {"user": self.user, **base_filters}, + ) ): DuplicateRegistration.throw(self) @@ -239,6 +243,7 @@ class EventRegistration(Document): self.make_payment_entry( reference_no=reference_no, payment_gateway=self.payment_gateway, invoice_doc=invoice ) + frappe.db.commit() elif new_status in ("Failed", "Cancelled"): self.set("payment_status", new_status) self.cancel() @@ -249,8 +254,9 @@ class EventRegistration(Document): def on_webform_save(self, webform): # The document is created from the Web Form, it means that someone wants to register - self.user = self.user or frappe.session.user - self.set_company_from_cart_settings() + self.user = self.user or (frappe.session.user if frappe.session.user != "Guest" else None) + if not self.company: + self.set_company_from_cart_settings() if not self.flags.in_payment_webform: # Free registration