PHPackages                             uranum/yii2-delivery-calculator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. uranum/yii2-delivery-calculator

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

uranum/yii2-delivery-calculator
===============================

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

v1.0.5(6y ago)32922[1 issues](https://github.com/uranum/yii2-delivery-calculator/issues)MITPHPPHP ^7.1.0

Since Mar 26Pushed 6y ago3 watchersCompare

[ Source](https://github.com/uranum/yii2-delivery-calculator)[ Packagist](https://packagist.org/packages/uranum/yii2-delivery-calculator)[ RSS](/packages/uranum-yii2-delivery-calculator/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (4)Versions (7)Used By (0)

Yii2-delivery-calculator
========================

[](#yii2-delivery-calculator)

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

Under the development...
------------------------

[](#under-the-development)

### Installation

[](#installation)

The preferred way to install this extension is through [composer](http://getcomposer.org/download/).

Either run

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

```

or add

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

```

to the require section of your `composer.json` file.

#### Configure module

[](#configure-module)

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

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

Примените миграцию `yii migrate --migrationPath=@uranum/delivery/migration`

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

```
'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](http://postcalc.ru/api.html)

```
'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

[](#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

```
[
    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).

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

[](#создание-новой-службы-доставки)

- создать миграцию, добавляющую новую доставку (см. пример в папке 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() с таким кодом:

```
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'
    ];
}
```

###  Health Score

28

—

LowBetter than 52% of packages

Maintenance13

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 82.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~227 days

Recently: every ~251 days

Total

6

Last Release

2249d ago

PHP version history (2 changes)v1.0.0PHP ~7.0.0

v1.0.5PHP ^7.1.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/3c9f9f235c2de107043176b29e425b2cb770ba2bca3a14e80d452b8a7474ac1d?d=identicon)[Eugeny\_Emelyanov](/maintainers/Eugeny_Emelyanov)

---

Top Contributors

[![uranum](https://avatars.githubusercontent.com/u/19322573?v=4)](https://github.com/uranum "uranum (38 commits)")[![ev-emelyanov](https://avatars.githubusercontent.com/u/10977290?v=4)](https://github.com/ev-emelyanov "ev-emelyanov (8 commits)")

---

Tags

yii2calculatordelivery

###  Code Quality

TestsCodeception

### Embed Badge

![Health badge](/badges/uranum-yii2-delivery-calculator/health.svg)

```
[![Health](https://phpackages.com/badges/uranum-yii2-delivery-calculator/health.svg)](https://phpackages.com/packages/uranum-yii2-delivery-calculator)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M3.0k](/packages/craftcms-cms)[dmstr/yii2-cookie-consent

Yii2 Cookie Consent Widget

1455.6k](/packages/dmstr-yii2-cookie-consent)[imanilchaudhari/yii2-currency-converter

This extension will help to find out current currency conversion rate.

1911.7k](/packages/imanilchaudhari-yii2-currency-converter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
