RT#40215: OFM - Separate permissions for edit dates and contract dates [v3 only]
[freeside.git] / httemplate / misc / confirm-cust_pkg-edit_dates.html
index 27b9a82..a0f79cd 100755 (executable)
@@ -2,15 +2,19 @@
 my $curuser = $FS::CurrentUser::CurrentUser;
 
 die "access denied"
-  unless $curuser->access_right('Edit customer package dates');
+  unless $curuser->access_right('Edit customer package dates')
+      or $curuser->access_right('Change package contract end date');
 
 my %arg = $cgi->Vars;
 
+my $contract_only = $curuser->access_right('Edit customer package dates') ? 0 : 1;
+$contract_only = 1 if $arg{'contract_only'};
+
 my $pkgnum = $arg{'pkgnum'};
 $pkgnum =~ /^\d+$/ or die "bad pkgnum '$pkgnum'";
 my $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
 my %hash = $cust_pkg->hash;
-foreach (qw( start_date setup bill last_bill contract_end )) {
+foreach ( $contract_only ? qw( contract_end ) : qw( start_date setup bill last_bill contract_end )) {
   # adjourn, expire, resume not editable this way
   if( $arg{$_} =~ /^\d+$/ ) {
     $hash{$_} = $arg{$_};
@@ -63,7 +67,7 @@ if ( $hash{'setup'} != $cust_pkg->get('setup') ) {
     } else {
       push @confirm, '';
     }
-  } elsif ( $cust_pkg->get('setup') ) {
+  } elsif ( $hash{'setup'} and !$cust_pkg->get('setup') ) {
     my $text = 'Add a setup date of [_1]';
     $text .= ' to this and all its supplemental packages' if @supp_pkgs;
     $text .= '.';
@@ -110,7 +114,7 @@ if ( $hash{'last_bill'} != $cust_pkg->get('last_bill') ) {
 # Bill date change
 if ( $hash{'bill'} != $cust_pkg->get('bill') ) {
   my $bill = time2str($date_format, $hash{'bill'});
-  $bill = 'the current day' if !$hash{'bill'}; # or 'the end of today'?...
+  $bill = 'today' if !$hash{'bill'}; # or 'the end of today'?...
   my $name = 'next bill date';
   $name = 'end of the prepaid period' if $part_pkg->is_prepaid;
   push @changes, mt('Set the [_1] to [_2].', $name, $bill);
@@ -119,6 +123,12 @@ if ( $hash{'bill'} != $cust_pkg->get('bill') ) {
     push @confirm, 
       mt('The customer will be charged for the interval from [_1] until now.',
          $bill);
+  } elsif ( !$hash{'bill'} and ($hash{'last_bill'} or $hash{'setup'}) ) {
+    my $last_bill = 
+      time2str($date_format, $hash{'last_bill'} || $hash{'setup'});
+    push @confirm,
+      mt('The customer will be charged for the interval from [_1] until now.',
+        $last_bill);
   } else {
     push @confirm, '';
   }
@@ -256,6 +266,9 @@ if ( @errors ) {
 % foreach (keys %hash) {
 <INPUT TYPE="hidden" NAME="<%$_%>" VALUE="<% $hash{$_} |h%>">
 % }
+% if ($contract_only) {
+<INPUT TYPE="hidden" NAME="contract_only" VALUE="1">
+% }
 </FORM>
 <SCRIPT>
 function submit_ready() {