コード例 #1
0
ファイル: Flow.php プロジェクト: soep/cashflow
 private function assertNotInItems(Cashflow $cashflow)
 {
     foreach ($cashflow->getItems() as $item) {
         if (md5("{$this->getId()}{$this->getDate()->format('U')}") == $item->getHash()) {
             throw new \Exception('Impossible to import ' . $this->getName() . ' ' . $this->getDate()->format('Y-m-d'));
         }
     }
 }
コード例 #2
0
ファイル: CashflowTest.php プロジェクト: soep/cashflow
 public function testPeriod()
 {
     $cashflow = new Cashflow(new \DateTime(date('Y/1/1')), new \DateTime(date('Y/5/31')));
     $income = new Income();
     $income->setAmount(100);
     $income->setDate(new \DateTime(date('Y/1/10')));
     $recurrent = new Recurrent($income);
     $recurrent->setInterval(new \DateInterval('P1M'));
     $recurrent->setDateEnd(new \DateTime(date('Y/12/30')));
     $cashflow->add($recurrent);
     $count = 0;
     foreach ($cashflow->getFilteredEntries() as $result) {
         $count++;
     }
     $this->assertEquals(5, $count);
 }
コード例 #3
0
ファイル: cashflow.php プロジェクト: soep/cashflow
<?php

require_once __DIR__ . '/../src/Cashflow/Autoload.php';
$loader = new \Cashflow\ClassLoader('Cashflow', __DIR__ . '/../src');
$loader->register();
use Cashflow\Cashflow;
use Cashflow\Outcome;
use Cashflow\Income;
$entries = array(array(new \Cashflow\Recurrent(new \Cashflow\Income()), new \DateTime(date('Y/1/10')), 'Salary', 1500, new \DateInterval('P1M'), new \DateTime(date('Y/12/31'))), array(new \Cashflow\Recurrent(new \Cashflow\Expense()), new \DateTime(date('Y/1/12')), 'Rent', 500, new \DateInterval('P1M'), new \DateTime(date('Y/12/31'))));
$cashflow = new Cashflow(new \DateTime(date('Y/1/1')), new \DateTime(date('2014/03/30')));
$cashflow->import($entries);
$cashflow->order();
$mask = "|%-10.10s |%-30.30s |%15s |%15s |\n";
$output = sprintf($mask, 'Date', 'Name', 'Flow', 'Balance');
foreach ($cashflow->getRows() as $row) {
    $cashflow->updateAmount($row, $row->getSign());
    $output .= sprintf($mask, $row->getDate()->format('Y-m-d'), $row->getName(), money_format('%.2n', $row->getSign() * $row->getAmount()), money_format('%.2n', $cashflow->getAmount()));
}
$output .= PHP_EOL . sprintf('Total income: %s' . PHP_EOL, money_format('%.2n', $cashflow->getTotaleIncome())) . sprintf('Total expense: %s' . PHP_EOL, money_format('%.2n', $cashflow->getTotalExpense())) . sprintf('Profit: %s' . PHP_EOL, money_format('%.2n', $cashflow->getBalance()));
echo $output;