|  Download         
 AccountingThis 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 InstallationThe 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.jsonfile. push migration DB structure
 Account definitionCreate 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);
 Periodsuse 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);
 |