diff options
| author | ivan <ivan> | 2009-11-30 00:04:21 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2009-11-30 00:04:21 +0000 | 
| commit | 20c9ad0d871b072d0ed15e461156c0d73307db7c (patch) | |
| tree | e1780f448bbb600b167c86b4c090d855b42bb418 /httemplate | |
| parent | 752ed76d717d305b12e32fd2a68b1a253f63008d (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
Diffstat (limited to 'httemplate')
| -rwxr-xr-x | httemplate/edit/REAL_cust_pkg.cgi | 45 | ||||
| -rwxr-xr-x | 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 @@      <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);  | 
