FALSE, ); protected function _execute(array $params) { $date = strtotime('first day of last month'); $c = array(); // @todo Pick up services that are no longer active, but were inactive < 30 days ago. foreach (ORM::factory('Service')->list_byplugin('ADSL') as $so) { if (Minion_CLI::options('verbose')) echo $so->name()."\n"; if ($x=$so->plugin()->traffic_excess($date)) { $po = $so->plugin()->plan(); $cost = $po->cost_extra(); $allowance = $po->allowance(array(),FALSE,TRUE,TRUE); $used = $so->plugin()->traffic_month($date,FALSE,TRUE); foreach ($x as $k=>$v) { $co = ORM::factory('Charge'); // @todo This needs to be calculated. $co->type = 5; $co->sweep_type = 6; $co->account_id = $so->account_id; $co->active = TRUE; $co->service_id = $so->id; $co->amount = $cost[$k]; $co->taxable = $so->product->taxable; $co->quantity = $v; $co->date_charge = time(); $co->description = sprintf('Excess Traffic %s',date('Y-m',$date)); $co->attributes = array( 'Allowance'=>$allowance[$k], 'Used'=>$used[$k], 'Metric'=>$so->plugin()->traffic->friendly($k), 'Month'=>date('Y-m',$date), ); $co->save(); } array_push($c,$so->id); } } return sprintf('%s excess charges created (%s)',count($c),join('|',$c)); } } ?>