diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-01-16 01:46:44 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-01-16 01:46:44 -0800 |
commit | ad4bf730d6e96f0acf589c00ff31eaa64f60b0b7 (patch) | |
tree | fbe5cf86a301b29f932f3ffa00db29eaa15e9a03 | |
parent | 39997db2139f32a84f4a1d1db2ee0cdd82bb9dfa (diff) |
don't allow a start date for packages definitions with prorate_defer_bill, RT#25650
-rw-r--r-- | FS/FS/part_pkg/flat.pm | 10 | ||||
-rw-r--r-- | httemplate/misc/cust-part_pkg.cgi | 12 |
2 files changed, 20 insertions, 2 deletions
diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm index 7bc44e176..1594a132b 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -269,7 +269,15 @@ sub is_free_options { sub is_prepaid { 0; } #no, we're postpaid -sub can_start_date { ! shift->option('start_1st', 1) } +sub can_start_date { + my $self = shift; + my %opt = @_; + + ! $self->option('start_1st', 1) && ( ! $self->option('sync_bill_date',1) + || ! $self->option('prorate_defer_bill',1) + || ! $opt{'num_ncancelled_pkgs'} + ); +} sub can_discount { 1; } diff --git a/httemplate/misc/cust-part_pkg.cgi b/httemplate/misc/cust-part_pkg.cgi index 54973bc19..afe8e4249 100644 --- a/httemplate/misc/cust-part_pkg.cgi +++ b/httemplate/misc/cust-part_pkg.cgi @@ -39,6 +39,14 @@ my $default_start_date = $conf->exists('order_pkg-no_start_date') ? '' : $cust_main->next_bill_date; +#num_billing_pkgs may be slightly better (will allow you to fill in a start +# date in the weird edge case where you're using sync_next_bill and +# prorate_defer_bill in flat.pm and there's one-time charges hanging around +# for this customer but no active ones) +#but we don't have an easy method for that, and definitely don't want to pull +# all package objects +my $num_ncancelled_pkgs = $cust_main ? $cust_main->num_ncancelled_pkgs : 0; + my @return = map { my $start_date = $_->delay_start_date || $default_start_date; @@ -47,7 +55,9 @@ my @return = map { ( $_->pkgpart, $_->pkg_comment, $_->can_discount, - $_->can_start_date, + $_->can_start_date( + num_ncancelled_pkgs => $num_ncancelled_pkgs, + ), $start_date, ) } |