diff --git a/application/classes/lnapp/controller/templatedefault.php b/application/classes/lnapp/controller/templatedefault.php
index dbd8aa5c..1c6f419d 100644
--- a/application/classes/lnapp/controller/templatedefault.php
+++ b/application/classes/lnapp/controller/templatedefault.php
@@ -155,7 +155,10 @@ abstract class lnApp_Controller_TemplateDefault extends Controller_Template {
if ($this->auto_render) {
// Application Title
- $this->meta->title = Kohana::Config('config.appname');
+ if ($mo=ORM::factory('module',array('name'=>Request::current()->controller())) AND $mo->loaded())
+ $this->meta->title = sprintf('%s: %s',Kohana::Config('config.appname'),$mo->display('name'));
+ else
+ $this->meta->title = Kohana::Config('config.appname');
$this->template->title = '';
// Language
diff --git a/application/media/js/jquery.jstree.themes/classic/style.css b/application/media/js/jquery.jstree.themes/classic/style.css
index 8b25f871..b1b7f88d 100644
--- a/application/media/js/jquery.jstree.themes/classic/style.css
+++ b/application/media/js/jquery.jstree.themes/classic/style.css
@@ -18,7 +18,7 @@
.jstree-classic .jstree-open > a .jstree-icon { background-position:-56px -36px; }
.jstree-classic a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; }
-.jstree-classic.jstree-focused { background:#FCFCFE; }
+/* .jstree-classic.jstree-focused { background:#FCFCFE; } */
.jstree-classic .jstree-no-dots li,
.jstree-classic .jstree-no-dots .jstree-leaf > ins { background:transparent; }
diff --git a/application/media/theme/yaml/css/screen/contentmod.css b/application/media/theme/yaml/css/screen/contentmod.css
index aaade003..a8b383b3 100644
--- a/application/media/theme/yaml/css/screen/contentmod.css
+++ b/application/media/theme/yaml/css/screen/contentmod.css
@@ -134,4 +134,12 @@ input#mailformformtype_mail{margin-left:11.1em}
#category ul li p {padding:0;margin:0;}
#category ul li a {color:#111;text-decoration:none}
#category ul li a:focus, #category ul li a:hover, #category ul li a:active {color:#811;text-decoration:none;}
+.list-box-left { border: 1px solid #AAAACC; margin-right: auto; }
+.list-box-left tr.list-head { background-color: #E1E1E3; }
+.list-box-left tr.list-sub-head { background-color: #EDEDEF; }
+.list-box-left tr th { font-style: bold; }
+.list-box-left tr .id { width: 25px; text-align: right; }
+.list-box-left tr.list-data:nth-child(even) { background-color: #FCFCFE; }
+.list-box-left tr.list-data:nth-child(odd) { background-color: #F6F6F8; }
+.list-box-left tr.list-data .right { text-align: right; }
}
diff --git a/modules/host/classes/model/product/plugin/host.php b/modules/host/classes/model/product/plugin/host.php
index 32c5bf85..4ccfbf5b 100644
--- a/modules/host/classes/model/product/plugin/host.php
+++ b/modules/host/classes/model/product/plugin/host.php
@@ -16,6 +16,7 @@ class Model_Product_Plugin_Host extends Model_Product_Plugin {
}
// Our required abstract methods
+ public function admin_update() {}
public function feature_summary() {}
// @todo This is not used, but should be.
diff --git a/modules/service/classes/controller/admin/service.php b/modules/service/classes/controller/admin/service.php
index a2a7a818..1578ece0 100644
--- a/modules/service/classes/controller/admin/service.php
+++ b/modules/service/classes/controller/admin/service.php
@@ -605,16 +605,74 @@ class Controller_Admin_Service extends Controller_TemplateDefault_Admin {
return FALSE;
}
- $loutput = '';
+ $doutput = $loutput = '';
$loutput .= View::factory($this->viewpath())
->set('so',$so);
+ // Validate the transactions
+ $bt = NULL;
+ $save = (isset($_REQUEST['go']) && $_REQUEST['go']=1) ? 1 : 0;
+ $xsid=197;
+ foreach ($so->transactions()->where('item_type','=',0)->find_all() as $iio) {
+ if ($iio->service_id == $xsid AND $iio->invoice_id < 3070) continue;
+ if ($iio->quantity < 0 OR $iio->price_base < 0)
+ continue;
+ if (in_array($iio->id,array(960)))
+ continue;
+
+ if ($iio->invoice_id > 4000 OR $iio->product->prod_plugin_file=="ADSL")
+ $a = FALSE;
+ else
+ $a = TRUE;
+
+ if (is_null($bt))
+ $bt = $iio->date_start;
+
+// $doutput .= sprintf('%s: BT is: %s [%s]
',$iio->id,Config::date($bt),$bt);
+
+ $pdata = Period::details($iio->recurring_schedule,$a ? NULL : $iio->product->price_recurr_weekday,$bt,TRUE);
+
+ switch ($iio->recurring_schedule) {
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ if ($iio->date_start != $pdata['start_time']) {
+ $doutput .= sprintf('%s: Set start_time: %s [%s]
',$iio->id,Config::date($pdata['start_time']),$pdata['start_time']);
+ $iio->date_start=$pdata['start_time'];
+ }
+
+ if ($iio->date_stop != $pdata['end_time']) {
+ $doutput .= sprintf('%s: Set end_time: %s [%s]
',$iio->id,Config::date($pdata['end_time']),$pdata['end_time']);
+ $iio->date_stop=$pdata['end_time'];
+ }
+ $bt = $pdata['end_time']+86400;
+
+ //$doutput .= sprintf('%s: BT now: %s (%s) [%s]
',$iio->id,Config::date($bt),Config::date($pdata['end_time']),$bt);
+ break;
+
+ default:
+ $doutput .= sprintf('%s: %s Not handled',$iio->id,$iio->recurring_schedule);
+ }
+ //$doutput .= '
';
+ if ($save) {
+ $iio->save();
+ }
+ }
+
+ if (isset($_REQUEST['go']))
+ $this->request->redirect('admin/service/view/'.$so->id);
Block::add(array(
'title'=>sprintf('Transaction History for %s: %s',$so->id(),$so->name()),
'body'=>$loutput,
));
+ Block::add(array(
+ 'title'=>sprintf('Transaction Debug for %s: %s',$so->id(),$so->name()),
+ 'body'=>$doutput,
+ ));
+
$output .= View::factory('service/user/view')
->set('so',$so);
diff --git a/modules/service/classes/model/service.php b/modules/service/classes/model/service.php
index 7c81f0de..b78ab4f3 100644
--- a/modules/service/classes/model/service.php
+++ b/modules/service/classes/model/service.php
@@ -131,7 +131,7 @@ class Model_Service extends ORMOSB {
}
public function transactions() {
- return $this->invoice_item->order_by('date_start,date_stop')->find_all();
+ return $this->invoice_item->order_by('date_start,date_stop');
}
// @todo To implement
diff --git a/modules/service/views/service/admin/view.php b/modules/service/views/service/admin/view.php
index 2c540a05..551314f3 100644
--- a/modules/service/views/service/admin/view.php
+++ b/modules/service/views/service/admin/view.php
@@ -1,41 +1,36 @@
-
-
- Transactions for this service |
+
+
+ ID |
+ Invoice |
+ Product |
+ IT |
+ RS |
+ Start |
+ Stop |
+ Desc |
+ Quantity |
+ Charge |
-
- |
-
-
- ID |
- Invoice |
- Product |
- IT |
- RS |
- Start |
- Stop |
- Desc |
- Charge |
- Quantity |
-
- transactions() as $iio) { ?>
+ transactions()->find_all() as $iio) { ?>
product_id) AND $lp != $iio->product_id) {
$lp = $iio->product_id; ?>
-
- product_id,$iio->product->name()); ?> |
+
+ product_id; ?> |
+ product->name(); ?> |
-
- id; ?> |
- invoice_id,$iio->invoice_id); ?> |
- display('product_id'); ?> |
- display('item_type'); ?> |
- display('recurring_schedule'); ?> |
- display('date_start'); ?> |
- display('date_stop'); ?> |
- display('product_name'); ?> |
- display('price_base'); ?> |
- display('quantity'); ?> |
+
+ id; ?> |
+ invoice_id,$iio->invoice_id); ?> |
+ display('product_id'); ?> |
+ display('item_type'); ?> |
+ display('recurring_schedule'); ?> |
+ display('date_start'); ?> |
+ display('date_stop'); ?> |
+ display('product_name'); ?> |
+ display('quantity'); ?> |
+ display('price_base'); ?> |
diff --git a/modules/ssl/classes/model/product/plugin/ssl.php b/modules/ssl/classes/model/product/plugin/ssl.php
index ac067e8c..c0581066 100644
--- a/modules/ssl/classes/model/product/plugin/ssl.php
+++ b/modules/ssl/classes/model/product/plugin/ssl.php
@@ -14,6 +14,8 @@ class Model_Product_Plugin_SSL extends Model_Product_Plugin {
protected $_table_name = 'ssl';
// Our required abstract methods
+ public function admin_update() {}
+
public function feature_summary() {
// @todo This view should render based on the the results of this::allowance();
return View::factory('product/plugin/ssl/feature_summary')