halumein / yii2-cashbox-module
cashbox
Installs: 270
Dependents: 2
Suggesters: 0
Security: 0
Stars: 1
Watchers: 4
Forks: 0
Open Issues: 0
Type:yii2-extension
pkg:composer/halumein/yii2-cashbox-module
Requires
- php: >=5.4.0
 - kartik-v/yii2-grid: *
 - voskobovich/yii2-many-many-behavior: ^3.0
 - yiisoft/yii2: *
 - yiisoft/yii2-bootstrap: *
 
This package is not auto-updated.
Last update: 2025-10-26 01:17:07 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();