Skip to content
Code-Schnipsel Gruppen Projekte
Bestätigt Commit 18721860 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

feat: new setting - duplicate guest order

Übergeordneter 2425ea3d
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
2 Merge Requests!8Next,!7Dev
......@@ -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);
......
......@@ -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();
},
......
......@@ -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>
......@@ -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>
......
......@@ -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 {
......
0% Lade oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren