fix date parsing when using international dates (package date edit), RT#8027
[freeside.git] / FS / FS / UI / Web.pm
index 148085c..821b191 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 use vars qw($DEBUG @ISA @EXPORT_OK $me);
 use Exporter;
 use FS::Conf;
+use FS::Misc::DateTime qw( parse_datetime );
 use FS::Record qw(dbdef);
 use FS::cust_main;  # are sql_balance and sql_date_balance in the right module?
 
@@ -30,7 +31,7 @@ sub parse_beginning_ending {
   if ( $cgi->param($prefix.'begin') =~ /^(\d+)$/ ) {
     $beginning = $1;
   } elsif ( $cgi->param($prefix.'beginning') =~ /^([ 0-9\-\/]{1,64})$/ ) {
-    $beginning = str2time($1) || 0;
+    $beginning = parse_datetime($1) || 0;
   }
 
   my $ending = 4294967295; #2^32-1
@@ -38,7 +39,7 @@ sub parse_beginning_ending {
     $ending = $1 - 1;
   } elsif ( $cgi->param($prefix.'ending') =~ /^([ 0-9\-\/]{1,64})$/ ) {
     #probably need an option to turn off the + 86399
-    $ending = str2time($1) + 86399;
+    $ending = parse_datetime($1) + 86399;
   }
 
   ( $beginning, $ending );
@@ -270,6 +271,7 @@ sub cust_header {
   );
   my %header2align = (
     'Cust. Status' => 'c',
+    'Cust#'        => 'r',
   );
 
   my $cust_fields;
@@ -361,6 +363,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 ".
@@ -369,21 +372,52 @@ 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;
+      warn "  $record -> $_" if $DEBUG > 1;
       $record->$_(@_);
     } else {
-      warn "  ($record unlinked)"
-        if $DEBUG > 1;
+      warn "  ($record unlinked)" if $DEBUG > 1;
       $seen_unlinked++ ? '' : '(unlinked)';
     }
   } @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