Skip to content
Code-Schnipsel Gruppen Projekte
Commit 11bf29b5 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

Merge branch 'dev' into 'next'

Dev

See merge request !13
Übergeordnete bc4b890c 197de414
No related branches found
No related tags found
2 Merge Requests!14Next,!13Dev
Pipeline #5740 bestanden mit Phase
in 11 Sekunden
# Order Simple Checkout
![Order Simple Checkout](bin/images/Readme.png);
![Order Simple Checkout](bin/images/Readme.png)
The QUIQQER Simple Checkout plugin is a seamless extension for your QUIQQER system that simplifies and speeds up the
checkout process. With this plugin, your customers can complete their purchase on a single page, eliminating multi-step
......
......@@ -8,6 +8,11 @@
'package_quiqqer_order-simple-checkout_ajax_frontend_orderWithCosts',
function ($orderHash) {
$SessionUser = QUI::getUserBySession();
$userIsGuest = false;
if ($SessionUser->getId() === 6) {
$userIsGuest = true;
}
$Checkout = new QUI\ERP\Order\SimpleCheckout\Checkout([
'orderHash' => $orderHash
......@@ -87,13 +92,14 @@ function ($orderHash) {
$DefaultAddress->setAttribute('city', $DeliveryAddress->getAttribute('city'));
$DefaultAddress->setAttribute('country', $DeliveryAddress->getAttribute('country'));
$DefaultAddress->save(QUI::getUsers()->getSystemUser());
} elseif (method_exists($SessionUser, 'addAddress')) {
} elseif (method_exists($SessionUser, 'addAddress') && !$userIsGuest) {
// add new address
$NewAddress = $SessionUser->addAddress($InvoiceAddress->getAttributes());
$Order->setInvoiceAddress($NewAddress);
$Order->save(QUI::getUsers()->getSystemUser());
}
$Order->save(QUI::getUsers()->getSystemUser());
return $Checkout->orderWithCosts();
},
['orderHash']
......
<?php
/**
* This file contains package_quiqqer_order-simple-checkout_ajax_frontend_validate
*/
use QUI\ERP\Order\SimpleCheckout\Checkout;
QUI::$Ajax->registerFunction(
'package_quiqqer_order-simple-checkout_ajax_frontend_validate',
function ($orderHash) {
$Checkout = new Checkout(['orderHash' => $orderHash]);
return $Checkout->gatherMissingOrderDetails();
},
['orderHash']
);
......@@ -558,6 +558,54 @@ define('package/quiqqer/order-simple-checkout/bin/frontend/controls/SimpleChecko
QUIAjax.post('package_quiqqer_order-simple-checkout_ajax_frontend_update', (isValid) => {
PayButton.disabled = !isValid;
const Delivery = this.getElm().getElement('.quiqqer-simple-checkout-data-delivery');
const Shipping = this.getElm().getElement('.quiqqer-simple-checkout-data-shipping');
const Payment = this.getElm().getElement('.quiqqer-simple-checkout-data-payment');
if (!isValid) {
QUIAjax.get('package_quiqqer_order-simple-checkout_ajax_frontend_validate', (missing) => {
if (Delivery) {
if (missing.indexOf('address') !== -1) {
Delivery.addClass('quiqqer-simple-checkout-require');
} else {
Delivery.removeClass('quiqqer-simple-checkout-require');
}
}
if (Shipping) {
if (missing.indexOf('shipping') !== -1) {
Shipping.addClass('quiqqer-simple-checkout-require');
} else {
Shipping.removeClass('quiqqer-simple-checkout-require');
}
}
if (Payment) {
if (missing.indexOf('payment') !== -1) {
Payment.addClass('quiqqer-simple-checkout-require');
} else {
Payment.removeClass('quiqqer-simple-checkout-require');
}
}
}, {
'package': 'quiqqer/order-simple-checkout',
orderData: JSON.encode(orderData),
orderHash: this.getAttribute('orderHash')
});
} else {
if (Delivery) {
Delivery.removeClass('quiqqer-simple-checkout-require');
}
if (Shipping) {
Shipping.removeClass('quiqqer-simple-checkout-require');
}
if (Payment) {
Payment.removeClass('quiqqer-simple-checkout-require');
}
}
this.$refreshBasket().then(resolve);
}, {
'package': 'quiqqer/order-simple-checkout',
......
......@@ -58,9 +58,10 @@ define('package/quiqqer/order-simple-checkout/bin/frontend/controls/SimpleChecko
this.$onChange();
}
});
BusinessType.fireEvent('change');
}
BusinessType.fireEvent('change');
this.getElm().getElements('input').addEvent('change', this.$onChange);
loaded = true;
},
......
......@@ -24,6 +24,10 @@
}
}
.quiqqer-simple-checkout-require {
border: 1px solid red;
}
/*******************************/
/* order details (only mobile) */
/*******************************/
......
......@@ -145,6 +145,36 @@ public function isValid(): bool
return true;
}
public function gatherMissingOrderDetails(): array
{
$missing = [];
// check address
try {
$Order = $this->getOrder();
QUI\ERP\Order\Controls\OrderProcess\CustomerData::validateAddress(
$Order->getInvoiceAddress()
);
} catch (QUI\Exception $exception) {
$missing[] = 'address';
}
// check payment
$Payment = $Order->getPayment();
if (!$Payment) {
$missing[] = 'payment';
}
// check shipping
if (QUI::getPackageManager()->isInstalled('quiqqer/shipping') && !$Order->getShipping()) {
$missing[] = 'shipping';
}
return $missing;
}
/**
* @throws QUI\ERP\Order\Exception
* @throws QUI\Permissions\Exception
......@@ -168,6 +198,7 @@ public function getOrderProcessStep(): array
// init order process
$OrderProcess = new QUI\ERP\Order\OrderProcess([
'Order' => $Order,
'orderHash' => $Order->getHash(),
'step' => 'Processing'
]);
......
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren