diff options
| author | mark <mark> | 2010-04-01 04:43:55 +0000 | 
|---|---|---|
| committer | mark <mark> | 2010-04-01 04:43:55 +0000 | 
| commit | 35cff72e48d004b309409cac03e667463a558022 (patch) | |
| tree | a8118d3d1ae4fb5e69dc0aa1c989ccc26cbf9122 | |
| parent | 65f0f73df04de553919ee50145376955da20b315 (diff) | |
RT#866: links to process payments from aging report
| -rw-r--r-- | FS/FS/UI/Web.pm | 36 | ||||
| -rw-r--r-- | httemplate/search/elements/cust_main_dayranges.html | 32 | ||||
| -rw-r--r-- | httemplate/search/elements/search-html.html | 6 | ||||
| -rw-r--r-- | httemplate/search/elements/search.html | 30 | ||||
| -rwxr-xr-x | httemplate/search/report_receivables.cgi | 1 | 
5 files changed, 93 insertions, 12 deletions
| diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index 5e987429c..c9264a044 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -362,6 +362,7 @@ setting is supplied, the <B>cust-fields</B> configuration value.  =cut +  sub cust_fields {    my $record = shift;    warn "FS::UI::Web::cust_fields called for $record ". @@ -370,8 +371,9 @@ sub cust_fields {    #cust_header(@_) unless @cust_fields; #now need to cache to keep cust_fields    #                                     #override incase we were passed as a sub - +      my $seen_unlinked = 0; +    map {       if ( $record->custnum ) {        warn "  $record -> $_" if $DEBUG > 1; @@ -383,6 +385,38 @@ sub cust_fields {    } @cust_fields;  } +=item cust_fields_subs + +Returns an array of subroutine references for returning customer field values. +This is similar to cust_fields, but returns each field's sub as a distinct  +element. + +=cut + +sub cust_fields_subs { +  my $unlinked_warn = 0; +  return map {  +    my $f = $_; +    if( $unlinked_warn++ ) { +      sub { +        my $record = shift; +        if( $record->custnum ) { +          $record->$f(@_); +        } +        else { +          '(unlinked)' +        }; +      } +    }  +    else { +      sub { +        my $record = shift; +        $record->$f(@_) if $record->custnum; +      } +    } +  } @cust_fields; +} +  =item cust_colors  Returns an array of subroutine references (or empty strings) for returning diff --git a/httemplate/search/elements/cust_main_dayranges.html b/httemplate/search/elements/cust_main_dayranges.html index f75927855..6bfe10e85 100644 --- a/httemplate/search/elements/cust_main_dayranges.html +++ b/httemplate/search/elements/cust_main_dayranges.html @@ -18,8 +18,9 @@ Example:                   'name'        => 'customers',                   'query'       => $sql_query,                   'count_query' => $count_sql, -                 'header'      => [ +                 'header'      => [                                       FS::UI::Web::cust_header(), +                                    @pay_head,                                      '0-30',                                      '30-60',                                      '60-90', @@ -31,8 +32,9 @@ Example:                                      ( map '',                                            ( 1 ..                                               scalar(FS::UI::Web::cust_header()-1) -                                          ) +                                          ), @pay_labels                                      ), +                                                                          sprintf( $money_char.'%.2f',                                               $row->{'rangecol_0_30'} ),                                      sprintf( $money_char.'%.2f', @@ -45,7 +47,8 @@ Example:                                               $row->{'rangecol_0_0'} ),                                    ],                   'fields'      => [ -                                    \&FS::UI::Web::cust_fields, +                                    FS::UI::Web::cust_fields_subs(), +                                    @pay_labels,                                      format_rangecol('0_30'),                                      format_rangecol('30_60'),                                      format_rangecol('60_90'), @@ -56,6 +59,7 @@ Example:                                      ( map { $_ ne 'Cust. Status' ? $clink : '' }                                            FS::UI::Web::cust_header()                                      ), +                                    @pay_links,                                      '',                                      '',                                      '', @@ -67,13 +71,17 @@ Example:                   #'size'        => [ '', '', '-1', '-1', '', '', '', '',  '', ],                   #'style'       => [ '', '',  'b',  'b', '', '', '', '', 'b', ],                   'size'        => [ ( map '', FS::UI::Web::cust_header() ), +                                    ( map '', @pay_labels ),                                      #'-1', '', '', '', '',  '', ], -                                    '', '', '', '',  '', ], +                                    '', '', '', '', '',  '', ],                   'style'       => [ FS::UI::Web::cust_styles(), +                                    ( map '', @pay_labels ),                                      #'b', '', '', '', '', 'b', ],                                      '', '', '', '', 'b', ],                   'color'       => [                                      FS::UI::Web::cust_colors(), +                                    ( map '', @pay_labels ), +                                    '',                                      '',                                      '',                                      '', @@ -166,6 +174,7 @@ my $sql_query = {                     $range_cols,                     $packages_cols,                     FS::UI::Web::cust_sql_fields(), +                   'payby',                   ),    'extra_sql' => $where,    'order_by'  => "order by coalesce(lower(company), ''), lower(last)", @@ -182,10 +191,25 @@ my $row = $total_sth->fetchrow_hashref();  my $clink = [ "${p}view/cust_main.cgi?", 'custnum' ]; +my (@pay_head, @pay_labels, @pay_links); + +if($opt{'payment_links'} && $curuser->access_right('Process payment')) { +  @pay_head = ({ label => 'Process', nodownload => 1, colspan => 2 }, +                { nodownload => 1 }); + +  @pay_labels = (map { my ($payby,$label) = @$_;  +                        sub {($payby eq $_[0]->payby) ? "<b>$label</b>" : $label} +                     } ([CARD => 'Card'], [CHEK => 'ACH']) ); + +  @pay_links = (map { [ "${p}misc/payment.cgi?payby=$_;custnum=", 'custnum' ] } +                         'CARD', 'CHEK' ); +} +  </%init>  <%once>  my $conf = new FS::Conf; +my $curuser = $FS::CurrentUser::CurrentUser;  my $money_char = $conf->config('money_char') || '$'; diff --git a/httemplate/search/elements/search-html.html b/httemplate/search/elements/search-html.html index 417565d46..37178dcc2 100644 --- a/httemplate/search/elements/search-html.html +++ b/httemplate/search/elements/search-html.html @@ -177,8 +177,13 @@                  <TR>  %                 my $h2 = 0; +%                 my $colspan = 0;  %                 foreach my $header ( @{ $opt{header} } ) {  +%                   $colspan-- if $colspan > 0; +%                   next if $colspan; +%  %                   my $label = ref($header) ? $header->{label} : $header; +%                   $colspan = ref($header) ? $header->{colspan} : 0;  %                   my $rowspan = 1;  %                   my $style = '';  %                   if ( $opt{header2} ) { @@ -193,6 +198,7 @@                      <TH CLASS   = "grid"                          BGCOLOR = "#cccccc"                          ROWSPAN = "<% $rowspan %>" +                        <% $colspan ? 'COLSPAN = "'.$colspan.'"' : '' %>                          <% $style %>                      > diff --git a/httemplate/search/elements/search.html b/httemplate/search/elements/search.html index 4bfe8b091..1312cac41 100644 --- a/httemplate/search/elements/search.html +++ b/httemplate/search/elements/search.html @@ -194,6 +194,9 @@ my(%opt) = @_;  my $curuser = $FS::CurrentUser::CurrentUser; +my $type = $cgi->param('_type') =~ /^(csv|\w*\.xls|select|html(-print)?)$/ +           ? $1 : 'html' ; +  my %align = (    'l' => 'left',    'r' => 'right', @@ -204,6 +207,22 @@ my %align = (  $opt{align} = [ map $align{$_}, split(//, $opt{align}) ],    unless !$opt{align} || ref($opt{align}); +if($type =~ /csv|xls/) { +  my $h = $opt{'header'}; +  my @del; +  my $i = 0; +  do { +    if( ref($h->[$i]) and exists($h->[$i]->{'nodownload'}) ) { +      splice(@{$opt{$_}}, $i, 1) foreach +        qw(header footer fields links link_onclicks +           align color size style cell_style xls_format); +    } +    else { +      $i++; +    } +  } while ( exists($h->[$i]) ); +} +  $opt{disable_download} = 0    if $opt{disable_download} && $curuser->access_right('Configuration download'); @@ -291,25 +310,22 @@ if ( $opt{'disableable'} ) {    if ( $cgi->param('showdisabled') ) {      $cgi->param('showdisabled', 0);      $opt{'html_posttotal'} .= -      '( <a href="'. $cgi->self_url. qq!">hide disabled $items</a> )!; +      '( <a href="'. $cgi->self_url. qq!">hide disabled $items</a> )!; #"      $cgi->param('showdisabled', 1);    } else {      $cgi->param('showdisabled', 1);      $opt{'html_posttotal'} .= -      '( <a href="'. $cgi->self_url. qq!">show disabled $items</a> )!; +      '( <a href="'. $cgi->self_url. qq!">show disabled $items</a> )!; #"      $cgi->param('showdisabled', 0);    }  } -my $type = $cgi->param('_type') =~ /^(csv|\w*\.xls|select|html(-print)?)$/ -           ? $1 : 'html'; -  my $limit = '';  my($confmax, $maxrecords, $offset ); -unless ( $type =~ /^(csv|\w*\.xls)$/ ) { - +if ( !$type =~ /^(csv|\w*.xls)$/) { +# html mode    unless (exists($opt{count_query}) && length($opt{count_query})) {      ( $opt{count_query} = $opt{query} ) =~        s/^\s*SELECT\s*(.*?)\s+FROM\s/SELECT COUNT(*) FROM /i; #silly vim:/ diff --git a/httemplate/search/report_receivables.cgi b/httemplate/search/report_receivables.cgi index 53261849a..73ebee49d 100755 --- a/httemplate/search/report_receivables.cgi +++ b/httemplate/search/report_receivables.cgi @@ -1,6 +1,7 @@  <% include( 'elements/cust_main_dayranges.html',                   'title'       => 'Accounts Receivable Aging Summary',                   'range_sub'   => \&balance, +                 'payment_links' => 1,            )  %>  <%init> | 
