| Action | ';
#print ntable();
#this is pretty kludgy right here.
tie my %events, 'Tie::IxHash',
  'fee' => {
    'name'   => 'Late fee',
    'code'   => '$cust_main->charge( %%%charge%%%, \'%%%reason%%%\' );',
    'html'   => 
      'Amount '.
      ' 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 Business::OnlinePayment realtime gateway',
    'code' => '$cust_bill->realtime_card();',
    'weight' => 30,
  },
  'realtime-check' => {
    'name' => 'Run check with a Business::OnlinePayment realtime gateway',
    'code' => '$cust_bill->realtime_ach();',
    'weight' => 30,
  },
  'realtime-card-cybercash' => {
    'name' => '(deprecated) Run card with CyberCash CashRegister realtime gateway',
    'code' => '$cust_bill->realtime_card_cybercash();',
    'weight' => 30,
  },
  'realtime-lec' => {
    'name' => 'Run phone bill ("LEC") billing with a Business::OnlinePayment 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,
  },
  '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' =>
        '',
    'weight' => 50,
  },
  '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' =>
        '',
    'weight' => 50,
  },
  'bill' => {
    'name' => 'Generate invoices (normally only used with a Late Fee event)',
    'code' => '$cust_main->bill();',
    'weight'  => 60,
  },
  'apply' => {
    'name' => 'Apply unapplied payments and credits',
    'code' => '$cust_main->apply_payments; $cust_main->apply_credits; "";',
    'weight'  => 70,
  },
  'collect' => {
    'name' => 'Collect on invoices (normally only used with a Late Fee and Generate Invoice events)',
    'code' => '$cust_main->collect();',
    'weight'  => 80,
  },
;
foreach my $event ( keys %events ) {
  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!
 |