From e975ed0585280f4cbb90b02f57114dedc43f58be Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 14 May 2004 12:25:45 +0000 Subject: add per-agent invoice templates, add per-package suspend invoice events, fix automatic creation of invoice_latex alternate templates --- httemplate/edit/part_bill_event.cgi | 60 +++++++++++++++++++++++++++++ httemplate/edit/process/part_bill_event.cgi | 5 ++- 2 files changed, 63 insertions(+), 2 deletions(-) (limited to 'httemplate') diff --git a/httemplate/edit/part_bill_event.cgi b/httemplate/edit/part_bill_event.cgi index 48ed7916b..d0fa973bf 100755 --- a/httemplate/edit/part_bill_event.cgi +++ b/httemplate/edit/part_bill_event.cgi @@ -68,6 +68,31 @@ print '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'}; + ''; +} + #this is pretty kludgy right here. tie my %events, 'Tie::IxHash', @@ -84,6 +109,18 @@ tie my %events, 'Tie::IxHash', 'code' => '$cust_main->suspend();', '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();', @@ -140,6 +177,26 @@ tie my %events, 'Tie::IxHash', 'weight' => 50, }, + 'send_agent' => { + 'name' => 'Send invoice (email/print) ', + 'code' => '$cust_bill->send(\'%%%agent_templatename%%%\', %%%agentnum%%%);', + 'html' => sub { + ' + + + + + + + + +
only for agent '. &select_agentnum(@_). '
with template + +
'; + }, + 'weight' => 50, + }, + 'send_csv_ftp' => { 'name' => 'Upload CSV invoice data to an FTP server', 'code' => '$cust_bill->send_csv( protocol => \'ftp\', @@ -188,6 +245,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}/; diff --git a/httemplate/edit/process/part_bill_event.cgi b/httemplate/edit/process/part_bill_event.cgi index e224bf634..77dcd242a 100755 --- a/httemplate/edit/process/part_bill_event.cgi +++ b/httemplate/edit/process/part_bill_event.cgi @@ -5,7 +5,7 @@ my $eventpart = $cgi->param('eventpart'); my $old = qsearchs('part_bill_event',{'eventpart'=>$eventpart}) if $eventpart; #s/days/seconds/ -$cgi->param('seconds', $cgi->param('days') * 86400 ); +$cgi->param('seconds', int( $cgi->param('days') * 86400 ) ); my $error; if ( ! $cgi->param('plan_weight_eventcode') ) { @@ -21,7 +21,8 @@ if ( ! $cgi->param('plan_weight_eventcode') ) { my $plandata = ''; while ( $eventcode =~ /%%%(\w+)%%%/ ) { my $field = $1; - my $value = $cgi->param($field); + my $value = join(', ', $cgi->param($field) ); + $cgi->param($field, $value); #in case it errors out $eventcode =~ s/%%%$field%%%/$value/; $plandata .= "$field $value\n"; } -- cgit v1.2.1