fix (part of) 3.x performance regression on customers with tons of invoices, RT#29646...
authorIvan Kohler <ivan@freeside.biz>
Thu, 19 Jun 2014 01:13:21 +0000 (18:13 -0700)
committerIvan Kohler <ivan@freeside.biz>
Thu, 19 Jun 2014 01:13:21 +0000 (18:13 -0700)
FS/FS/Template_Mixin.pm
FS/FS/cust_bill.pm

index 23ee6ba..1c373f9 100644 (file)
@@ -2,7 +2,9 @@ package FS::Template_Mixin;
 
 use strict;
 use vars qw( $DEBUG $me
-             $money_char );
+             $money_char
+             $date_format
+           );
              # but NOT $conf
 use vars qw( $invoice_lines @buf ); #yuck
 use List::Util qw(sum);
@@ -26,7 +28,8 @@ $DEBUG = 0;
 $me = '[FS::Template_Mixin]';
 FS::UID->install_callback( sub { 
   my $conf = new FS::Conf; #global
-  $money_char       = $conf->config('money_char')       || '$';  
+  $money_char  = $conf->config('money_char')  || '$';  
+  $date_format = $conf->config('date_format') || '%x'; #/YY
 } );
 
 =item conf [ MODE ]
@@ -1799,7 +1802,8 @@ sub credit_balance_msg {
 
 =item _date_pretty
 
-Returns a string with the date, for example: "3/20/2008"
+Returns a string with the date, for example: "3/20/2008", localized for the
+customer.  Use _date_pretty_unlocalized for non-end-customer display use.
 
 =cut
 
@@ -1808,6 +1812,18 @@ sub _date_pretty {
   $self->time2str_local('short', $self->_date);
 }
 
+=item _date_pretty_unlocalized
+
+Returns a string with the date, for example: "3/20/2008", in the format
+configured for the back-office.  Use _date_pretty for end-customer display use.
+
+=cut
+
+sub _date_pretty_unlocalized {
+  my $self = shift;
+  $self->time2str($date_format, $self->_date);
+}
+
 =item _items_sections OPTIONS
 
 Generate section information for all items appearing on this invoice.
index 3113c20..31a749c 100644 (file)
@@ -2404,9 +2404,12 @@ Returns a string with the invoice number and date, for example:
 
 =cut
 
+#note: this uses _date_pretty_unlocalized because _date_pretty is too expensive
+# for backend use (and also does the wrong thing, localizing for end customer
+# instead of backoffice configured date format)
 sub invnum_date_pretty {
   my $self = shift;
-  $self->mt('Invoice #'). $self->invnum. ' ('. $self->_date_pretty. ')';
+  $self->mt('Invoice #'). $self->invnum. ' ('. $self->_date_pretty_unlocalized. ')';
 }
 
 #sub _items_extra_usage_sections {