diff --git a/README.md b/README.md index abdb9cd3dc25867f8b929b40b91d1f074b8cdda3..e840b401706f5dc69bc8486539d2d60ca9022e55 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Guest ordering + + The Guest Order module extends the functionality of QUIQQER and ecoyn to allow anonymous ordering and guest ordering. Package name: diff --git a/ajax/frontend/checkMail.php b/ajax/frontend/checkMail.php index 0d6a2a8f54f22a4a5505da2b9e58fc446bcb0a0d..a3fb0a6df595a422a4ebde4bbace726254da3692 100644 --- a/ajax/frontend/checkMail.php +++ b/ajax/frontend/checkMail.php @@ -13,6 +13,14 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_order-guestorder_ajax_frontend_checkMail', function ($email) { + if ( + QUI::getPackage('quiqqer/order-guestorder') + ->getConfig() + ->get('guestorder', 'prevent_duplicate_guest_order_registration') + ) { + return -1; + } + try { $User = QUI::getUsers()->getUserByName($email); diff --git a/ajax/frontend/orderAsGuest.php b/ajax/frontend/orderAsGuest.php index c233a8354cf5eb3e965a7e2a41d25431d3edba2f..9703b0e0a31942e57b75dd6a00ec55caaaaf48ba 100644 --- a/ajax/frontend/orderAsGuest.php +++ b/ajax/frontend/orderAsGuest.php @@ -9,6 +9,36 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_order-guestorder_ajax_frontend_orderAsGuest', function ($email) { + $alwaysGuestAllowed = QUI::getPackage('quiqqer/order-guestorder') + ->getConfig() + ->get('guestorder', 'prevent_duplicate_guest_order_registration'); + + if ($alwaysGuestAllowed) { + // set guest session + QUI::getSession()->set(GuestOrder::EMAIL, $email); + GuestOrder::setGuestOrderFlag(); + return; + } + + try { + $User = QUI::getUsers()->getUserByName($email); + + if ($User->isActive()) { + return; + } + } catch (\Exception) { + } + + try { + $User = QUI::getUsers()->getUserByMail($email); + + if ($User->isActive()) { + return; + } + } catch (\Exception) { + } + + // set guest session QUI::getSession()->set(GuestOrder::EMAIL, $email); GuestOrder::setGuestOrderFlag(); }, diff --git a/bin/images/Gitlab.png b/bin/images/Gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..56b7a99084f3b80e9116204389212dfb8564fb0d Binary files /dev/null and b/bin/images/Gitlab.png differ diff --git a/bin/images/Logo.png b/bin/images/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a902e6e5d3c7766f2c6f62fc2f0f264314c5074d Binary files /dev/null and b/bin/images/Logo.png differ diff --git a/bin/images/Readme.png b/bin/images/Readme.png new file mode 100644 index 0000000000000000000000000000000000000000..a15d10377a849fc53d4c7e851ef69535e29e9309 Binary files /dev/null and b/bin/images/Readme.png differ diff --git a/locale.xml b/locale.xml index 700aa7bae06c42eb6951dd901f437a35f0143fb6..68c6bedadd0f884f6b9010bf76894793b7add783 100644 --- a/locale.xml +++ b/locale.xml @@ -331,6 +331,31 @@ ]]></en> </locale> + <locale name="settings.guest.prevent_duplicate_guest_order_registration"> + <de><![CDATA[Vermeidung doppelter Registrierungen für wiederkehrende Gastbestellungen]]></de> + <en><![CDATA[Avoidance of duplicate registrations for recurring guest orders]]></en> + </locale> + <locale name="settings.guest.prevent_duplicate_guest_order_registration.description"> + <de><![CDATA[ + <p>Mit dieser Option kannst Du wiederkehrende Bestellungen von Gästen ohne eine erneute Registrierung direkt einem bestehenden Kundenkonto zuordnen. + Wenn diese Funktion aktiviert ist, werden Bestellungen, die mit einer bereits bekannten E-Mail-Adresse getätigt werden, + automatisch dem zugehörigen Kundenkonto zugefügt. Das verhindert die Erstellung eines neuen Kontos bei jeder neuen Bestellung. + So wird der Bestellprozess für wiederkehrende Gäste vereinfacht und die Verwaltung von Kundenkonten effizienter.</p> + + <p>Bitte beachte, dass diese Einstellung vor allem dann sinnvoll ist, wenn es keine Frontend-Kundenkonten gibt, + also wenn Kunden sich nicht selbst im System anmelden können.</p> + ]]></de> + <en><![CDATA[ + <p>With this option, you can assign recurring orders from guests directly to an existing customer account without having to register again. + If this feature is activated, orders placed with an already known e-mail address will be automatically added to the associated customer account. + This prevents the creation of a new account for each new order and simplifies the ordering process for + returning guests and makes customer account management more efficient.</p> + + <p>Please note that this setting is particularly useful if there are no front-end customer accounts, + i.e. when customers cannot log into the system themselves.</p> + ]]></en> + </locale> + </groups> </locales> diff --git a/package.xml b/package.xml index f2296bf5c381b17e1932d46b73eb936b521e2607..75c9d3cbd30979cdd4a56570d0b7156d9dba6b9e 100644 --- a/package.xml +++ b/package.xml @@ -9,6 +9,8 @@ <locale group="quiqqer/order-guestorder" var="package.description"/> </description> + <image src="URL_OPT_DIR/quiqqer/order-guestorder/bin/images/Logo.png"/> + <support> <email><![CDATA[support@pcsg.de]]></email> <forum><![CDATA[https://community.quiqqer.com]]></forum> diff --git a/settings.xml b/settings.xml index 2627376805a5b762dda59747130ca5edfb01d55e..63f5a99cbf29067a66a4c321937ce074303f89ee 100644 --- a/settings.xml +++ b/settings.xml @@ -15,6 +15,10 @@ <type><![CDATA[bool]]></type> <defaultvalue>1></defaultvalue> </conf> + <conf name="prevent_duplicate_guest_order_registration"> + <type><![CDATA[bool]]></type> + <defaultvalue>0></defaultvalue> + </conf> </section> </config> @@ -79,6 +83,17 @@ var="settings.guest.invoicing_for_guests.description"/> </description> </input> + + <input conf="guestorder.prevent_duplicate_guest_order_registration" type="checkbox"> + <text> + <locale group="quiqqer/order-guestorder" + var="settings.guest.prevent_duplicate_guest_order_registration"/> + </text> + <description> + <locale group="quiqqer/order-guestorder" + var="settings.guest.prevent_duplicate_guest_order_registration.description"/> + </description> + </input> </settings> </category> diff --git a/src/QUI/ERP/Order/Guest/EventHandler.php b/src/QUI/ERP/Order/Guest/EventHandler.php index 488b5eacbc12a83b7316be2ae2704b80067724da..b6cd03cb874e1ac519f9b1592e848669f429ea7e 100644 --- a/src/QUI/ERP/Order/Guest/EventHandler.php +++ b/src/QUI/ERP/Order/Guest/EventHandler.php @@ -216,11 +216,9 @@ public static function onQuiqqerOrderProcessSendCreateOrder(QUI\ERP\Order\OrderP // create normal account if (QUI::getUsers()->usernameExists($email)) { // user already exists - // @deprecated $User = QUI::getUsers()->getUserByName($email); $Order->setCustomer($User); } elseif (GuestOrder::isAnonymousOrder()) { - // @deprecated $GuestUser->setAttribute('email', $email); $Order->setCustomer($GuestUser); } else {