Skip to content
Code-Schnipsel Gruppen Projekte
Events.php 3,96 KiB
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)
    {
        if (!($Basket instanceof Basket)) {
            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
     * @param QUI\ERP\Products\Utils\PriceFactors $PriceFactors
     */
    public static function onQuiqqerOrderBasketToOrder(
        $Basket,
        QUI\ERP\Order\AbstractOrder $Order,
        QUI\ERP\Products\Utils\PriceFactors $PriceFactors
    ) {
        $coupons = $Order->getDataEntry('quiqqer-coupons');

        if (!$coupons) {
            return;
        }

        if (!is_array($coupons)) {
            return;
        }

        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(
                    'Gutschein-Code '.$Coupon->getCode()
                );

                $PriceFactors->addToEnd($PriceFactor);
            }
        }
    }

//    /**
//     * Template event quiqqer/order: onQuiqqer::order::basketSmall::end
//     *
//     * @param Collector $Collector
//     * @param BasketGuest $Basket
//     * @return void
//     *
//     * @throws QUI\Exception
//     */
//    public static function templateOrderBasketSmallEnd(Collector $Collector, $Basket)
//    {
//        $PaymentExpress = Provider::getPayPalExpressPayment();
//
//        if (!$PaymentExpress || !$PaymentExpress->isActive()) {
//            return;
//        }
//
//        if (!($Basket instanceof Basket)) {
//            return;
//        }
//
//        // do not display PayPal button if basket has no articles
//        if (!$Basket->count()) {
//            return;
//        }
//
//        $Project      = QUI::getProjectManager()->getStandard();
//        $CheckoutStep = new CheckoutStep();
//        $checkout     = 0;
//
//        if ($Basket->hasOrder()) {
//            $Order = $Basket->getOrder();
//
//            if ($Order->getPaymentDataEntry(Payment::ATTR_PAYPAL_PAYMENT_ID)) {
//                $checkout = 1;
//            }
//        }
//
//        $Collector->append(
//            '<div data-qui="package/quiqqer/payment-paypal/bin/controls/ExpressBtnLoader"
//                  data-qui-options-context="smallbasket"
//                  data-qui-options-basketid="' . $Basket->getId() . '"
//                  data-qui-options-checkout="' . $checkout . '"
//                  data-qui-options-displaysize="' . Provider::getWidgetsSetting('btn_express_size_smallbasket') . '"
//                  data-qui-options-displaycolor="' . Provider::getWidgetsSetting('btn_express_color') . '"
//                  data-qui-options-displayshape="' . Provider::getWidgetsSetting('btn_express_shape') . '"
//                  data-qui-options-orderprocessurl="' . OrderUtils::getOrderProcessUrl($Project, $CheckoutStep) . '">
//            </div>'
//        );
//    }
}