diff options
author | ivan <ivan> | 2005-06-02 09:29:56 +0000 |
---|---|---|
committer | ivan <ivan> | 2005-06-02 09:29:56 +0000 |
commit | 684a478c0f88e5bf6d1d3f32f4618089146b5709 (patch) | |
tree | 1f0c8e23048aa20e872ff10f07a134436968ac43 /httemplate/search | |
parent | 14cc10e34e277f4761be76d67d621b5a5d10a87f (diff) |
add ability to search on a date range of invoice events and then reprint or reemail (boy was that a bit more work than i expected), closes: Bug#946
Diffstat (limited to 'httemplate/search')
-rw-r--r-- | httemplate/search/cust_bill_event.cgi | 166 | ||||
-rwxr-xr-x | httemplate/search/cust_bill_event.html | 18 | ||||
-rw-r--r-- | httemplate/search/elements/search.html | 1 |
3 files changed, 124 insertions, 61 deletions
diff --git a/httemplate/search/cust_bill_event.cgi b/httemplate/search/cust_bill_event.cgi index 7c2b3a24c..253aa78ad 100644 --- a/httemplate/search/cust_bill_event.cgi +++ b/httemplate/search/cust_bill_event.cgi @@ -1,62 +1,120 @@ -<!-- mason kludge --> <% -#false laziness with view/cust_bill.cgi +my $title = $cgi->param('failed') ? 'Failed invoice events' : 'Invoice events'; -$cgi->param('beginning') =~ /^([ 0-9\-\/]{0,10})$/; -my $beginning = str2time($1) || 0; +my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi); -$cgi->param('ending') =~ /^([ 0-9\-\/]{0,10})$/; -my $ending = ( $1 ? str2time($1) : 4294880896 ) + 86399; +##tie my %hash, 'Tie::DxHash', +#my %hash = ( +# _date => { op=> '>=', value=>$beginning }, +## i wish... +## _date => { op=> '<=', value=>$ending }, +#); +#$hash{'statustext'} = { op=> '!=', value=>'' } +# if $cgi->param('failed'); -my @cust_bill_event = - sort { $a->_date <=> $b->_date } - qsearch('cust_bill_event', { - _date => { op=> '>=', value=>$beginning }, - statustext => { op=> '!=', value=>'' }, -# i wish... -# _date => { op=> '<=', value=>$ending }, - }, '', "AND _date <= $ending"); +my $where = " WHERE cust_bill_event._date >= $beginning". + " AND cust_bill_event._date <= $ending"; +$where .= " AND statustext != '' AND statustext IS NOT NULL" + if $cgi->param('failed'); + +my $sql_query = { + 'table' => 'cust_bill_event', + #'hashref' => \%hash, + 'hashref' => {}, + 'select' => join(', ', + 'cust_bill_event.*', + 'part_bill_event.event', + 'cust_bill.custnum', + 'cust_bill._date AS cust_bill_date', + map "cust_main.$_", qw(last first company) + + ), + 'extra_sql' => "$where ORDER BY _date ASC", + 'addl_from' => 'LEFT JOIN part_bill_event USING ( eventpart ) '. + 'LEFT JOIN cust_bill USING ( invnum ) '. + 'LEFT JOIN cust_main USING ( custnum ) ', +}; + +my $count_sql = "select count(*) from cust_bill_event $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/${_}invoices.cgi", + { 'message' => "Invoices re-${action}ed" }, #would be nice to show the number of them, but... + $_, #key + ), + qq!<FORM NAME="${_}form">!, + qq!<INPUT TYPE="hidden" NAME="action" VALUE="$_">!, #not used though + qq!<INPUT TYPE="hidden" NAME="beginning" VALUE="$beginning">!, + qq!<INPUT TYPE="hidden" NAME="ending" VALUE="$ending">!, + qq!<INPUT TYPE="hidden" NAME="failed" VALUE="$failed">!, + qq!</FORM>! +} qw( print_ email_ fax_ ) ); + +my $menubar = [ + 'Main menu' => $p, + 'Re-print these events' => + "javascript:print_process()", + 'Re-email these events' => + "javascript:email_process()", + ]; + +push @$menubar, 'Re-fax these events' => + "javascript:fax_process()" + if $conf->exists('hylafax'); + +%><%= include( 'elements/search.html', + 'title' => $title, + 'html_init' => $html_init, + 'menubar' => $menubar, + 'name' => 'billing events', + 'query' => $sql_query, + 'count_query' => $count_sql, + 'header' => [ qw( Event Date Status ), + #'Inv #', 'Inv Date', 'Cust #', + 'Invoice', 'Cust #', + ], + 'fields' => [ + 'event', + sub { time2str("%b %d %Y %T", $_[0]->_date) }, + sub { + #my $cust_bill_event = shift; + my $status = $_[0]->status; + $status .= ': '.$_[0]->statustext + if $_[0]->statustext; + $status; + }, + sub { + #my $cust_bill_event = shift; + 'Invoice #'. $_[0]->invnum. + ' ('. + time2str("%D", $_[0]->cust_bill_date). + ')'; + }, + sub { FS::cust_main::name($_[0]) }, -%> -<%= header('Failed billing events') %> - -<%= table() %> -<TR> - <TH>Event</TH> - <TH>Date</TH> - <TH>Status</TH> - <TH>Invoice</TH> - <TH>(bill) name</TH> - <TH>company</TH> -<% if ( defined dbdef->table('cust_main')->column('ship_last') ) { %> - <TH>(service) name</TH> - <TH>company</TH> -<% } %> -</TR> - -<% foreach my $cust_bill_event ( @cust_bill_event ) { - my $status = $cust_bill_event->status; - $status .= ': '.$cust_bill_event->statustext if $cust_bill_event->statustext; - my $cust_bill = $cust_bill_event->cust_bill; - my $cust_main = $cust_bill->cust_main; - my $invlink = "${p}view/cust_bill.cgi?". $cust_bill->invnum; - my $custlink = "${p}view/cust_main.cgi?". $cust_main->custnum; + ], + 'links' => [ + '', + '', + '', + sub { + my $part_bill_event = shift; + my $template = $part_bill_event->templatename; + $template .= '-' if $template; + [ "${p}view/cust_bill.cgi?$template", 'invnum']; + }, + [ "${p}view/cust_main.cgi?", 'custnum' ], + [ "${p}view/cust_main.cgi?", 'custnum' ], + ], + ) %> -<TR> - <TD><%= $cust_bill_event->part_bill_event->event %></TD> - <TD><%= time2str("%a %b %e %T %Y", $cust_bill_event->_date) %></TD> - <TD><%= $status %></TD> - <TD><A HREF="<%=$invlink%>">Invoice #<%= $cust_bill->invnum %> (<%= time2str("%D", $cust_bill->_date ) %>)</A></TD> - <TD><A HREF="<%=$custlink%>"><%= $cust_main->last. ', '. $cust_main->first %></A></TD> - <TD><A HREF="<%=$custlink%>"><%= $cust_main->company %></A></TD> - <% if ( defined dbdef->table('cust_main')->column('ship_last') ) { %> - <TD><A HREF="<%=$custlink%>"><%= $cust_main->ship_last. ', '. $cust_main->ship_first %></A></TD> - <TD><A HREF="<%=$custlink%>"><%= $cust_main->ship_company %></A></TD> - <% } %> -</TR> -<% } %> -</TABLE> - -</BODY></HTML> diff --git a/httemplate/search/cust_bill_event.html b/httemplate/search/cust_bill_event.html index 6de27091f..cebb3035f 100755 --- a/httemplate/search/cust_bill_event.html +++ b/httemplate/search/cust_bill_event.html @@ -1,14 +1,19 @@ -<HTML> - <HEAD> - <TITLE>Invoice event errors</TITLE> +<%= include( + '/elements/header.html', + ( $cgi->param('failed') ? 'Failed invoice events' : 'invoice events' ), + include('/elements/menubar.html', + 'Main menu' => $p, # popurl(2), + ), + + ) +%> <LINK REL="stylesheet" TYPE="text/css" HREF="../elements/calendar-win2k-2.css" TITLE="win2k-2"> <SCRIPT TYPE="text/javascript" SRC="../elements/calendar_stripped.js"></SCRIPT> <SCRIPT TYPE="text/javascript" SRC="../elements/calendar-en.js"></SCRIPT> <SCRIPT TYPE="text/javascript" SRC="../elements/calendar-setup.js"></SCRIPT> - </HEAD> - <BODY BGCOLOR="#e8e8e8"> - <H1>Invoice event errors</H1> + <FORM ACTION="cust_bill_event.cgi" METHOD="GET"> + <INPUT TYPE="hidden" NAME="failed" VALUE="<%= $cgi->param('failed') %>"> <TABLE> <!--<TR> <TD ALIGN="right">Customer type</TD> @@ -51,4 +56,3 @@ </FORM> </BODY> </HTML> - diff --git a/httemplate/search/elements/search.html b/httemplate/search/elements/search.html index 529f48f20..47d619444 100644 --- a/httemplate/search/elements/search.html +++ b/httemplate/search/elements/search.html @@ -189,6 +189,7 @@ include( '/elements/menubar.html', @menubar ) ) %> + <%= defined($opt{'html_init'}) ? $opt{'html_init'} : '' %> <% my $pager = include ( '/elements/pager.html', 'offset' => $offset, 'num_rows' => scalar(@$rows), |