Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/epages.pickpoint/delivery/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/epages.pickpoint/delivery/_delivery_pickpoint.php.back

<?php
use \Epages\PickPoint\Option;

/********************************************************************************
 * Simple delivery handler.
 * It uses fixed delivery price for any location groups. Needs at least one group of locations to be configured.
 ********************************************************************************/
CModule::IncludeModule('sale');
CModule::IncludeModule('epages.pickpoint');

include GetLangFileName(dirname(__FILE__).'/', '/delivery_pickpoint.php');

class CDeliveryPickPoint
{
	private static $isRequiredOptionsSet = null;
	
    public function Init()
    {
        return array(
            'SID' => 'pickpoint',
            'NAME' => GetMessage('PP_NAME'),
            'DESCRIPTION' => GetMessage('DESCRIPTION'),
            'DESCRIPTION_INNER' => GetMessage('DESCRIPTION_INNER'),
            'BASE_CURRENCY' => COption::GetOptionString('sale', 'default_currency', 'RUB'),
            'HANDLER' => __FILE__,
            'GETEXTRAINFOPARAMS' => 'CDeliveryPickPoint::GetExtraInfoParams',
            'DBGETSETTINGS' => array(
                'CDeliveryPickPoint',
                'GetSettings',
            ),
            'DBSETSETTINGS' => array(
                'CDeliveryPickPoint',
                'SetSettings',
            ),
            'GETCONFIG' => array(
                'CDeliveryPickPoint',
                'GetConfig',
            ),

            'COMPABILITY' => array(
                'CDeliveryPickPoint',
                'Compability',
            ),
            'CALCULATOR' => array(
                'CDeliveryPickPoint',
                'Calculate',
            ),
            'PROFILES' => array(
                'postamat' => array(
                    'TITLE' => GetMessage('PICKPOINT_MAIN'),
                    'DESCRIPTION' => GetMessage('PICKPOINT_SMALL_DESCRIPTION'),

                    'RESTRICTIONS_WEIGHT' => array(0),
                    'RESTRICTIONS_SUM' => array(0),
                ),
            ),
        );
    }

    public function GetConfig()
    {
        $arConfig = array(
            'CONFIG_GROUPS' => array(
                'postamat' => GetMessage('PICKPOINT_MAIN'),
            ),
            'CONFIG' => array(),
        );

        return $arConfig;
    }

    public function GetSettings($strSettings)
    {
        return unserialize($strSettings);
    }

    public function SetSettings($arSettings)
    {
        foreach ($arSettings as $key => $value) {
            if (strlen($value) > 0) {
                $arSettings[$key] = doubleval($value);
            } else {
                unset($arSettings[$key]);
            }
        }

        return serialize($arSettings);
    }

    public function __GetLocationPrice($LOCATION_ID, $arConfig)
    {
        if (!CheckPickpointLicense(COption::GetOptionString('epages.pickpoint', 'pp_ikn_number', ''))) {
            return false;
        }

        $obCity = CPickpoint::SelectCityByBXID($LOCATION_ID);
        if ($arCity = $obCity->Fetch()) {
            if ($arCity['ACTIVE'] == 'Y') {
                return floatval($arCity['PRICE']);
            }
        }

        return false;
    }

    public function __GetPrice($arOrder)
    {
        return CPickpoint::Calculate($arOrder);
    }

    public function Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP = false)
    {
        // Check required options
		if (is_null(self::$isRequiredOptionsSet))
			self::$isRequiredOptionsSet = Option::isRequiredOptionsSet();		
		
		if (!self::$isRequiredOptionsSet)
			return array('RESULT' => 'ERROR', 'TEXT' => GetMessage('PP_DELIVERY_ERROR_MODULE_OPTIONS_NOT_SET'));			
		
		return array(
            'RESULT' => 'OK',
            'VALUE' => self::__GetPrice($arOrder),
        );
    }

    public function Compability($arOrder, $arConfig)
    {
        // Check required options
		if (is_null(self::$isRequiredOptionsSet))
			self::$isRequiredOptionsSet = Option::isRequiredOptionsSet();		
		
		if (!self::$isRequiredOptionsSet)
			return array();		
		
		$status = PickPoint\Helper::checkPPCityAvailable($arOrder['LOCATION_TO']);

        if ($status['STATUS']) {
            return array('postamat');
        } else {
            return array();
        }
    }

    public static function isCityAvailable($cityName, $regionName)
    {
        $cities = array();
        $isInRegion = strlen($regionName) > 0;
        if (($citiesHandle = fopen($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/epages.pickpoint/cities.csv', 'r'))
            !== false
        ) {
            while (($row = fgets($citiesHandle)) !== false) {
                $data = explode(';', $row);
                if ($isInRegion) {
                    $cities[$data[3]][$data[1]] = ('true' === trim($data[4]));
                } else {
                    $cities[$data[1]] = ('true' === trim($data[4]));
                }
            }
            fclose($citiesHandle);
        }

        if ($isInRegion) {
            if (isset($cities[$regionName][$cityName])) {
                return true;
            }
            $regionName = str_replace(
                GetMessage('PICKPOINT_REGION_WORD_FULL'),
                GetMessage('PICKPOINT_REGION_WORD_SHORT'),
                $regionName
            );
            if (isset($cities[$regionName][$cityName])) {
                return true;
            }
            $regionName = str_replace(
                GetMessage('PICKPOINT_REGION_WORD_SHORT'),
                GetMessage('PICKPOINT_REGION_WORD_FULL'),
                $regionName
            );
            if (isset($cities[$regionName][$cityName])) {
                return true;
            }
        } else {
            if (isset($cities[$cityName])) {
                return true;
            }
        }

        return false;
    }
}

AddEventHandler(
    'sale',
    'onSaleDeliveryHandlersBuildList',
    array(
        'CDeliveryPickPoint',
        'Init',
    )
);