JEMBOT MAWOT Bypass Shell

Current Path : /home/cinepatreb/billetterie/modules/mollie/src/Service/
Upload File :
Current File : /home/cinepatreb/billetterie/modules/mollie/src/Service/OrderStatusService.php

<?php
/**
 * Mollie       https://www.mollie.nl
 *
 * @author      Mollie B.V. <info@mollie.nl>
 * @copyright   Mollie B.V.
 * @license     https://github.com/mollie/PrestaShop/blob/master/LICENSE.md
 *
 * @see        https://github.com/mollie/PrestaShop
 * @codingStandardsIgnoreStart
 */

namespace Mollie\Service;

use Configuration;
use Mollie\Api\Types\OrderStatus;
use Mollie\Api\Types\PaymentStatus;
use Mollie\Config\Config;
use Mollie\Repository\OrderRepository;
use Mollie\Utility\OrderStatusUtility;
use Order;
use OrderDetail;
use OrderHistory;
use PrestaShopDatabaseException;
use PrestaShopException;
use Tools;
use Validate;

if (!defined('_PS_VERSION_')) {
    exit;
}

class OrderStatusService
{
    /**
     * @var MailService
     */
    private $mailService;

    private $orderRepository;

    public function __construct(MailService $mailService, OrderRepository $orderRepository)
    {
        $this->mailService = $mailService;
        $this->orderRepository = $orderRepository;
    }

    /**
     * @param int $orderId
     * @param string|int $statusId
     * @param null $useExistingPayment
     * @param array $templateVars
     *
     * @return void
     *
     * @throws PrestaShopDatabaseException
     * @throws PrestaShopException
     *
     * @since 3.3.2 Accept both Order ID and Order object
     * @since 3.3.2 Accept both Mollie status string and PrestaShop status ID
     * @since 3.3.2 $useExistingPayment option
     * @since 3.3.4 Accepts template vars for the corresponding email template
     */
    public function setOrderStatus($orderId, $statusId, $useExistingPayment = null, $templateVars = [])
    {
        if (is_string($statusId)) {
            $status = $statusId;
            if (empty(Config::getStatuses()[$statusId])) {
                return;
            }
            $statusId = $this->transformOrderStatusToBackorder($statusId, $orderId);

            $statusId = (int) Config::getStatuses()[$statusId];
        } else {
            $status = '';
            foreach (Config::getStatuses() as $mollieStatus => $prestaShopStatusId) {
                if ((int) $prestaShopStatusId === $statusId) {
                    $status = $mollieStatus;
                    break;
                }
            }
        }

        if (0 === (int) $statusId) {
            return;
        }
        $order = new Order((int) $orderId);

        if (!Validate::isLoadedObject($order)) {
            return;
        }

        if ((int) $order->current_state === (int) $statusId) {
            return;
        }
        if ($this->isStatusPaid($statusId) && $this->isStatusPaid($order->current_state)) {
            return;
        }

        if (!Validate::isLoadedObject($order)
            || !$status
        ) {
            return;
        }
        if (null === $useExistingPayment) {
            $useExistingPayment = !$order->hasInvoice();
        }

        $orders = $this->orderRepository->findAllByCartId($order->id_cart);
        if (count($orders) > 1) {
            foreach ($orders as $subOrder) {
                $history = new OrderHistory();
                $history->id_order = $subOrder->id;
                $history->changeIdOrderState($statusId, $subOrder->id, $useExistingPayment);

                $status = OrderStatusUtility::transformPaymentStatusToPaid($status, Config::STATUS_PAID_ON_BACKORDER);

                if ($this->checkIfOrderConfNeedsToBeSend($statusId)) {
                    $this->mailService->sendOrderConfMail($subOrder, $statusId);
                }

                if ('0' === Configuration::get('MOLLIE_MAIL_WHEN_' . Tools::strtoupper($status))) {
                    $history->add();
                } else {
                    $history->addWithemail(true, $templateVars);
                }
            }
        } else {
            $history = new OrderHistory();
            $history->id_order = $order->id;
            $history->changeIdOrderState($statusId, $orderId, $useExistingPayment);

            $status = OrderStatusUtility::transformPaymentStatusToPaid($status, Config::STATUS_PAID_ON_BACKORDER);

            if ($this->checkIfOrderConfNeedsToBeSend($statusId)) {
                $this->mailService->sendOrderConfMail($order, $statusId);
            }

            if ('0' === Configuration::get('MOLLIE_MAIL_WHEN_' . Tools::strtoupper($status))) {
                $history->add();
            } else {
                $history->addWithemail(true, $templateVars);
            }
        }
    }

    public function transformOrderStatusToBackorder($status, $orderId)
    {
        if (PaymentStatus::STATUS_PAID === $status || OrderStatus::STATUS_AUTHORIZED === $status) {
            if ($this->isOrderBackOrder($orderId)) {
                return Config::STATUS_PAID_ON_BACKORDER;
            }
        }

        return $status;
    }

    private function checkIfOrderConfNeedsToBeSend($statusId)
    {
        if (Config::NEW_ORDER_MAIL_SEND_ON_PAID !== (int) Configuration::get(Config::MOLLIE_SEND_ORDER_CONFIRMATION)) {
            return false;
        }

        return $this->isStatusPaid($statusId);
    }

    private function isOrderBackOrder($orderId)
    {
        $order = new Order($orderId);
        $orderDetails = $order->getOrderDetailList();
        /** @var OrderDetail $detail */
        foreach ($orderDetails as $detail) {
            $orderDetail = new OrderDetail($detail['id_order_detail']);
            if (
                Configuration::get('PS_STOCK_MANAGEMENT') &&
                ($orderDetail->getStockState() || $orderDetail->product_quantity_in_stock < 0)
            ) {
                return true;
            }
        }

        return false;
    }

    private function isStatusPaid($statusId)
    {
        return ((int) $statusId === (int) Configuration::get(Config::MOLLIE_STATUS_PAID)) ||
            ((int) $statusId === (int) Configuration::get(Config::STATUS_PS_OS_OUTOFSTOCK_PAID)) ||
            ((int) $statusId === (int) Configuration::get(Config::MOLLIE_AUTHORIZABLE_PAYMENT_STATUS_AUTHORIZED));
    }
}

xxxxx1.0, XXX xxxx