d3yii2 / yii2-d3acc
Yii2 accounting module, accounts and periods
Requires
- php: >=5.4.0
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-12-16 18:55:28 UTC
README
Accounting
This Yii2 module provides support for balance accounting (bookkeeping) system based on debit and credit principles. Provide additinal functionality:
- periods (closing period and period balance)
- dynamicly creating accounts attached one or more tables
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist d3yii2/yii2-d3acc "*"
or add
"d3yii2/yii2-d3acc": "*"
to the require section of your composer.json
file.
push migration
DB structure
Account definition
Create object acc
use \d3acc\models\AcRecAcc; use Yii; /** * Description of acc * * @author Dealer */ class acc { const MONTH_PERIOD = 1; const PLAYER_ACC = 4; const EXPENSES = 10; const FOND_PLAYGROUND = 7; acc::CODE_CRD_PLAYGROUND = 'CreditPlaygound'; /** * get player account * @param int $personId * @return AcRecAcc */ public static function player($personId) { return AcRecAcc::getAcc(self::PLAYER_ACC, ['person' => $personId]); } /** * get expenses account * @return AcRecAcc */ public static function expenses() { return AcRecAcc::getAcc(self::EXPENSES); } /** * get for player playground account * @param int $personId * @param int $playgroundId * @return AcRecAcc */ public static function fondPlayground($personId, $playgroundId) { return AcRecAcc::getAcc(self::FOND_PLAYGROUND, ['person' => $personId, 'playground' => $playgroundId]); } }
Transaction registration
/** * player accounts */ $recAccPPG = acc::playerPlayground($person_id, $playground_id); $recAccPlayer = acc::player($person_id); $day = date('Y-m-d'); $tran = AcTran::registre($recAccPlayer, $recAccPPG, $personAmt, $day, acc::MONTH_PERIOD, acc::CODE_CRD_PLAYGROUND);
Periods
use d3acc\models\AcPeriod; $acPeriod = AcPeriod::getActivePeriod(acc::MONTH_PERIOD)) //close period \d3acc\components\PeriodMonth::close(acc::MONTH_PERIOD);
Transactions
$recAccPlayer = acc::player($person_id); $data = AcTran::accPeriodTran($recAccPlayer, $acPeriod);
Balance
$filter = ['playground' => $playgroundId] $playgroundAllPersonBalance = AcTran::accBalanceFilter(acc::FOND_PLAYGROUND, $acPeriod,$filter); $filter = ['person' => $personId] $personAllPlaygroundsBalance = AcTran::accBalanceFilter(acc::FOND_PLAYGROUND, $acPeriod,$filter); $allPlaygroundsAllPersonBalance = AcTran::accBalanceFilter(acc::FOND_PLAYGROUND, $acPeriod,[]);
Define account plan by creating acc class
Add definition record in tables
Migrations with AccConstructor
$constructor = new AccConstructor();
Load existind or create new account (ac_account table) for session
$constructor->load($accId); $constructor->create($code, $name);
Add new account dimension (ac_def table) for loaded/created account
$definition = $constructor->addDimension($table, $pkField);
Add new extended-account (ac_rec_acc table) for loaded/created account
$extAccount = $constructor->addExtendedAccount();
Add new dimension value (ac_rec_ref table) and recalculate label for given extended-account (ac_rec_acc table)
$constructor->addDimensionRecAcc($extAccount->id, $definition->id, $pk_value);