TRUE, 'ajaxlist'=>TRUE, 'ajaxlistservice'=>TRUE, 'edit'=>TRUE, 'list'=>TRUE, ); public function action_add() { Block::factory() ->type('form-horizontal') ->title('Add/View Charge') ->title_icon('fa fa-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('%s: %s'=>array('refnum()','name()')))); $result = Arr::merge($result,ORM::factory('Service')->list_autocomplete($_REQUEST['term'],'account_id','id',array('%s: %s (%s)'=>array('account->refnum()','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('%s: %s (%s)'=>array('service->account->refnum()','service->account->name()','service->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('%s: %s'=>array('refnum(TRUE)','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); $this->meta->title = sprintf('Charge: %s (%s)',$co->name(),$co->account->name()); if ($_POST AND $co->values($_POST)->changed() AND (! $this->save($co))) $co->reload(); Script::factory() ->type('file') ->data('media/theme/bootstrap/js/bootstrap.datepicker.js'); Style::factory() ->type('file') ->data('media/theme/bootstrap/css/bootstrap.datepicker.css'); Script::factory() ->type('stdin') ->data(' $(document).ready(function() { $("#date_charge_label").datepicker({ autoclose : true, endDate : new Date(), todayHighlight: true, 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) { $("select[name=service_id]").empty(); $.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('fa fa-wrench') ->body($this->add_edit($id,$output)); } /** * Show a list of invoices */ public function action_list() { $this->meta->title = 'R|Customer Charges'; Block::factory() ->title('Customer Charges') ->title_icon('fa fa-list') ->body(View::factory('charge/list')->set('o',ORM::factory('Charge')->where_authorised($this->ao)->where('void','is',NULL)->order_by('id','DESC')->find_all())); } } ?>