diff --git a/application/classes/Controller/Admin/Module.php b/application/classes/Controller/Admin/Module.php index 51a3eb89..b919fe35 100644 --- a/application/classes/Controller/Admin/Module.php +++ b/application/classes/Controller/Admin/Module.php @@ -137,7 +137,7 @@ class Controller_Admin_Module extends Controller_Module { Block::factory() ->title(sprintf('%s: %s ',_('Defined Module Methods For'),$mo->display('name'))) - ->title_icon('icon-cog') + ->title_icon('fa fa-cog') ->body(Table::factory() ->data($methods['exist']) ->columns(array( @@ -154,7 +154,7 @@ class Controller_Admin_Module extends Controller_Module { Block::factory() ->title(sprintf('%s: %s ',_('Missing Module Methods For'),$mo->display('name'))) - ->title_icon('icon-exclamation-sign') + ->title_icon('fa fa-question') ->body(Table::factory() ->data($methods['missing']) ->columns(array( @@ -173,7 +173,7 @@ class Controller_Admin_Module extends Controller_Module { public function action_list() { Block::factory() ->title('Defined Modules') - ->title_icon('icon-cog') + ->title_icon('fa fa-cog') ->body(Table::factory() ->data(ORM::factory('Module')->where('parent_id','is',NULL)->find_all()) ->jssort(TRUE) diff --git a/application/classes/Controller/Admin/Module/Method.php b/application/classes/Controller/Admin/Module/Method.php index b018b4d2..3c095b6d 100644 --- a/application/classes/Controller/Admin/Module/Method.php +++ b/application/classes/Controller/Admin/Module/Method.php @@ -37,7 +37,7 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module { Block::factory() ->title(sprintf(_('Add Method (%s) to Database for (%s)'),strtoupper($method),strtoupper($mo->name))) - ->title_icon('icon-plus-sign') + ->title_icon('fa fa-plus') ->type('form-horizontal') ->body(View::factory('module/method/admin/add') ->set('name',$method) @@ -99,11 +99,9 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module { Block::factory() ->title(sprintf(_('Configure access to method (%s::%s)'),$mmo->controller(),$mmo->method())) - ->title_icon('icon-plus-sign') + ->title_icon('fa fa-lock') ->type('form') - ->body(View::factory('module/method/admin/edit') - ->set('o',$mmo) - ); + ->body(View::factory('module/method/admin/edit')->set('o',$mmo)); } } ?> diff --git a/application/classes/Menu.php b/application/classes/Menu.php index 3d48742e..234b1a66 100644 --- a/application/classes/Menu.php +++ b/application/classes/Menu.php @@ -30,7 +30,7 @@ class Menu extends lnApp_Menu { return $result; } - public static function items($type) { + public static function items($type,array $list=array()) { $result = array(); if (empty(URL::$method_directory[$type])) diff --git a/application/classes/ORM.php b/application/classes/ORM.php index 6e8d31e3..3d41c167 100644 --- a/application/classes/ORM.php +++ b/application/classes/ORM.php @@ -55,7 +55,6 @@ abstract class ORM extends lnApp_ORM { /** * Determine if the account is authoised by the user */ - // @todo This function shouldnt be here. public function authorised(Model $o=NULL,Model_Account $ao=NULL,$aid='account_id') { if (is_null($o)) $o = $this; @@ -147,6 +146,13 @@ abstract class ORM extends lnApp_ORM { return ORM::factory('Module',array('name'=>$this->_table_name)); } + /** + * Name value return for the record + */ + public function name() { + return sprintf('Unknown [%s]',$this->id); + } + /** * Set the site ID attribute for each row update */ diff --git a/application/views/account/reseller/view.php b/application/views/account/reseller/view.php new file mode 100644 index 00000000..987fe7e1 --- /dev/null +++ b/application/views/account/reseller/view.php @@ -0,0 +1,3 @@ +set('o',$o); ?> +set('o',$o); ?> +set('o',$o); ?> diff --git a/application/views/module/method/admin/edit.php b/application/views/module/method/admin/edit.php index 4b9ad6a0..3fcb7b5d 100644 --- a/application/views/module/method/admin/edit.php +++ b/application/views/module/method/admin/edit.php @@ -1,42 +1,44 @@ -
-
- Method Details +
+
+
+ Method Details - notes,array('label'=>'Description','placeholder'=>'Method Description','class'=>'span5')); ?> - menu_display,array('label'=>'Menu Title','placeholder'=>'Menu Title')); ?> + notes,array('label'=>'Description','placeholder'=>'Method Description')); ?> + menu_display,array('label'=>'Menu Title','placeholder'=>'Menu Title')); ?> -
-
- -
-
- Method Security - - - - - - - - - - - find_all() as $go) : ?> - - - - - - - - -
MethodNotesGroup ActiveMethod Enable
id,TRUE),$go->display('name')); ?>display('notes'); ?>display('status'); ?>id,$o->has('group',$go)); ?>
-
- -
-
- - -
+
- + +
+
+ Method Security + + + + + + + + + + + find_all() as $go) : ?> + + + + + + + + +
MethodNotesGroup ActiveMethod Enable
id,TRUE),$go->display('name')); ?>display('notes'); ?>display('status'); ?>id,$o->has('group',$go),array('nocg'=>TRUE)); ?>
+
+
+ + +
+
+ + +
+
diff --git a/application/views/userguide/template.php b/application/views/userguide/template.php index ea27ba48..2c6b566b 100644 --- a/application/views/userguide/template.php +++ b/application/views/userguide/template.php @@ -17,7 +17,7 @@
-
diff --git a/application/views/welcome/user/view.php b/application/views/welcome/user/view.php new file mode 100644 index 00000000..987fe7e1 --- /dev/null +++ b/application/views/welcome/user/view.php @@ -0,0 +1,3 @@ +set('o',$o); ?> +set('o',$o); ?> +set('o',$o); ?> diff --git a/modules/invoice/classes/Task/Invoice/Service.php b/modules/invoice/classes/Task/Invoice/Service.php index b2515c9a..5eaf7fe4 100644 --- a/modules/invoice/classes/Task/Invoice/Service.php +++ b/modules/invoice/classes/Task/Invoice/Service.php @@ -20,7 +20,7 @@ class Task_Invoice_Service extends Minion_Task { $max = ($x=Kohana::$config->load('debug')->invoice) ? $x : ORM::factory('Invoice')->config('GEN_INV_MAX'); // Sort our service by account_id, then we can generate 1 invoice. $svs = ORM::factory('Service')->list_invoicesoon($params['days'])->as_array(); - Sort::MAsort($svs,'account_id'); + Sort::MAsort($svs,array('account_id')); $sids = $params['id'] ? explode(':',$params['id']) : array(); diff --git a/modules/lnapp b/modules/lnapp index 6a33249a..8f659c50 160000 --- a/modules/lnapp +++ b/modules/lnapp @@ -1 +1 @@ -Subproject commit 6a33249a95ea484dd60470edc3b38f85ff5e1340 +Subproject commit 8f659c50c675c427e60a103a19fd3415d0cbbd07 diff --git a/modules/payment/classes/Controller/Admin/Payment.php b/modules/payment/classes/Controller/Admin/Payment.php index c07e222a..8d4c9114 100644 --- a/modules/payment/classes/Controller/Admin/Payment.php +++ b/modules/payment/classes/Controller/Admin/Payment.php @@ -113,11 +113,11 @@ class Controller_Admin_Payment extends Controller_Payment { Script::factory() ->type('file') - ->data('media/theme/bootstrap/vendor/datepicker/js/bootstrap-datepicker.js'); + ->data('media/theme/bootstrap/js/bootstrap.datepicker.js'); Style::factory() ->type('file') - ->data('media/theme/bootstrap/vendor/datepicker/css/datepicker.css'); + ->data('media/theme/bootstrap/css/bootstrap.datepicker.css'); Script::factory() ->type('stdin') @@ -125,6 +125,7 @@ class Controller_Admin_Payment extends Controller_Payment { $(document).ready(function() { $("#date_payment_label").datepicker({ autoclose : true, + todayHighlight: true, endDate : new Date(), format : "dd-mm-yyyy", todayBtn : true, diff --git a/modules/payment/views/payment/admin/add_edit.php b/modules/payment/views/payment/admin/add_edit.php index 3665920a..cb795f36 100644 --- a/modules/payment/views/payment/admin/add_edit.php +++ b/modules/payment/views/payment/admin/add_edit.php @@ -1,28 +1,29 @@ -
+
Payment Details -
- display('date_payment'),array('class'=>'span2','label'=>'Date Paid','add-on'=>'','disabled')); ?> + +
+ +
+ - date_payment); ?> list_select(),$o->checkout_id,array('label'=>'Payment Method','required')); ?> - total_amt,array('class'=>'span2','label'=>'Amount','placeholder'=>'Total','help-block'=>sprintf('Credits: %s, Balance: %s',$o->credit(),$o->total()))); ?> - fees_amt,array('class'=>'span2','label'=>'Fees','placeholder'=>'Fees')); ?> - account->name(),array('class'=>'span5','label'=>'Account','placeholder'=>'Account','data-provide'=>'typeahead')); ?> + total_amt,array('label'=>'Amount','placeholder'=>'Total','help-block'=>sprintf('Credits: %s, Balance: %s',$o->credit(),$o->total()))); ?> + fees_amt,array('label'=>'Fees','placeholder'=>'Fees')); ?> + account->name(),array('label'=>'Account','placeholder'=>'Account','data-provide'=>'typeahead')); ?> account_id); ?> - notes,array('class'=>'span5','label'=>'Notes','placeholder'=>'Any notes about this payment?')); ?> + notes,array('label'=>'Notes','placeholder'=>'Any notes about this payment?')); ?> +
-
-
+
+
-
- - -
+ +
diff --git a/modules/product/classes/Controller/Admin/Product.php b/modules/product/classes/Controller/Admin/Product.php index cc58624f..b763aee8 100644 --- a/modules/product/classes/Controller/Admin/Product.php +++ b/modules/product/classes/Controller/Admin/Product.php @@ -13,14 +13,27 @@ class Controller_Admin_Product extends Controller_Product { protected $auth_required = TRUE; protected $secure_actions = array( + 'ajaxaccounting'=>TRUE, 'ajaxtranslatecategory'=>TRUE, 'ajaxtranslate'=>TRUE, 'category'=>TRUE, 'edit'=>TRUE, 'list'=>TRUE, + 'listused'=>TRUE, 'view'=>TRUE, ); + public function action_ajaxaccounting() { + $products = ORM::factory('Product')->where('accounting','LIKE','%'.$this->request->query('term').'%')->find_all(); + + $result = array(); + foreach ($products as $po) + array_push($result,array('value'=>$po->accounting,'label'=>$po->accounting)); + + $this->response->headers('Content-Type','application/json'); + $this->response->body(json_encode(array_values($result))); + } + public function action_ajaxtranslate() { $po = ORM::factory('Product',$this->request->param('id')); @@ -140,13 +153,56 @@ $(document).ready(function() { } }); }); + + $("input[name=accounting]").typeahead({ + minLength: 2, + source: function (query,process) { + accounting(\'a/product/ajaxaccounting\',query,process); + }, + + matcher: function () { return true; }, + }); }); + +var d=0; +var accounting = _.debounce(function(url,query,process){ +$.ajax({ + url : site_url+url, + type : "GET", + data : "term=" + query, + dataType : "JSON", + async : true, + cache : false, + beforeSend : function() { + if (d++ == 0) $(\'i[name=acclook]\').removeClass("hidden"); + }, + success : function(data) { + // if json is null, means no match, won\'t do again. + if(data==null || (data.length===0)) return; + + users = {}; + userLabels = []; + + _.each(data,function(item,ix,list) { + if (_.contains(users,item.label)) item.label = item.label + \' #\' + item.value; + + userLabels.push(item.label); + users[item.label] = item.value; + }); + + process(userLabels); + }, + complete : function() { + if (--d == 0) $(\'i[name=acclook]\').addClass("hidden"); + } +}) +}, 500); '); Block::factory() ->type('form-horizontal') ->title('Update Product') - ->title_icon('icon-wrench') + ->title_icon('fa fa-wrench') ->body(View::factory('product/admin/edit') ->set('plugin_form',$po->plugin_edit()) ->set('o',$po)); @@ -156,30 +212,33 @@ $(document).ready(function() { * Show a list of products */ public function action_list() { - $products = ($x=$this->request->param('id')) ? ORM::factory('Product_Category',$x)->products() : ORM::factory('Product')->order_by('status','DESC')->order_by('prod_plugin_file')->find_all(); + $products = ($x=ORM::factory('Product_Category',$this->request->param('id')) AND $x->loaded()) ? $x->products() : ORM::factory('Product')->order_by('status','DESC')->order_by('prod_plugin_file')->find_all(); Block::factory() - ->title(_('Products')) - ->title_icon('icon-th') - ->body(Table::factory() - ->data($products) - ->page_items(25) - ->columns(array( - 'id'=>'ID', - 'title()'=>'Details', - 'status'=>'Active', - 'prod_plugin_file'=>'Plugin Name', - 'prod_plugin_data'=>'Plugin Data', - 'price_type'=>'Price Type', - 'taxable'=>'Taxable', - 'service->list_count()'=>'Services', - 'invoice->list_count()'=>'Invoices', - )) - ->prepend(array( - 'id'=>array('url'=>URL::link('admin','product/edit/')), - ))); + ->title(_('Products').($x->loaded() ? ' - '.$x->name() : ' - All')) + ->title_icon('fa fa-list') + ->body(View::factory('product/list')->set('list',$products)); } + /** + * List all the products that have an active service + */ + public function action_listused() { + $db = Database::instance(); + + $columns = ''; + foreach (array_keys(ORM::factory('Product')->table_columns()) as $text) + $columns .= ($columns ? ',' : '').'p.'.$text; + + $products = $db->query(Database::SELECT,sprintf('SELECT %s FROM ab_product p,ab_service s WHERE s.product_id=p.id AND s.status=1 AND p.site_id = s.site_id AND s.site_id=%s GROUP BY p.id',$columns,Company::instance()->site()),'Model_Product'); + + Block::factory() + ->title(_('Products with Active Services')) + ->title_icon('fa fa-list') + ->body(View::factory('product/list')->set('list',$products)); + } + + public function action_view() { $po = ORM::factory('Product',$this->request->param('id')); diff --git a/modules/product/classes/Model/Product/Category.php b/modules/product/classes/Model/Product/Category.php index f6d16b33..257601cb 100644 --- a/modules/product/classes/Model/Product/Category.php +++ b/modules/product/classes/Model/Product/Category.php @@ -39,6 +39,12 @@ class Model_Product_Category extends ORM_OSB { return $x->loaded() ? $x->display('description') : 'No Description'; } + public function name() { + $x = $this->translate(); + + return $x->loaded() ? $x->display('name') : 'No Name'; + } + /** * List all the products belonging to this cateogry */ diff --git a/modules/product/views/product/admin/edit.php b/modules/product/views/product/admin/edit.php index e511fad2..6b26b784 100644 --- a/modules/product/views/product/admin/edit.php +++ b/modules/product/views/product/admin/edit.php @@ -1,68 +1,77 @@ -
+
- Update Product + title();?> -
-
- - - -
- $v) : ?> - -
- is_price_shown($k),array('label'=>'Price Active','class'=>'span2')); ?> - - list_pricegroups() as $go) : ?> - -
-
name; ?>
- - price_options()) as $po) : ?> -
- id}][{$o->price_option($po)}]",$o->price($go->id,$k,$po),array('placeholder'=>$po,'nocg'=>TRUE,'class'=>'span2')); ?> -
- -
- - -
- - -
- -
-
- -
- -
- status,FALSE,array('label'=>'Product Active','class'=>'span1')); ?> +
+ +
status,FALSE,array('label'=>'Product Active','nocg'=>TRUE,'id'=>'status','class'=>'form-control')); ?>
-
- price_recurr_default,FALSE,array('label'=>'Default Period','class'=>'span2')); ?> -
+
+ +
price_recurr_default,FALSE,array('label'=>'Default Period','nocg'=>TRUE,'class'=>'form-control')); ?>
+
-
- position,array('label'=>'Order','class'=>'span1')); ?> -
+
+ +
position,array('label'=>'Order','nocg'=>TRUE,'class'=>'form-control')); ?>
+
-
- list_select(TRUE),'',array('label'=>'Language','required')); ?> -
+
+ +
accounting,array('label'=>'Accounting','autocomplete'=>'off','nocg'=>TRUE,'class'=>'form-control','data-provide'=>'typeahead')); ?>
+ +
+ +
+
+ + +
+ $v) : ?> +
+
+ + + + + + + + + list_pricegroups() as $go) : ?> + + + + price_options()) as $po) : ?> + + + + +
Price Activeis_price_shown($k),array('nocg'=>TRUE)); ?>
 SetupBase
