summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-01-16 01:46:44 -0800
committerIvan Kohler <ivan@freeside.biz>2014-01-16 01:46:44 -0800
commitad4bf730d6e96f0acf589c00ff31eaa64f60b0b7 (patch)
treefbe5cf86a301b29f932f3ffa00db29eaa15e9a03
parent39997db2139f32a84f4a1d1db2ee0cdd82bb9dfa (diff)
don't allow a start date for packages definitions with prorate_defer_bill, RT#25650
-rw-r--r--FS/FS/part_pkg/flat.pm10
-rw-r--r--httemplate/misc/cust-part_pkg.cgi12
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,
)
}