Newer
Older
<?php
namespace QUI\ERP\Coupons;
use QUI;
use Quiqqer\Engine\Collector;
use QUI\ERP\Order\Basket\Basket;
use QUI\ERP\Order\Basket\BasketGuest;
/**
* Class Events
*
* Global Event Handler for quiqqer/payment-paypal
*/
class Events
{
/**
* Template event quiqqer/order: onQuiqqer::order::orderProcessBasketEnd
*
* @param Collector $Collector
* @param BasketGuest $Basket
*/
public static function templateOrderProcessBasketEnd(Collector $Collector, $Basket)
{

Henning Leutz
committed
if (!($Basket instanceof Basket)
&& !($Basket instanceof QUI\ERP\Order\Basket\BasketOrder)
) {
return;
}
$Collector->append(
'<div data-qui="package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput"></div>'
);
}
/**
* event - on price factor init
*
* @param $Basket
* @param QUI\ERP\Order\AbstractOrder $Order

Henning Leutz
committed
* @param QUI\ERP\Products\Product\ProductList $Products
*/
public static function onQuiqqerOrderBasketToOrder(
$Basket,
QUI\ERP\Order\AbstractOrder $Order,

Henning Leutz
committed
QUI\ERP\Products\Product\ProductList $Products
) {
$coupons = $Order->getDataEntry('quiqqer-coupons');
if (!$coupons) {
return;
}
if (!is_array($coupons)) {
return;
}

Henning Leutz
committed
$PriceFactors = $Products->getPriceFactors();
foreach ($coupons as $coupon) {
/* @var $Coupon CouponCode */
try {
$Coupon = Handler::getCouponCodeByCode($coupon);
} catch (\Exception $Exception) {
continue;
}
// coupon check
if (!$Coupon->isRedeemable($Order->getCustomer())) {
continue;
}
/* @var $Discount QUI\ERP\Discount\Discount */
$discounts = $Coupon->getDiscounts();
foreach ($discounts as $Discount) {
// @todo discount check
$PriceFactor = $Discount->toPriceFactor();
$PriceFactor->setTitle(

Henning Leutz
committed
QUI::getLocale()->get('quiqqer/coupons', 'coupon.discount.title', [
'code' => $Coupon->getCode()
])

Henning Leutz
committed
// @todo pos prüfen
$PriceFactors->addToEnd($PriceFactor);
}
}

Henning Leutz
committed
try {
$Products->recalculation();
} catch (QUI\Exception $Exception) {
}
}