2017 © Pedro Peláez
 

yii2-extension yii2-delivery-calculator

Yii2 extension help to get the result of the calculating from the aggregated delivery services

image

uranum/yii2-delivery-calculator

Yii2 extension help to get the result of the calculating from the aggregated delivery services

  • Friday, April 6, 2018
  • by Eugeny_Emelyanov
  • Repository
  • 2 Watchers
  • 1 Stars
  • 32 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 6 Versions
  • 3 % Grown

The README.md

Yii2-delivery-calculator

Yii2 extension help to get the result of the calculating from the aggregated delivery services, (*1)

Under the development...

Installation

The preferred way to install this extension is through composer., (*2)

Either run, (*3)

php composer.phar require --prefer-dist uranum/yii2-delivery-calculator

or add, (*4)

"uranum/yii2-delivery-calculator": "*"

to the require section of your composer.json file., (*5)

Configure module

Миграции (для создания модуля доставок в админке)

Примените миграцию yii migrate --migrationPath=@uranum/delivery/migration, (*6)

ОБЯЗАТЕЛЬНО! Задать сервисы доставки, (*7)

'modules'             => [
        'delivery' => [
            'class' => 'uranum\delivery\module\Module',
            'params' => [...],
            'components'             => [
                $code['POST']       => [
                    'class' => 'uranum\delivery\services\PostDelivery',
                ],
                $code['NALOJ']      => [
                    'class' => 'uranum\delivery\services\PostNalojDelivery',
                ],
                $code['CDEK_STORE'] => [
                    'class' => 'uranum\delivery\services\CdekStore',
                ],
                $code['CDEK_DOOR']  => [
                    'class' => 'uranum\delivery\services\CdekDoor',
                ],
                $code['COURIER']    => [
                    'class' => 'uranum\delivery\services\CourierDelivery',
                ],
                $code['PICKUP']     => [
                    'class' => 'uranum\delivery\services\PickupDelivery',
                ],
                $code['ENERGY']     => [
                    'class' => 'uranum\delivery\services\EnergyDelivery',
                ],
                $code['ON_CHOICE']     => [
                    'class' => 'uranum\delivery\services\OnChoiceDelivery',
                ],
            ],
        ],
]

Задать параметры для postcalc, (*8)

'modules'             => [
        'delivery' => [
            'class' => 'uranum\delivery\module\Module',
            'params' => [
                'locationFrom' => 'Новосибирск',        // Город отправки
                /** Параметры для postcalc (Почта России) */
                'siteName'     => 'site.ru',            // Название сайта (ОБЯЗАТЕЛЬНЫЙ)
                'key'          => 'domen-XXXXX',        // ключ для доступа к API (ОБЯЗАТЕЛЬНЫЙ c 25 декабря 2019 года)
                'email'        => 'your@mail.ru',       // Контактный email. Самый принципиальный параметр для postcalc (ОБЯЗАТЕЛЬНЫЙ)
                'contactName'  => 'Eugeny_Emelyanov',   // Контактное лицо. Имя_фамилия, только латиница через подчеркивание (НЕобязательный)
                'insurance'    => 'f',                  // База страховки - полная f или частичная p (НЕобязательный)
                'round'        => 1,                    // Округление вверх. 0.01 - округление до копеек, 1 - до рублей (НЕобязательный)
                'pr'           => 0,                    // Наценка в рублях за обработку заказа (НЕобязательный)
                'pk'           => 0,                    // Наценка в рублях за упаковку одного отправления (НЕобязательный)
                'encode'       => 'utf-8',              // Кодировка - utf-8 или windows-1251 (НЕобязательный)
                'sendDate'     => 'now',                // Дата - в формате, который понимает strtotime(), например, '+7days','10.10.2020' (НЕобязательный)
                'respFormat'   => 'json',               // Формат ответа (html, php, arr, wddx, json, plain) (НЕобязательный)
                'country'      => 'Ru',                 // Страна (список стран: http://postcalc.ru/countries.php) (НЕобязательный)
                'servers'      => [
                    //'api.postcalc.ru',                // После тестовых запросов включить "боевой" сервер (ОБЯЗАТЕЛЬНО)
                    'test.postcalc.ru',
                ],                                      // Список серверов для беcплатной версии (ОБЯЗАТЕЛЬНЫЙ)
                'httpOptions'  => [
                    'http' => [
                        'header'     => 'Accept-Encoding: gzip',
                        'timeout'    => 5,              // Время ожидания ответа сервера в секундах
                        'user_agent' => 'PostcalcLight_1.04 ' . phpversion(),
                    ],
                ],                                      // Опции запроса (НЕобязательный)
            ]
        ],
    ],

