summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2009-11-30 00:04:21 +0000
committerivan <ivan>2009-11-30 00:04:21 +0000
commit20c9ad0d871b072d0ed15e461156c0d73307db7c (patch)
treee1780f448bbb600b167c86b4c090d855b42bb418
parent752ed76d717d305b12e32fd2a68b1a253f63008d (diff)
UI changes to make it impossible to add a start date to a package that already has a setup fee (can still remove an existing start date causing problems), RT#6712
-rwxr-xr-xhttemplate/edit/REAL_cust_pkg.cgi45
-rwxr-xr-xhttemplate/edit/process/REAL_cust_pkg.cgi23
2 files changed, 54 insertions, 14 deletions
diff --git a/httemplate/edit/REAL_cust_pkg.cgi b/httemplate/edit/REAL_cust_pkg.cgi
index 5752c8dd8..270ffa34b 100755
--- a/httemplate/edit/REAL_cust_pkg.cgi
+++ b/httemplate/edit/REAL_cust_pkg.cgi
@@ -46,7 +46,12 @@
<TD BGCOLOR="#ffffff"><% $cust_pkg->otaker %></TD>
</TR>
+% if ( $cust_pkg->setup && ! $cust_pkg->start_date ) {
+ <& .row_display, cust_pkg=>$cust_pkg, column=>'start', label=>'Start' &>
+% } else {
<& .row_edit, cust_pkg=>$cust_pkg, column=>'start_date', label=>'Start' &>
+% }
+
<& .row_edit, cust_pkg=>$cust_pkg, column=>'setup', label=>'Setup' &>
<& .row_edit, cust_pkg=>$cust_pkg, column=>'last_bill', label=>$last_bill_or_renewed &>
<& .row_edit, cust_pkg=>$cust_pkg, column=>'bill', label=>$next_bill_or_prepaid_until &>
@@ -144,15 +149,39 @@ my( $pkgnum, $cust_pkg );
if ( $cgi->param('error') ) {
$pkgnum = $cgi->param('pkgnum');
- if ( $cgi->param('error') eq '_bill_areyousure' ) {
- if ( $cgi->param('bill') =~ /^([\s\d\/\:\-\(\w\)]*)$/ ) {
- my $bill = $1;
- $cgi->param('error', '');
- $error = "You are attempting to set the next bill date to $bill, which is
- in the past. This will charge the customer for the interval
- from $bill until now. Are you sure you want to do this? ".
- '<INPUT TYPE="checkbox" NAME="bill_areyousure" VALUE="1">';
+
+ if ( $cgi->param('error') =~ /^_/ ) {
+
+ my @errors = ();
+ my %errors = map { $_=>1 } split(',', $cgi->param('error'));
+ $cgi->param('error', '');
+
+ if ( $errors{'_bill_areyousure'} ) {
+ if ( $cgi->param('bill') =~ /^([\s\d\/\:\-\(\w\)]*)$/ ) {
+ my $bill = $1;
+ push @errors,
+ "You are attempting to set the next bill date to $bill, which is
+ in the past. This will charge the customer for the interval
+ from $bill until now. Are you sure you want to do this? ".
+ '<INPUT TYPE="checkbox" NAME="bill_areyousure" VALUE="1">';
+ }
+ }
+
+ if ( $errors{'_setup_areyousure'} ) {
+ push @errors,
+ "You are attempting to remove the setup date. This will re-charge the
+ customer for the setup fee. Are you sure you want to do this? ".
+ '<INPUT TYPE="checkbox" NAME="setup_areyousure" VALUE="1">';
}
+
+ if ( $errors{'_start'} ) {
+ push @errors,
+ "You are attempting to add a start date to a package that has already
+ started billing.";
+ }
+
+ $error = join('<BR><BR>', @errors );
+
}
#get package record
diff --git a/httemplate/edit/process/REAL_cust_pkg.cgi b/httemplate/edit/process/REAL_cust_pkg.cgi
index d4ba976c4..22aab44e8 100755
--- a/httemplate/edit/process/REAL_cust_pkg.cgi
+++ b/httemplate/edit/process/REAL_cust_pkg.cgi
@@ -27,14 +27,25 @@ $hash{'last_bill'} =
$hash{'adjourn'} = $cgi->param('adjourn') ? str2time($cgi->param('adjourn')) : '';
$hash{'expire'} = $cgi->param('expire') ? str2time($cgi->param('expire')) : '';
+my @errors = ();
+
+push @errors, '_bill_areyousure'
+ if $hash{'bill'} != $old->bill # if the next bill date was changed
+ && $hash{'bill'} < time # to a date in the past
+ && ! $cgi->param('bill_areyousure'); # and it wasn't confirmed
+
+push @errors, '_setup_areyousure'
+ if ! $hash{'setup'} && $old->setup # if the setup date was removed
+ && ! $cgi->param('setup_areyousure'); # and it wasn't confirmed
+
+push @errors, '_start'
+ if $hash{'start_date'} && $old->start_date # if a start date was added
+ && $hash{'setup'}; # but there's a setup date
+
my $new;
my $error;
-if ( $hash{'bill'} != $old->bill # if the next bill date was changed
- && $hash{'bill'} < time # to a date in the past
- && ! $cgi->param('bill_areyousure') # and it wasn't confirmed
- )
-{
- $error = '_bill_areyousure';
+if ( @errors ) {
+ $error = join(',', @errors);
} else {
$new = new FS::cust_pkg \%hash;
$error = $new->replace($old);