X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FUI%2FWeb.pm;h=2d12f7d14b6273bdcb5d8085a2b5de8d6d73d414;hp=f460904634efb65f9059591e18816dbd3d0e4b59;hb=a3092d901441a8640c1f7f9be4b0374146e43b0a;hpb=ea734eb2f16a632a9c79bf17b6954f8571d85f3f diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index f46090463..2d12f7d14 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -7,7 +7,7 @@ use Carp qw( confess ); use HTML::Entities; use FS::Conf; use FS::Misc::DateTime qw( parse_datetime day_end ); -use FS::Record qw(dbdef); +use FS::Record qw(dbdef qsearch); use FS::cust_main; # are sql_balance and sql_date_balance in the right module? #use vars qw(@ISA); @@ -300,7 +300,7 @@ sub cust_header { my %header2method = ( 'Customer' => 'name', 'Cust. Status' => 'cust_status_label', - 'Cust#' => 'custnum', + 'Cust#' => 'display_custnum', 'Name' => 'contact', 'Company' => 'company', @@ -343,14 +343,38 @@ sub cust_header { '(service) Latitude' => 'ship_latitude', '(service) Longitude' => 'ship_longitude', 'Invoicing email(s)' => 'invoicing_list_emailonly_scalar', - 'Payment Type' => 'cust_payby', + 'Contact email(s)' => 'contact_list_emailonly', + 'Invoices' => 'contact_list_cust_invoice_only', + 'Messages' => 'contact_list_cust_message_only', +# FS::Upgrade::upgrade_config removes this from existing cust-fields settings +# 'Payment Type' => 'cust_payby', 'Current Balance' => 'current_balance', 'Agent Cust#' => 'agent_custid', + 'Agent' => 'agent_name', + 'Agent Cust# or Cust#' => 'display_custnum', 'Advertising Source' => 'referral', ); $header2method{'Cust#'} = 'display_custnum' if $conf->exists('cust_main-default_agent_custid'); +foreach my $phone_type ( FS::phone_type->get_phone_types() ) { + $header2method{'Contact '.$phone_type->typename.' phone(s)'} = sub { + my $self = shift; + my $num = $phone_type->phonetypenum; + + my @phones; + foreach (FS::cust_main::contact_list_name_phones($self)) { + my $data = [ + { + 'data' => $_->first.' '.$_->last.' '.FS::contact_phone::phonenum_pretty($_), + }, + ]; + push @phones, $data if $_->phonetypenum eq $phone_type->phonetypenum; + } + return \@phones; + }; +} + my %header2colormethod = ( 'Cust. Status' => 'cust_statuscolor', ); @@ -408,7 +432,14 @@ sub cust_sort_fields { cust_header(@_) if( @_ or !@cust_fields ); #inefficientish, but tiny lists and only run once per page - map { $_ eq 'custnum' ? 'custnum' : '' } @cust_fields; + my @sort_fields; + foreach (@cust_fields) { + if ($_ eq "custnum") { push @sort_fields, 'custnum'; } + elsif ($_ eq "contact" || $_ eq "name") { push @sort_fields, '(last, first)'; } + elsif ($_ eq "company") { push @sort_fields, 'company'; } + else { push @sort_fields, ''; } + } + return @sort_fields; } @@ -444,19 +475,19 @@ sub cust_sql_fields { } } - foreach my $field (qw(daytime night mobile fax )) { + foreach my $field (qw(daytime night mobile fax)) { push @fields, $field if (grep { $_ eq $field } @cust_fields); } - push @fields, "payby AS cust_payby" - if grep { $_ eq 'cust_payby' } @cust_fields; push @fields, 'agent_custid'; + push @fields, 'agentnum' if grep { $_ eq 'agent_name' } @cust_fields; + my @extra_fields = (); if (grep { $_ eq 'current_balance' } @cust_fields) { push @extra_fields, FS::cust_main->balance_sql . " AS current_balance"; } - push @extra_fields, 'part_referral.referral AS referral' + push @extra_fields, 'part_referral_x.referral AS referral' if grep { $_ eq 'referral' } @cust_fields; map("cust_main.$_", @fields), @location_fields, @extra_fields; @@ -465,9 +496,9 @@ sub cust_sql_fields { =item join_cust_main [ TABLE[.CUSTNUM] ] [ LOCATION_TABLE[.LOCATIONNUM] ] Returns an SQL join phrase for the FROM clause so that the fields listed -in L will be available. Currently joins to cust_main +in L will be available. Currently joins to cust_main itself, as well as cust_location (under the aliases 'bill_location' and -'ship_location') if address fields are needed. L should have +'ship_location') if address fields are needed. L should have been called already. All of these will be left joins; if you want to exclude rows with no linked @@ -524,7 +555,7 @@ sub join_cust_main { } if ( !@cust_fields or grep { $_ eq 'referral' } @cust_fields ) { - $sql .= ' LEFT JOIN part_referral ON (cust_main.refnum = part_referral.refnum) '; + $sql .= ' LEFT JOIN (select refnum, referral from part_referral) AS part_referral_x ON (cust_main.refnum = part_referral_x.refnum) '; } $sql; @@ -740,6 +771,7 @@ use FS::CurrentUser; use FS::Record qw(qsearchs); use FS::queue; use FS::CGI qw(rooturl); +use FS::Report::Queued::FutureAutobill; $DEBUG = 0;