communigate (phase 2): rules. RT#7514
[freeside.git] / httemplate / edit / REAL_cust_pkg.cgi
index fea8545..77ab1fe 100755 (executable)
 
   <TR>
     <TD ALIGN="right">Package</TD>
-    <TD BGCOLOR="#ffffff"><% $cust_pkg->pkg %></TD>
+    <TD BGCOLOR="#ffffff"><% $part_pkg->pkg %></TD>
+  </TR>
+
+  <TR>
+    <TD ALIGN="right">Custom</TD>
+    <TD BGCOLOR="#ffffff"><% $part_pkg->custom %></TD>
   </TR>
 
   <TR>
     <TD ALIGN="right">Comment</TD>
-    <TD BGCOLOR="#ffffff"><% $cust_pkg->comment %></TD>
+    <TD BGCOLOR="#ffffff"><% $part_pkg->comment %></TD>
   </TR>
 
   <TR>
     <TD BGCOLOR="#ffffff"><% $cust_pkg->otaker %></TD>
   </TR>
 
+% if ( $cust_pkg->setup && ! $cust_pkg->start_date ) {
+  <& .row_display, cust_pkg=>$cust_pkg, column=>'start_date',   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 &>
-  <& .row_edit, cust_pkg=>$cust_pkg, column=>'adjourn',   label=>'Adjournment', note=>'(will <b>suspend</b> this package when the date is reached)' &>
+  <& .row_display, cust_pkg=>$cust_pkg, column=>'adjourn',   label=>'Adjournment', note=>'(will <b>suspend</b> this package when the date is reached)' &>
   <& .row_display, cust_pkg=>$cust_pkg, column=>'susp',   label=>'Suspension' &>
 
-  <& .row_edit, cust_pkg=>$cust_pkg, column=>'expire',   label=>'Expiration', note=>'(will <b>cancel</b> this package when the date is reached)' &>
+  <& .row_display, cust_pkg=>$cust_pkg, column=>'expire',   label=>'Expiration', note=>'(will <b>cancel</b> this package when the date is reached)' &>
   <& .row_display, cust_pkg=>$cust_pkg, column=>'cancel',   label=>'Cancellation' &>
 
 <%def .row_edit>
@@ -83,7 +94,7 @@
   <SCRIPT TYPE="text/javascript">
     Calendar.setup({
       inputField: "<% $column %>_text",
-      ifFormat:   "%m/%d/%Y",
+      ifFormat:   "<% $date_format %>",
       button:     "<% $column %>_button",
       align:      "BR"
     });
   $cust_pkg
   $column
   $label
+  $note => ''
 </%args>
 % if ( $cust_pkg->get($column) ) { 
     <TR>
       <TD ALIGN="right"><% $label %> date</TD>
-      <TD BGCOLOR="#ffffff"><% time2str($format,$cust_pkg->get($column)) %></TD>
+      <TD BGCOLOR="#ffffff"><% time2str($format,$cust_pkg->get($column)) %>
+%       if ( $note ) {
+          <BR><FONT SIZE=-1><% $note %></FONT>
+%       }
+      </TD>
     </TR>
 % } 
 </%def>
 </FORM>
 
 <% include('/elements/footer.html') %>
+<%shared>
 
-<%once>
-
-#my $format = "%c %z (%Z)";
-my $format = "%m/%d/%Y %T %z (%Z)";
+my $conf = new FS::Conf;
+my $date_format = $conf->config('date_format') || '%m/%d/%Y';
 
-#false laziness w/view/cust_main/packages.html
-#my( $billed_or_prepaid,
+my $format = $date_format. ' %T %z (%Z)';
 
-</%once>
+</%shared>
 <%init>
 
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Edit customer package dates');
 
+
 my $error = '';
 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
   $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum});
   die "No package!" unless $cust_pkg;
 
-  foreach my $col (qw( setup last_bill bill adjourn expire )) {
+  foreach my $col (qw( start_date setup last_bill bill adjourn expire )) {
     my $value = $cgi->param($col);
-    $cust_pkg->set( $col, $value ? str2time($value) : '' );
+    $cust_pkg->set( $col, $value ? parse_datetime($value) : '' );
   }
 
 } else {