Action |
<%
#print ntable();
sub select_pkgpart {
my $label = shift;
my $plandata = shift;
my %selected = map { $_=>1 } split(/,\s*/, $plandata->{$label});
qq(';
}
sub select_agentnum {
my $plandata = shift;
#my $agentnum = $plandata->{'agentnum'};
my %agentnums = map { $_=>1 } split(/,\s*/, $plandata->{'agentnum'});
'';
}
my $conf = new FS::Conf;
my $money_char = $conf->config('money_char') || '$';
#this is pretty kludgy right here.
tie my %events, 'Tie::IxHash',
'fee' => {
'name' => 'Late fee (flat)',
'code' => '$cust_main->charge( %%%charge%%%, \'%%%reason%%%\' );',
'html' =>
'Amount '.
' Reason ',
'weight' => 10,
},
'fee_percent' => {
'name' => 'Late fee (percentage)',
'code' => '$cust_main->charge( sprintf(\'%.2f\', $cust_bill->owed * %%%percent%%% / 100 ), \'%%%reason%%%\' );',
'html' =>
'Percent %'.
' Reason ',
'weight' => 10,
},
'suspend' => {
'name' => 'Suspend',
'code' => '$cust_main->suspend();',
'weight' => 10,
},
'suspend-if-balance' => {
'name' => 'Suspend if balance (this invoice and previous) over',
'code' => '$cust_bill->cust_suspend_if_balance_over( %%%balanceover%%% );',
'html' => " $money_char ". '',
'weight' => 10,
},
'suspend-if-pkgpart' => {
'name' => 'Suspend packages',
'code' => '$cust_main->suspend_if_pkgpart(%%%if_pkgpart%%%);',
'html' => sub { &select_pkgpart('if_pkgpart', @_) },
'weight' => 10,
},
'suspend-unless-pkgpart' => {
'name' => 'Suspend packages except',
'code' => '$cust_main->suspend_unless_pkgpart(%%%unless_pkgpart%%%);',
'html' => sub { &select_pkgpart('unless_pkgpart', @_) },
'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-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/fax)',
'code' => '$cust_bill->send();',
'weight' => 50,
},
'send_alternate' => {
'name' => 'Send invoice (email/print/fax) with alternate template',
'code' => '$cust_bill->send(\'%%%templatename%%%\');',
'html' =>
'',
'weight' => 50,
},
'send_if_newest' => {
'name' => 'Send invoice (email/print/fax) with alternate template, if it is still the newest invoice (useful for late notices - set to 31 days or later)',
'code' => '$cust_bill->send_if_newest(\'%%%if_newest_templatename%%%\');',
'html' =>
'',
'weight' => 50,
},
'send_agent' => {
'name' => 'Send invoice (email/print/fax) ',
'code' => '$cust_bill->send(\'%%%agent_templatename%%%\', [ %%%agentnum%%% ], \'%%%agent_invoice_from%%%\');',
'html' => sub {
'';
},
'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%%%\',
\'format\' => \'%%%ftpformat%%%\',
);',
'html' =>
'',
'weight' => 50,
},
'spool_csv' => {
'name' => 'Spool CSV invoice data',
'code' => '$cust_bill->spool_csv(
\'format\' => \'%%%spoolformat%%%\',
\'dest\' => \'%%%spooldest%%%\',
\'balanceover\' => \'%%%spoolbalanceover%%%\',
\'agent_spools\' => \'%%%spoolagent_spools%%%\',
);',
'html' => sub {
my $plandata = shift;
my $html =
'';
$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};
if ( ref($html) eq 'CODE' ) {
$html = &{$html}(\%plandata);
}
while ( $html =~ /%%%(\w+)%%%/ ) {
my $field = $1;
$html =~ s/%%%$field%%%/$plandata{$field}/;
}
print ntable( "#cccccc", 2).
qq! |