Removed redundant functions, some Standardisation work
This commit is contained in:
parent
24bb4a701b
commit
07de13f678
@ -69,7 +69,7 @@ class Controller_Admin_Module_Method extends Controller_Admin_Module {
|
||||
|
||||
foreach (ORM::factory('Group')->find_all() as $go) {
|
||||
// If the group was defined and no longer
|
||||
if ($mmo->has('group',$go) AND (! $this->request->post('groups')) OR ! in_array($go->id,$this->request->post('groups'))) {
|
||||
if ($mmo->has('group',$go) AND (! $this->request->post('groups') OR ! in_array($go->id,$this->request->post('groups')))) {
|
||||
$gmo = ORM::factory('Group_Method',array('method_id'=>$mmo->id,'group_id'=>$go->id));
|
||||
|
||||
if (! $gmo->delete())
|
||||
|
@ -12,17 +12,6 @@
|
||||
abstract class Controller_TemplateDefault extends lnApp_Controller_TemplateDefault {
|
||||
protected $auth_required = TRUE;
|
||||
|
||||
// @todo To rework
|
||||
public function after() {
|
||||
$dc = URL::link('user','welcome/index');
|
||||
$m = sprintf('%s/%s',Request::current()->directory(),Request::current()->controller());
|
||||
|
||||
BreadCrumb::URL(Request::current()->directory(),sprintf('%s/%s',Request::current()->directory(),$dc),FALSE);
|
||||
BreadCrumb::URL($m,method_exists($this,'action_menu') ? $m.'/menu' : sprintf('%s/%s',Request::current()->directory(),$dc),FALSE);
|
||||
|
||||
parent::after();
|
||||
}
|
||||
|
||||
protected function save(Model $o) {
|
||||
try {
|
||||
return $o->save();
|
||||
@ -48,7 +37,7 @@ abstract class Controller_TemplateDefault extends lnApp_Controller_TemplateDefau
|
||||
if ($config_items) {
|
||||
Block::factory()
|
||||
->title('Update Module Configuration')
|
||||
->title_icon('icon-wrench')
|
||||
->title_icon('fa fa-wrench')
|
||||
->type('form-horizontal')
|
||||
->body(View::factory('setup/admin/module')->set('o',Company::instance()->so())->set('mid',$mo->id));
|
||||
}
|
||||
|
@ -44,21 +44,7 @@ class Model_Account extends lnApp_Model_Account {
|
||||
|
||||
/** REQUIRED ABSTRACT METHODS **/
|
||||
|
||||
/**
|
||||
* Returns the company name if it exists, otherwise the persons name
|
||||
*/
|
||||
public function name($variable=NULL) {
|
||||
return $this->isCompany() ? $this->company : $this->namesub();
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the persons name
|
||||
*/
|
||||
public function namesub($variable=NULL) {
|
||||
return trim(sprintf('%s %s',$this->first_name,$this->last_name));
|
||||
}
|
||||
|
||||
/** OTHER METHODS **/
|
||||
/** LOCAL METHODS **/
|
||||
|
||||
public function activated() {
|
||||
return $this->has('group');
|
||||
@ -115,6 +101,20 @@ class Model_Account extends lnApp_Model_Account {
|
||||
return $this->RTM->loaded();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the company name if it exists, otherwise the persons name
|
||||
*/
|
||||
public function name($variable=NULL) {
|
||||
return $this->isCompany() ? $this->company : $this->namesub();
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the persons name
|
||||
*/
|
||||
public function namesub($variable=NULL) {
|
||||
return trim(sprintf('%s %s',$this->first_name,$this->last_name));
|
||||
}
|
||||
|
||||
/**
|
||||
* The key we use to sort entries of this model type
|
||||
*/
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Account_Log extends ORM_OSB {
|
||||
class Model_Account_Log extends ORM {
|
||||
protected $_belongs_to = array(
|
||||
'account'=>array(),
|
||||
);
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Country extends ORM_OSB {
|
||||
class Model_Country extends ORM {
|
||||
protected $_has_one = array(
|
||||
'currency'=>array('far_key'=>'id'),
|
||||
);
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Currency extends ORM_OSB {
|
||||
class Model_Currency extends ORM {
|
||||
protected $_sorting = array(
|
||||
'name'=>'ASC',
|
||||
);
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Group_Method extends ORM_OSB {
|
||||
class Model_Group_Method extends ORM {
|
||||
// Relationships
|
||||
protected $_has_one = array(
|
||||
'record_id'=>array(),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Language extends ORM_OSB {
|
||||
class Model_Language extends ORM {
|
||||
protected $_sorting = array(
|
||||
'name'=>'ASC',
|
||||
);
|
||||
|
@ -9,6 +9,6 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Log_Error extends ORM_OSB {
|
||||
class Model_Log_Error extends ORM {
|
||||
}
|
||||
?>
|
||||
|
@ -12,7 +12,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Module extends ORM_OSB {
|
||||
class Model_Module extends ORM {
|
||||
// Relationships
|
||||
protected $_has_one = array(
|
||||
'record_id'=>array('model'=>'Record_ID','far_key'=>'id'),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Module_Method extends ORM_OSB {
|
||||
class Model_Module_Method extends ORM {
|
||||
// This module doesnt keep track of column updates automatically
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Module_Method_Token extends ORM_OSB {
|
||||
class Model_Module_Method_Token extends ORM {
|
||||
// This module doesnt keep track of column updates automatically
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_RTM extends ORM_OSB {
|
||||
class Model_RTM extends ORM {
|
||||
protected $_belongs_to = array(
|
||||
'account' => array(),
|
||||
);
|
||||
|
@ -8,7 +8,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Record_ID extends ORM_OSB {
|
||||
class Model_Record_ID extends ORM {
|
||||
protected $_primary_key = 'module_id';
|
||||
|
||||
// This module doesnt keep track of column updates automatically
|
||||
|
@ -12,7 +12,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Setup extends ORM_OSB {
|
||||
class Model_Setup extends ORM {
|
||||
// Setup doesnt use the update column
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
|
@ -1,14 +0,0 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class extends Kohana's [ORM] class to create defaults for OSB.
|
||||
*
|
||||
* @package OSB
|
||||
* @category Helpers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
* @deprecate
|
||||
*/
|
||||
abstract class ORM_OSB extends ORM {
|
||||
}
|
@ -101,7 +101,7 @@ class Controller_Admin_Adsl extends Controller_Adsl {
|
||||
->data($apo->products())
|
||||
->columns(array(
|
||||
'id'=>'ID',
|
||||
'title()'=>'Name',
|
||||
'name(Site::language())'=>'Name',
|
||||
'status'=>'Active',
|
||||
))
|
||||
->prepend(array(
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_ADSL_Supplier extends ORM_OSB {
|
||||
class Model_ADSL_Supplier extends ORM {
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
// Relationships
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_ADSL_Supplier_Plan extends ORM_OSB {
|
||||
class Model_ADSL_Supplier_Plan extends ORM {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'supplier'=>array('model'=>'ADSL_Supplier'),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Service_Plugin_Adsl_Traffic extends ORM_OSB {
|
||||
class Model_Service_Plugin_Adsl_Traffic extends ORM {
|
||||
protected $_table_name = 'service__adsl_traffic';
|
||||
protected $_primary_key = 'service';
|
||||
protected $_disable_wild_select = TRUE;
|
||||
|
@ -1,5 +1,5 @@
|
||||
<div id="page-title">
|
||||
<h1><?php echo $o->title(); ?></h1>
|
||||
<h1><?php echo $o->name(Site::language()); ?></h1>
|
||||
<?php echo $o->description(); ?>
|
||||
</div> <!-- /page-title -->
|
||||
|
||||
@ -10,12 +10,12 @@
|
||||
<th class="plan-title">Plan Name</th>
|
||||
|
||||
<?php foreach ($o->products() as $po) : ?>
|
||||
<td class="plan-title"><?php echo $po->title(); ?> <small>(<?php echo $po->id; ?>)</small></td>
|
||||
<td class="plan-title"><?php echo $po->name(Site::language()); ?> <small>(<?php echo $po->id; ?>)</small></td>
|
||||
<?php endforeach ?>
|
||||
</tr>
|
||||
|
||||
<tr class="plan-header">
|
||||
<th class="plan-price" >Price</th>
|
||||
<th class="plan-title" >Price</th>
|
||||
|
||||
<?php foreach ($o->products() as $po) : ?>
|
||||
<?php $go = $po->price_best($o->recur_schedule,TRUE); ?>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<div id="page-title">
|
||||
<h1><?php echo $o->title(); ?></h1>
|
||||
<h1><?php echo $o->name(Site::language()); ?></h1>
|
||||
<?php echo $o->description(); ?>
|
||||
</div> <!-- /page-title -->
|
||||
|
||||
@ -23,9 +23,7 @@
|
||||
|
||||
<div class="plan-header">
|
||||
|
||||
<div class="plan-title">
|
||||
<?php echo $po->title(); ?> <small>(<?php echo $po->id; ?>)</small>
|
||||
</div> <!-- /plan-title -->
|
||||
<div class="plan-title"><?php echo $po->name(Site::language()); ?> <small>(<?php echo $po->id; ?>)</small></div>
|
||||
|
||||
<div class="plan-price">
|
||||
<span class="note">$</span><?php echo substr($price,0,strpos($price,'.')); ?><span class="cents"> .<?php echo substr($price,-2,strpos($price,'.')); ?></span><span class="term"><?php echo StaticList_RecurSchedule::get($o->recur_schedule); ?></span>
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Cart extends ORM_OSB {
|
||||
class Model_Cart extends ORM {
|
||||
// Cart doesnt use the update column
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
|
@ -10,5 +10,6 @@
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Controller_Charge extends Controller_TemplateDefault {
|
||||
protected $icon = 'fa fa-dollar';
|
||||
}
|
||||
?>
|
||||
|
@ -21,8 +21,8 @@ class Controller_Reseller_Charge extends Controller_Charge {
|
||||
public function action_add() {
|
||||
Block::factory()
|
||||
->type('form-horizontal')
|
||||
->title('Add/View Charge')
|
||||
->title_icon('fa fa-wrench')
|
||||
->title('New Charge')
|
||||
->title_icon($this->icon)
|
||||
->body($this->add_edit());
|
||||
}
|
||||
|
||||
@ -54,72 +54,11 @@ class Controller_Reseller_Charge extends Controller_Charge {
|
||||
private function add_edit($id=NULL,$output='') {
|
||||
$co = ORM::factory('Charge',$id);
|
||||
|
||||
$this->meta->title = sprintf('Charge: %s (%s)',$co->name(),$co->account->name());
|
||||
$this->meta->title = $co->loaded() ? sprintf('Charge: %s (%s)',$co->name(),$co->account->name()) : 'New Charge';
|
||||
|
||||
if ($this->request->post() AND $co->values($this->request->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 = "<option value=\"" + j.value + "\">" + j.label + "</option>";
|
||||
$(row).appendTo("select[name=service_id]");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return item;
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
');
|
||||
|
||||
return View::factory('charge/reseller/add_edit')
|
||||
->set('o',$co);
|
||||
}
|
||||
@ -130,7 +69,7 @@ $(document).ready(function() {
|
||||
Block::factory()
|
||||
->type('form-horizontal')
|
||||
->title(sprintf('%s: %s',_('View Charges'),$id))
|
||||
->title_icon('fa fa-wrench')
|
||||
->title_icon($this->icon)
|
||||
->body($this->add_edit($id,$output));
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Charge extends ORM_OSB implements Invoicable {
|
||||
class Model_Charge extends ORM {
|
||||
protected $_belongs_to = array(
|
||||
'account'=>array(),
|
||||
'product'=>array(),
|
||||
@ -80,9 +80,6 @@ class Model_Charge extends ORM_OSB implements Invoicable {
|
||||
}
|
||||
|
||||
/** REQUIRED ABSTRACT METHODS **/
|
||||
public function namesub($variable=NULL) {
|
||||
return sprintf('%d@%2.2f - %s (%s)',$this->quantity,$this->amount,($this->description ? ' '.$this->description : '').($this->attributes ? ' ['.join('|',$this->attributes).']' : ''),$this->display('date_charge'));
|
||||
}
|
||||
|
||||
/** LOCAL METHODS **/
|
||||
|
||||
@ -100,26 +97,9 @@ class Model_Charge extends ORM_OSB implements Invoicable {
|
||||
return $iio;
|
||||
}
|
||||
|
||||
public function invoice_item($item_type) {
|
||||
switch ($item_type) {
|
||||
case 5:
|
||||
return sprintf('%s (%s x %s%s%s) %s',
|
||||
StaticList_ItemType::get($item_type),
|
||||
$this->quantity,
|
||||
$this->display('amount'),
|
||||
($this->description ? ' '.$this->description : ''),
|
||||
($this->attributes ? ' ['.join('|',$this->attributes).']' : ''),
|
||||
$this->display('date_charge'));
|
||||
|
||||
default:
|
||||
return sprintf('%s %s',StaticList_ItemType::get($item_type),$this->display('date_charge')).($this->description ? ' ('.$this->description.')' : '');
|
||||
public function namesub($variable=NULL) {
|
||||
return sprintf('%d@%2.2f - %s (%s)',$this->quantity,$this->amount,($this->description ? ' '.$this->description : '').($this->attributes ? ' ['.join('|',$this->attributes).']' : ''),$this->display('date_charge'));
|
||||
}
|
||||
}
|
||||
|
||||
public function xtitle() {
|
||||
return $this->invoice_item(5);
|
||||
}
|
||||
|
||||
public function total($format=FALSE) {
|
||||
$result = $this->quantity * $this->amount;
|
||||
|
||||
|
@ -1,27 +1,18 @@
|
||||
<div class="col-md-11">
|
||||
<div class="col-md-12">
|
||||
<fieldset>
|
||||
<legend>Charge Details</legend>
|
||||
|
||||
<label for="date_charge_label">Date Charge</label>
|
||||
<div class="input-group col-md-3">
|
||||
<input type="text" id="date_charge_label" value="<?php echo $o->display('date_charge'); ?>" class="form-control" placeholder="Date Charge">
|
||||
<span class="input-group-addon" id="basic-addon1"><i class="fa fa-calendar"></i></span>
|
||||
</div>
|
||||
<?php echo Form::hidden('date_charge',$o->date_charge); ?>
|
||||
|
||||
<?php echo Form::input('account_id_label',$o->account->name(),array('label'=>'Account','placeholder'=>'Account','data-provide'=>'typeahead')); ?>
|
||||
<?php echo Form::hidden('account_id',$o->account_id); ?>
|
||||
|
||||
<?php echo Form::select('service_id',$o->account_id ? $o->account->service->list_select() : array(),$o->service_id,array('label'=>'Service')); ?>
|
||||
|
||||
<?php echo StaticList_SweepType::form('sweep_type',is_null($o->sweep_type) ? 6 : $o->sweep_type,FALSE,array('label'=>'Sweep')); ?>
|
||||
<?php echo StaticList_ItemType::form('type',is_null($o->type) ? 6 : $o->type,FALSE,array('label'=>'Item Type')); ?>
|
||||
|
||||
<?php echo Form::input('quantity',$o->quantity,array('label'=>'Quantity','placeholder'=>'Quantity')); ?>
|
||||
<?php echo Form::input('amount',$o->amount,array('label'=>'Amount','placeholder'=>'Total',)); ?>
|
||||
<?php echo StaticList_YesNo::form('taxable',is_null($o->taxable) ? TRUE : $o->taxable,FALSE,array('label'=>'Taxable')); ?>
|
||||
<?php echo Form::input('description',$o->description,array('label'=>'Description','placeholder'=>'Any notes about this charge?')); ?>
|
||||
|
||||
<?php
|
||||
echo View::factory('field/date')->set('data',['field'=>'date_charge','value'=>$o->date_charge ? $o->date_charge : time(),'text'=>'Date Charge','enddate'=>'new Date()']);
|
||||
echo View::factory('field/account')->set('data',['field'=>'account_id','value'=>$o->account_id,'text'=>'Account','name'=>sprintf('%s: %s',$o->account->refnum(),$o->account->name()),'ajaxurl'=>URL::link('reseller','charge/ajaxlist')]);
|
||||
echo View::factory('field/select')->set('data',['field'=>'service_id','value'=>$o->account_id ? $o->account->service->list_select() : [],'text'=>'Service','default'=>$o->service_id,'class'=>'col-md-6']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'sweep_type','value'=>Arr::merge([''=>''],StaticList_SweepType::table()),'text'=>'Sweep','default'=>is_null($o->sweep_type) ? 6 : $o->sweep_type,'class'=>'col-md-2']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'type','value'=>Arr::merge([''=>''],StaticList_ItemType::table()),'text'=>'Item Type','default'=>$o->type,'class'=>'col-md-2']);
|
||||
echo View::factory('field/number')->set('data',['field'=>'quantity','value'=>$o->quantity,'text'=>'Quantity','class'=>'col-md-2']);
|
||||
echo View::factory('field/money')->set('data',['field'=>'amount','value'=>$o->amount,'text'=>'Amount','class'=>'col-md-2']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'taxable','value'=>StaticList_YesNo::table(),'text'=>'Taxable','default'=>$o->taxable,'class'=>'col-md-1']);
|
||||
echo View::factory('field/text')->set('data',['field'=>'description','value'=>$o->description,'text'=>'Description','class'=>'col-md-5']);
|
||||
?>
|
||||
<!-- @todo Use JS to dynamically add more lines as required -->
|
||||
<?php $i=0; if ($o->attributes) foreach ($o->attributes as $key => $value) :
|
||||
echo Form::input("attributes[$key]",$value,array('label'=>$key));
|
||||
@ -32,8 +23,34 @@
|
||||
endfor ?>
|
||||
</fieldset>
|
||||
|
||||
<div class="row">
|
||||
<button type="submit" class="btn btn-primary">Save changes</button>
|
||||
<button type="button" class="btn">Cancel</button>
|
||||
<?php echo View::factory('field/submit'); ?>
|
||||
</div>
|
||||
</div> <!-- /col-md-11 -->
|
||||
|
||||
<?php
|
||||
Script::factory()
|
||||
->type('stdin')
|
||||
->data('
|
||||
$(document).ready(function() {
|
||||
$("input[name=account_id]").change(function(){
|
||||
// Send the request and update sub category dropdown
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
data: "key="+$(this).val(),
|
||||
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 = "<option value=\"" + j.value + "\">" + j.label + "</option>";
|
||||
$(row).appendTo("select[name=service_id]");
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});');
|
||||
?>
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Checkout extends ORM_OSB {
|
||||
class Model_Checkout extends ORM {
|
||||
protected $_has_many = array(
|
||||
'payment'=>array(),
|
||||
'service'=>array('through'=>'account_billing','foreign_key'=>'checkout_id'),
|
||||
@ -20,10 +20,6 @@ class Model_Checkout extends ORM_OSB {
|
||||
|
||||
/** REQUIRED ABSTRACT METHODS **/
|
||||
|
||||
public function name($variable=NULL) {
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/** LOCAL METHODS **/
|
||||
|
||||
/**
|
||||
@ -46,6 +42,10 @@ class Model_Checkout extends ORM_OSB {
|
||||
return Currency::round($net-$amt);
|
||||
}
|
||||
|
||||
public function name($variable=NULL) {
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the object of the checkout plugin
|
||||
*/
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Checkout_Notify extends ORM_OSB implements Invoicable {
|
||||
class Model_Checkout_Notify extends ORM {
|
||||
// Relationships
|
||||
protected $_has_one = array(
|
||||
'checkout'=>array('far_key'=>'checkout_id','foreign_key'=>'id'),
|
||||
@ -25,10 +25,6 @@ class Model_Checkout_Notify extends ORM_OSB implements Invoicable {
|
||||
'data',
|
||||
);
|
||||
|
||||
public function invoice_item($item_type) {
|
||||
return sprintf('Payment Fee: %s',$this->checkout->name);
|
||||
}
|
||||
|
||||
public function process() {
|
||||
return $this->checkout->plugin()->notify($this);
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Domain_Registrar extends ORM_OSB {
|
||||
class Model_Domain_Registrar extends ORM {
|
||||
/**
|
||||
* The button that provides a login to the Registrar to manage the domain license
|
||||
*/
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Domain_Tld extends ORM_OSB {
|
||||
class Model_Domain_Tld extends ORM {
|
||||
protected $_display_filters = array(
|
||||
'name'=>array(
|
||||
array('strtoupper',array(':value')),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Email_Log extends ORM_OSB {
|
||||
class Model_Email_Log extends ORM {
|
||||
// Email Log doesnt use the update column
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Email_Template extends ORM_OSB {
|
||||
class Model_Email_Template extends ORM {
|
||||
protected $_has_many = array(
|
||||
'translate'=>array('model'=>'Email_Template_Translate','foreign_key'=>'email_template_id','far_key'=>'id'),
|
||||
);
|
||||
|
@ -8,7 +8,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Email_Template_Translate extends ORM_OSB {
|
||||
class Model_Email_Template_Translate extends ORM {
|
||||
// This module doesnt keep track of column updates automatically
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
|
@ -100,10 +100,10 @@ class Export_Plugin_Quicken extends Export_Plugin {
|
||||
$items[$c]['INVITEM'] = $edo->map_data['item'];
|
||||
|
||||
} else {
|
||||
throw HTTP_Exception::factory(501,'Missing product map data for :product (:id)',array(':product'=>$iio->module()->title(),':id'=>$iio->module_ref));
|
||||
throw HTTP_Exception::factory(501,'Missing product map data for :product (:id)',array(':product'=>$iio->product->name(Site::language()),':id'=>$iio->module_ref));
|
||||
}
|
||||
|
||||
$items[$c]['MEMO'] = sprintf('%s (%s)',$iio->module()->title(),$iio->period());
|
||||
$items[$c]['MEMO'] = $iio->name();
|
||||
|
||||
// Non product item
|
||||
} else {
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Export extends ORM_OSB {
|
||||
class Model_Export extends ORM {
|
||||
// Relationships
|
||||
protected $_has_many = array(
|
||||
'export_module' => array('far_key'=>'id','xforeign_key'=>'x'),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Export_DataMap extends ORM_OSB {
|
||||
class Model_Export_DataMap extends ORM {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'export_module' => array(),
|
||||
@ -20,12 +20,11 @@ class Model_Export_DataMap extends ORM_OSB {
|
||||
'map_data',
|
||||
);
|
||||
|
||||
public function list_itemsnoexport(Model $o,$emoid,$desc='title()') {
|
||||
public function list_itemsnoexport(Model $o,$emoid,$desc='name(Site::language())') {
|
||||
$result = array();
|
||||
|
||||
$o->select(array($this->table_name().'.id','edm'))
|
||||
->join($this->table_name(),'LEFT OUTER')
|
||||
->on($this->table_name().'.site_id','=',$o->table_name().'.site_id') // @todo This should be automatic
|
||||
->on($this->table_name().'.item_id','=',$o->table_name().'.id')
|
||||
->on('export_module_id','=',$emoid)
|
||||
->where($o->table_name().'.status','=',TRUE)
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Export_Item extends ORM_OSB {
|
||||
class Model_Export_Item extends ORM {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'export_module' => array(),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Export_Module extends ORM_OSB {
|
||||
class Model_Export_Module extends ORM {
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Host_Server extends ORM_OSB {
|
||||
class Model_Host_Server extends ORM {
|
||||
// Host Server doesnt use the update column
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
|
@ -9,6 +9,6 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Host_Server_Affiliate extends ORM_OSB {
|
||||
class Model_Host_Server_Affiliate extends ORM {
|
||||
}
|
||||
?>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<div id="page-title">
|
||||
<h1><?php echo $o->title(); ?></h1>
|
||||
<h1><?php echo $o->name(Site::language()); ?></h1>
|
||||
<?php echo $o->description(); ?>
|
||||
</div> <!-- /page-title -->
|
||||
|
||||
@ -23,9 +23,7 @@
|
||||
|
||||
<div class="plan-header">
|
||||
|
||||
<div class="plan-title">
|
||||
<?php echo $po->title(); ?>
|
||||
</div> <!-- /plan-title -->
|
||||
<div class="plan-title"><?php echo $po->name(Site::language()); ?></div>
|
||||
|
||||
<div class="plan-price">
|
||||
<span class="note">$</span><?php echo substr($price,0,strpos($price,'.')); ?><span class="cents"> .<?php echo substr($price,-2,strpos($price,'.')); ?></span><span class="term"><?php echo StaticList_RecurSchedule::get($o->recur_schedule); ?></span>
|
||||
|
@ -17,11 +17,11 @@ class Controller_Task_Invoice extends Controller_Task {
|
||||
|
||||
foreach (ORM::factory('Invoice_Item')->find_all() as $iio) {
|
||||
if ($iio->product_name AND $iio->product_id) {
|
||||
if (md5(strtoupper($iio->product_name)) == md5(strtoupper($iio->product->title()))) {
|
||||
if (md5(strtoupper($iio->product_name)) == md5(strtoupper($iio->product->name(Site::language())))) {
|
||||
$iio->product_name = NULL;
|
||||
$iio->save();
|
||||
} else {
|
||||
print_r(array("DIFF",'id'=>$iio->id,'pn'=>serialize($iio->product_name),'ppn'=>serialize($iio->product->title()),'pid'=>$iio->product_id,'test'=>strcasecmp($iio->product_name,$iio->product->title())));
|
||||
print_r(array("DIFF",'id'=>$iio->id,'pn'=>serialize($iio->product_name),'ppn'=>serialize($iio->product->name(Site::language())),'pid'=>$iio->product_id,'test'=>strcasecmp($iio->product_name,$iio->product->name(Site::language()))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This interface ensures that all items have the required invoice methods
|
||||
*
|
||||
* @package Invoice
|
||||
* @category Interface
|
||||
* @author Deon George
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
interface Invoicable {
|
||||
// Render an invoice line item.
|
||||
public function invoice_item($item_type);
|
||||
}
|
||||
?>
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Invoice extends ORM_OSB implements Cartable {
|
||||
class Model_Invoice extends ORM implements Cartable {
|
||||
protected $_belongs_to = array(
|
||||
'account'=>array()
|
||||
);
|
||||
@ -54,14 +54,6 @@ class Model_Invoice extends ORM_OSB implements Cartable {
|
||||
|
||||
/** REQUIRED ABSTRACT METHODS **/
|
||||
|
||||
/**
|
||||
* Display the Invoice Reference Number
|
||||
*/
|
||||
public function refnum($short=FALSE) {
|
||||
return ($short ? '' : $this->account->refnum(FALSE).'-').sprintf('%06s',$this->id);
|
||||
}
|
||||
|
||||
|
||||
/** REQUIRED INTERFACE METHODS **/
|
||||
|
||||
public function cart_item() {
|
||||
@ -127,7 +119,7 @@ class Model_Invoice extends ORM_OSB implements Cartable {
|
||||
$c = 0;
|
||||
if (! $this->_loaded)
|
||||
foreach ($this->_sub_items as $iio)
|
||||
$iio->id = 'FAKE:'.$c++;
|
||||
$iio->id = '****:'.$c++;
|
||||
|
||||
// First work through our recurring schedule items
|
||||
$result['s'] = array();
|
||||
@ -191,14 +183,15 @@ class Model_Invoice extends ORM_OSB implements Cartable {
|
||||
*/
|
||||
public function items_summary() {
|
||||
$result = array();
|
||||
$lo = $this->account->language;
|
||||
|
||||
foreach ($this->subitems() as $iio) {
|
||||
// We only summarise item_type=0
|
||||
if (! $iio->item_type == 0)
|
||||
continue;
|
||||
|
||||
if ($iio->module() instanceof Model_Product) {
|
||||
$p = $iio->module()->title();
|
||||
if ($iio->product) {
|
||||
$p = $iio->product->name($lo);
|
||||
|
||||
if (! isset($result[$p])) {
|
||||
$result[$p]['quantity'] = 0;
|
||||
@ -258,6 +251,13 @@ class Model_Invoice extends ORM_OSB implements Cartable {
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the Invoice Reference Number
|
||||
*/
|
||||
public function refnum($short=FALSE) {
|
||||
return ($short ? '' : $this->account->refnum(FALSE).'-').sprintf('%06s',$this->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the reminder value
|
||||
*/
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Invoice_Item extends ORM_OSB {
|
||||
class Model_Invoice_Item extends ORM {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'invoice'=>array(),
|
||||
@ -66,51 +66,6 @@ class Model_Invoice_Item extends ORM_OSB {
|
||||
|
||||
/** REQUIRED ABSTRACT METHODS **/
|
||||
|
||||
public function name($variable=NULL) {
|
||||
if (! $this->isValid())
|
||||
return sprintf('Record Error [%s-%s]',$this->item_type,$this->id);
|
||||
|
||||
switch ($this->item_type) {
|
||||
case 0:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
return sprintf('%s: %s',$this->product->name($variable),$this->service->namesub($variable));
|
||||
case 124:
|
||||
return StaticList_ItemType::get($this->item_type);
|
||||
default:
|
||||
return sprintf('Unknown [%s-%s]',$this->item_type,$this->id);
|
||||
}
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
if (! $this->isValid())
|
||||
return sprintf('Record Error [%s-%s]',$this->item_type,$this->id);
|
||||
|
||||
switch ($this->item_type) {
|
||||
case 0:
|
||||
return sprintf('%s: %s',StaticList_ItemType::get($this->item_type),$this->period());
|
||||
case 2:
|
||||
return sprintf('%s: %s',StaticList_ItemType::get($this->item_type),$this->_module() ? $this->_module()->display('date_charge') : $this->period());
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
return sprintf('%s: %s',StaticList_ItemType::get($this->item_type),($this->_module()->attributes ? $this->_module()->namesub($variable) : $this->_module()->display('date_charge')));
|
||||
case 5:
|
||||
return $this->_module()->namesub($variable);
|
||||
default:
|
||||
return sprintf('Unknown [%s-%s]',$this->item_type,$this->id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the Invoice Item Reference Number
|
||||
*/
|
||||
public function refnum($short=FALSE) {
|
||||
return $short ? '' : sprintf('%03s-',$this->item_type).sprintf('%06s',$this->id);
|
||||
}
|
||||
|
||||
/** LOCAL METHODS **/
|
||||
|
||||
/**
|
||||
@ -185,6 +140,7 @@ class Model_Invoice_Item extends ORM_OSB {
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 7:
|
||||
if (! $this->service_id OR ! $this->product_id OR ! $this->module_id OR ! $this->module_ref OR $this->product_name OR ! is_null($this->recurring_schedule))
|
||||
return FALSE;
|
||||
break;
|
||||
@ -210,11 +166,57 @@ class Model_Invoice_Item extends ORM_OSB {
|
||||
return $this->_module();
|
||||
}
|
||||
|
||||
public function name($variable=NULL) {
|
||||
if (! $this->isValid())
|
||||
return sprintf('Record Error [%s-%s]',$this->item_type,$this->id);
|
||||
|
||||
switch ($this->item_type) {
|
||||
case 0:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
return sprintf('%s: %s',$this->product->name($variable),$this->service->namesub($variable));
|
||||
case 124:
|
||||
return StaticList_ItemType::get($this->item_type);
|
||||
default:
|
||||
return sprintf('Unknown [%s-%s]',$this->item_type,$this->id);
|
||||
}
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
if (! $this->isValid())
|
||||
return sprintf('Record Error [%s-%s]',$this->item_type,$this->id);
|
||||
|
||||
switch ($this->item_type) {
|
||||
case 0:
|
||||
return sprintf('%s: %s',StaticList_ItemType::get($this->item_type),$this->period());
|
||||
case 2:
|
||||
return sprintf('%s: %s',StaticList_ItemType::get($this->item_type),$this->_module() ? $this->_module()->display('date_charge') : $this->period());
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
return sprintf('%s: %s',StaticList_ItemType::get($this->item_type),($this->_module()->attributes ? $this->_module()->namesub($variable) : $this->_module()->display('date_charge')));
|
||||
case 5:
|
||||
case 7:
|
||||
return $this->_module()->namesub($variable);
|
||||
default:
|
||||
return sprintf('Unknown [%s-%s]',$this->item_type,$this->id);
|
||||
}
|
||||
}
|
||||
|
||||
// Display the period that a transaction applies
|
||||
public function period() {
|
||||
return ($this->date_start == $this->date_stop) ? Site::Date($this->date_start) : sprintf('%s -> %s',Site::Date($this->date_start),Site::Date($this->date_stop));
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the Invoice Item Reference Number
|
||||
*/
|
||||
public function refnum($short=FALSE) {
|
||||
return $short ? '' : sprintf('%03s-',$this->item_type).sprintf('%06s',$this->id);
|
||||
}
|
||||
|
||||
public function save(Validation $validation = NULL) {
|
||||
// Our items will be clobbered once we save the object, so we need to save it here.
|
||||
$subitems = $this->subitems();
|
||||
@ -276,20 +278,6 @@ class Model_Invoice_Item extends ORM_OSB {
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* The title for invoice items
|
||||
*/
|
||||
public function title() {
|
||||
if ($this->service_id AND $this->module_id AND method_exists($this->module(),'invoice_title'))
|
||||
return $this->service->name(); #$this->module_ref ? sprintf('%s: %s',$this->module()->invoice_title(),$this->service->name()) : $this->service->name();
|
||||
elseif ($x=$this->module() AND ($x instanceof Model_Charge) AND $x->product_id)
|
||||
return $x->product->title().' '.$this->service->name();
|
||||
elseif ($this->product_id)
|
||||
return sprintf('* %s: %s',$this->product->invoice_title(),$this->service->name());
|
||||
else
|
||||
return 'Unknown Item';
|
||||
}
|
||||
|
||||
public function total($format=FALSE) {
|
||||
$result = $this->void ? 0 : $this->subtotal()+$this->tax()-$this->discount();
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Invoice_Memo extends ORM_OSB {
|
||||
class Model_Invoice_Memo extends ORM {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'invoice'=>array(),
|
||||
|
@ -9,7 +9,11 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Account_Oauth extends ORM_OSB {
|
||||
class Model_Account_Oauth extends ORM {
|
||||
protected $_serialize_column = array(
|
||||
'oauth_data',
|
||||
);
|
||||
|
||||
protected $_compress_column = array(
|
||||
'oauth_data',
|
||||
);
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Oauth extends ORM_OSB {
|
||||
class Model_Oauth extends ORM {
|
||||
// Relationships
|
||||
protected $_has_many = array(
|
||||
'account_oauth' => array('far_key'=>'id'),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Payment extends ORM_OSB {
|
||||
class Model_Payment extends ORM {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'account'=>array(),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Payment_Item extends ORM_OSB {
|
||||
class Model_Payment_Item extends ORM {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'payment'=>array(),
|
||||
|
@ -246,7 +246,7 @@ $.ajax({
|
||||
throw HTTP_Exception::factory(403,'Product either doesnt exist, or you are not authorised to see it');
|
||||
|
||||
Block::factory()
|
||||
->title(sprintf('%s: %s',_('Current Services Using this Product'),$po->title()))
|
||||
->title(sprintf('%s: %s',_('Current Services Using this Product'),$po->name(Site::language())))
|
||||
->title_icon('icon-th-list')
|
||||
->body(View::factory('service/reseller/list')->set('o',$po->service->where_active()->find_all()));
|
||||
}
|
||||
|
@ -12,9 +12,7 @@
|
||||
* Column Definitions:
|
||||
* + price_type: 0=One Time, 1=Recurring, 2=Trial
|
||||
*/
|
||||
class Model_Product extends ORM_OSB implements Invoicable {
|
||||
private $_pto = NULL;
|
||||
|
||||
class Model_Product extends ORM {
|
||||
protected $_has_many = array(
|
||||
'invoice'=>array('through'=>'invoice_item'),
|
||||
'service'=>array('far_key'=>'id'),
|
||||
@ -50,6 +48,8 @@ class Model_Product extends ORM_OSB implements Invoicable {
|
||||
'price_group',
|
||||
);
|
||||
|
||||
private $_pto = NULL;
|
||||
|
||||
// Our attributes that are arrays, we'll convert/unconvert them
|
||||
protected $_serialize_column = array(
|
||||
'price_group',
|
||||
@ -59,46 +59,6 @@ class Model_Product extends ORM_OSB implements Invoicable {
|
||||
|
||||
/** REQUIRED ABSTRACT METHODS **/
|
||||
|
||||
public function name($variable=NULL) {
|
||||
if (! $variable instanceof Model_Language)
|
||||
throw HTTP_Exception::factory(500,'Call to :method incorrect',array(':method'=>__METHOD__));
|
||||
|
||||
$pto = $this->_pto($variable);
|
||||
|
||||
return (! $pto->loaded() OR ! $pto->name) ? sprintf('Unknown: [%s]',$this->id) : $pto->name;
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
if (! $variable instanceof Model_Language)
|
||||
throw HTTP::Exception(500,'Call to :method incorrect',array(':method'=>__METHOD__));
|
||||
|
||||
$pto = $this->_pto($variable);
|
||||
|
||||
return (! $pto->loaded() OR ! $pto->description_short) ? sprintf('Unknown: [%s]',$this->id) : $pto->description_short;
|
||||
}
|
||||
|
||||
public function refnum($short=FALSE) {
|
||||
return ($short ? '' : sprintf('%02s-',Site::id())).sprintf('%04s',$this->id);
|
||||
}
|
||||
|
||||
/** REQUIRED INTERFACE METHODS **/
|
||||
|
||||
public function invoice_item($item_type) {
|
||||
switch ($item_type) {
|
||||
case 0:
|
||||
case 7:
|
||||
return 'Service';
|
||||
case 6:
|
||||
return 'Service Cancellation';
|
||||
default:
|
||||
return 'Product Charge';
|
||||
}
|
||||
}
|
||||
|
||||
public function invoice_title() {
|
||||
return $this->title();
|
||||
}
|
||||
|
||||
/** LOCAL METHODS **/
|
||||
|
||||
// Our database index for pricing values
|
||||
@ -134,9 +94,9 @@ class Model_Product extends ORM_OSB implements Invoicable {
|
||||
* Return the translated description for a category.
|
||||
*/
|
||||
public function description($full=FALSE) {
|
||||
$x = $this->translate();
|
||||
$pto = $this->_pto(Site::language());
|
||||
|
||||
return $x->loaded() ? $x->display($full ? 'description_full' : 'description_short') : 'No Description';
|
||||
return $pto->loaded() ? $pto->display($full ? 'description_full' : 'description_short') : 'No Description';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -167,6 +127,24 @@ class Model_Product extends ORM_OSB implements Invoicable {
|
||||
return ($this->price_type == 2) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
public function name($variable=NULL) {
|
||||
if (! $variable instanceof Model_Language)
|
||||
throw HTTP_Exception::factory(500,'Call to :method incorrect',array(':method'=>__METHOD__));
|
||||
|
||||
$pto = $this->_pto($variable);
|
||||
|
||||
return (! $pto->loaded() OR ! $pto->name) ? sprintf('Unknown: [%s]',$this->id) : $pto->name;
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
if (! $variable instanceof Model_Language)
|
||||
throw HTTP::Exception(500,'Call to :method incorrect',array(':method'=>__METHOD__));
|
||||
|
||||
$pto = $this->_pto($variable);
|
||||
|
||||
return (! $pto->loaded() OR ! $pto->description_short) ? sprintf('Unknown: [%s]',$this->id) : $pto->description_short;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the object of the product plugin
|
||||
*/
|
||||
@ -235,6 +213,10 @@ class Model_Product extends ORM_OSB implements Invoicable {
|
||||
return $this->_price_options;
|
||||
}
|
||||
|
||||
public function refnum($short=FALSE) {
|
||||
return ($short ? '' : sprintf('%02s-',Site::id())).sprintf('%04s',$this->id);
|
||||
}
|
||||
|
||||
public function save(Validation $validation=NULL) {
|
||||
parent::save($validation);
|
||||
|
||||
@ -257,18 +239,5 @@ class Model_Product extends ORM_OSB implements Invoicable {
|
||||
public function supplier() {
|
||||
return $this->plugin() ? $this->plugin()->supplier() : 'other';
|
||||
}
|
||||
|
||||
private function translate() {
|
||||
return $this->translate->where('language_id','=',Company::instance()->language())->find();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the translated title for a category
|
||||
*/
|
||||
public function title() {
|
||||
$x = $this->translate();
|
||||
|
||||
return $x->loaded() ? $x->display('name') : 'No Title';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Product_Category extends ORM_OSB {
|
||||
class Model_Product_Category extends ORM {
|
||||
protected $_table_name = 'product_cat';
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
@ -28,21 +28,46 @@ class Model_Product_Category extends ORM_OSB {
|
||||
'position'=>'ASC',
|
||||
);
|
||||
|
||||
private $_pto = NULL;
|
||||
|
||||
protected $_save_message = TRUE;
|
||||
|
||||
/** REQUIRED ABSTRACT METHODS **/
|
||||
|
||||
/** LOCAL METHODS **/
|
||||
|
||||
/**
|
||||
* Return the translated langauge object
|
||||
*/
|
||||
private function _pto(Model_Language $lo) {
|
||||
if (! $this->_pto) {
|
||||
|
||||
// First try the called langauge.
|
||||
$pto = $this->translate->where('language_id','=',$lo->id)->find();
|
||||
|
||||
// Second try the called langauge.
|
||||
if (! $pto->loaded())
|
||||
$pto = $this->translate->where('language_id','=',Company::instance()->language()->id)->find();
|
||||
|
||||
$this->_pto = $pto;
|
||||
}
|
||||
|
||||
return $this->_pto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the translated description for a category.
|
||||
*/
|
||||
public function description() {
|
||||
$x = $this->translate();
|
||||
$pto = $this->_pto(Site::language());
|
||||
|
||||
return $x->loaded() ? $x->display('description') : 'No Description';
|
||||
return $pto->loaded() ? $pto->display('description') : 'No Description';
|
||||
}
|
||||
|
||||
public function name($variable=NULL) {
|
||||
$x = $this->translate();
|
||||
$pto = $this->_pto(Site::language());
|
||||
|
||||
return $x->loaded() ? $x->display('name') : 'No Name';
|
||||
return $pto->loaded() ? $pto->display('name') : 'No Name';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -100,19 +125,5 @@ class Model_Product_Category extends ORM_OSB {
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the translated title for a category
|
||||
*/
|
||||
public function title() {
|
||||
$x = $this->translate();
|
||||
|
||||
return $x->loaded() ? $x->display('name') : 'No Title';
|
||||
}
|
||||
|
||||
|
||||
private function translate() {
|
||||
return $this->translate->where('language_id','=',Company::instance()->language())->find();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Product_Category_Translate extends ORM_OSB {
|
||||
class Model_Product_Category_Translate extends ORM {
|
||||
protected $_table_name = 'product_cat_translate';
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
abstract class Model_Product_Plugin extends ORM_OSB {
|
||||
abstract class Model_Product_Plugin extends ORM {
|
||||
// Reset any sorting that may be defined in our parent
|
||||
protected $_sorting = array();
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Product_Translate extends ORM_OSB {
|
||||
class Model_Product_Translate extends ORM {
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
|
@ -122,8 +122,6 @@
|
||||
padding: 1em 0;
|
||||
margin: 0 2em;
|
||||
|
||||
text-align: center;
|
||||
|
||||
border-bottom: 1px dotted #CCC;
|
||||
}
|
||||
|
||||
@ -379,6 +377,7 @@
|
||||
font-weight: 500;
|
||||
font-size: 11px;
|
||||
margin: 0 0;
|
||||
width: 100%;
|
||||
}
|
||||
.plan.plain td:first-of-type {
|
||||
border-left: 1px solid #D8D7D7;
|
||||
@ -421,7 +420,6 @@
|
||||
border-top: 1px dotted #D8D7D7;
|
||||
}
|
||||
.plan.plain .plan-features th {
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
font-size: 110%;
|
||||
font-weight: normal;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div class="col-md-12">
|
||||
<fieldset>
|
||||
<legend><?php echo $o->title();?></legend>
|
||||
<legend><?php echo $o->name(Site::language());?></legend>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="status" class="col-sm-2 control-label">Product Active</label>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<div id="container">
|
||||
<div class="row divider service-container">
|
||||
<div class="grid-3">
|
||||
<h2><span class="slash">//</span> <?php echo $o->title(); ?></h2>
|
||||
<h2><span class="slash">//</span> <?php echo $o->name(Site::language()); ?></h2>
|
||||
</div>
|
||||
|
||||
<?php $c=0;foreach ($o->subcategories->find_all() as $pco) : ?>
|
||||
@ -14,7 +14,7 @@
|
||||
|
||||
<div class="grid-3">
|
||||
<div class="service-item">
|
||||
<h3><i class="icon-tint"></i><?php echo $pco->title(); ?></h3>
|
||||
<h3><i class="icon-tint"></i><?php echo $pco->name(Site::language()); ?></h3>
|
||||
|
||||
<?php $x=350;echo strlen($pco->description())<$x ? $pco->description() : substr($pco->description(),0,$x).'...'; ?>
|
||||
<p><a href="<?php echo URL::site('product/category/'.$pco->id); ?>" class="">More Details »</a></p>
|
||||
|
@ -4,7 +4,7 @@
|
||||
->page_items(25)
|
||||
->columns(array(
|
||||
'id'=>'ID',
|
||||
'title()'=>'Details',
|
||||
'name(Site::language())'=>'Name',
|
||||
'status'=>'Active',
|
||||
'prod_plugin_file'=>'Plugin Name',
|
||||
'prod_plugin_data'=>'Plugin Data',
|
||||
|
@ -1,11 +1,11 @@
|
||||
<div id="page-title">
|
||||
<h1><?php echo $o->title(); ?></h1>
|
||||
<h1><?php echo $o->name(Site::language()); ?></h1>
|
||||
|
||||
<?php echo $o->description(); ?>
|
||||
</div> <!-- /page-title -->
|
||||
|
||||
<div id="container">
|
||||
<div class="span9">
|
||||
<div class="col-md-9">
|
||||
<?php echo $o->description(TRUE); ?>
|
||||
</div> <!-- /row -->
|
||||
</div>
|
||||
</div> <!-- /container -->
|
||||
|
@ -23,89 +23,13 @@ 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');
|
||||
$this->meta->title = 'New Service';
|
||||
|
||||
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)
|
||||
return false;
|
||||
|
||||
// Send the request and update sub category dropdown
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
data: "key="+$(this).val(),
|
||||
dataType: "html",
|
||||
cache: false,
|
||||
url: "'.URL::link('admin','service/ajaxaddplugin/',TRUE).'",
|
||||
timeout: 2000,
|
||||
error: function(x) {
|
||||
alert("Failed to submit");
|
||||
},
|
||||
success: function(data) {
|
||||
$("div[id=plugin]").empty().append(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
');
|
||||
|
||||
// @todo Move this to automatically add this if a date format is used
|
||||
Block::factory()
|
||||
->type('form-horizontal')
|
||||
->title('Add/View Charge')
|
||||
->title_icon('fa fa-wrench')
|
||||
->body(View::factory('service/admin/add'));
|
||||
->title('Add New Service')
|
||||
->title_icon($this->icon)
|
||||
->body(View::factory('service/admin/add')->set('o',ORM::factory('Service')));
|
||||
}
|
||||
|
||||
public function action_ajaxaddplugin() {
|
||||
@ -129,26 +53,10 @@ $(document).ready(function() {
|
||||
if (! $so->loaded())
|
||||
HTTP::redirect('welcome/index');
|
||||
|
||||
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() {
|
||||
$("#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);
|
||||
});
|
||||
|
||||
$("#service_connect_date_label").datepicker({
|
||||
autoclose : true,
|
||||
format : "dd-M-yyyy",
|
||||
@ -314,12 +222,12 @@ $(document).ready(function() {
|
||||
HTTP::redirect(URL::link('admin','service/view/'.$so->id));
|
||||
|
||||
Block::add(array(
|
||||
'title'=>sprintf('Transaction History for %s: %s',$so->id(),$so->name()),
|
||||
'title'=>sprintf('Transaction History for %s: %s',$so->refnum(TRUE),$so->name()),
|
||||
'body'=>$loutput,
|
||||
));
|
||||
|
||||
Block::add(array(
|
||||
'title'=>sprintf('Transaction Debug for %s: %s',$so->id(),$so->name()),
|
||||
'title'=>sprintf('Transaction Debug for %s: %s',$so->refnum(TRUE),$so->name()),
|
||||
'body'=>$doutput,
|
||||
));
|
||||
|
||||
@ -327,7 +235,7 @@ $(document).ready(function() {
|
||||
->set('o',$so);
|
||||
|
||||
Block::add(array(
|
||||
'title'=>sprintf('%s: %s',$so->id(),$so->service_name()),
|
||||
'title'=>sprintf('%s: %s',$so->refnum(TRUE),$so->name()),
|
||||
'body'=>$output,
|
||||
));
|
||||
}
|
||||
|
@ -12,7 +12,7 @@
|
||||
* Fields:
|
||||
* + queue: PROVISION (to be provisioned)
|
||||
*/
|
||||
class Model_Service extends ORM_OSB {
|
||||
class Model_Service extends ORM {
|
||||
private $_plugin = NULL;
|
||||
|
||||
// Relationships
|
||||
@ -88,24 +88,6 @@ class Model_Service extends ORM_OSB {
|
||||
|
||||
/** REQUIRED ABSTRACT METHODS **/
|
||||
|
||||
/**
|
||||
* Display the service product name
|
||||
*/
|
||||
public function name($variable=NULL) {
|
||||
if (! $variable instanceOf Model_Language)
|
||||
$variable = Company::instance()->language();
|
||||
|
||||
return $this->product->name($variable).(($x=$this->namesub($variable)) ? ': '.$x : '');
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
return is_null($plugin=$this->_plugin()) ? '' : $plugin->name($variable);
|
||||
}
|
||||
|
||||
public function refnum($short=FALSE) {
|
||||
return ($short ? '' : sprintf('%02s-',Site::id())).sprintf('%05s',$this->id);
|
||||
}
|
||||
|
||||
/** LOCAL METHODS **/
|
||||
|
||||
private function _plugin() {
|
||||
@ -234,6 +216,20 @@ class Model_Service extends ORM_OSB {
|
||||
->order_by('date_stop','DESC');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the service product name
|
||||
*/
|
||||
public function name($variable=NULL) {
|
||||
if (! $variable instanceOf Model_Language)
|
||||
$variable = Company::instance()->language();
|
||||
|
||||
return $this->product->name($variable).(($x=$this->namesub($variable)) ? ': '.$x : '');
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
return is_null($plugin=$this->_plugin()) ? '' : $plugin->name($variable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the date that an item has been paid to
|
||||
*/
|
||||
@ -284,6 +280,10 @@ class Model_Service extends ORM_OSB {
|
||||
return (is_null($x = $this->plugin())) ? NULL : $x->render_edit();
|
||||
}
|
||||
|
||||
public function refnum($short=FALSE) {
|
||||
return ($short ? '' : sprintf('%02s-',Site::id())).sprintf('%05s',$this->id);
|
||||
}
|
||||
|
||||
public function revenue($annual=FALSE) {
|
||||
$multiple = $annual ? Period::multiple($this->recur_schedule) : 1;
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Service_Billing extends ORM_OSB {
|
||||
class Model_Service_Billing extends ORM {
|
||||
protected $_table_name = 'account_billing';
|
||||
|
||||
// Relationships
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Service_Change extends ORM_OSB {
|
||||
class Model_Service_Change extends ORM {
|
||||
protected $_table_name = 'service_change';
|
||||
|
||||
// Relationships
|
||||
@ -35,7 +35,7 @@ class Model_Service_Change extends ORM_OSB {
|
||||
$output = array();
|
||||
|
||||
foreach ($this->find_all() as $sco) {
|
||||
array_push($output,sprintf('%s %s',$sco->product->title(),$sco->display('date_effective')));
|
||||
array_push($output,sprintf('%s %s',$sco->product->name($sco->service->account->language),$sco->display('date_effective')));
|
||||
}
|
||||
|
||||
} else {
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Service_Memo extends ORM_OSB {
|
||||
class Model_Service_Memo extends ORM {
|
||||
// Relationships
|
||||
protected $_belongs_to = array(
|
||||
'service'=>array(),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
abstract class Model_Service_Plugin extends ORM_OSB {
|
||||
abstract class Model_Service_Plugin extends ORM {
|
||||
// Reset any sorting that may be defined in our parent
|
||||
protected $_sorting = array();
|
||||
|
||||
|
@ -1,30 +1,50 @@
|
||||
<div class="col-md-11">
|
||||
<div class="col-md-12">
|
||||
<fieldset>
|
||||
<legend>Service Information</legend>
|
||||
<?php
|
||||
echo View::factory('field/account')->set('data',['field'=>'account_id','value'=>$o->account_id,'text'=>'Account','name'=>'','ajaxurl'=>URL::link('admin','payment/ajaxlist')]);
|
||||
echo View::factory('field/select')->set('data',['field'=>'status','value'=>StaticList_YesNo::table(),'text'=>'Active','default'=>$o->status,'class'=>'col-md-1']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'recur_schedule','value'=>StaticList_RecurSchedule::table(),'text'=>'Billing Period','default'=>$o->recur_schedule,'class'=>'col-md-2']);
|
||||
echo View::factory('field/date')->set('data',['field'=>'data_next_invoice','value'=>$o->date_next_invoice ? $o->date_next_invoice : time(),'text'=>'Date Next Invoice','enddate'=>NULL]);
|
||||
echo View::factory('field/select')->set('data',['field'=>'taxable','value'=>StaticList_YesNo::table(),'text'=>'Taxable','default'=>is_null($o->taxable) ? TRUE : $o->taxable,'class'=>'col-md-1']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'suspend_billing','value'=>StaticList_YesNo::table(),'text'=>'Suspend Billing','default'=>$o->suspend_billing,'class'=>'col-md-1']);
|
||||
echo View::factory('field/money')->set('data',['field'=>'price','value'=>$o->price,'text'=>'Price']);
|
||||
echo View::factory('field/money')->set('data',['field'=>'price_override','value'=>$o->price_override,'text'=>'Override Price']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'product_id','value'=>ORM::factory('Product')->where_active()->list_select(TRUE),'text'=>'Product','default'=>NULL,'class'=>'col-md-5']);
|
||||
?>
|
||||
|
||||
<?php echo Form::input('account_id_label','',array('label'=>'Account','placeholder'=>'Account','autocomplete'=>'no','data-provide'=>'typeahead')); ?>
|
||||
<?php echo Form::hidden('account_id',''); ?>
|
||||
|
||||
<?php echo StaticList_YesNo::form('status',NULL,FALSE,array('label'=>'Active')); ?>
|
||||
<?php echo StaticList_RecurSchedule::form('recur_schedule',NULL,FALSE,array('label'=>'Billing Period','required'));?>
|
||||
|
||||
<label for="date_next_invoice_label">Date Next Invoice</label>
|
||||
<div class="input-group col-md-3">
|
||||
<input type="text" id="date_next_invoice_label" value="" xisabled="disabled" class="form-control" placeholder="Date Next Invoice">
|
||||
<span class="input-group-addon" id="basic-addon1"><i class="fa fa-calendar"></i></span>
|
||||
</div>
|
||||
<?php echo Form::hidden('date_next_invoice',time()); ?>
|
||||
|
||||
<?php echo StaticList_YesNo::form('taxable',NULL,FALSE,array('label'=>'Taxable')); ?>
|
||||
<?php echo StaticList_YesNo::form('suspend_billing',NULL,FALSE,array('label'=>'Suspend Billing')); ?>
|
||||
<?php echo Form::input('price_override',NULL,array('label'=>'Override Price')); ?>
|
||||
<?php echo Form::select('product_id',ORM::factory('Product')->list_select(TRUE),NULL,array('label'=>'Product','sort'=>TRUE)); ?>
|
||||
</fieldset>
|
||||
|
||||
<div id="plugin"></div>
|
||||
|
||||
<div class="row">
|
||||
<button type="submit" class="btn btn-primary">Save changes</button>
|
||||
<button type="button" class="btn">Cancel</button>
|
||||
<?php echo View::factory('field/submit'); ?>
|
||||
</div>
|
||||
</div> <!-- /col-md-11 -->
|
||||
|
||||
<?php
|
||||
Script::factory()
|
||||
->type('stdin')
|
||||
->data('
|
||||
$(document).ready(function() {
|
||||
$("select[name=product_id]").change(function() {
|
||||
// If we select a blank, then dont continue
|
||||
if (this.value == 0)
|
||||
return false;
|
||||
|
||||
// Send the request and update sub category dropdown
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
data: "key="+$(this).val(),
|
||||
dataType: "html",
|
||||
cache: false,
|
||||
url: "'.URL::link('admin','service/ajaxaddplugin/',TRUE).'",
|
||||
timeout: 2000,
|
||||
error: function(x) {
|
||||
alert("Failed to submit");
|
||||
},
|
||||
success: function(data) {
|
||||
$("div[id=plugin]").empty().append(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
});');
|
||||
?>
|
||||
|
@ -1,29 +1,17 @@
|
||||
<div class="col-md-11">
|
||||
<div class="col-md-12">
|
||||
<fieldset>
|
||||
<legend>Update Service</legend>
|
||||
|
||||
<?php echo StaticList_YesNo::form('status',$o->status,FALSE,array('label'=>'Active')); ?>
|
||||
|
||||
<?php echo StaticList_RecurSchedule::form('recur_schedule',$o->recur_schedule,FALSE,array('label'=>'Billing Period','required'));?>
|
||||
|
||||
<label for="date_next_invoice_label">Date Next Invoice</label>
|
||||
<div class="input-group col-md-3">
|
||||
<input type="text" id="date_next_invoice_label" value="<?php echo $o->display('date_next_invoice'); ?>" class="form-control" placeholder="Date Next Invoice">
|
||||
<span class="input-group-addon" id="basic-addon1"><i class="fa fa-calendar"></i></span>
|
||||
</div>
|
||||
<?php echo Form::hidden('date_next_invoice',$o->date_next_invoice); ?>
|
||||
|
||||
<?php echo StaticList_YesNo::form('taxable',$o->taxable,FALSE,array('label'=>'Taxable')); ?>
|
||||
|
||||
<?php echo StaticList_YesNo::form('suspend_billing',$o->suspend_billing,FALSE,array('label'=>'Suspend Billing')); ?>
|
||||
|
||||
<?php echo Form::input('price_override',$o->price_override,array('label'=>'Override Price')); ?>
|
||||
<?php
|
||||
echo View::factory('field/select')->set('data',['field'=>'status','value'=>StaticList_YesNo::table(),'text'=>'Active','default'=>$o->status,'class'=>'col-md-1']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'recur_schedule','value'=>StaticList_RecurSchedule::table(),'text'=>'Billing Period','default'=>$o->recur_schedule,'class'=>'col-md-2']);
|
||||
echo View::factory('field/date')->set('data',['field'=>'data_next_invoice','value'=>$o->date_next_invoice,'text'=>'Date Next Invoice','enddate'=>NULL]);
|
||||
echo View::factory('field/select')->set('data',['field'=>'taxable','value'=>StaticList_YesNo::table(),'text'=>'Taxable','default'=>$o->taxable,'class'=>'col-md-1']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'suspend_billing','value'=>StaticList_YesNo::table(),'text'=>'Suspend Billing','default'=>$o->suspend_billing,'class'=>'col-md-1']);
|
||||
echo View::factory('field/money')->set('data',['field'=>'price_override','value'=>$o->price_override,'text'=>'Override Price']);
|
||||
?>
|
||||
</fieldset>
|
||||
|
||||
<?php if ($plugin_form) { echo $plugin_form; } ?>
|
||||
|
||||
<div class="row">
|
||||
<button type="submit" class="btn btn-primary">Save changes</button>
|
||||
<button type="button" class="btn">Cancel</button>
|
||||
<?php echo View::factory('field/submit'); ?>
|
||||
</div>
|
||||
</div> <!-- /col-md-11 -->
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php if ($o->pending_change()) : ?>
|
||||
<div class="span5">
|
||||
<div class="col-md-5">
|
||||
Pending change to: <?php echo $o->service_change->list_details(); ?>
|
||||
</div> <!-- /span -->
|
||||
<?php endif ?>
|
||||
|
||||
<div class="span6">
|
||||
<div class="col-md-12">
|
||||
<fieldset>
|
||||
<legend>Service Transaction Details</legend>
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<?php if (! is_null($iio->product_id) AND $lp != $iio->product_id) : $lp = $iio->product_id; ?>
|
||||
<tr>
|
||||
<th><?php echo $iio->product_id; ?></th>
|
||||
<th colspan="9"><?php echo $iio->product->title(); ?></th>
|
||||
<th colspan="9"><?php echo $iio->product->name($o->account->language); ?></th>
|
||||
</tr>
|
||||
<?php endif ?>
|
||||
|
||||
|
@ -20,10 +20,9 @@
|
||||
<dt>Cost</dt>
|
||||
<dd><?php echo (! is_null($o->price_override) ? sprintf('<strike>%s</strike> ',$o->price(TRUE,TRUE,TRUE)) : ''). $o->price(TRUE,TRUE); if ($o->pending_change()) echo ' *'; ?></dd>
|
||||
|
||||
<!-- @todo -->
|
||||
<?php if (is_null($o->price) OR ($o->price<=$o->product->price($o->price_group,$o->recur_schedule,'base'))) : ?>
|
||||
<dt>Service</dt>
|
||||
<dd><?php echo HTML::anchor('product/view/'.$o->product_id,$o->product->title()); ?></dd>
|
||||
<dd><?php echo HTML::anchor('product/view/'.$o->product_id,$o->product->name($o->account->language)); ?></dd>
|
||||
<?php endif ?>
|
||||
|
||||
<dt>Invoiced To</dt>
|
||||
|
@ -122,12 +122,12 @@ class Controller_Reseller_Ssl extends Controller_Ssl {
|
||||
}
|
||||
|
||||
public function action_renew() {
|
||||
$so = ORM::factory('Service',Request::current()->param('id'));
|
||||
$so = ORM::factory('Service',$this->request->param('id'));
|
||||
|
||||
if (! $so->loaded() OR ! Auth::instance()->authorised($so->account))
|
||||
throw HTTP_Exception::factory(403,'Service either doesnt exist, or you are not authorised to see it');
|
||||
|
||||
$so->plugin()->renew();
|
||||
$so->plugin()->renew($this->request->query('force'));
|
||||
|
||||
HTTP::redirect(URL::link('user','service/view/'.$so->id));
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_SSL extends ORM_OSB {
|
||||
class Model_SSL extends ORM {
|
||||
protected $_updated_column = FALSE;
|
||||
}
|
||||
?>
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_SSL_CA extends ORM_OSB {
|
||||
class Model_SSL_CA extends ORM {
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
// Relationships
|
||||
|
@ -47,14 +47,6 @@ class Model_Service_Plugin_Ssl extends Model_Service_Plugin {
|
||||
return (! $this->_so) ? ($format ? 'Not Issued' : 0) : $this->_so->get_valid_to($format);
|
||||
}
|
||||
|
||||
public function name($variable=NULL) {
|
||||
return ($this->cert AND $this->ca->loaded()) ? sprintf('%s:%s',$this->ca->subject(),$this->display('cert')) : $this->display('csr');
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
return $this->ca->dn();
|
||||
}
|
||||
|
||||
public function password() {} // Not used
|
||||
|
||||
public function username() {} // Not used
|
||||
@ -156,6 +148,14 @@ class Model_Service_Plugin_Ssl extends Model_Service_Plugin {
|
||||
return 'Unknown';
|
||||
}
|
||||
|
||||
public function name($variable=NULL) {
|
||||
return ($this->cert AND $this->ca->loaded()) ? sprintf('%s:%s',$this->ca->subject(),$this->display('cert')) : $this->display('csr');
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
return $this->ca->dn();
|
||||
}
|
||||
|
||||
/**
|
||||
* Renew an SSL Certificate
|
||||
*/
|
||||
@ -180,7 +180,7 @@ class Model_Service_Plugin_Ssl extends Model_Service_Plugin {
|
||||
$res = openssl_csr_sign($this->csr,$this->ca->sign_cert,$this->ca->sign_pk,$days,array(
|
||||
'config'=>$ssl_conf['config'],
|
||||
'x509_extensions'=>$this->service->product->plugin()->extensions,
|
||||
'digest_alg'=>'sha1',
|
||||
'digest_alg'=>$ssl_conf['digest'],
|
||||
),time());
|
||||
|
||||
if ($res AND openssl_x509_export($res,$cert)) {
|
||||
|
@ -18,5 +18,8 @@ return array(
|
||||
|
||||
// Location to openssl config
|
||||
'config' => 'application/config/openssl.cnf',
|
||||
|
||||
// Algorithm to use for signing certs
|
||||
'digest' => 'sha256',
|
||||
);
|
||||
?>
|
||||
|
@ -1,7 +1,9 @@
|
||||
<fieldset>
|
||||
<legend>SSL Certificate Service Details</legend>
|
||||
|
||||
<?php echo Form::textarea('plugin[csr]',$o->service->plugin()->csr,array('label'=>'CSR','placeholder'=>'CSR','style'=>'font-family: monospace;','rows'=>Form::textarea_rows($o->service->plugin()->csr),'cols'=>Form::textarea_width($o->service->plugin()->csr))); ?>
|
||||
<?php echo Form::textarea('plugin[pk]',$o->service->plugin()->pk,array('label'=>'Private Key','placeholder'=>'Private Key','style'=>'font-family: monospace;','rows'=>Form::textarea_rows($o->service->plugin()->pk),'cols'=>Form::textarea_width($o->service->plugin()->pk))); ?>
|
||||
<?php echo Form::textarea('plugin[cert]',$o->service->plugin()->cert,array('label'=>'Public Certificate','placeholder'=>'Public Certificate','style'=>'font-family: monospace;','rows'=>Form::textarea_rows($o->service->plugin()->cert),'cols'=>Form::textarea_width($o->service->plugin()->cert))); ?>
|
||||
<?php
|
||||
echo View::factory('field/textarea')->set('data',['field'=>'plugin[csr]','value'=>$o->service->plugin()->csr,'text'=>'CSR']);
|
||||
echo View::factory('field/textarea')->set('data',['field'=>'plugin[pk]','value'=>$o->service->plugin()->pk,'text'=>'Private Key']);
|
||||
echo View::factory('field/textarea')->set('data',['field'=>'plugin[cert]','value'=>$o->service->plugin()->cert,'text'=>'Public Certificate']);
|
||||
?>
|
||||
</fieldset>
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Task extends ORM_OSB {
|
||||
class Model_Task extends ORM {
|
||||
protected $_display_filters = array(
|
||||
'date_run'=>array(
|
||||
array('Site::Datetime',array(':value')),
|
||||
|
@ -9,7 +9,7 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Task_Log extends ORM_OSB {
|
||||
class Model_Task_Log extends ORM {
|
||||
protected $_sorting = array(
|
||||
'id'=>'DESC',
|
||||
);
|
||||
|
@ -9,6 +9,6 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Invoice_Item_Tax extends ORM_OSB {
|
||||
class Model_Invoice_Item_Tax extends ORM {
|
||||
}
|
||||
?>
|
||||
|
@ -9,6 +9,6 @@
|
||||
* @copyright (c) 2009-2013 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_Tax extends ORM_OSB {
|
||||
class Model_Tax extends ORM {
|
||||
}
|
||||
?>
|
||||
|
Reference in New Issue
Block a user