<%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 <%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"; } <% join('
', @hints) %>