%doc>
Example:
<& /elements/xmlhttp.html,
  url => $p . 'misc/xmlhttp-reason-hint.html',
  subs => [ 'get_hint' ]
&>
Currently will provide hints for:
1. suspension events (new-style reconnection fees, notification)
2. unsuspend_pkgpart package info (older reconnection fees)
3. crediting for unused time
%doc>
<%init>
my $sub = $cgi->param('sub');
my ($reasonnum) = $cgi->param('arg');
# arg is a reasonnum
my $conf = FS::Conf->new;
my $error = '';
my @hints;
if ( $reasonnum =~ /^\d+$/ ) {
  my $reason = FS::reason->by_key($reasonnum);
  if ( $reason ) {
    # 1.
    if ( $reason->feepart ) { # XXX
      my $part_fee = FS::part_fee->by_key($reason->feepart);
      my $when = '';
      if ( $reason->fee_hold ) {
        $when = 'on the next bill after ';
      } else {
        $when = 'upon ';
      }
      if ( $reason->fee_on_unsuspend ) {
        $when .= 'unsuspension';
      } else {
        $when .= 'suspension';
      }
      my $fee_amt = $part_fee->explanation;
      push @hints, mt('A fee of [_1] will be charged [_2].',
                      $fee_amt, $when);
    }
    # 2.
    if ( $reason->unsuspend_pkgpart ) {
      my $part_pkg = FS::part_pkg->by_key($reason->unsuspend_pkgpart);
      if ( $part_pkg ) {
        if ( $part_pkg->option('setup_fee',1) > 0 and 
             $part_pkg->option('recur_fee',1) == 0 ) {
          # the usual case
          push @hints,
            mt('A [_1] unsuspension fee will apply.',
               ($conf->config('money_char') || '$') .
               sprintf('%.2f', $part_pkg->option('setup_fee'))
               );
        } else {
          # oddball cases--not really supported
          push @hints,
            mt('An unsuspension package will apply: [_1]',
              $part_pkg->price_info
              );
        }
      } else { #no $part_pkg
        push @hints,
          'Unsuspend pkg #'.$reason->unsuspend_pkgpart.
          ' not found.';
      }
    }
    # 3.
    if ( $reason->unused_credit ) {
      push @hints, mt('The customer will be credited for unused time.');
    }
  } else {
    warn "reasonnum $reasonnum not found; returning no hints\n";
  }
} else {
  warn "reason-hint arg '$reasonnum' not a valid reasonnum\n";
}
%init>
<% join('
', @hints) %>