[freeside-commits] branch master updated. 068d26f9e8a61358cf555d4d62ad17c0f6bacf2a

Jonathan Prykop jonathan at 420.am
Tue Jun 21 21:55:58 PDT 2016


The branch, master has been updated
       via  068d26f9e8a61358cf555d4d62ad17c0f6bacf2a (commit)
       via  5fd15230317a0a6b6fcb70d5b83712c8f827ebb1 (commit)
      from  ada2ac371279555b1009db1f995861eee2fa4bf2 (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 068d26f9e8a61358cf555d4d62ad17c0f6bacf2a
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Tue Jun 21 23:54:30 2016 -0500

    RT#71166: Catch blank intro_duration at package definition setup

diff --git a/FS/FS/part_pkg/flat_introrate.pm b/FS/FS/part_pkg/flat_introrate.pm
index 1fc9cd2..786841b 100644
--- a/FS/FS/part_pkg/flat_introrate.pm
+++ b/FS/FS/part_pkg/flat_introrate.pm
@@ -6,6 +6,31 @@ use vars qw( %info );
 
 use FS::Log;
 
+# mostly false laziness with FS::part_pkg::global_Mixin::validate_moneyn,
+# except for blank string handling...
+sub validate_money {
+  my ($option, $valref) = @_;
+  if ( $$valref eq '' ) {
+    $$valref = '0';
+  } elsif ( $$valref =~ /^\s*(\d*)(\.\d{1})\s*$/ ) {
+    #handle one decimal place without barfing out
+    $$valref = ( ($1||''). ($2.'0') ) || 0;
+  } elsif ( $$valref =~ /^\s*(\d*)(\.\d{2})?\s*$/ ) {
+    $$valref = ( ($1||''). ($2||'') ) || 0;
+  } else {
+    return "Illegal (money) $option: ". $$valref;
+  }
+  return '';
+}
+
+sub validate_number {
+  my ($option, $valref) = @_;
+  $$valref = 0 unless $$valref;
+  return "Invalid $option"
+    unless ($$valref) = ($$valref =~ /^\s*(\d+)\s*$/);
+  return '';
+}
+
 %info = (
   'name' => 'Introductory price for X months, then flat rate,'.
             'relative to setup date (anniversary billing)',
@@ -14,10 +39,12 @@ use FS::Log;
   'fields' => {
     'intro_fee' => { 'name' => 'Introductory recurring fee for this package',
                      'default' => 0,
+                     'validate' => \&validate_money,
                    },
     'intro_duration' =>
          { 'name' => 'Duration of the introductory period, in number of months',
            'default' => 0,
+           'validate' => \&validate_number,
          },
   },
   'fieldorder' => [ qw(intro_duration intro_fee) ],

commit 5fd15230317a0a6b6fcb70d5b83712c8f827ebb1
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Tue Jun 21 23:07:14 2016 -0500

    RT#30820: Report not working

diff --git a/FS/FS/log_context.pm b/FS/FS/log_context.pm
index ab1b0c3..83414a6 100644
--- a/FS/FS/log_context.pm
+++ b/FS/FS/log_context.pm
@@ -11,6 +11,7 @@ my @contexts = ( qw(
   FS::cust_main::Billing::bill
   FS::cust_main::Billing_Realtime::realtime_verify_bop
   FS::pay_batch::import_from_gateway
+  FS::part_pkg
   FS::Misc::Geo::standardize_uscensus
   Cron::bill
   Cron::backup
diff --git a/FS/FS/part_pkg/flat_introrate.pm b/FS/FS/part_pkg/flat_introrate.pm
index 7337602..1fc9cd2 100644
--- a/FS/FS/part_pkg/flat_introrate.pm
+++ b/FS/FS/part_pkg/flat_introrate.pm
@@ -4,6 +4,8 @@ use base qw( FS::part_pkg::flat );
 use strict;
 use vars qw( %info );
 
+use FS::Log;
+
 %info = (
   'name' => 'Introductory price for X months, then flat rate,'.
             'relative to setup date (anniversary billing)',
@@ -30,7 +32,10 @@ sub base_recur {
 
   my ($duration) = ($self->option('intro_duration') =~ /^\s*(\d+)\s*$/);
   unless (length($duration)) {
-    die "Invalid intro_duration: " . $self->option('intro_duration');
+    my $log = FS::Log->new('FS::part_pkg');
+    $log->warning("Invalid intro_duration '".$self->option('intro_duration')."' on pkgpart ".$self->pkgpart
+                .", defaulting to 0, check package definition");
+    $duration = 0;
   }
   my $intro_end = $self->add_freq($cust_pkg->setup, $duration);
 

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

Summary of changes:
 FS/FS/log_context.pm             |    1 +
 FS/FS/part_pkg/flat_introrate.pm |   34 +++++++++++++++++++++++++++++++++-
 2 files changed, 34 insertions(+), 1 deletion(-)




More information about the freeside-commits mailing list