X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fpart_bill_event.cgi;h=57eedbc71065d1bb7f17c349572815495ee4ab8e;hb=c738a3c4923774b64960aa87fa58bd0751487edb;hp=018fc94a4d065d701d97ba734b554fae0d126c3d;hpb=543ed3f877829e4335eda48d7198d2f92d03545e;p=freeside.git diff --git a/httemplate/edit/part_bill_event.cgi b/httemplate/edit/part_bill_event.cgi index 018fc94a4..57eedbc71 100755 --- a/httemplate/edit/part_bill_event.cgi +++ b/httemplate/edit/part_bill_event.cgi @@ -1,4 +1,4 @@ - + <% if ( $cgi->param('eventpart') && $cgi->param('eventpart') =~ /^(\d+)$/ ) { @@ -20,54 +20,121 @@ if ( $query && $query =~ /^(\d+)$/ ) { } else { $part_bill_event ||= new FS::part_bill_event {}; } -$action ||= $part_bill_event->pkgpart ? 'Edit' : 'Add'; +$action ||= $part_bill_event->eventpart ? 'Edit' : 'Add'; my $hashref = $part_bill_event->hashref; -print header("$action Invoice Event Definition", menubar( - 'Main Menu' => popurl(2), - 'View all invoice events' => popurl(2). 'browse/part_bill_event.cgi', -)); +%> -print qq!Error: !, $cgi->param('error'), - "" - if $cgi->param('error'); +<%= include('/elements/header.html', + "$action Invoice Event Definition", + menubar( + 'Main Menu' => popurl(2), + 'View all invoice events' => popurl(2). 'browse/part_bill_event.cgi', + ) + ) +%> -print '
'. - ''; -print "Invoice Event #", $hashref->{eventpart} ? $hashref->{eventpart} : "(NEW)"; +<% if ( $cgi->param('error') ) { %> + Error: <%= $cgi->param('error') %> +<% } %> -print ntable("#cccccc",2), <Payby +Invoice Event #<%= $hashref->{eventpart} ? $hashref->{eventpart} : "(NEW)" %> -for (qw(CARD BILL COMP)) { - print qq!"; - } else { - print ">$_"; - } -} +<%= ntable("#cccccc",2) %> -my $days = $hashref->{seconds}/86400; + + Event name + + -print < -Event -After days -END + + For + + customers + + + + <% my $days = $hashref->{seconds}/86400; %> + + + After + days + + + + Test event + + {disabled} eq "Y"; -print '>'; -print ''; + -print 'Action'; + <% } %> + + + + + + + + Disabled + + {disabled} eq 'Y' ? ' CHECKED' : '' %>> + + + + + 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', @@ -84,6 +151,24 @@ tie my %events, 'Tie::IxHash', '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();', @@ -108,9 +193,15 @@ tie my %events, 'Tie::IxHash', 'weight' => 30, }, - 'realtime-card-cybercash' => { - 'name' => '(deprecated) Run card with CyberCash CashRegister realtime gateway', - 'code' => '$cust_bill->realtime_card_cybercash();', + '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, }, @@ -121,11 +212,155 @@ tie my %events, 'Tie::IxHash', }, 'send' => { - 'name' => 'Send invoice (email/print)', + '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 { + ' + + + + + + + + + + + + +
only for agent(s) '. &select_agentnum(@_). '
with template + +
email From: + +
'; + }, + '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' => + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + ''. + '
Format ("default" or "billco"): '. + ''. + ''. + '
FTP server: '. + '
FTP username: '. + ''. + '
FTP password: '. + ''. + '
FTP directory: '. + '
', + '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 = + ''. + ''. + ''. + ''. + ''. + + ''. + ''. + ''. + ''. + ''. + '
Format: '. + ''. + '
For destination: '. + ''. + '
if balance (this invoice and previous) over '. + "$money_char ". + ''. + '
Individual per-agent spools? {'spoolagent_spools'} ? 'CHECKED' : '' ). + '>'. + '
'; + + $html; + }, + 'weight' => 50, + }, + 'bill' => { 'name' => 'Generate invoices (normally only used with a Late Fee event)', 'code' => '$cust_main->bill();', @@ -150,6 +385,9 @@ 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}/;