RT# 81249 - Fixed error where empty field becomes 0.
authorChristopher Burger <burgerc@freeside.biz>
Thu, 10 Jan 2019 01:19:26 +0000 (20:19 -0500)
committerChristopher Burger <burgerc@freeside.biz>
Thu, 10 Jan 2019 01:23:02 +0000 (20:23 -0500)
FS/FS/part_pkg.pm
FS/FS/part_pkg/voip_cdr.pm
FS/FS/part_pkg/voip_inbound.pm
httemplate/edit/elements/edit.html

index 78f5dc0..9b1652a 100644 (file)
@@ -585,12 +585,23 @@ sub replace {
 
 sub validate_number {
   my ($option, $valref) = @_;
+
   $$valref = 0 unless $$valref;
   return "Invalid $option"
     unless ($$valref) = ($$valref =~ /^\s*(\d+)\s*$/);
   return '';
 }
 
+sub validate_number_blank {
+  my ($option, $valref) = @_;
+
+  if ($$valref) {
+    return "Invalid $option"
+      unless ($$valref) = ($$valref =~ /^\s*(\d+)\s*$/);
+  }
+  return '';
+}
+
 =item check
 
 Checks all fields to make sure this is a valid package definition.  If
index 3a63159..b5da530 100644 (file)
@@ -173,13 +173,13 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash',
                          },
 
     'use_cdrtypenum' => { 'name' => 'Only charge for CDRs where the CDR Type is set to this cdrtypenum: ',
-                          'validate' => \&FS::part_pkg::validate_number,
-                          'js_validate' => 'digits',
+                          'validate' => \&FS::part_pkg::validate_number_blank,
+                          'js_validate' => 'digits: true',
                          },
     
     'ignore_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is set to this cdrtypenum: ',
-                             'validate' => \&FS::part_pkg::validate_number,
-                             'js_validate' => 'digits',
+                             'validate' => \&FS::part_pkg::validate_number_blank,
+                             'js_validate' => 'digits: true',
                          },
 
     'use_calltypenum' => { 'name' => 'Only charge for CDRs where the CDR Call Type is set to this calltypenum: ',
index 22ca796..7e8b8f0 100644 (file)
@@ -64,13 +64,13 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities();
                          },
 
     'use_cdrtypenum' => { 'name' => 'Only charge for CDRs where the CDR Type is set to this cdrtypenum: ',
-                          'validate' => \&FS::part_pkg::validate_number,
-                          'js_validate' => 'digits',
+                          'validate' => \&FS::part_pkg::validate_number_blank,
+                          'js_validate' => 'digits: true',
                          },
     
     'ignore_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is set to this cdrtypenum: ',
-                             'validate' => \&FS::part_pkg::validate_number,
-                             'js_validate' => 'digits',
+                             'validate' => \&FS::part_pkg::validate_number_blank,
+                             'js_validate' => 'digits: true',
                          },
 
     'use_calltypenum' => { 'name' => 'Only charge for CDRs where the CDR Call Type is set to this cdrtypenum: ',
index 1755a65..09f7655 100644 (file)
@@ -787,13 +787,13 @@ Example:
 %     ## set extra field values for validation.  ie price plan fields
 %     my $extra_fields_to_validate = $opt{'extra_fields_validate'};
 %     my %validate_error_messages = (
-%       'digits' => 'Please only enter numbers here.',
-%       'email'  => 'Please enter a valid email here.',
+%       'digits: true' => 'Please only enter numbers here.',
+%       'email: true'  => 'Please enter a valid email here.',
 %     );
 %     foreach my $extra_fields (keys %$extra_fields_to_validate) {
 %       my $validate_type = $extra_fields_to_validate->{$extra_fields};
-%       $js_form_validate->{edit_topform}->{validate_fields}{$extra_fields} = $validate_type.': true';
-%       $js_form_validate->{edit_topform}->{error_message}{$extra_fields} = $validate_error_messages{$validate_type};
+%       $js_form_validate->{edit_topform}->{validate_fields}{$extra_fields} = $validate_type;
+%      $js_form_validate->{edit_topform}->{error_message}{$extra_fields} = $validate_error_messages{$validate_type};
 %     }
 
 % unless ($opt{'embed'}) {