[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