petrica / php-ynab4
API to read and write transactions to a YNAB4 json database.
dev-master
2019-08-16 14:01 UTC
Requires
- dropbox/dropbox-sdk: ^1.1
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2020-01-02 20:41:36 UTC
README
Read and write transactions from and to a YNAB4 JSON database.
Prerequisites
- PHP 5.4+
- composer
Quick start
Clone repository to disk
git clone git@github.com:petrica/php-ynab4.git
Run composer install in order to create necessary libraries
cd php-ynab4
composer install
Play with the sample application
cd sample
php index.php
Read transactions
# dropbox driver $io = new YnabDropboxIO(new Client($auth['access_token'], "MTools")); # or # disk driver if you want to access directly on disk the budget database $io = new YnabDiskIO(); # path to budget folder $pathToBudget = '/app/ynab/Test~B5C2AEE7.ynab4'; # device id as UUID Version 1, if not provided a new device will be generated $deviceId = null; $ynab = new YnabClient($pathToBudget, $io, $deviceId); # fetch transactions from diff files $ynab->pull(); # get latest transactions $transactions = $ynab->getTransactions(); # update device knowledge based on read transactions $ynab->commit(); # store device id for future calls $deviceId = $ynab->getDevice()->getDeviceGUID();
Write transactions
# dropbox driver $io = new YnabDropboxIO(new Client($auth['access_token'], "MTools")); # or # disk driver if you want to access directly on disk the budget database $io = new YnabDiskIO(); # path to budget folder $pathToBudget = '/app/ynab/Test~B5C2AEE7.ynab4'; # device id as UUID Version 1, if not provided a new device will be generated $deviceId = null; $ynab = new YnabClient($pathToBudget, $io, $deviceId); $transaction = new YnabTransaction(); $transaction->setAccountId('UUID_ACCOUNT_TO_PUSH_TRANSACTION_TO'); $transaction->setAmount('-10.5'); $transaction->setMemo('Some memo'); $transaction->setDate(new \DateTime()); $ynab->setTransactions([ $transaction ]); # Create diff file for other devices to read the new transaction $ynab->push(); # Update device knowledge based on new generated diff file $ynab->commit();