Example of use

$services    = Yii::$app->getModule('delivery')->getComponents();
$data        = new DeliveryCargoData(659300, 'Бийск', 2000, 1000, 275); // zip, locationTo, cartCost, weight, innerCode (own carrier code)
$resultArray = new DeliveryCalculator($data, $services);
VarDumper::dump($resultArray->calculate());

Result is, (*9)

[
    0 => [
        'name' => 'Почта России'
        'terms' => '9-13 дн.'
        'cost' => '314.60'
        'info' => null
    ]
    1 => [
        'name' => 'Почта России наложенным'
        'terms' => '9-13 дн.'
        'cost' => 487.18
        'info' => null
    ]
    2 => false
    3 => [
        'name' => 'Самовывоз'
        'terms' => false
        'cost' => 0
        'info' => 'Самостоятельно забираете в офисе.'
    ]
]

В папке src/services имеются образцы, которые наследуются от YiiModuleDelivery. Можно создать собственный класс, также его отнаследовать от YiiModuleDelivery и реализовать метод calculate() со своей логикой расчета (или получение данных расчета по api)., (*10)

Создание новой службы доставки

  • создать миграцию, добавляющую новую доставку (см. пример в папке migration - InitialDeliveryServices)
  • создать класс NewDeliveryService, отнаследовавшись от YiiModuleDelivery, который вернет массив расчитанных данных (см. примеры в папке services)
  • если требуется специальный расчет (например, через API), то создать класс NewDeliveryCalc, который должен вернуть результат расчета
  • добавить в файл конфигурации, в раздел components, созданную доставку:
'components' => [
        // ...
        'field_code_of_new_delivery' => [
            'class' => 'my\extended\class\NewDeliveryService',
        ],
    ],

Создание своего контроллера

Если нужно установить свои права доступа к контроллеру доставок сделайте следующее: * создайте в админке свой контроллер, отнаследовавшись от \uranum\delivery\module\controllers\DeliveryController * в этом контроллере создайте свои фильтры и поведения (access, verbs) * создайте свои виды (index, create, update) или * рендерьте виды из расширения добавив метод init() с таким кодом:, (*11)

public function init()
{
    $this->module->setViewPath('@uranum/delivery/module/views');
    \Yii::$app->i18n->translations['module'] = [
        'class'          => 'yii\i18n\PhpMessageSource',
        'sourceLanguage' => 'en-US',
        'basePath'       => '@vendor/uranum/yii2-delivery-calculator/src/module/messages'
    ];
}

The Versions

06/04 2018

dev-master

9999999-dev

Yii2 extension help to get the result of the calculating from the aggregated delivery services

  Sources   Download

MIT BSD-3-Clause

The Requires

 

The Development Requires

yii2 calculator delivery

19/03 2018

v1.0.4

1.0.4.0

Yii2 extension help to get the result of the calculating from the aggregated delivery services

  Sources   Download

MIT

The Requires

 

The Development Requires

yii2 calculator delivery

20/12 2017

v1.0.3

1.0.3.0

Yii2 extension help to get the result of the calculating from the aggregated delivery services

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

yii2 calculator delivery

12/09 2017

v1.0.2

1.0.2.0

Yii2 extension help to get the result of the calculating from the aggregated delivery services

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

yii2 calculator delivery

04/08 2017

v1.0.1

1.0.1.0

Yii2 extension help to get the result of the calculating from the aggregated delivery services

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

yii2 calculator delivery

26/03 2017

v1.0.0

1.0.0.0

yiitest for Yii2 Framework.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

yii2 calculator delivery