403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/wbs24.deliverytypescvetdvor/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/wbs24.deliverytypescvetdvor/lib/Events.php
<?
namespace Wbs24\Deliverytypescvetdvor;

use Bitrix\Main\Config\Option;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Loader;
use Bitrix\Main\Event;
use Bitrix\Sale\Delivery\Services;

class Events {

    public function __construct($objects = [])
    {
        $this->main = $objects['Main'] ?? new Main();
        $this->moduleId = $this->main->getModuleId();
        $this->wrappers = new Wrappers($objects);
    }

    public static function changeDeliveryPrice(\Bitrix\Main\Event $event)
    {
        $eventsObject = new Events();

        $shipment = $event->getParameter('SHIPMENT');
        $calcResult = $event->getParameter('RESULT');
        if (!$shipment) return;

        $order = $shipment->getCollection()->getOrder();
        $siteId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'site_id');
        $fastDeliveryPrice = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'fast_delivery_price') ?? 0;
        $deliveryOnTimePrice = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'delivery_on_time_price') ?? 0;

        if (
            $shipment->getDeliveryId() != $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'delivery_service_id')
            || $order->getDeliveryPrice() == 0
            || $siteId != SITE_ID
        ) {
            return;
        }

        $regionId = $eventsObject->getRegionId();

        if (empty($_SESSION['WBS24_REGION_ID'])) {
            $_SESSION['WBS24_REGION_ID'] = $regionId;
        }

        // Если текущий регион ID не равен ID региона в сессии то стираем значение базовой цены
        if ($regionId != $_SESSION['WBS24_REGION_ID']) {
            $_SESSION['WBS24_REGION_ID'] = $regionId;
            unset($_SESSION['WBS24_BASE_DELIVERY_PRICE']);
        }

        // Установка в сессию изначльную стоимость
        if (!isset($_SESSION['WBS24_BASE_DELIVERY_PRICE'])) {
            $_SESSION['WBS24_BASE_DELIVERY_PRICE'] = $order->getDeliveryPrice();
        }

        $baseDeliveryPrice = $_SESSION['WBS24_BASE_DELIVERY_PRICE'] ?? 0;

        // IDS свойств
        $regularDeliveryId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'regular_delivery_property_id');
        $fastDeliveryId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'fast_delivery_property_id');
        $deliveryOnTimeId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'delivery_on_time_property_id');

        $regularDelivery = $order->getPropertyCollection()->getItemByOrderPropertyId($regularDeliveryId);
        if ($regularDelivery) $regularDeliveryActive = $regularDelivery->getValue();

        $fastDelivery = $order->getPropertyCollection()->getItemByOrderPropertyId($fastDeliveryId);
        if ($fastDelivery) $fastDeliveryActive = $fastDelivery->getValue();

        $deliveryOnTime = $order->getPropertyCollection()->getItemByOrderPropertyId($deliveryOnTimeId);
        if ($deliveryOnTime) $deliveryOnTimeActive = $deliveryOnTime->getValue();

        if ($regularDeliveryActive == 'on') {
            $calcResult->setDeliveryPrice($baseDeliveryPrice);
        } elseif ($fastDeliveryActive == 'on') {
            $calcResult->setDeliveryPrice($baseDeliveryPrice + $fastDeliveryPrice);
        } elseif ($deliveryOnTimeActive == 'on') {
            $calcResult->setDeliveryPrice($baseDeliveryPrice + $deliveryOnTimePrice);
        }

        return new \Bitrix\Main\EventResult(
            \Bitrix\Main\EventResult::SUCCESS,
            array(
                "RESULT" => $calcResult,
            )
        );
    }

    protected function getRegionId()
    {
        if (!Loader::includeModule('aspro.next')) throw new SystemException("Module aspro.next don`t installed");

        $region = new \CNextRegionality();
        $regionInfo = $region->getCurrentRegion();
        $regionId = $regionInfo['ID'] ?? 0;

        return $regionId;
    }

    public static function OnSaleOrderBeforeSavedHandler(Event $event)
    {
        $order = $event->getParameter("ENTITY");

        $eventsObject = new Events();

        $siteId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'site_id');
        if ($siteId != SITE_ID) {
            return;
        }

        // IDS свойств
        $regularDeliveryId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'regular_delivery_property_id');
        $fastDeliveryId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'fast_delivery_property_id');
        $deliveryOnTimeId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'delivery_on_time_property_id');

        $deliveryIntervalId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'delivery_interval');
        $deliveryTimeId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'delivery_time');
        $deliveryDateId = $eventsObject->wrappers->Option->get($eventsObject->moduleId, 'delivery_date');


        $regularDelivery = $order->getPropertyCollection()->getItemByOrderPropertyId($regularDeliveryId);
        if ($regularDelivery) $regularDeliveryActive = $regularDelivery->getValue();

        $fastDelivery = $order->getPropertyCollection()->getItemByOrderPropertyId($fastDeliveryId);
        if ($fastDelivery) $fastDeliveryActive = $fastDelivery->getValue();

        $deliveryOnTime = $order->getPropertyCollection()->getItemByOrderPropertyId($deliveryOnTimeId);
        if ($deliveryOnTime) $deliveryOnTimeActive = $deliveryOnTime->getValue();

        $deliveryInterval = $order->getPropertyCollection()->getItemByOrderPropertyId($deliveryIntervalId);
        $deliveryTime = $order->getPropertyCollection()->getItemByOrderPropertyId($deliveryTimeId);
        $deliveryDate = $order->getPropertyCollection()->getItemByOrderPropertyId($deliveryDateId);

        if ($regularDeliveryActive == 'on') {
            $deliveryTime->setValue('');
            $regularDelivery->setValue('Да');
        } elseif ($fastDeliveryActive == 'on') {
            $deliveryTime->setValue('');
            $deliveryInterval->setValue('');
            $deliveryDate->setValue('');
            $fastDelivery->setValue('Да');
        } elseif ($deliveryOnTimeActive == 'on') {
            $deliveryInterval->setValue('');
            $deliveryOnTime->setValue('Да');
        }
    }

	public static function OnSaleComponentOrderJsDataHandler(&$arResult, &$arParams) {
        $Events = new Events();

        $siteId = $Events->wrappers->Option->get($Events->moduleId, 'site_id');
        if ($siteId != SITE_ID) {
            return;
        }

        $groupParamsId = $Events->wrappers->Option->get($Events->moduleId, 'group_id_for_shipping_options');

        foreach ($arResult['JS_DATA']['ORDER_PROP']['properties'] as $key => $prop) {
            if ($prop['PROPS_GROUP_ID'] == $groupParamsId) {
                $arResult['JS_DATA']['DELIVERY_PROPS']['properties'][] = $arResult['JS_DATA']['ORDER_PROP']['properties'][$key];
                unset($arResult['JS_DATA']['ORDER_PROP']['properties'][$key]);
            }
        }

        foreach ($arResult['JS_DATA']['ORDER_PROP']['groups'] as $key => $group) {
            if ($group['ID'] == $groupParamsId) {
                $arResult['JS_DATA']['DELIVERY_PROPS']['groups'][] = $arResult['JS_DATA']['ORDER_PROP']['groups'][$key];
                unset($arResult['JS_DATA']['ORDER_PROP']['groups'][$key]);
            }
        }

        echo "<script>".self::getSettingsForJs($Events)."</script>";
    }

    private static function getSettingsForJs($Events) {
        $settingsObject = 'Wbs24DeliveryTypes';
        $code = 'let '.$settingsObject.'= {}; ';

        $code .= $settingsObject.'.deliveryTypesToActive = '.\CUtil::PhpToJSObject($Events->getDeliveryTypesToActive()).'; ';
        //$code .= $settingsObject.'.fastDeliverySum = '.$Events->wrappers->Option->get($Events->moduleId, 'fast_delivery_price').'; ';
        //$code .= $settingsObject.'.deliveryOnTimeInfo = '.\CUtil::PhpToJSObject($Events->getDeliveryOnTimeInfo()).'; ';
        $code .= $settingsObject.'.deliveryOnTimeInterval = '.$Events->wrappers->Option->get($Events->moduleId, 'delivery_on_time_plus_time').'; ';
        $code .= $settingsObject.'.deliveryProps = '.\CUtil::PhpToJSObject($Events->getDeliveryProps()).'; ';
        $code .= $settingsObject.'.deliveryOnTimeActiveFrom = '.$Events->wrappers->Option->get($Events->moduleId, 'delivery_on_time_active_from').'; ';
        $code .= $settingsObject.'.deliveryOnTimeActiveTo = '.$Events->wrappers->Option->get($Events->moduleId, 'delivery_on_time_active_to').'; ';
        $code .= $settingsObject.'.specialDeliveryIds = "'.$Events->wrappers->Option->get($Events->moduleId, 'special_delivery_ids').'"; ';

        return $code;
    }

    private function getDeliveryTypesToActive()
    {
        return [
            //'regular_delivery' => $this->wrappers->Option->get($this->moduleId, 'regular_delivery'),
            'fast_delivery' => $this->wrappers->Option->get($this->moduleId, 'fast_delivery'),
            'delivery_on_time' => $this->wrappers->Option->get($this->moduleId, 'delivery_on_time'),
        ];
    }

    private function getDeliveryOnTimeInfo()
    {
        $deliveryOnTimeSumToActive = [];

        for ($i = 0; $i < 24; $i++) {
            $deliveryOnTimeSumToActive[] = [
                'timeStart' => $i,
                'timeEnd' => $i + 1,
                'sum' => $this->wrappers->Option->get($this->moduleId, 'delivery_on_time_hour_'.$i),
            ];
        }

        return $deliveryOnTimeSumToActive;
    }

    private function getDeliveryProps()
    {
        return [
            'delivery_service_id' => $this->wrappers->Option->get($this->moduleId, 'delivery_service_id'),
            'group_id_for_shipping_options' => $this->wrappers->Option->get($this->moduleId, 'group_id_for_shipping_options'),
            'regular_delivery_property_id' => $this->wrappers->Option->get($this->moduleId, 'regular_delivery_property_id'),
            'fast_delivery_property_id' => $this->wrappers->Option->get($this->moduleId, 'fast_delivery_property_id'),
            'delivery_on_time_property_id' => $this->wrappers->Option->get($this->moduleId, 'delivery_on_time_property_id'),
            'delivery_date' => $this->wrappers->Option->get($this->moduleId, 'delivery_date'),
            'delivery_interval' => $this->wrappers->Option->get($this->moduleId, 'delivery_interval'),
            'delivery_time' => $this->wrappers->Option->get($this->moduleId, 'delivery_time'),
            'delivery_address' => $this->wrappers->Option->get($this->moduleId, 'delivery_address'),
            'delivery_home_number' => $this->wrappers->Option->get($this->moduleId, 'delivery_home_number'),
            'delivery_on_time_cost' => $this->wrappers->Option->get($this->moduleId, 'delivery_on_time_cost'),
            'fast_delivery_note' => $this->wrappers->Option->get($this->moduleId, 'fast_delivery_note'),
        ];
    }
}
?>

Youez - 2016 - github.com/yon3zu
LinuXploit