option to extract destination number from userfield, #71674
authorMark Wells <mark@freeside.biz>
Mon, 8 Aug 2016 20:23:25 +0000 (13:23 -0700)
committerMark Wells <mark@freeside.biz>
Mon, 8 Aug 2016 20:23:25 +0000 (13:23 -0700)
FS/FS/Conf.pm
FS/bin/freeside-cdrrewrited

index 1b50006..50fc7f0 100644 (file)
@@ -4992,6 +4992,13 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'cdr-userfield_dnis_rewrite',
+    'section'     => 'telephony',
+    'description' => 'If the CDR userfield contains "DNIS=" followed by a sequence of digits, use that as the destination number for the call.',
+    'type'        => 'checkbox',
+  },
+
+  {
     'key'         => 'cdr-intl_to_domestic_rewrite',
     'section'     => 'telephony',
     'description' => 'Strip the "011" international prefix from CDR destination numbers if the rest of the number is 7 digits or shorter, and so probably does not contain a country code.',
index 1745d67..34a2068 100644 (file)
@@ -219,6 +219,12 @@ while (1) {
 
     }
 
+    if ( $conf->exists('cdr-userfield_dnis_rewrite') and
+         $cdr->userfield =~ /DNIS=(\d+)/ ) {
+      $cdr->dst($1);
+      push @status, 'userfield_dnis';
+    }
+
     if ( $conf->exists('cdr-intl_to_domestic_rewrite') and
          $cdr->dst =~ /^(011)(\d{0,7})$/ ) {
       $cdr->dst($2);
@@ -261,6 +267,7 @@ sub _shouldrun {
   || $conf->exists('cdr-taqua-accountcode_rewrite')
   || $conf->exists('cdr-taqua-callerid_rewrite')
   || $conf->exists('cdr-intl_to_domestic_rewrite')
+  || $conf->exists('cdr-userfield_dnis_rewrite')
   || $conf->exists('cdr-skip_duplicate_rewrite')
   || 0
   ;