From 3cbf48721b693db53a7d940bb515d1a76faee7df Mon Sep 17 00:00:00 2001 From: Deon George Date: Tue, 7 Jan 2014 23:29:18 +1100 Subject: [PATCH] Fix export accounting, added Domain List --- .../Controller/Admin/Service/Domain.php | 42 +++++++++++++++++++ modules/domain/classes/Controller/Domain.php | 14 +++++++ .../export/classes/Export/Plugin/Quicken.php | 21 ++++++---- modules/invoice/classes/Model/Invoice.php | 2 +- .../invoice/classes/Model/Invoice/Item.php | 4 +- .../classes/Controller/Admin/Service.php | 34 --------------- modules/service/classes/Model/Service.php | 3 ++ 7 files changed, 76 insertions(+), 44 deletions(-) create mode 100644 modules/domain/classes/Controller/Admin/Service/Domain.php create mode 100644 modules/domain/classes/Controller/Domain.php diff --git a/modules/domain/classes/Controller/Admin/Service/Domain.php b/modules/domain/classes/Controller/Admin/Service/Domain.php new file mode 100644 index 00000000..fed2bf27 --- /dev/null +++ b/modules/domain/classes/Controller/Admin/Service/Domain.php @@ -0,0 +1,42 @@ +TRUE, + ); + + public function action_list() { + Block::factory() + ->title('Domains By Supplier') + ->title_icon('icon-th-list') + ->body(Table::factory() + ->data(ORM::factory('Service')->where_authorised($this->ao)->list_byplugin('DOMAIN')) + ->jssort('domain') + ->columns(array( + 'id'=>'ID', + 'name()'=>'Domain', + 'status'=>'Active', + 'suspend_billing'=>'Not Bill', + 'plugin()->display("domain_expire")'=>'Expire', + 'recur_schedule'=>'Billing', + 'price(TRUE,TRUE)'=>'Charge', + 'account->accnum()'=>'Cust ID', + 'account->name()'=>'Customer', + 'plugin()->registrar->name'=>'Registrar', + )) + ->prepend(array( + 'id'=>array('url'=>URL::link('user','service/view/')), + )) + ); + } +} +?> diff --git a/modules/domain/classes/Controller/Domain.php b/modules/domain/classes/Controller/Domain.php new file mode 100644 index 00000000..18b21972 --- /dev/null +++ b/modules/domain/classes/Controller/Domain.php @@ -0,0 +1,14 @@ + diff --git a/modules/export/classes/Export/Plugin/Quicken.php b/modules/export/classes/Export/Plugin/Quicken.php index 6f74b6c5..9cdb1e94 100644 --- a/modules/export/classes/Export/Plugin/Quicken.php +++ b/modules/export/classes/Export/Plugin/Quicken.php @@ -89,10 +89,10 @@ class Export_Plugin_Quicken extends Export_Plugin { continue; // Get the mapping item for account purposes - if ($iio->product_id) { + if ($iio->module() instanceof Model_Product) { $edo = ORM::factory('Export_DataMap') - ->where('module_id','=',$iio->product->mid()) - ->and_where('item_id','=',$iio->product_id) + ->where('module_id','=',$iio->module_id) + ->and_where('item_id','=',$iio->module_ref) ->find(); if ($edo->loaded()) { @@ -103,7 +103,7 @@ class Export_Plugin_Quicken extends Export_Plugin { throw HTTP_Exception::factory(501,'Missing product map data for :product (:id)',array(':product'=>$iio->product->title(),':id'=>$iio->product_id)); } - $items[$c]['MEMO'] = sprintf('%s (%s)',$iio->product->title(),$iio->period()); + $items[$c]['MEMO'] = sprintf('%s (%s)',$iio->module()->title(),$iio->period()); // Non product item } else { @@ -133,9 +133,16 @@ class Export_Plugin_Quicken extends Export_Plugin { $items[$c]['TAXAMOUNT'] = 0; } - // @todo This rounding should be a system config. - $items[$c]['PRICE'] = sprintf('%3.2f',round($iio->subtotal()-$iio->discount(),2)); - $items[$c]['AMOUNT'] = sprintf('%3.2f',round($iio->subtotal()-$iio->discount(),2)*-1); + if ($iio->module() instanceof Model_Charge) { + $items[$c]['QNTY'] *= $iio->module()->quantity; + $items[$c]['PRICE'] = sprintf('%3.2f',round($iio->subtotal()-$iio->discount(),2)); + $items[$c]['AMOUNT'] = sprintf('%3.2f',round($iio->module()->amount-$iio->discount(),2)*-1); + + } else { + // @todo This rounding should be a system config. + $items[$c]['PRICE'] = sprintf('%3.2f',round($iio->subtotal()-$iio->discount(),2)); + $items[$c]['AMOUNT'] = sprintf('%3.2f',round($iio->subtotal()-$iio->discount(),2)*-1); + } $c++; } diff --git a/modules/invoice/classes/Model/Invoice.php b/modules/invoice/classes/Model/Invoice.php index d29bd7e1..362961eb 100644 --- a/modules/invoice/classes/Model/Invoice.php +++ b/modules/invoice/classes/Model/Invoice.php @@ -191,7 +191,7 @@ class Model_Invoice extends ORM_OSB implements Cartable { $processed = array(); foreach ($this->subitems() as $iio) { - if (in_array($iio->id,$processed)) + if ($iio->id AND in_array($iio->id,$processed)) continue; if ($iio->recurring_schedule) { diff --git a/modules/invoice/classes/Model/Invoice/Item.php b/modules/invoice/classes/Model/Invoice/Item.php index 674a6503..fd0e2959 100644 --- a/modules/invoice/classes/Model/Invoice/Item.php +++ b/modules/invoice/classes/Model/Invoice/Item.php @@ -189,8 +189,8 @@ class Model_Invoice_Item extends ORM_OSB { $result = array(); foreach ($this->subitems() as $iito) { - if (! isset($result[$iit->tax_id])) - $result[$iit->tax_id] = 0; + if (! isset($result[$iito->tax_id])) + $result[$iito->tax_id] = 0; $result[$iito->tax_id] += $iito->amount; } diff --git a/modules/service/classes/Controller/Admin/Service.php b/modules/service/classes/Controller/Admin/Service.php index 237594a4..0a656784 100644 --- a/modules/service/classes/Controller/Admin/Service.php +++ b/modules/service/classes/Controller/Admin/Service.php @@ -14,7 +14,6 @@ class Controller_Admin_Service extends Controller_Service { 'add'=>TRUE, 'ajaxaddplugin'=>TRUE, 'edit'=>TRUE, - 'listdomainservicesbysupplier'=>TRUE, 'listdomainservicesbydnshost'=>TRUE, 'listhostservicesbysupplier'=>TRUE, 'view'=>TRUE, @@ -161,39 +160,6 @@ $(document).ready(function() { } - public function action_listdomainservicesbysupplier() { - $svs = ORM::factory('Service')->list_bylistgroup('DOMAIN'); - Sort::MAsort($svs,'plugin()->domain_registrar_id,name()'); - - $list = array(); - - foreach ($svs as $so) - $list[$so->plugin()->domain_registrar_id][] = $so; - - foreach (array_keys($list) as $sid) - Block::add(array( - 'title'=>sprintf(_('Domain Names by Supplier %s'),$sid), - 'body'=>Table::display( - $list[$sid], - 25, - array( - 'id'=>array('label'=>'ID','url'=>URL::link('user','service/view/')), - 'service_name()'=>array('label'=>'Details'), - 'plugin()->display("domain_expire")'=>array('label'=>'Expire'), - 'recur_schedule'=>array('label'=>'Billing'), - 'price(TRUE,TRUE)'=>array('label'=>'Price','class'=>'right'), - 'account->accnum()'=>array('label'=>'Cust ID'), - 'account->name()'=>array('label'=>'Customer'), - 'display("date_next_invoice")'=>array('label'=>'Next Invoice'), - ), - array( - 'page'=>TRUE, - 'type'=>'select', - 'form'=>URL::link('user','service/view'), - )), - )); - } - public function action_listdomainservicesbydnshost() { $svs = ORM::factory('Service')->list_bylistgroup('DOMAIN'); Sort::MAsort($svs,'plugin()->host,name()'); diff --git a/modules/service/classes/Model/Service.php b/modules/service/classes/Model/Service.php index c9e77991..ae928aac 100644 --- a/modules/service/classes/Model/Service.php +++ b/modules/service/classes/Model/Service.php @@ -58,6 +58,9 @@ class Model_Service extends ORM_OSB { 'recur_schedule'=>array( array('StaticList_RecurSchedule::get',array(':value')), ), + 'suspend_billing'=>array( + array('StaticList_YesNo::get',array(':value',TRUE)), + ), 'status'=>array( array('StaticList_YesNo::get',array(':value',TRUE)), ),