on-demand vs. automatic cards & checks: added DCRD and DCHK payment types
[freeside.git] / httemplate / edit / part_bill_event.cgi
index 41d6666..6426eed 100755 (executable)
@@ -1,11 +1,10 @@
-<!-- $Id: part_bill_event.cgi,v 1.1 2002-01-29 16:33:16 ivan Exp $ -->
-
+<!-- mason kludge -->
 <%
 
-if ( $cgi->param('eventnum') && $cgi->param('eventnum') =~ /^(\d+)$/ ) {
-  $cgi->param('eventnum', $1);
+if ( $cgi->param('eventpart') && $cgi->param('eventpart') =~ /^(\d+)$/ ) {
+  $cgi->param('eventpart', $1);
 } else {
-  $cgi->param('eventnum', '');
+  $cgi->param('eventpart', '');
 }
 
 my ($query) = $cgi->keywords;
@@ -33,24 +32,25 @@ print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
       "</FONT>"
   if $cgi->param('error');
 
-print '<FORM ACTION="', popurl(1), 'process/part_bill_event.cgi" METHOD=POST>';
-
+print '<FORM ACTION="', popurl(1), 'process/part_bill_event.cgi" METHOD=POST>'.
+      '<INPUT TYPE="hidden" NAME="eventpart" VALUE="'.
+      $part_bill_event->eventpart  .'">';
 print "Invoice Event #", $hashref->{eventpart} ? $hashref->{eventpart} : "(NEW)";
 
 print ntable("#cccccc",2), <<END;
 <TR><TD ALIGN="right">Payby</TD><TD><SELECT NAME="payby">
 END
 
-for (qw(CARD BILL COMP)) {
+for (qw(CARD DCRD CHEK DCHK LECB BILL COMP)) {
   print qq!<OPTION VALUE="$_"!;
   if ($part_bill_event->payby eq $_) {
-    print " SELECTED> $_</OPTION>";
+    print " SELECTED>$_</OPTION>";
   } else {
     print ">$_</OPTION>";
   }
 }
 
-my $days = $hashref->{seconds}/3600;
+my $days = $hashref->{seconds}/86400;
 
 print <<END;
 </SELECT></TD></TR>
@@ -71,44 +71,135 @@ print '<TR><TD ALIGN="right">Action</TD><TD>';
 #this is pretty kludgy right here.
 tie my %events, 'Tie::IxHash',
 
-  'Charge a fee' => {
-    'code' => '$cust_main->charge( %%%charge%%%, \'%%%reason%%%\' );',
-    'html' => 'Amount <INPUT TYPE="text" SIZE="7" NAME="charge"><BR>'.
-              'Reason <INPUT TYPE="text" NAME="reason">',
+  'fee' => {
+    'name'   => 'Late fee',
+    'code'   => '$cust_main->charge( %%%charge%%%, \'%%%reason%%%\' );',
+    'html'   => 
+      'Amount <INPUT TYPE="text" SIZE="7" NAME="charge" VALUE="%%%charge%%%">'.
+      '<BR>Reason <INPUT TYPE="text" NAME="reason" VALUE="%%%reason%%%">',
+    'weight' => 10,
+  },
+  'suspend' => {
+    'name'   => 'Suspend',
+    'code'   => '$cust_main->suspend();',
+    'weight' => 10,
+  },
+  'cancel' => {
+    'name'   => 'Cancel',
+    'code'   => '$cust_main->cancel();',
+    'weight' => 10,
+  },
+
+  'addpost' => {
+    'name' => 'Add postal invoicing',
+    'code' => '$cust_main->invoicing_list_addpost(); "";',
+    'weight'  => 20,
+  },
+
+  'comp' => {
+    'name' => 'Pay invoice with a complimentary "payment"',
+    'code' => '$cust_bill->comp();',
+    'weight' => 30,
+  },
+
+  'realtime-card' => {
+    'name' => 'Run card with a <a href="http://search.cpan.org/search?mode=module&query=Business%3A%3AOnlinePayment">Business::OnlinePayment</a> realtime gateway',
+    'code' => '$cust_bill->realtime_card();',
+    'weight' => 30,
   },
-  'Suspend accounts' => {
-    'code' => '$cust_main->suspend();',
+
+  'realtime-check' => {
+    'name' => 'Run check with a <a href="http://search.cpan.org/search?mode=module&query=Business%3A%3AOnlinePayment">Business::OnlinePayment</a> realtime gateway',
+    'code' => '$cust_bill->realtime_ach();',
+    'weight' => 30,
+  },
+
+  'realtime-lec' => {
+    'name' => 'Run phone bill ("LEC") billing with a <a href="http://search.cpan.org/search?mode=module&query=Business%3A%3AOnlinePayment">Business::OnlinePayment</a> realtime gateway',
+    'code' => '$cust_bill->realtime_lec();',
+    'weight' => 30,
+  },
+
+  'batch-card' => {
+    'name' => 'Add card to the pending credit card batch',
+    'code' => '$cust_bill->batch_card();',
+    'weight' => 40,
   },
-  'Cancel accounts' => {
-    'code' => '$cust_main->cancel();',
+
+  'send' => {
+    'name' => 'Send invoice (email/print)',
+    'code' => '$cust_bill->send();',
+    'weight' => 50,
+  },
+
+  'send_alternate' => {
+    'name' => 'Send invoice (email/print) with alternate template',
+    'code' => '$cust_bill->send(\'%%%templatename%%%\');',
+    'html' =>
+        '<INPUT TYPE="text" NAME="templatename" VALUE="%%%templatename%%%">',
+    'weight' => 50,
   },
 
-  'Add postal invoicing' => {
-    'code' => '$cust_main->invoicing_list_addpost();',
-    'pad'  => 10,
+  'send_csv_ftp' => {
+    'name' => 'Upload CSV invoice data to an FTP server',
+    'code' => '$cust_bill->send_csv( protocol => \'ftp\',
+                                     server   => \'%%%ftpserver%%%\',
+                                     username => \'%%%ftpusername%%%\',
+                                     password => \'%%%ftppassword%%%\',
+                                     dir      => \'%%%ftpdir%%%\'       );',
+    'html' =>
+        '<TABLE BORDER=0><TR><TD ALIGN="right">FTP server: </TD>'.
+          '<TD><INPUT TYPE="text" NAME="ftpserver" VALUE="%%%ftpserver%%%">'.
+          '</TD></TR>'.
+        '<TR><TD ALIGN="right">FTP username: </TD><TD>'.
+          '<INPUT TYPE="text" NAME="ftpusername" VALUE="%%%ftpusername%%%">'.
+          '</TD></TR>'.
+        '<TR><TD ALIGN="right">FTP password: </TD><TD>'.
+          '<INPUT TYPE="text" NAME="ftppassword" VALUE="%%%ftppassword%%%">'.
+          '</TD></TR>'.
+        '<TR><TD ALIGN="right">FTP directory: </TD>'.
+          '<TD><INPUT TYPE="text" NAME="ftpdir" VALUE="%%%ftpdir%%%">'.
+          '</TD></TR>'.
+        '</TABLE>',
+    'weight' => 50,
   },
 
-  'Generate invoices' => {
+  'bill' => {
+    'name' => 'Generate invoices (normally only used with a <i>Late Fee</i> event)',
     'code' => '$cust_main->bill();',
-    'pad'  => 20,
+    'weight'  => 60,
   },
 
-  'Apply unapplied payments and credits' => {
-    'code' => '$cust_main->apply_payments; $cust_main->apply_credits;',
-    'pad'  => 30,
+  'apply' => {
+    'name' => 'Apply unapplied payments and credits',
+    'code' => '$cust_main->apply_payments; $cust_main->apply_credits; "";',
+    'weight'  => 70,
   },
 
-  'Collect on invoices' => {
+  'collect' => {
+    'name' => 'Collect on invoices (normally only used with a <i>Late Fee</i> and <i>Generate Invoice</i> events)',
     'code' => '$cust_main->collect();',
-    'pad'  => 40,
+    'weight'  => 80,
   },
 
 ;
 
 foreach my $event ( keys %events ) {
-  print ntable( "#cccccc", 2). qq!<TR><TD><INPUT TYPE="radio" NAME="eventcode" VALUE="!.
-        encode_entities($events{$event}{code}). qq!">$event</TD>!;
-  print '<TD>'. $events{$event}{html}. '</TD>' if exists $events{$event}{html};
+  my %plandata = map { /^(\w+) (.*)$/; ($1, $2); }
+                   split(/\n/, $part_bill_event->plandata);
+  my $html = $events{$event}{html};
+  while ( $html =~ /%%%(\w+)%%%/ ) {
+    my $field = $1;
+    $html =~ s/%%%$field%%%/$plandata{$field}/;
+  }
+
+  print ntable( "#cccccc", 2).
+        qq!<TR><TD><INPUT TYPE="radio" NAME="plan_weight_eventcode" !;
+  print "CHECKED " if $event eq $part_bill_event->plan;
+  print qq!VALUE="!.  $event. ":". $events{$event}{weight}. ":".
+        encode_entities($events{$event}{code}).
+        qq!">$events{$event}{name}</TD>!;
+  print '<TD>'. $html. '</TD>' if $html;
   print qq!</TR>!;
   print '</TABLE>';
 }
@@ -121,7 +212,7 @@ print <<END;
 END
 
 print qq!<INPUT TYPE="submit" VALUE="!,
-      $hashref->{pkgpart} ? "Apply changes" : "Add invoice event",
+      $hashref->{eventpart} ? "Apply changes" : "Add invoice event",
       qq!">!;
 %>