add a name field to svc_phone
[freeside.git] / FS / FS / svc_phone.pm
index 7622e98..b91ba65 100644 (file)
@@ -1,12 +1,15 @@
 package FS::svc_phone;
 
 use strict;
-use vars qw( @ISA );
+use vars qw( @ISA @pw_set );
 #use FS::Record qw( qsearch qsearchs );
 use FS::svc_Common;
 
 @ISA = qw( FS::svc_Common );
 
+#avoid l 1 and o O 0
+@pw_set = ( 'a'..'k', 'm','n', 'p-z', 'A'..'N', 'P'..'Z' , '2'..'9' );
+
 =head1 NAME
 
 FS::svc_phone - Object methods for svc_phone records
@@ -39,13 +42,21 @@ from FS::Record.  The following fields are currently supported:
 
 =over 4
 
-=item svcnum - primary key
+=item svcnum
+
+primary key
+
+=item countrycode
+
+=item phonenum
 
-=item countrycode - 
+=item sip_password
 
-=item phonenum - 
+=item pin
 
-=item pin - 
+Voicemail PIN
+
+=item phone_name
 
 =back
 
@@ -71,17 +82,19 @@ sub table_info {
     'display_weight' => 60,
     'cancel_weight'  => 80,
     'fields' => {
-        'countrycode' => { label => 'Country code',
-                           type  => 'text',
-                           disable_inventory => 1,
-                           disable_select => 1,
-                         },
-        'phonenum'    => 'Phone number',
-        'pin'         => { label => 'Personal Identification Number',
-                           type  => 'text',
-                           disable_inventory => 1,
-                           disable_select => 1,
-                         },
+        'countrycode'  => { label => 'Country code',
+                            type  => 'text',
+                            disable_inventory => 1,
+                            disable_select => 1,
+                          },
+        'phonenum'     => 'Phone number',
+        'pin'          => { label => 'Personal Identification Number',
+                            type  => 'text',
+                            disable_inventory => 1,
+                            disable_select => 1,
+                          },
+        'sip_password' => 'SIP password',
+        'name'         => 'Name',
     },
   };
 }
@@ -107,7 +120,10 @@ Returns the phone number.
 
 sub label {
   my $self = shift;
-  $self->phonenum; #XXX format it better
+  my $phonenum = $self->phonenum; #XXX format it better
+  my $label = $phonenum;
+  $label .= ' ('.$self->phone_name.')' if $self->phone_name;
+  $label;
 }
 
 =item insert
@@ -170,12 +186,22 @@ sub check {
     $self->ut_numbern('svcnum')
     || $self->ut_numbern('countrycode')
     || $self->ut_number('phonenum')
+    || $self->ut_anything('sip_password')
     || $self->ut_numbern('pin')
+    || $self->ut_textn('phone_name')
   ;
   return $error if $error;
 
   $self->countrycode(1) unless $self->countrycode;
 
+  unless ( length($self->sip_password) ) {
+
+    $self->sip_password(
+      join('', map $pw_set[ int(rand $#pw_set) ], (0..16) )
+    );
+
+  }
+
   $self->SUPER::check;
 }