X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Fcust_event.html;h=56bf76778966b612f0b8f17187425e146ce4615a;hp=e8164c280975f1c1b7868c56703c662e11a5dc85;hb=1fc8addc56f8daf12397da568eb1ac1b27fd3984;hpb=3a02c437eadd9a39f7e56056ca987a4846650209 diff --git a/httemplate/search/cust_event.html b/httemplate/search/cust_event.html index e8164c280..56bf76778 100644 --- a/httemplate/search/cust_event.html +++ b/httemplate/search/cust_event.html @@ -1,6 +1,6 @@ -<% include( 'elements/search.html', +<& elements/search.html, 'title' => $title, - 'html_init' => $html_init, + 'html_init' => include('.init'), 'menubar' => $menubar, 'name' => 'billing events', 'query' => $sql_query, @@ -62,42 +62,46 @@ #'', FS::UI::Web::cust_styles(), ], - ) -%> +&> <%once> my $status_sub = sub { my $cust_event = shift; my $status = $cust_event->status; - $status .= ': '.$cust_event->statustext + $status .= ': '. encode_entities($cust_event->statustext) if $cust_event->statustext; my $part_event = $cust_event->part_event; - if ( $part_event->eventtable eq 'cust_bill' && $part_event->templatename ) { - my $alt_templatename = $part_event->templatename; - my $alt_link = "$alt_templatename-". $cust_event->tablenum; + if ( $part_event->eventtable eq 'cust_bill' + && ( $part_event->templatename || $part_event->option('notice_name') ) + ) + { + my $link = 'invnum='. $cust_event->tablenum; + $link .= ';template='. uri_escape($part_event->templatename) + if $part_event->templatename; + $link .= ';notice_name='. uri_escape($part_event->option('notice_name')) + if $part_event->option('notice_name'); my $conf = new FS::Conf; my $cust_bill = $cust_event->cust_X; $status .= qq{ - ( view - | view - typeset - | re-print + ( view + | view typeset + | re-print }; if ( grep { $_ ne 'POST' } $cust_bill->cust_main->invoicing_list ) { $status .= qq{ - | re-email + | re-email }; } if ( $conf->exists('hylafax') && length($cust_bill->cust_main->fax) ) { $status .= qq{ - | re-fax + | re-fax } } @@ -130,12 +134,23 @@ my $trigger_link = sub { my $pkgnum = $cust_event->tablenum; my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment [ "${p}view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#cust_pkg", 'tablenum' ]; + } elsif ( $eventtable eq 'cust_pay' ) { + [ "${p}view/$eventtable.html?paynum=", 'tablenum' ]; + } elsif ( $eventtable eq 'cust_statement' ) { + [ "${p}view/$eventtable.html?", 'tablenum' ]; + } elsif ( $eventtable eq 'cust_pay_batch' ) { + [ "${p}search/cust_pay_batch.cgi?batchnum=", 'cust_pay_batch_batchnum' ]; } else { [ "${p}view/$eventtable.cgi?", 'tablenum' ]; } }; +<%shared> +my @scalars = qw( agentnum status custnum invnum pkgnum failed ); +my @lists = qw( eventpart event_status ); +my %search; + <%init> my $curuser = $FS::CurrentUser::CurrentUser; @@ -147,61 +162,41 @@ die "access denied" || $cgi->param('invnum') =~ /^(\d+)$/ || $cgi->param('pkgnum') =~ /^(\d+)$/ ); - -my $title = $cgi->param('failed') - ? 'Failed billing events' - : 'Billing events'; - -my @search = (); - -if ( $cgi->param('agentnum') && $cgi->param('agentnum') =~ /^(\d+)$/ ) { - push @search, "cust_main.agentnum = $1"; - #my $agent = qsearchs('agent', { 'agentnum' => $1 } ); - #die "unknown agentnum $1" unless $agent; +my @statuses = $cgi->multi_param('event_status'); +my $title = 'Billing events'; +if ( $statuses[0] eq 'failed' and !defined($statuses[1]) ) { + # tweak the title if we're showing only failed events + $title = 'Failed billing events'; } -my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi); -push @search, "cust_event._date >= $beginning", - "cust_event._date <= $ending"; - -if ( $cgi->param('failed') ) { - push @search, "statustext != ''", - "statustext IS NOT NULL", - "statustext != 'N/A'"; +for my $param (@scalars) { + $search{$param} = scalar( $cgi->param($param) ) + if $cgi->param($param); } -#if ( $cgi->param('part_event.payby') =~ /^(\w+)$/ ) { -# push @search, "part_event.payby = '$1'"; -#} - -if ( $cgi->param('custnum') =~ /^(\d+)$/ ) { - push @search, "cust_main.custnum = '$1'"; -} -if ( $cgi->param('invnum') =~ /^(\d+)$/ ) { - push @search, "part_event.eventtable = 'cust_bill'", - "tablenum = '$1'"; -} -if ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) { - push @search, "part_event.eventtable = 'cust_pkg'", - "tablenum = '$1'"; +#lists +foreach my $param (@lists) { + $search{$param} = [ $cgi->param($param) ]; } -#here is the agent virtualization -push @search, $curuser->agentnums_sql( 'table' => 'cust_main' ); - -my $where = 'WHERE '. join(' AND ', @search ); - -my $join = " - JOIN part_event USING ( eventpart ) - LEFT JOIN cust_bill ON ( eventtable = 'cust_bill' AND tablenum = invnum ) - LEFT JOIN cust_pkg ON ( eventtable = 'cust_pkg' AND tablenum = pkgnum ) - LEFT JOIN cust_main ON ( ( eventtable = 'cust_main' AND tablenum = cust_main.custnum ) - OR ( eventtable = 'cust_bill' AND cust_bill.custnum = cust_main.custnum ) - OR ( eventtable = 'cust_pkg' AND cust_pkg.custnum = cust_main.custnum ) - ) -"; - #'LEFT JOIN cust_main USING ( custnum ) '; +my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi); +$search{'beginning'} = $beginning; +$search{'ending'} = $ending; + +my $where = ' WHERE '. FS::cust_event->search_sql_where( \%search ); + +my $join = FS::cust_event->join_sql() . + # warning: does not show the true service address for package events. + # the query to do that would be painfully slow. + 'LEFT JOIN cust_location bill_location '. + 'ON (cust_main.bill_locationnum = bill_location.locationnum) '. + 'LEFT JOIN cust_location ship_location '. + 'ON (cust_main.ship_locationnum = ship_location.locationnum)'. + # include link to referral in case it's in cust-fields + # (maybe we should be using FS::UI::Web::join_cust_main instead?) + 'LEFT JOIN (select refnum, referral from part_referral) AS part_referral_x '. + 'ON (cust_main.refnum = part_referral_x.refnum) '; my $sql_query = { 'table' => 'cust_event', @@ -210,11 +205,13 @@ my $sql_query = { 'part_event.*', #'cust_bill.custnum', #'cust_bill._date AS cust_bill_date', + 'cust_pay_batch.batchnum AS cust_pay_batch_batchnum', 'cust_main.custnum AS cust_main_custnum', FS::UI::Web::cust_sql_fields(), ), 'hashref' => {}, - 'extra_sql' => "$where ORDER BY _date ASC", + 'extra_sql' => $where, + 'order_by' => 'ORDER BY _date ASC', 'addl_from' => $join, }; @@ -222,48 +219,6 @@ my $count_sql = "SELECT COUNT(*) FROM cust_event $join $where"; my $conf = new FS::Conf; -my $failed = $cgi->param('failed'); - -my $html_init = join("\n", map { - ( my $action = $_ ) =~ s/_$//; - include('/elements/progress-init.html', - $_.'form', - [ 'action', 'beginning', 'ending', 'failed' ], - "../misc/${_}events.cgi", - { 'message' => "Invoices re-${action}ed" }, #would be nice to show the number of them, but... - $_, #key - ), - qq!
!, - qq!!, #not used though - qq!!, - qq!!, - qq!!, - qq!
! -} qw( print_ email_ fax_ ) ). - -''; - my $menubar = []; if ( $curuser->access_right('Resend invoices') ) { @@ -288,3 +243,46 @@ my $link_cust = sub { }; +<%def .init> +% # action is part of the target URL, don't need to pass it as a param +% foreach my $action (qw(print email fax)) { +<& /elements/progress-init.html, + $action.'_form', + [ @scalars, @lists, 'beginning', 'ending' ], + "../misc/${action}_events.cgi", + { 'message' => "Invoices re-${action}ed" }, #would be nice to show the number of them, but... + $action.'_', #key +&> +
+% foreach my $param (@scalars, 'beginning', 'ending') { + +% } +% foreach my $param (@lists) { +% foreach my $value (@{ $search{$param} }) { + +% } +% } +
+% } # foreach $action + +