name; ?>id}][{$o->price_option($po)}]",$o->price($go->id,$k,$po),array('placeholder'=>$po,'nocg'=>TRUE)); ?>
+
+
+ +
+
+
+ +
+ +
list_select(TRUE),'',array('nocg'=>TRUE,'class'=>'form-control')); ?>
+
+ +
+ + '.$plugin_form; } ?>
-
- - '.$plugin_form; } ?> -
-
+
diff --git a/modules/product/views/product/list.php b/modules/product/views/product/list.php new file mode 100644 index 00000000..ae7fc4e2 --- /dev/null +++ b/modules/product/views/product/list.php @@ -0,0 +1,17 @@ + +data($list) + ->page_items(25) + ->columns(array( + 'id'=>'ID', + 'title()'=>'Details', + 'status'=>'Active', + 'prod_plugin_file'=>'Plugin Name', + 'prod_plugin_data'=>'Plugin Data', + 'price_type'=>'Price Type', + 'accounting'=>'Accounting', + 'service->find_all()->count()'=>'Services', + )) + ->prepend(array( + 'id'=>array('url'=>URL::link('admin','product/edit/')), + )); ?> diff --git a/modules/service/classes/Controller/Admin/Service.php b/modules/service/classes/Controller/Admin/Service.php index 6cd1cc44..ed53de57 100644 --- a/modules/service/classes/Controller/Admin/Service.php +++ b/modules/service/classes/Controller/Admin/Service.php @@ -23,11 +23,59 @@ class Controller_Admin_Service extends Controller_Service { if ($this->request->post() AND $so=$this->add_edit() AND $so->loaded()) HTTP::redirect(URL::link('admin','service/edit/'.$so->id)); + Script::factory() + ->type('file') + ->data('media/theme/bootstrap/js/bootstrap.datepicker.js'); + + Style::factory() + ->type('file') + ->data('media/theme/bootstrap/css/bootstrap.datepicker.css'); + // @todo This AJAX URL should be a service one Script::factory() ->type('stdin') ->data(' $(document).ready(function() { + $("#date_next_invoice_label").datepicker({ + autoclose : true, + todayHighlight: true, + format : "dd-mm-yyyy", + todayBtn : true, + }).on("hide",function(ev) { + $("input[name=date_next_invoice]").val(ev.date.valueOf()/1000); + }); + + $("input[name=account_id_label]").typeahead({ + minLength: 2, + source: function (query,process) { + search("'.URL::link('admin','payment/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: "html", + cache: false, + url: "'.URL::link('admin','payment/ajaxitemlist',TRUE).'", + timeout: 2000, + error: function(x) { + alert("Failed to submit"); + }, + success: function(data) { + $("div[id=items]").empty().append(data); + } + }); + + return item; + }, + }); + $("select[name=product_id]").change(function() { // If we select a blank, then dont continue if (this.value == 0) @@ -49,40 +97,9 @@ $(document).ready(function() { } }); }); - - $("#date_next_invoice_label").datepicker({ - autoclose : true, - format : "dd-M-yyyy", - todayBtn : true, - }).on("hide",function(ev) { - $("input[name=date_next_invoice]").val(ev.date.valueOf()/1000); - }); - - $("input[name=account_id_label]").typeahead({ - minLength: 2, - source: function (query,process) { - search("'.URL::link('admin','payment/ajaxlist').'",query,process); - }, - - matcher: function () { return true; }, - - updater: function (item) { - $("input[name=account_id]").val(users[item]); - - return item; - }, - }); }); '); - 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'); - Block::factory() ->type('form-horizontal') ->title('Add/View Charge') diff --git a/modules/service/classes/Controller/User/Service.php b/modules/service/classes/Controller/User/Service.php index 94f37916..e0ecb0d2 100644 --- a/modules/service/classes/Controller/User/Service.php +++ b/modules/service/classes/Controller/User/Service.php @@ -69,7 +69,7 @@ class Controller_User_Service extends Controller_Service { Block::factory() ->title(sprintf('%s: %s',$so->id(),$so->service_name())) - ->title_icon('icon-list-alt') + ->title_icon('fa fa-server') ->body($output); } } diff --git a/modules/service/classes/Model/Service.php b/modules/service/classes/Model/Service.php index 0d056715..2b45d0de 100644 --- a/modules/service/classes/Model/Service.php +++ b/modules/service/classes/Model/Service.php @@ -270,8 +270,8 @@ class Model_Service extends ORM_OSB { /** * Return a descriptive name for this service */ - public function service_name() { - return is_null($x=$this->plugin()) ? $this->name() : $x->service_name(); + public function service_name($chars=NULL) { + return HTML::abbr(is_null($x=$this->plugin()) ? $this->name() : $x->service_name(),$chars); } /** @@ -385,7 +385,14 @@ class Model_Service extends ORM_OSB { */ public function list_invoicesoon($days=0) { return $this->_where_active() - ->where_open()->where('suspend_billing','IS',NULL)->or_where('suspend_billing','=','0')->where_close() + ->where_open() + ->where('suspend_billing','IS',NULL) + ->or_where('suspend_billing','=','0') + ->where_close() + ->where_open() + ->or_where('external_billing','=','0') + ->or_where('external_billing','IS',NULL) + ->where_close() ->where('date_next_invoice','<',time()+(ORM::factory('Invoice')->config('GEN_DAYS')+$days)*86400) ->find_all(); } diff --git a/modules/service/views/service/admin/add.php b/modules/service/views/service/admin/add.php index 9daf6d7f..0a1558e7 100644 --- a/modules/service/views/service/admin/add.php +++ b/modules/service/views/service/admin/add.php @@ -1,51 +1,30 @@ -
+
Service Information -
- 'span5','label'=>'Account','placeholder'=>'Account','data-provide'=>'typeahead','required')); ?> - -
+ 'Account','placeholder'=>'Account','autocomplete'=>'no','data-provide'=>'typeahead')); ?> + -
- 'Active','class'=>'span1')); ?> -
+ 'Active')); ?> + 'Billing Period','required'));?> -
- 'Billing Period','required'));?> -
+ +
+ + +
+ -
-
- 'span2','label'=>'Date Next Invoice','add-on'=>'','disabled')); ?> -
- - -
- -
- 'Taxable','class'=>'span1')); ?> -
- -
- 'Suspend Billing','class'=>'span1')); ?> -
- -
- 'Override Price','class'=>'span1')); ?> -
- -
- list_select(TRUE),NULL,array('label'=>'Product','class'=>'span4','sort'=>TRUE)); ?> -
+ 'Taxable')); ?> + 'Suspend Billing')); ?> + 'Override Price')); ?> + list_select(TRUE),NULL,array('label'=>'Product','sort'=>TRUE)); ?>
-
- - -
+ +
-
+
diff --git a/modules/service/views/service/info.php b/modules/service/views/service/info.php new file mode 100644 index 00000000..a7b4b38d --- /dev/null +++ b/modules/service/views/service/info.php @@ -0,0 +1,46 @@ + +
+
+ Service Information + +
+
Account
+
account->name(),$o->account->accnum()); ?>
+ + external_billing) : ?> +
External Billed
+
display('external_billing'); ?>
+ + +
Service Active
+
display('status'); ?>
+ +
Billing Period
+
display('recur_schedule');?>
+ +
Cost
+
price_override) ? sprintf('%s ',$o->price(TRUE,TRUE,TRUE)) : ''). $o->price(TRUE,TRUE); if ($o->pending_change()) echo ' *'; ?>
+ + + price) OR ($o->price<=$o->product->price($o->price_group,$o->recur_schedule,'base'))) : ?> +
Service
+
product_id,$o->product->title()); ?>
+ + +
Invoiced To
+
invoiced_to(TRUE); ?>
+ +
Paid To
+
paid_to(TRUE); ?>
+ +
Date Next Invoice
+
suspend_billing ? '%s' : '%s',$o->display('date_next_invoice')); ?>
+ +
Current Invoices Due
+
due(TRUE); ?>
+ +
+
+ + product->feature_summary(); ?> +
diff --git a/modules/service/views/service/user/view.php b/modules/service/views/service/user/view.php index d2347752..048bb1e9 100644 --- a/modules/service/views/service/user/view.php +++ b/modules/service/views/service/user/view.php @@ -1,52 +1,5 @@ -
-
- Service Information - -
-
Account
-
account->name(),$o->account->accnum()); ?>
- - external_billing) : ?> -
External Billed
-
display('external_billing'); ?>
- - -
Service Active
-
display('status'); ?>
- -
Billing Period
-
display('recur_schedule');?>
- -
Cost
-
price_override) ? sprintf('%s ',$o->price(TRUE,TRUE,TRUE)) : ''). $o->price(TRUE,TRUE); if ($o->pending_change()) echo ' *'; ?>
- - - price) OR ($o->price<=$o->product->price($o->price_group,$o->recur_schedule,'base'))) : ?> -
Service
-
product_id,$o->product->title()); ?>
- - -
Invoiced To
-
invoiced_to(TRUE); ?>
- -
Paid To
-
paid_to(TRUE); ?>
- -
Date Next Invoice
-
suspend_billing ? '%s' : '%s',$o->display('date_next_invoice')); ?>
- -
Current Invoices Due
-
due(TRUE); ?>
- -
-
- - product->feature_summary(); ?> -
- -
- service_view(); ?> -
+set('o',$o); ?> +service_view(); ?> service_billing->loaded()) : ?>
diff --git a/modules/ssl/classes/Model/SSL/CA.php b/modules/ssl/classes/Model/SSL/CA.php index 9a6c77b8..5df1b3f8 100644 --- a/modules/ssl/classes/Model/SSL/CA.php +++ b/modules/ssl/classes/Model/SSL/CA.php @@ -27,6 +27,8 @@ class Model_SSL_CA extends ORM_OSB { ), ); + protected $_form = array('id'=>'id','value'=>'subject()'); + public function filters() { return array( 'parent_ssl_ca_id'=>array( diff --git a/modules/ssl/classes/Model/Service/Plugin/Ssl.php b/modules/ssl/classes/Model/Service/Plugin/Ssl.php index a123da88..28cd78be 100644 --- a/modules/ssl/classes/Model/Service/Plugin/Ssl.php +++ b/modules/ssl/classes/Model/Service/Plugin/Ssl.php @@ -11,6 +11,7 @@ */ class Model_Service_Plugin_Ssl extends Model_Service_Plugin { protected $_table_name = 'service__ssl'; + protected $_created_column = FALSE; protected $_updated_column = FALSE; // Relationships diff --git a/modules/ssl/views/product/plugin/ssl/order.php b/modules/ssl/views/product/plugin/ssl/order.php new file mode 100644 index 00000000..2116ab23 --- /dev/null +++ b/modules/ssl/views/product/plugin/ssl/order.php @@ -0,0 +1,6 @@ +
+ SSL Details + + list_select(TRUE),NULL,array('label'=>'CA','sort'=>TRUE)); ?> + 'CSR','placeholder'=>'CSR','style'=>'font-family: monospace;','cols'=>63,'rows'=>20)); ?> +