X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FUI%2FWeb.pm;h=0e54aa26f861f205788e0814b18521b2faa5ede8;hb=d07c72046444319e0811c6a00b504885da091992;hp=e13869265ba4481fedba28d23125f1066ee7d997;hpb=8dd41f364aaba88969dfd0908feb22709025e7f6;p=freeside.git diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index e13869265..0e54aa26f 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -15,11 +15,13 @@ use FS::cust_main; # are sql_balance and sql_date_balance in the right module? #@ISA = qw( FS::UI ); @ISA = qw( Exporter ); -@EXPORT_OK = qw( svc_url ); +@EXPORT_OK = qw( svc_url random_id ); $DEBUG = 0; $me = '[FS::UID::Web]'; +our $NO_RANDOM_IDS; + ### # date parsing ### @@ -170,7 +172,8 @@ sub svc_export_links { } sub parse_lt_gt { - my($cgi, $field) = @_; + my($cgi, $field) = (shift, shift); + my $table = ( @_ && length($_[0]) ) ? shift.'.' : ''; my @search = (); @@ -188,7 +191,7 @@ sub parse_lt_gt { my $num = $1; $num =~ s/[\,\s]+//g; - my $search = "$field $op{$op} $num"; + my $search = "$table$field $op{$op} $num"; push @search, $search; warn "found ${field}_$op field; adding search element $search\n" @@ -205,6 +208,7 @@ sub parse_lt_gt { # cust_main report subroutines ### +=over 4 =item cust_header [ CUST_FIELDS_VALUE ] @@ -258,15 +262,20 @@ sub cust_header { '(bill) State' => 'bill_state', '(bill) Zip' => 'bill_zip', '(bill) Country' => 'bill_country_full', + '(bill) Latitude' => 'bill_latitude', + '(bill) Longitude' => 'bill_longitude', '(service) Address 1' => 'ship_address1', '(service) Address 2' => 'ship_address2', '(service) City' => 'ship_city', '(service) State' => 'ship_state', '(service) Zip' => 'ship_zip', '(service) Country' => 'ship_country_full', + '(service) Latitude' => 'ship_latitude', + '(service) Longitude' => 'ship_longitude', 'Invoicing email(s)' => 'invoicing_list_emailonly_scalar', 'Payment Type' => 'payby', 'Current Balance' => 'current_balance', + 'Agent Cust#' => 'agent_custid', ); $header2method{'Cust#'} = 'display_custnum' if $conf->exists('cust_main-default_agent_custid'); @@ -351,7 +360,7 @@ sub cust_sql_fields { #inefficientish, but tiny lists and only run once per page my @location_fields; - foreach my $field (qw( address1 address2 city state zip )) { + foreach my $field (qw( address1 address2 city state zip latitude longitude )) { foreach my $pre ('bill_','ship_') { if ( grep { $_ eq $pre.$field } @cust_fields ) { push @location_fields, $pre.'location.'.$field.' AS '.$pre.$field; @@ -600,7 +609,41 @@ sub is_mobile { } return 0; } - + +=item random_id [ DIGITS ] + +Returns a random number of length DIGITS, or if unspecified, a long random +identifier consisting of the timestamp, process ID, and a random number. +Anything in the UI that needs a random identifier should use this. + +=cut + +sub random_id { + my $digits = shift; + if (!defined $NO_RANDOM_IDS) { + my $conf = FS::Conf->new; + $NO_RANDOM_IDS = $conf->exists('no_random_ids') ? 1 : 0; + warn "TEST MODE--RANDOM ID NUMBERS DISABLED\n" if $NO_RANDOM_IDS; + } + if ( $NO_RANDOM_IDS ) { + if ( $digits > 0 ) { + return 0; + } else { + return '0000000000-0000-000000000.000000'; + } + } else { + if ($digits > 0) { + return int(rand(10 ** $digits)); + } else { + return time . "-$$-" . rand() * 2**32; + } + } +} + +=back + +=cut + ### # begin JSRPC code... ###