From 20c9ad0d871b072d0ed15e461156c0d73307db7c Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 30 Nov 2009 00:04:21 +0000 Subject: [PATCH] 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 --- httemplate/edit/REAL_cust_pkg.cgi | 45 +++++++++++++++++++++++++------ httemplate/edit/process/REAL_cust_pkg.cgi | 23 +++++++++++----- 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 @@ <% $cust_pkg->otaker %> +% 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? ". - ''; + + 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? ". + ''; + } + } + + 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? ". + ''; } + + if ( $errors{'_start'} ) { + push @errors, + "You are attempting to add a start date to a package that has already + started billing."; + } + + $error = join('

', @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); -- 2.11.0