113 lines
3.1 KiB
PHP
113 lines
3.1 KiB
PHP
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||
|
|
||
|
/**
|
||
|
* This class provides Reseller Service functions
|
||
|
*
|
||
|
* @package Service
|
||
|
* @category Controllers/Reseller
|
||
|
* @author Deon George
|
||
|
* @copyright (c) 2009-2013 Open Source Billing
|
||
|
* @license http://dev.osbill.net/license.html
|
||
|
*/
|
||
|
class Controller_Reseller_Service extends Controller_Service {
|
||
|
protected $secure_actions = array(
|
||
|
'list'=>TRUE,
|
||
|
'listbycheckout'=>TRUE,
|
||
|
'listhostservices'=>TRUE,
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Show a list of services
|
||
|
*/
|
||
|
public function action_list() {
|
||
|
Block::factory()
|
||
|
->title('Customer Services')
|
||
|
->title_icon('icon-th-list')
|
||
|
->body(Table::factory()
|
||
|
->jssort('services')
|
||
|
->data($this->filter(ORM::factory('Service')->find_all(),$this->ao->RTM->customers($this->ao->RTM),'account_id'))
|
||
|
->columns(array(
|
||
|
'id'=>'ID',
|
||
|
'service_name()'=>'Service',
|
||
|
'recur_schedule'=>'Billing',
|
||
|
'price(TRUE,TRUE)'=>'Price',
|
||
|
'status(TRUE)'=>'Active',
|
||
|
'account->accnum()'=>'Cust ID',
|
||
|
'account->name()'=>'Customer',
|
||
|
))
|
||
|
->prepend(array(
|
||
|
'id'=>array('url'=>URL::link('user','service/view/')),
|
||
|
))
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* List all services by their default checkout method
|
||
|
*/
|
||
|
public function action_listbycheckout() {
|
||
|
$svs = array();
|
||
|
// @todo This needs to be configurable
|
||
|
$go = ORM::factory('Group',array('name'=>'Personal'));
|
||
|
|
||
|
foreach (ORM::factory('Account')->list_active() as $ao)
|
||
|
if ($ao->has_any('group',array($go)))
|
||
|
foreach ($this->filter($ao->service->list_active(),$this->ao->RTM->customers($this->ao->RTM),'account_id') as $so)
|
||
|
if (! $so->service_billing->checkout_plugin_id)
|
||
|
array_push($svs,$so);
|
||
|
|
||
|
if ($svs)
|
||
|
Block::factory()
|
||
|
->title('Services that should be auto-billed')
|
||
|
->title_icon('icon-pencil')
|
||
|
->body(Table::factory()
|
||
|
->jssort('services')
|
||
|
->data($svs)
|
||
|
->columns(array(
|
||
|
'id'=>'ID',
|
||
|
'service_name()'=>'Service',
|
||
|
'recur_schedule'=>'Billing',
|
||
|
'price(TRUE,TRUE)'=>'Price',
|
||
|
'account->accnum()'=>'Cust ID',
|
||
|
'account->name()'=>'Customer',
|
||
|
'date_next_invoice'=>'Next Invoice',
|
||
|
'due(TRUE)'=>'Due Invoices',
|
||
|
))
|
||
|
->prepend(array(
|
||
|
'id'=>array('url'=>URL::link('user','service/view/')),
|
||
|
))
|
||
|
);
|
||
|
|
||
|
foreach (ORM::factory('Checkout')->find_all() as $co) {
|
||
|
$svs = array();
|
||
|
|
||
|
foreach ($co->account->find_all() as $ao)
|
||
|
foreach ($this->filter($ao->service->list_active(),$this->ao->RTM->customers($this->ao->RTM),'account_id') as $so)
|
||
|
if ($so->service_billing->checkout_plugin_id == $co->id)
|
||
|
array_push($svs,$so);
|
||
|
|
||
|
if ($svs)
|
||
|
Block::factory()
|
||
|
->title($co->name)
|
||
|
->title_icon('icon-repeat')
|
||
|
->body(Table::factory()
|
||
|
->jssort($co->id)
|
||
|
->data($svs)
|
||
|
->columns(array(
|
||
|
'id'=>'ID',
|
||
|
'service_name()'=>'Service',
|
||
|
'recur_schedule'=>'Billing',
|
||
|
'price(TRUE,TRUE)'=>'Price',
|
||
|
'account->accnum()'=>'Cust ID',
|
||
|
'account->name()'=>'Customer',
|
||
|
'date_next_invoice'=>'Next Invoice',
|
||
|
'due(TRUE)'=>'Due Invoices',
|
||
|
))
|
||
|
->prepend(array(
|
||
|
'id'=>array('url'=>URL::link('user','service/view/')),
|
||
|
))
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
?>
|