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')); } } }
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); }
<?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;