[freeside-commits] branch FREESIDE_3_BRANCH updated. 506c2dc3da817a631ea6f77f7ab3dcaa02c1c188
Jonathan Prykop
jonathan at 420.am
Wed Jun 22 02:34:35 PDT 2016
The branch, FREESIDE_3_BRANCH has been updated
via 506c2dc3da817a631ea6f77f7ab3dcaa02c1c188 (commit)
via c48c1ed2ac975eb3b5b97f7876978b90fae4f316 (commit)
from 6acb603bb4422ca282b29e962291eb3d0d86d7bd (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 506c2dc3da817a631ea6f77f7ab3dcaa02c1c188
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 c48c1ed2ac975eb3b5b97f7876978b90fae4f316
Author: Jonathan Prykop <jonathan at freeside.biz>
Date: Tue Jun 21 23:07:14 2016 -0500
RT#30820: Report not working [v3 merge]
diff --git a/FS/FS/log_context.pm b/FS/FS/log_context.pm
index ddea771..d7ea26b 100644
--- a/FS/FS/log_context.pm
+++ b/FS/FS/log_context.pm
@@ -10,6 +10,7 @@ my @contexts = ( qw(
FS::cust_main::Billing::bill_and_collect
FS::cust_main::Billing::bill
FS::cust_main::Billing_Realtime::realtime_verify_bop
+ FS::part_pkg
FS::Misc::Geo::standardize_uscensus
Cron::bill
Cron::upload
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