RT#71009: (v4+) OFM - Separate permissions for edit dates and contract dates
[freeside.git] / httemplate / misc / change_pkg_date.html
index 5a890c8..0a23805 100755 (executable)
@@ -3,11 +3,12 @@
 <& /elements/error.html &>
 
 % # only slightly different from unhold_pkg.
-<FORM NAME="MyForm" ACTION="process/change_pkg_start.html" METHOD=POST>
+<FORM NAME="MyForm" ACTION="process/change_pkg_date.html" METHOD=POST>
 <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
+<INPUT TYPE="hidden" NAME="field" VALUE="<% $field %>">
 
 <BR>
-<% emt('Start billing [_1]', $part_pkg->pkg_comment(cust_pkg => $cust_pkg)) %>
+<% emt(($isstart ? 'Start billing' : 'Set contract end for').' [_1]', $part_pkg->pkg_comment(cust_pkg => $cust_pkg)) %>
 <UL STYLE="padding-left: 3ex; list-style: none; background-color: #cccccc">
 <LI>
   <& /elements/radio.html,
@@ -16,7 +17,7 @@
     value => 'now',
     curr_value => $when,
   &>
-  <label for="when_now"><% emt('Immediately') %></label>
+  <label for="when_now"><% emt('Now') %></label>
 </LI>
 % if ( $next_bill_date ) {
 <LI>
 &>
 <label for="when_date"> <% emt('On this date:') %> </label>
 <& /elements/input-date-field.html,
-  { name  => 'start_date',
-    value => $cgi->param('start_date') || $cust_pkg->start_date,
+  { name  => 'date_value',
+    value => $cgi->param('date_value') || $cust_pkg->get($field),
   }
 &>
 </LI>
 </UL>
-<INPUT TYPE="submit" NAME="submit" VALUE="<% emt('Set start date') %>">
+<INPUT TYPE="submit" NAME="submit" VALUE="<% emt('Set '.($isstart ? 'start date' : 'contract end')) %>">
 
 </FORM>
 </BODY>
 
 <%init>
 
+my $field = $cgi->param('field');
+
+my ($acl, $isstart);
+if ($field eq 'start_date') {
+  $acl = 'Change package start date';
+  $isstart = 1;
+} elsif ($field eq 'contract_end') {
+  $acl = 'Change package contract end date';
+} else {
+  die "Unknown date field";
+}
+
 my $curuser = $FS::CurrentUser::CurrentUser;
 die "access denied"
-  unless $curuser->access_right('Change package start date');
+  unless $curuser->access_right($acl);
 
 my $pkgnum;
 if ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) {
@@ -69,7 +82,7 @@ if ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) {
 my $conf = new FS::Conf;
 my $date_format = $conf->config('date_format') || '%m/%d/%Y';
 
-my $title = 'Start billing package';
+my $title = $isstart ? 'Start billing package' : 'Change contract end';
 
 my $cust_pkg = qsearchs({
   table     => 'cust_pkg',
@@ -83,12 +96,12 @@ my $next_bill_date = $cust_pkg->cust_main->next_bill_date;
 my $part_pkg = $cust_pkg->part_pkg;
 
 # defaults:
-# sticky on error, then the existing start date if any, then the customer's
+# sticky on error, then the existing date if any, then the customer's
 # next bill date, and if none of those, default to now
 my $when = $cgi->param('when');
 
 if (!$when) {
-  if ($cust_pkg->start_date) {
+  if ($cust_pkg->get($field)) {
     $when = 'date';
   } elsif ($next_bill_date) {
     $when = 'next_bill_date';