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

feat: anonymous order creates no user anymore

Übergeordneter 60e49645
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
2 Merge Requests!4feat: new settings,!2feat: new settings
......@@ -101,12 +101,28 @@
</locale>
<locale name="message.registration.password.info" html="true">
<de><![CDATA[
Danke, dass du dich dazu entschieden hast, dich bei unserem Shop zu registrieren.
Damit du dich einloggen kannst, haben wir dir ein Passwort an deine E-Mail-Adresse gesendet.
Bei deinem ersten Login wirst du gebeten, dein Passwort zu ändern.
Bei deinem ersten Login wirst du gebeten, dein Passwort zu aktualisieren.
]]></de>
<en><![CDATA[
In order for you to log in, we have sent a password to your email address.
When you log in for the first time, you will be asked to change your password.
Thank you for choosing to register with our store.
In order for you to log in, we have sent you a password to your email address.
When you log in for the first time, you will be asked to update your password.
]]></en>
</locale>
<locale name="site.message.error" html="true">
<de><![CDATA[
<h1>Es tut uns leid, aber ein Fehler ist aufgetreten.</h1>
<p>Leider ist bei Ihrer Nutzung unserer Website/Anwendung ein unerwarteter Fehler aufgetreten.
Wir entschuldigen uns für die Unannehmlichkeiten. Bitte kontaktieren Sie uns, damit wir Ihnen weiterhelfen können.</p>
<p>Vielen Dank für Ihr Verständnis.</p>
]]></de>
<en><![CDATA[
<h1>We are sorry, but an error has occurred</h1>.
<p>Unfortunately, an unexpected error occurred while you were using our website/app.
We apologize for the inconvenience. Please contact us so that we can assist you further.</p>
<p>Thank you for your understanding.</p>
]]></en>
</locale>
......
......@@ -77,13 +77,13 @@ public static function onRequest(Rewrite $Rewrite, string $url)
if (!$User) {
// create user via frontend users?
self::showSiteError();
return;
}
if ($User->isActive()) {
$Redirect = new RedirectResponse(QUI::getRewrite()->getProject()->getVHost(true, true));
$Redirect->setStatusCode(Response::HTTP_SEE_OTHER);
$Redirect->send();
exit;
self::redirectToMainSite();
return;
}
// password mail and activation mail
......@@ -117,36 +117,19 @@ public static function onRequest(Rewrite $Rewrite, string $url)
$Mailer->send();
$Site = $Rewrite->getSite();
$Site->setAttribute('short', '');
$Site->setAttribute('type', 'standard');
$Site->setAttribute('meta.canonical', $Site->getUrlRewrittenWithHost());
$Site->setAttribute('quiqqer.bricks.areas', '');
$Site->setAttribute(
'content',
self::setSiteContent(
'<div class="messages message-success">' .
QUI::getLocale()->get('quiqqer/order-guestorder', 'message.registration.password.info') .
'</div>'
);
return;
}
// invoice creation
// @todo
if ($_REQUEST['t'] === 'invoice') {
if (!isset($_REQUEST['o'])) {
return;
}
$order = $_REQUEST['o'];
return;
if ($_REQUEST['t'] === 'invoice' && isset($_REQUEST['o'])) {
self::onRequestInvoiceCreation();
}
}
......@@ -305,6 +288,10 @@ public static function onQuiqqerOrderProcessSendCreateOrder(QUI\ERP\Order\OrderP
if (QUI::getUsers()->usernameExists($email)) {
// user already exists
$User = QUI::getUsers()->getUserByName($email);
$Order->setCustomer($User);
} elseif (GuestOrder::isAnonymousOrder()) {
$GuestUser->setAttribute('email', $email);
$Order->setCustomer($GuestUser);
} else {
// create user account -> guest user
$User = QUI::getUsers()->createChild($email, $SystemUser);
......@@ -324,10 +311,10 @@ public static function onQuiqqerOrderProcessSendCreateOrder(QUI\ERP\Order\OrderP
}
$User->save($SystemUser);
$Order->setCustomer($User);
$Order->setInvoiceAddress($Address);
}
$Order->setCustomer($User);
$Order->setInvoiceAddress($Address);
$Order->save($SystemUser);
return;
......@@ -562,7 +549,7 @@ public static function extendMail(Collector $Collector, AbstractOrder $Order, $A
$invoiceLink = GuestOrder::getInvoiceCreationLink($Order);
$createAccountLink = GuestOrder::getAccountCreationLink($Order);
if (GuestOrder::isAnonymousOrder()) {
if (GuestOrder::isAnonymousOrder() && QUI::getPackageManager()->isInstalled('quiqqer/invoice')) {
// Anonyme Bestellung: Rechnungserzeugung oder Kundenkonto anlegen
$html .= QUI::getLocale()->get('quiqqer/order-guestorder', 'mail.link.create.invoice', [
'link' => $invoiceLink
......@@ -584,4 +571,80 @@ public static function extendMail(Collector $Collector, AbstractOrder $Order, $A
}
//endregion
protected static function onRequestInvoiceCreation()
{
if (!QUI::getPackageManager()->isInstalled('quiqqer/invoice')) {
self::redirectToMainSite();
return;
}
$order = $_REQUEST['o'];
try {
$Order = QUI\ERP\Order\Handler::getInstance()->getOrderByHash($order);
} catch (\Exception $exception) {
self::redirectToMainSite();
return;
}
try {
$Customer = $Order->getCustomer();
$User = QUI::getUsers()->get($Customer->getId());
// check address
$Address = $Order->getInvoiceAddress();
$missing = QUI\ERP\Accounting\Invoice\Utils\Invoice::getMissingAddressData($Address->getAttributes());
if (!count($missing)) {
// alles passt, dann kann eine invoice angelegt werden
$Order->createInvoice(QUI::getUserBySession());
return;
}
// wenn nutzer aktiv ist, muss dieser sich anmelden und die address daten eingaben
if ($User->isActive()) {
$Login = new QUI\Users\Controls\Login();
$html = '<div class="messages message-attention">';
$html .= 'Bitte melde dich an und gebe deine richtigen Addressdaten ein.';
$html .= '</div>';
$html .= $Login->create();
self::setSiteContent($html);
return;
}
// @todo
} catch (QUI\Exception $exception) {
self::showSiteError();
}
}
protected static function redirectToMainSite()
{
$Redirect = new RedirectResponse(QUI::getRewrite()->getProject()->getVHost(true, true));
$Redirect->setStatusCode(Response::HTTP_SEE_OTHER);
$Redirect->send();
exit;
}
protected static function setSiteContent($content)
{
$Site = QUI::getRewrite()->getSite();
$Site->setAttribute('short', '');
$Site->setAttribute('type', 'standard');
$Site->setAttribute('meta.canonical', $Site->getUrlRewrittenWithHost());
$Site->setAttribute('quiqqer.bricks.areas', '');
$Site->setAttribute('content', $content);
}
protected static function showSiteError()
{
self::setSiteContent(
'<div class="messages message-error">' .
QUI::getLocale()->get('quiqqer/order-guestorder', 'site.message.error') .
'</div>'
);
}
}
......@@ -56,7 +56,13 @@ public function getGuestOrderId(): string
*/
public function getUsername(): string
{
return QUI::getLocale()->get('quiqqer/order-guestorder', 'guest.username');
$username = QUI::getLocale()->get('quiqqer/order-guestorder', 'guest.username');
if ($this->getAttribute('email')) {
$username .= ':' . $this->getAttribute('email');
}
return $username;
}
//region setter
......
<?php
namespace QUI\ERP\Order\Guest;
use QUI\Verification\AbstractVerification;
class MailVerification extends AbstractVerification
{
public function onSuccess()
{
// TODO: Implement onSuccess() method.
}
public function onError()
{
// TODO: Implement onError() method.
}
public function getSuccessMessage()
{
// TODO: Implement getSuccessMessage() method.
}
public function getErrorMessage($reason)
{
// TODO: Implement getErrorMessage() method.
}
}
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