fix date parsing when using international dates (package date edit), RT#8027
[freeside.git] / httemplate / search / elements / cust_main_dayranges.html
index cc01492..b3f1a2e 100644 (file)
@@ -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,
                                     '',
                                     '',
                                     '',
@@ -63,17 +67,23 @@ Example:
                                     '',
                                   ],
                  #'align'       => 'rlccrrrrr',
-                 'align'       => FS::UI::Web::cust_aligns(). 'rrrrr',
+                 'align'       => FS::UI::Web::cust_aligns(). 
+                                  ('c' x @pay_labels).
+                                   'rrrrr',
                  #'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 ),
+                                    '',
                                     '',
                                     '',
                                     '',
@@ -98,8 +108,14 @@ my $ranges = $opt{'ranges'} ? delete($opt{'ranges'}) : [
 
 my $range_sub = delete($opt{'range_sub'}); #or die
 
+my $offset = 0;
+if($cgi->param('as_of')) {
+  $offset = int((time - parse_datetime($cgi->param('as_of'))) / 86400);
+  $opt{'title'} .= ' ('.$cgi->param('as_of').')' if $offset > 0;
+}
+
 #my $range_cols = join(',', map &{$range_sub}( @$_ ), @ranges );
-my $range_cols = join(',', map call_range_sub($range_sub, @$_ ), @$ranges );
+my $range_cols = join(',', map call_range_sub($range_sub, @$_, 'offset' => $offset ), @$ranges );
 
 my $select_count_pkgs = FS::cust_main->select_count_pkgs_sql;
 
@@ -119,14 +135,14 @@ END
 my @where = ();
 
 unless ( $cgi->param('all_customers') ) {
-
+# Exclude entire cust_main records where the balance is >0
   my $days = 0;
   if ( $cgi->param('days') =~ /^\s*(\d+)\s*$/ ) {
     $days = $1;
   }
 
   push @where,
-    call_range_sub($range_sub, $days, 0, 'no_as'=>1). ' > 0'; # != 0';
+    call_range_sub($range_sub, $days + $offset, 0, 'no_as'=>1). ' > 0'; # != 0';
 }
 
 if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) {
@@ -160,6 +176,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)",
@@ -167,7 +184,7 @@ my $sql_query = {
 
 my $total_sql =
   "SELECT ".
-      join(',', map call_range_sub( $range_sub, @$_, 'sum'=>1 ), @$ranges).
+      join(',', map call_range_sub( $range_sub, @$_, 'offset' => $offset, 'sum'=>1 ), @$ranges).
     " FROM cust_main $where";
 
 my $total_sth = dbh->prepare($total_sql) or die dbh->errstr;
@@ -176,10 +193,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') || '$';
 
@@ -203,7 +235,7 @@ sub call_range_sub {
 
   my $as = $opt{'no_as'} ? '' : " AS rangecol_${start}_$end";
 
-  my $sql = &{$range_sub}( $start, $end ); #%opt?
+  my $sql = &{$range_sub}( $start, $end, $opt{'offset'} ); #%opt?
 
   $sql = "SUM($sql)" if $opt{'sum'};