the master control program has chosen YOU to serve your system on the game grid
[freeside.git] / FS / FS / part_svc.pm
index 5b4e54c..580038b 100644 (file)
@@ -145,9 +145,11 @@ sub insert {
     my $flag = $self->getfield($svcdb.'__'.$field.'_flag');
     #if ( uc($flag) =~ /^([DFMAX])$/ ) {
     if ( uc($flag) =~ /^([A-Z])$/ ) { #part_svc_column will test it
+      my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse}
+                   || sub { shift };
       $part_svc_column->setfield('columnflag', $1);
       $part_svc_column->setfield('columnvalue',
-        $self->getfield($svcdb.'__'.$field)
+        &$parser($self->getfield($svcdb.'__'.$field))
       );
       if ( $previous ) {
         $error = $part_svc_column->replace($previous);
@@ -264,9 +266,11 @@ sub replace {
       my $flag = $new->getfield($svcdb.'__'.$field.'_flag');
       #if ( uc($flag) =~ /^([DFMAX])$/ ) {
       if ( uc($flag) =~ /^([A-Z])$/ ) { #part_svc_column will test it
+        my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse}
+                     || sub { shift };
         $part_svc_column->setfield('columnflag', $1);
         $part_svc_column->setfield('columnvalue',
-          $new->getfield($svcdb.'__'.$field)
+          &$parser($new->getfield($svcdb.'__'.$field))
         );
         if ( $previous ) {
           $error = $part_svc_column->replace($previous);
@@ -421,6 +425,19 @@ sub part_export_usage {
   grep $_->can('usage_sessions'), $self->part_export;
 }
 
+=item part_export_did
+
+Returns a list of any exports (see L<FS::part_export>) for this service that
+are capable of returing available DID (phone number) information.
+
+=cut
+
+sub part_export_did {
+  my $self = shift;
+  grep $_->can('get_dids'), $self->part_export;
+}
+
+
 =item cust_svc [ PKGPART ] 
 
 Returns a list of associated customer services (FS::cust_svc records).