promised payment date for invoices, #13554
[freeside.git] / httemplate / search / cust_bill.html
index 2f6bd9c..813f9b8 100755 (executable)
@@ -1,5 +1,5 @@
-<% include( 'elements/search.html',
-                 'title'       => 'Invoice Search Results',
+<& elements/search.html,
+                 'title'       => emt('Invoice Search Results'),
                  'html_init'   => $html_init,
                  'menubar'     => $menubar,
                  'name'        => 'invoices',
@@ -7,11 +7,11 @@
                  'count_query' => $count_query,
                  'count_addl'  => $count_addl,
                  'redirect'    => $link,
-                 'header'      => [ 'Invoice #',
-                                    'Balance',
-                                    'Net Amount',
-                                    'Gross Amount',
-                                    'Date',
+                 'header'      => [ emt('Invoice #'),
+                                    emt('Balance'),
+                                    emt('Net Amount'),
+                                    emt('Gross Amount'),
+                                    emt('Date'),
                                     FS::UI::Web::cust_header(),
                                   ],
                  'fields'      => [
                    sub { time2str('%b %d %Y', shift->_date ) },
                    \&FS::UI::Web::cust_fields,
                  ],
-                 'align' => 'rrrr'.FS::UI::Web::cust_aligns(),
+                 'sort_fields' => [
+                   'COALESCE( agent_invid, invnum )',
+                   FS::cust_bill->owed_sql,
+                   FS::cust_bill->net_sql,
+                   'charged',
+                   '_date',
+                 ],
+                 'align' => 'rrrrl'.FS::UI::Web::cust_aligns(),
                  'links' => [
                    $link,
                    $link,
                               '',
                               FS::UI::Web::cust_styles(),
                             ],
-
-  
-      )
-%>
+&>
 <%init>
 
 die "access denied"
@@ -64,7 +68,6 @@ my $agentnums_sql = $FS::CurrentUser::CurrentUser->agentnums_sql;
 
 my( $count_query, $sql_query );
 my $count_addl = '';
-#my $distinct = '';
 my %search;
 
 if ( $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/ ) {
@@ -75,7 +78,6 @@ if ( $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/ ) {
   $count_query = "SELECT COUNT(*) FROM cust_bill $join_cust_main $where";
 
   $sql_query = {
-    #'select'    => '*',
     'table'     => 'cust_bill',
     'addl_from' => $join_cust_main,
     'hashref'   => {},
@@ -91,6 +93,10 @@ if ( $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/ ) {
     $search{'agentnum'} = $1;
   }
 
+  if ( $cgi->param('custnum') =~ /^(\d+)$/ ) {
+    $search{'custnum'} = $1;
+  }
+
   # begin/end/beginning/ending
   my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, '');
   $search{'_date'} = [ $beginning, $ending ]
@@ -123,7 +129,34 @@ if ( $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/ ) {
     $count_query = "SELECT COUNT(DISTINCT cust_bill.custnum), 'N/A', 'N/A'";
   }
 
-  my $extra_sql = ' WHERE '. FS::cust_bill->search_sql( \%search );
+  # promised date
+  my $start_of_day = timelocal(0, 0, 0, (localtime(time))[3,4,5]);
+  foreach ( $cgi->param('promised_date') ) {
+    # only if at least one box is checked
+    $search{promised_date} ||= [ $start_of_day, $start_of_day, 0 ];
+    if ($_ eq 'past') {
+      # accept everything before today
+      $search{promised_date}[0] = 0;
+    }
+    elsif ( $_ eq 'future' ) {
+      # accept everything after today
+      $search{promised_date}[1] = 4294967295;
+    }
+    elsif ( $_ eq 'null' ) {
+      # accept nulls
+      $search{promised_date}[2] = 1;
+    }
+  }
+
+  my $payby_sql = '';
+  $payby_sql = ' AND (' . 
+    join(' OR ', map { "cust_main.payby = '$_'" } $cgi->param('payby') ) . 
+    ')' 
+    if $cgi->param('payby');
+
+  my $extra_sql = ' WHERE '.
+    FS::cust_bill->search_sql_where( \%search ).
+    $payby_sql;
 
   unless ( $count_query ) {
     $count_query = 'SELECT COUNT(*), '. join(', ',
@@ -144,7 +177,6 @@ if ( $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/ ) {
     'table'     => 'cust_bill',
     'addl_from' => $join_cust_main,
     'hashref'   => {},
-    #'select'    => "$distinct ". join(', ',
     'select'    => join(', ',
                      'cust_bill.*',
                      #( map "cust_main.$_", qw(custnum last first company) ),
@@ -192,31 +224,31 @@ my $html_init = join("\n", map {
 '<SCRIPT TYPE="text/javascript">
 
 function confirm_print_process() {
-  if ( ! confirm("Are you sure you want to reprint these invoices?") ) {
+  if ( ! confirm('.js_mt("Are you sure you want to reprint these invoices?").') ) {
     return;
   }
   print_process();
 }
 function confirm_email_process() {
-  if ( ! confirm("Are you sure you want to re-email these invoices?") ) {
+  if ( ! confirm('.js_mt("Are you sure you want to re-email these invoices?").') ) {
     return;
   }
   email_process();
 }
 function confirm_fax_process() {
-  if ( ! confirm("Are you sure you want to re-fax these invoices?") ) {
+  if ( ! confirm('.js_mt("Are you sure you want to re-fax these invoices?").') ) {
     return;
   }
   fax_process();
 }
 function confirm_ftp_process() {
-  if ( ! confirm("Are you sure you want to re-FTP these invoices?") ) {
+  if ( ! confirm('.js_mt("Are you sure you want to re-FTP these invoices?").') ) {
     return;
   }
   ftp_process();
 }
 function confirm_spool_process() {
-  if ( ! confirm("Are you sure you want to re-spool these invoices?") ) {
+  if ( ! confirm('.js_mt("Are you sure you want to re-spool these invoices?").') ) {
     return;
   }
   spool_process();
@@ -228,20 +260,20 @@ my $menubar = [];
 
 if ( $FS::CurrentUser::CurrentUser->access_right('Resend invoices') ) {
 
-  push @$menubar, 'Print these invoices' =>
+  push @$menubar, emt('Print these invoices') =>
                     "javascript:confirm_print_process()",
-                  'Email these invoices' =>
+                  emt('Email these invoices') =>
                     "javascript:confirm_email_process()";
 
-  push @$menubar, 'Fax these invoices' =>
+  push @$menubar, emt('Fax these invoices') =>
                     "javascript:confirm_fax_process()"
     if $conf->exists('hylafax');
 
-  push @$menubar, 'FTP these invoices' =>
+  push @$menubar, emt('FTP these invoices') =>
                     "javascript:confirm_ftp_process()"
     if $conf->exists('cust_bill-ftpformat');
 
-  push @$menubar, 'Spool these invoices' =>
+  push @$menubar, emt('Spool these invoices') =>
                     "javascript:confirm_spool_process()"
     if $conf->exists('cust_bill-spoolformat');