2013-10-10 02:44:53 +00:00
|
|
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class provides User Invoice functions
|
|
|
|
*
|
|
|
|
* @package Invoice
|
|
|
|
* @category Controllers/User
|
|
|
|
* @author Deon George
|
|
|
|
* @copyright (c) 2009-2013 Open Source Billing
|
|
|
|
* @license http://dev.osbill.net/license.html
|
|
|
|
*/
|
|
|
|
class Controller_User_Invoice extends Controller_Invoice {
|
2013-06-11 04:30:13 +00:00
|
|
|
protected $secure_actions = array(
|
|
|
|
'download'=>TRUE,
|
|
|
|
'list'=>TRUE,
|
|
|
|
'view'=>TRUE,
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Download an invoice
|
|
|
|
*/
|
|
|
|
public function action_download() {
|
|
|
|
$io = ORM::factory('Invoice',$this->request->param('id'));
|
|
|
|
|
2013-11-22 04:36:50 +00:00
|
|
|
if (! $io->loaded() OR ! Auth::instance()->authorised($io->account))
|
|
|
|
throw HTTP_Exception::factory(403,'Service either doesnt exist, or you are not authorised to see it');
|
|
|
|
|
2013-10-11 02:08:50 +00:00
|
|
|
// Log the download
|
|
|
|
$imo = $io->invoice_memo;
|
|
|
|
$imo->invoice_id = $io->id;
|
|
|
|
$imo->account_id = $this->ao->id;
|
2013-11-15 05:25:45 +00:00
|
|
|
$imo->type = 'download';
|
2013-10-11 02:08:50 +00:00
|
|
|
$imo->memo = 'Invoice Downloaded.';
|
|
|
|
$imo->save();
|
|
|
|
|
2013-06-11 04:30:13 +00:00
|
|
|
$this->response->body(Invoice::instance($io)->pdf()->Output(sprintf('%s.pdf',$io->refnum()),'D'));
|
|
|
|
$this->response->headers(array('Content-Type' => 'application/pdf'));
|
|
|
|
$this->auto_render = FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Show a list of invoices
|
|
|
|
*/
|
|
|
|
public function action_list() {
|
|
|
|
Block::factory()
|
|
|
|
->title(sprintf('Invoices for Account: %s',$this->ao->accnum()))
|
|
|
|
->title_icon('icon-th-list')
|
|
|
|
->body(Table::factory()
|
|
|
|
->jssort('invoices')
|
|
|
|
->data($this->ao->invoice->find_all())
|
|
|
|
->columns(array(
|
|
|
|
'id'=>'ID',
|
|
|
|
'date_orig'=>'Date Issued',
|
|
|
|
'due_date'=>'Date Due',
|
|
|
|
'total(TRUE)'=>'Total',
|
|
|
|
'total_credits(TRUE)'=>'Credits',
|
|
|
|
'payments_total(TRUE)'=>'Payments',
|
|
|
|
'due(TRUE)'=>'Still Due',
|
|
|
|
))
|
|
|
|
->prepend(array(
|
|
|
|
'id'=>array('url'=>URL::link('user','invoice/view/')),
|
|
|
|
))
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* View an Invoice
|
|
|
|
*/
|
|
|
|
public function action_view() {
|
|
|
|
list($id,$output) = Table::page(__METHOD__);
|
|
|
|
|
|
|
|
$io = ORM::factory('Invoice',$id);
|
|
|
|
|
|
|
|
if (! $io->loaded() OR ! Auth::instance()->authorised($io->account))
|
|
|
|
throw HTTP_Exception::factory(403,'Service either doesnt exist, or you are not authorised to see it');
|
|
|
|
|
|
|
|
$output .= View::factory('invoice/user/view')
|
|
|
|
->set('o',$io);
|
|
|
|
|
|
|
|
if ($io->due() AND ! $io->cart_exists())
|
2013-09-06 05:39:56 +00:00
|
|
|
$output .= View::factory('invoice/user/view/pay')
|
2013-06-11 04:30:13 +00:00
|
|
|
->set('mid',$io->mid())
|
|
|
|
->set('o',$io);
|
|
|
|
|
|
|
|
if (! $io->status) {
|
|
|
|
Style::factory()
|
|
|
|
->type('file')
|
|
|
|
->data('media/css/pages/invoice.css');
|
|
|
|
|
|
|
|
$output .= '<div id="watermark">Invoice CANCELLED.</div>';
|
|
|
|
}
|
|
|
|
|
|
|
|
Block::factory()
|
|
|
|
->title(sprintf('%s: %s - %s',_('Invoice'),$io->refnum(),$io->account->name()))
|
|
|
|
->title_icon('icon-list-alt')
|
|
|
|
->body($output);
|
2013-10-11 02:08:50 +00:00
|
|
|
|
|
|
|
$x = $io->invoice_memo->find_all();
|
|
|
|
if ($x->count())
|
|
|
|
Block::factory()
|
|
|
|
->title('Invoice Memos')
|
|
|
|
->title_icon('icon-list-alt')
|
|
|
|
->body(Table::factory()
|
|
|
|
->data($x)
|
|
|
|
->columns(array(
|
|
|
|
'id'=>'ID',
|
|
|
|
'date_orig'=>'Date',
|
|
|
|
'account->name()'=>'Account',
|
|
|
|
'memo'=>'Memo',
|
|
|
|
)));
|
2013-06-11 04:30:13 +00:00
|
|
|
}
|
2013-10-10 02:44:53 +00:00
|
|
|
}
|
|
|
|
?>
|