TRUE, 'ajaxlist'=>TRUE, 'ajaxlistservice'=>TRUE, 'edit'=>TRUE, 'list'=>TRUE, ); public function action_add() { Block::factory() ->type('form-horizontal') ->title('Add/View Charge') ->title_icon('icon-wrench') ->body($this->add_edit()); } public function action_ajaxlist() { $result = array(); if (isset($_REQUEST['term']) AND trim($_REQUEST['term'])) { $result = Arr::merge($result,ORM::factory('Account')->list_autocomplete($_REQUEST['term'],'id','id',array('ACC %s: %s'=>array('id','name(TRUE)')))); $result = Arr::merge($result,ORM::factory('Service')->list_autocomplete($_REQUEST['term'],'account_id','id',array('ACC %s: %s (%s)'=>array('account_id','account->name()','name()')))); foreach (array('Service_Plugin_Adsl','Service_Plugin_Domain','Service_Plugin_Host') as $o) $result = Arr::merge($result,ORM::factory($o)->list_autocomplete($_REQUEST['term'],'account_id','service->account_id',array('ACC %s: %s (%s)'=>array('service->account_id','service->account->name()','name()')))); } $this->response->headers('Content-Type','application/json'); $this->response->body(json_encode(array_values($result))); } public function action_ajaxlistservice() { $result = array(); if (isset($_REQUEST['key']) AND trim($_REQUEST['key'])) $result = Arr::merge($result,ORM::factory('Service')->list_autocomplete('','id','id',array('SVC %s: %s'=>array('id','service_name()')),array(array('account_id','=',$_REQUEST['key'])))); $this->response->headers('Content-Type','application/json'); $this->response->body(json_encode(array_values($result))); } private function add_edit($id=NULL,$output='') { $co = ORM::factory('Charge',$id); if ($_POST AND $co->values($_POST)->changed() AND (! $this->save($co))) $co->reload(); Script::factory() ->type('file') ->data('media/theme/bootstrap/vendor/datepicker/js/bootstrap-datepicker.js'); Style::factory() ->type('file') ->data('media/theme/bootstrap/vendor/datepicker/css/datepicker.css'); Script::factory() ->type('stdin') ->data(' $(document).ready(function() { var nowTemp = new Date(); var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0); $("#date_charge_label").datepicker({ autoclose : true, endDate : now, format : "dd-M-yyyy", todayBtn : true, }).on("hide",function(ev) { $("input[name=date_charge]").val(ev.date.valueOf()/1000); }); $("input[name=account_id_label]").typeahead({ minLength: 2, source: function (query,process) { search("'.URL::link('reseller','charge/ajaxlist').'",query,process); }, matcher: function () { return true; }, updater: function (item) { $("input[name=account_id]").val(users[item]); // Send the request and update sub category dropdown $.ajax({ type: "GET", data: "key="+users[item], dataType: "json", cache: false, url: "'.URL::link('reseller','charge/ajaxlistservice',TRUE).'", timeout: 2000, error: function(x) { alert("Failed to submit"); }, success: function(data) { $.each(data, function(i, j){ var row = ""; $(row).appendTo("select[name=service_id]"); }); } }); return item; }, }); }); '); return View::factory('charge/reseller/add_edit') ->set('o',$co); } public function action_edit() { list($id,$output) = Table::page(__METHOD__); Block::factory() ->type('form-horizontal') ->title(sprintf('%s: %s',_('View Charges'),$id)) ->title_icon('icon-wrench') ->body($this->add_edit($id,$output)); } /** * Show a list of invoices */ public function action_list() { Block::factory() ->title('Customer Charges') ->title_icon('icon-th-list') ->body(Table::factory() ->page_items(50) ->data(ORM::factory('Charge')->where_authorised($this->ao)->where('void','is',NULL)->order_by('id','DESC')->find_all()) ->columns(array( 'id'=>'ID', 'date_charge'=>'Date', 'processed'=>'Processed', 'invoice_item->invoice_id'=>'Invoice', 'sweep_type'=>'Sweep', 'quantity'=>'Quantity', 'amount'=>'Amount', 'total(TRUE)'=>'Total', 'description'=>'Description', 'service_id'=>'Service', 'account->accnum()'=>'Cust ID', 'account->name()'=>'Customer', )) ->prepend(array( 'id'=>array('url'=>URL::link('reseller','charge/edit/')), 'invoice_item->invoice_id'=>array('url'=>URL::link('user','invoice/view/')), )) ); } } ?>