fix title on selfservice CDRs
[freeside.git] / FS / FS / svc_hardware.pm
index 22e6275..96502e4 100644 (file)
@@ -2,9 +2,13 @@ package FS::svc_hardware;
 
 use strict;
 use base qw( FS::svc_Common );
+use vars qw( $conf );
 use FS::Record qw( qsearch qsearchs );
 use FS::hardware_type;
 use FS::hardware_status;
+use FS::Conf;
+
+FS::UID->install_callback(sub { $conf = FS::Conf->new; });
 
 =head1 NAME
 
@@ -125,7 +129,7 @@ sub search_sql {
 
 sub label {
   my $self = shift;
-  $self->serial || $self->hw_addr;
+  $self->serial || $self->display_hw_addr;
 }
 
 =item insert
@@ -160,7 +164,7 @@ sub check {
   return $x unless ref $x;
 
   my $hw_addr = $self->getfield('hw_addr');
-  $hw_addr = join('', split(/\W/, $hw_addr));
+  $hw_addr = join('', split(/[_\W]/, $hw_addr));
   if ( $conf->exists('svc_hardware-check_mac_addr') ) {
     $hw_addr = uc($hw_addr);
     $hw_addr =~ /^[0-9A-F]{12}$/ 
@@ -213,6 +217,18 @@ sub status_label {
   $status->label;
 }
 
+=item display_hw_addr
+
+Returns the 'hw_addr' field, formatted as a MAC address if the
+'svc_hardware-check_mac_addr' option is enabled.
+
+=cut
+
+sub display_hw_addr {
+  my $self = shift;
+  ($conf->exists('svc_hardware-check_mac_addr') ? 
+    join(':', $self->hw_addr =~ /../g) : $self->hw_addr)
+}
 
 =back