85 lines
1.9 KiB
PHP
85 lines
1.9 KiB
PHP
<?php defined('SYSPATH') or die('No direct access allowed.');
|
|
|
|
/**
|
|
* This class provides User Statement functions
|
|
*
|
|
* @package OSB
|
|
* @subpackage Statement
|
|
* @category Controllers/User
|
|
* @author Deon George
|
|
* @copyright (c) 2010 Deon George
|
|
* @license http://dev.leenooks.net/license.html
|
|
*/
|
|
class Controller_User_Statement extends Controller_TemplateDefault_User {
|
|
protected $secure_actions = array(
|
|
'show'=>TRUE,
|
|
);
|
|
|
|
/**
|
|
* Show a payments received
|
|
*/
|
|
public function action_show() {
|
|
$ta = array();
|
|
|
|
foreach ($this->ao->payment->find_all() as $o) {
|
|
$i = count($ta);
|
|
$ta[$i]['time'] = $o->date_payment;
|
|
$ta[$i]['payment'] = $o;
|
|
}
|
|
|
|
foreach ($this->ao->invoice->find_all() as $o) {
|
|
$i = count($ta);
|
|
$ta[$i]['time'] = $o->date_orig;
|
|
$ta[$i]['invoice'] = $o;
|
|
}
|
|
|
|
Sort::MAsort($ta,'time');
|
|
|
|
$t = 0;
|
|
$a = 0;
|
|
foreach ($ta as $k => $v) {
|
|
// If 2 metrics have the same time, we need to increment 1 by a small number so that it doesnt affect the next sorting
|
|
if ($a == $v['time']) {
|
|
$ta[$k]['time'] += 1;
|
|
}
|
|
|
|
if (isset($v['invoice']))
|
|
$t += $v['invoice']->total_amt;
|
|
elseif (isset($v['payment']))
|
|
$t -= $v['payment']->total_amt;
|
|
|
|
$ta[$k]['total'] = $t;
|
|
$a = $v['time'];
|
|
}
|
|
|
|
Sort::MAsort($ta,'time',1);
|
|
|
|
$pag = new Pagination(array(
|
|
'total_items'=>count($ta),
|
|
));
|
|
|
|
$output = (string)$pag;
|
|
$output .= View::factory('statement/user/show_head');
|
|
|
|
$i = 0;
|
|
foreach ($ta as $k => $v) {
|
|
if (++$i < $pag->current_first_item())
|
|
continue;
|
|
elseif ($i > $pag->current_last_item())
|
|
break;
|
|
|
|
$output .= View::factory('statement/user/show_body')
|
|
->set('o',$v)
|
|
->set('trc',$i%2 ? 'odd' : 'even');
|
|
}
|
|
|
|
$output .= View::factory('statement/user/show_foot');
|
|
|
|
Block::add(array(
|
|
'title'=>sprintf('%s: %s - %s',_('Transaactions For'),$this->ao->accnum(),$this->ao->name(TRUE)),
|
|
'body'=>$output,
|
|
));
|
|
}
|
|
}
|
|
?>
|