TRUE, 'email'=>TRUE, 'list'=>TRUE, 'view'=>TRUE, ); /** * Download an invoice */ public function action_download() { $io = ORM::factory('Invoice',$this->request->param('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'); // Log the download $imo = $io->invoice_memo; $imo->invoice_id = $io->id; $imo->account_id = $this->ao->id; $imo->type = 'download'; $imo->memo = 'Invoice Downloaded.'; $imo->save(); $this->response->body(Invoice::instance($io)->render('pdf','all',array('download'=>sprintf('%s.pdf',$io->refnum())))); $this->response->headers(array('Content-Type' => 'application/pdf')); $this->auto_render = FALSE; } /** * Email an invoice */ public function action_email() { $io = ORM::factory('Invoice',$this->request->param('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'); if ($x=Invoice::instance($io)->render('email','all')) { // Log the emailling $imo = $io->invoice_memo; $imo->invoice_id = $io->id; $imo->account_id = $this->ao->id; $imo->type = 'email'; $imo->memo = 'Invoice Emailed.'; $imo->save(); SystemMessage::factory() ->title('Invoice') ->type('success') ->body(sprintf('Invoice :%s sent via email',$io->refnum())); HTTP::redirect(URL::link('user','email/view/'.$x)); } else { HTTP::redirect(URL::link('user','invoice/view/'.$io->id)); } } /** * 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 .= Invoice::instance($io)->render('html','all'); $output .= '
'; $output .= HTML::anchor(URL::link('user','invoice/email/'.$io->id),'Email',array('class'=>'btn pull-right')); $output .= HTML::anchor(URL::link('user','invoice/download/'.$io->id),'Download',array('class'=>'btn pull-right')); if ($io->due() AND ! $io->cart_exists()) $output .= View::factory('invoice/user/view/pay') ->set('mid',$io->mid()) ->set('o',$io); if (! $io->status) { Style::factory() ->type('file') ->data('media/css/pages/invoice.css'); $output .= '
Invoice CANCELLED.
'; } Block::factory() ->title(sprintf('%s: %s - %s',_('Invoice'),$io->refnum(),$io->account->name())) ->title_icon('icon-list-alt') ->body($output); $x = $io->invoice_memo->find_all(); if ($x->count()) Block::factory() ->title('Invoice Memos') ->title_icon('icon-list-alt') ->span(6) ->body(Table::factory() ->data($x) ->columns(array( 'id'=>'ID', 'date_orig'=>'Date', 'account->name()'=>'Account', 'memo'=>'Memo', ))); $x = $io->email()->find_all(); if ($x->count()) Block::factory() ->title('Invoice Emails') ->title_icon('icon-list-alt') ->span(6) ->body(Table::factory() ->data($x) ->columns(array( 'id'=>'ID', 'date_orig'=>'Date', 'resolve("subject")'=>'Subject', )) ->prepend(array( 'id'=>array('url'=>URL::link('user','email/view/')), )) ->postproc(array( 'resolve("subject")'=>array('trim'=>55), )) ); } } ?>