[freeside-commits] branch FREESIDE_4_BRANCH updated. d5d62e40593d5153afd64527accad35b7f4fda2e

Christopher Burger burgerc at freeside.biz
Thu Jan 10 06:56:43 PST 2019


The branch, FREESIDE_4_BRANCH has been updated
       via  d5d62e40593d5153afd64527accad35b7f4fda2e (commit)
       via  ae6359efac06d899093f799052ef8d472effbe98 (commit)
      from  b944b927f03a8b7d8c8978e6adb1ae0251d1295f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d5d62e40593d5153afd64527accad35b7f4fda2e
Author: Christopher Burger <burgerc at freeside.biz>
Date:   Wed Jan 9 20:19:26 2019 -0500

    RT# 81249 - Fixed error where empty field becomes 0.

diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index 1895404d9..4aa2926c4 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -695,12 +695,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
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm
index 715d5c09b..74deb8bb3 100644
--- a/FS/FS/part_pkg/voip_cdr.pm
+++ b/FS/FS/part_pkg/voip_cdr.pm
@@ -166,13 +166,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: ',
diff --git a/FS/FS/part_pkg/voip_inbound.pm b/FS/FS/part_pkg/voip_inbound.pm
index 45a7428f7..aecbe33b1 100644
--- a/FS/FS/part_pkg/voip_inbound.pm
+++ b/FS/FS/part_pkg/voip_inbound.pm
@@ -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: ',
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html
index 819b8bdbf..a960172d7 100644
--- a/httemplate/edit/elements/edit.html
+++ b/httemplate/edit/elements/edit.html
@@ -823,13 +823,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'}) {

commit ae6359efac06d899093f799052ef8d472effbe98
Author: Christopher Burger <burgerc at freeside.biz>
Date:   Wed Jan 9 12:28:19 2019 -0500

    RT# 81249 - added ability to validate price plan option fields

diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index c08820518..1895404d9 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -693,6 +693,14 @@ sub replace {
   '';
 }
 
+sub validate_number {
+  my ($option, $valref) = @_;
+  $$valref = 0 unless $$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
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm
index 49e43e915..715d5c09b 100644
--- a/FS/FS/part_pkg/voip_cdr.pm
+++ b/FS/FS/part_pkg/voip_cdr.pm
@@ -166,9 +166,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',
                          },
     
     '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',
                          },
 
     'use_calltypenum' => { 'name' => 'Only charge for CDRs where the CDR Call Type is set to this calltypenum: ',
diff --git a/FS/FS/part_pkg/voip_inbound.pm b/FS/FS/part_pkg/voip_inbound.pm
index 1cfa31ba4..45a7428f7 100644
--- a/FS/FS/part_pkg/voip_inbound.pm
+++ b/FS/FS/part_pkg/voip_inbound.pm
@@ -64,9 +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',
                          },
     
     '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',
                          },
 
     'use_calltypenum' => { 'name' => 'Only charge for CDRs where the CDR Call Type is set to this cdrtypenum: ',
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html
index 1d9930adf..819b8bdbf 100644
--- a/httemplate/edit/elements/edit.html
+++ b/httemplate/edit/elements/edit.html
@@ -820,6 +820,18 @@ Example:
       : $opt{'html_bottom'}
 %>
 
+%     ## 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.',
+%     );
+%     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};
+%     }
+
 % unless ($opt{'embed'}) {
 
   <BR>
diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi
index 50382077f..8257fa23e 100755
--- a/httemplate/edit/part_pkg.cgi
+++ b/httemplate/edit/part_pkg.cgi
@@ -12,6 +12,7 @@
                                 include('/elements/init_calendar.html').
                                 $javascript,
      'html_bottom'           => $html_bottom,
+     'extra_fields_validate' => $validate_priceplan_fields,
      'body_etc'              =>
        'onLoad="agent_changed(document.edit_topform.agentnum);
                 aux_planchanged(document.edit_topform.plan);
@@ -909,6 +910,15 @@ tie my %plan_labels, 'Tie::IxHash',
   map {  $_ => ( $plans{$_}->{'shortname'} || $plans{$_}->{'name'} ) }
       keys %plans;
 
+my $validate_priceplan_fields = {};
+foreach my $priceplan (keys %plans) {
+  my $plan_fields = $plans{$priceplan}->{fields};
+  foreach my $price_plan_field (keys %$plan_fields) {
+    $validate_priceplan_fields->{$priceplan."__".$price_plan_field} = $plan_fields->{$price_plan_field}->{"js_validate"}
+      if exists $plan_fields->{$price_plan_field}->{"js_validate"};
+  }
+}
+
 my $html_bottom = sub {
   my( $object ) = @_;
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/part_pkg.pm                  | 19 +++++++++++++++++++
 FS/FS/part_pkg/voip_cdr.pm         |  4 ++++
 FS/FS/part_pkg/voip_inbound.pm     |  4 ++++
 httemplate/edit/elements/edit.html | 12 ++++++++++++
 httemplate/edit/part_pkg.cgi       | 10 ++++++++++
 5 files changed, 49 insertions(+)




More information about the freeside-commits mailing list