halumein/yii2-cashbox-module

cashbox

dev-master 2017-07-18 13:24 UTC

README

composer require halumein/yii2-cashbox-module "*"

миграции:

php yii migrate --migrationPath=vendor/halumein/yii2-cashbox-module/migrations

В конфигурационный файл приложения добавить модуль cashbox

    'modules' => [
        'cashbox' => [
            'class' => 'halumein\cashbox\Module',
        ],
        //...
    ]

Дополнительные параметры:

    'modules' => [
        'cashbox' => [
            'class' => 'halumein\cashbox\Module',
            'userModel' => 'common\models\YourUser', // класс пользователя используемый в приложении. если не указан то Yii::$app->user->identity
            'paymentSuccessRedirect' => '/order/order/print',  //редирект после успешной оплаты
            'printRedirect' => '/order/order/print' // редирект на action печати чека после оплаты
            'payedStatus' => 'payed', // для простановки статусов в ордере "оплачен"
            'halfpayedStatus' => 'halfpayed', // для простановки статусов в ордере "частично оплачен"
            'lessSumPaymentTypes' => [5], // тип оплаты в котором сумма платжа допустима быть меньше суммы заказа

            // для автоподстановки кассы в зависимости от типа оплаты из виджета заказа в виджет формы оплаты
            'paymentTypeToCashbox' => [
                1 => 1, // id типа оплаты => id кассы
            ],

            // для формирования ссылок в списке операций
            'linksToViews' => [
                'dvizh\order\models\Order' => [
                    'viewUrl' => '/order/order/view',
                    'itemIdField' => 'id'
                ]
            ],
        ],
        //...
    ]

В используемую модель пользователя добавить реализации необходимых методов. Например, могут выглядеть так:

use halumein\cashbox\models\Cashbox; //модель кассы

class YourUser extends ActiveRecord implements \halumein\cashbox\interfaces\User
{
    ...
        public function getId()
        {
            return $this->getPrimaryKey();
        }

        public function setDefaultCashbox($cashboxId)
        {
             $this->default_cashbox = $cashboxId;
             return $this->save(false);
        }

        public function getDefaultCashbox()
        {
            return $this->default_cashbox;
        }

        public function getName($id = null)
        {
            return $this->userProfile->getName();
        }

        public function getFullName($id = null)
        {
            return $this->userProfile->getFullName();
        }

        // для получения доступных касс пользователю
        public function getCashboxes()
        {
            return $this->hasMany(Cashbox::className(), ['id' => 'cashbox_id'])
                        ->viaTable('cashbox_user_to_cashbox', ['user_id' => 'id']);
        }


    ...
}

дальше обращаться по адресу cashbox/<имя_контроллера> доуступные роуты:

cashbox/cashbox - индекс касс
cashbox/operation - индекс транзакций
cashbox/exchange - индекс переводов между кассами
cashbox/revision - индекс сверок

Виджет выбора дефолтной кассы: Для использования виджета потребуется дополнить таблицу пользователя в базе данных полем "default_cashbox", куда будет записываться id кассы по умолчанию для выбранного пользователя.

Вывод виджета

    <?= halumein\cashbox\widgets\UserCashboxSelector::widget() ?>

Доступные методы компонента:

    Yii::$app->cashbox->addTransaction();
    Yii::$app->cashbox->getIncomeSumByPeriod();
    Yii::$app->cashbox->getIncomeSumByPeriod();