import torrus 1.0.9
[freeside.git] / httemplate / edit / process / REAL_cust_pkg.cgi
index 84d0cc1..3a62ee0 100755 (executable)
@@ -1,34 +1,49 @@
-<%
+%if ( $error ) {
+%  $cgi->param('error', $error);
+<% $cgi->redirect(popurl(2). "REAL_cust_pkg.cgi?". $cgi->query_string ) %>
+%} else { 
+%  my $custnum = $new->custnum;
+%  my $show = $curuser->default_customer_view =~ /^(jumbo|packages)$/
+%               ? ''
+%               : ';show=packages';
+%  my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
+<% $cgi->redirect(popurl(3). "view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#$frag" ) %>
+%}
+<%init>
+
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+die "access denied"
+  unless $curuser->access_right('Edit customer package dates');
 
 my $pkgnum = $cgi->param('pkgnum') or die;
 my $old = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
 my %hash = $old->hash;
-$hash{'setup'} = $cgi->param('setup') ? str2time($cgi->param('setup')) : '';
-$hash{'bill'} = $cgi->param('bill') ? str2time($cgi->param('bill')) : '';
-$hash{'last_bill'} =
-  $cgi->param('last_bill') ? str2time($cgi->param('last_bill')) : '';
-$hash{'expire'} = $cgi->param('expire') ? str2time($cgi->param('expire')) : '';
+$hash{$_}= $cgi->param($_) ? parse_datetime($cgi->param($_)) : ''
+  foreach qw( start_date setup bill last_bill adjourn expire contract_end );
+
+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);
 }
 
-if ( $error ) {
-  $cgi->param('error', $error);
-  print $cgi->redirect(popurl(2). "REAL_cust_pkg.cgi?". $cgi->query_string );
-} else { 
-  my $custnum = $new->custnum;
-  print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum".
-                       "#cust_pkg$pkgnum" );
-}
-
-%>
+</%init>