PHP code example of s-mcdonald / luca-accounts

1. Go to this page and download the library: Download s-mcdonald/luca-accounts library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

s-mcdonald / luca-accounts example snippets



        // Create a Transaction
        $txn = new Transaction( $date , 'Capital Contribution', 
            [
                new TransactionLine($cash_account_1, 100.00,  00.00),
                new TransactionLine($eqty_account_2,  00.00, 100.00),                
            ]
        );

        // Process the Transaction
        $system->transact($txn);


      // Your\App\AccountSystem.php
      class AccountSystem extends \SamMcDonald\LucaAccounts\AbstractAccountSystem {
        ...
      }

      // Your\App\Account.php
      class Account implements \SamMcDonald\LucaAccounts\Contracts\AccountInterface {
        ...
      }

 

namespace Your\App;

use Your\App\AccountSystem;
use SamMcDonald\LucaAccounts\Components\Transaction;
use SamMcDonald\LucaAccounts\Components\TransactionLine;

class YourAccountingProgram
{
    public static function simpleTransaction() 
    {
        // Get a new instance of the Accounting System
        $system = new AccountSystem();

        // Register the transact function
        $system->register('transact', static function(Transaction $txn) {
             // Your logic to commit the transaction to DB
        });

        /*
         * Load the accounts you want to use in the Transaction.
         * This will most likely be a Model or Entity object.
         */
        $acc1 = Account::fetch('cash-account'); 
        $acc2 = Account::fetch('acc-rec-account'); 
        $acc3 = Account::fetch('inventory-account'); 

        /*
         * Make a purchase of stock request
         */
        $txn = new Transaction( new DateTimeImmutable('now') , 'Purchase of inventory', 
            [
                new TransactionLine($acc1, 000.00,  50.00),
                new TransactionLine($acc2, 000.00, 150.00),
                new TransactionLine($acc3, 200.00,   0.00),                 
            ]
        );

        /*
         * Perform the transaction
         */
        $system->transact($txn);
    } 
}


s-mcdonald/luca-accounts/
            │    
            └ src/
              │    
              ├── Components/
              │   │
              │   ├── Transaction.php
              │   │            
              │   └── TransactionLine.php
              │            
              │            
              ├── Contracts/
              │   │
              │   ├── AccountInterface.php
              │   │            
              │   ├── TransactionInterface.php
              │   │
              │   └── TransactionLineInterface.php
              │            
              │  
              ├── Exceptions/
              │   │
              │   └── DoubleEntryException.php
              │   │
              │   └── InvalidTransactionLineEntryException.php
              │
              │
              ├── Enums/
              │   │
              │   └── AccountType.php 
              │    
              ├── Util/
              │   │
              │   └── EntryFormatter.php
              │
              │
              └── AbstractAccountSystem.php