X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FUI%2FWeb.pm;h=2d00d2c146337fad4604f1585342a04a3162dbcc;hb=fb1ac8b894c138a3a04c1d5941c969c99cd3d3f4;hp=5e987429ca3b8bbb6dab931f3c47ada821713a48;hpb=c28d23aeb9688c96f0b0ef9150971d7a7e3fe087;p=freeside.git diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index 5e987429c..2d00d2c14 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -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 ); @@ -362,6 +363,7 @@ setting is supplied, the cust-fields configuration value. =cut + sub cust_fields { my $record = shift; warn "FS::UI::Web::cust_fields called for $record ". @@ -370,8 +372,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 +386,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 @@ -459,6 +494,7 @@ use JSON; use FS::UID qw(getotaker); use FS::Record qw(qsearchs); use FS::queue; +use FS::CGI qw(rooturl); $DEBUG = 0; @@ -530,6 +566,7 @@ sub start_job { } } $param{CurrentUser} = getotaker(); + $param{RootURL} = rooturl($self->{cgi}->self_url); warn "FS::UI::Web::start_job\n". join('', map { if ( ref($param{$_}) ) { @@ -585,13 +622,15 @@ sub job_status { } my @return; - if ( $job && $job->status ne 'failed' ) { + if ( $job && $job->status ne 'failed' && $job->status ne 'done' ) { my ($progress, $action) = split ',', $job->statustext, 2; $action ||= 'Server processing job'; @return = ( 'progress', $progress, $action ); } elsif ( !$job ) { #handle job gone case : job successful # so close popup, redirect parent window... @return = ( 'complete' ); + } elsif ( $job->status eq 'done' ) { + @return = ( 'done', $job->statustext, '' ); } else { @return = ( 'error', $job ? $job->statustext : $jobnum ); }