From 156b1169a814021cfb5d546fb18218dedba1742d Mon Sep 17 00:00:00 2001 From: mark Date: Fri, 17 Feb 2012 02:35:27 +0000 Subject: [PATCH] search tickets by customer advertising source, #16490 --- rt/FREESIDE_MODIFIED | 1 + rt/lib/RT/Tickets_Overlay.pm | 4 ++++ rt/lib/RT/URI/freeside.pm | 6 ++++++ rt/lib/RT/URI/freeside/Internal.pm | 9 ++++++++- .../Search/Elements/PickBasics/Default | 13 +++++++++++++ rt/share/html/Elements/RT__Ticket/ColumnMap | 13 +++++++++++++ rt/share/html/Elements/SelectCustomerReferral | 17 +++++++++++++++++ rt/share/html/Search/Elements/BuildFormatString | 2 +- 8 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 rt/share/html/Elements/SelectCustomerReferral diff --git a/rt/FREESIDE_MODIFIED b/rt/FREESIDE_MODIFIED index 57c379f11..13ba5746f 100644 --- a/rt/FREESIDE_MODIFIED +++ b/rt/FREESIDE_MODIFIED @@ -89,6 +89,7 @@ share/html/Elements/ShowLink_Checklist share/html/Elements/SelectCustomerAgent #SearchCustomerFields share/html/Elements/SelectCustomerClass #SearchCustomerFields share/html/Elements/SelectCustomerTag #SearchCustomerFields + share/html/Elements/SelectCustomerReferral #SearchCustomerFields share/html/Prefs/SavedSearches.html #saved searches share/html/Search/Bulk.html #bulk increment priority #mandatory fields share/html/Search/Build.html diff --git a/rt/lib/RT/Tickets_Overlay.pm b/rt/lib/RT/Tickets_Overlay.pm index f6df5530d..76a57b8ce 100644 --- a/rt/lib/RT/Tickets_Overlay.pm +++ b/rt/lib/RT/Tickets_Overlay.pm @@ -148,6 +148,7 @@ our %FIELD_METADATA = ( #freeside Agentnum => [ 'FREESIDEFIELD', ], Classnum => [ 'FREESIDEFIELD', ], + Refnum => [ 'FREESIDEFIELD', ], Tagnum => [ 'FREESIDEFIELD', 'cust_tag' ], WillResolve => [ 'DATE' => 'WillResolve', ], #loc_left_pair ); @@ -1824,6 +1825,9 @@ sub OrderByCols { elsif ( $subkey eq 'Agent' ) { $field = "$custalias.agentnum"; } + elsif ( $subkey eq 'Referral' ) { + $field = "$custalias.refnum"; + } else { # no other cases exist yet, but for obviousness: $field = $subkey; diff --git a/rt/lib/RT/URI/freeside.pm b/rt/lib/RT/URI/freeside.pm index 33845dda6..0e1834f47 100644 --- a/rt/lib/RT/URI/freeside.pm +++ b/rt/lib/RT/URI/freeside.pm @@ -326,6 +326,12 @@ sub CustomerTags { ( ) } =back +=item Referral + +Return the customer's advertising source, as a string. + =cut +sub Referral { undef } + 1; diff --git a/rt/lib/RT/URI/freeside/Internal.pm b/rt/lib/RT/URI/freeside/Internal.pm index 7b8efa0d3..4069b87af 100644 --- a/rt/lib/RT/URI/freeside/Internal.pm +++ b/rt/lib/RT/URI/freeside/Internal.pm @@ -53,7 +53,7 @@ See L for public/private interface documentation. -sub _FreesideGetRecord { +sub _FreesideGetRecord { # cache this? my $self = shift; my ($table, $pkey) = ($self->{'fstable'}, $self->{'fspkey'}); @@ -167,4 +167,11 @@ sub CustomerTags { } @part_tag; } +sub Referral { + my $self = shift; + my $rec = $self->_FreesideGetRecord() or return; + my $ref = qsearchs('part_referral', { refnum => $rec->{'_object'}->refnum }); + $ref ? $ref->referral : '' +} + 1; diff --git a/rt/share/html/Callbacks/SearchCustomerFields/Search/Elements/PickBasics/Default b/rt/share/html/Callbacks/SearchCustomerFields/Search/Elements/PickBasics/Default index abbafbcf1..369912b47 100644 --- a/rt/share/html/Callbacks/SearchCustomerFields/Search/Elements/PickBasics/Default +++ b/rt/share/html/Callbacks/SearchCustomerFields/Search/Elements/PickBasics/Default @@ -39,6 +39,19 @@ push @$Conditions, Path => '/Elements/SelectCustomerTag', }, }, + { + Name => 'Refnum', + Field => 'Advertising Source', + Op => { + Type => 'component', + Path => '/Elements/SelectBoolean', + Arguments => { TrueVal=> '=', FalseVal => '!=' }, + }, + Value => { + Type => 'component', + Path => '/Elements/SelectCustomerReferral', + }, + }, ; <%ARGS> diff --git a/rt/share/html/Elements/RT__Ticket/ColumnMap b/rt/share/html/Elements/RT__Ticket/ColumnMap index cd38dcb7b..cd6ca1fe1 100644 --- a/rt/share/html/Elements/RT__Ticket/ColumnMap +++ b/rt/share/html/Elements/RT__Ticket/ColumnMap @@ -391,6 +391,19 @@ $COLUMN_MAP = { @return; }, }, + AdvertisingSource => { + title => 'Advertising Source', + attribute => 'Customer.Referral', + value => sub { + my $Ticket = shift; + my @return = (); + foreach my $c (ticket_cust_resolvers($Ticket)) { + push @return, $c->Referral, \'
'; + } + pop @return; + @return; + }, + }, }; sub ticket_cust_resolvers { diff --git a/rt/share/html/Elements/SelectCustomerReferral b/rt/share/html/Elements/SelectCustomerReferral new file mode 100644 index 000000000..84191f82b --- /dev/null +++ b/rt/share/html/Elements/SelectCustomerReferral @@ -0,0 +1,17 @@ +% return if ($RT::URI::freeside::IntegrationType ne 'Internal'); + +<%init> +<%args> +$ShowNullOption => 1 +$Name => undef +$Default => 0 + diff --git a/rt/share/html/Search/Elements/BuildFormatString b/rt/share/html/Search/Elements/BuildFormatString index dc07c683b..f77c8da84 100644 --- a/rt/share/html/Search/Elements/BuildFormatString +++ b/rt/share/html/Search/Elements/BuildFormatString @@ -72,7 +72,7 @@ $CurrentDisplayColumns => undef my @fields = qw( id QueueName Subject - Customer Agent CustomerClass CustomerTags + Customer Agent CustomerClass CustomerTags AdvertisingSource Status ExtendedStatus UpdateStatus Type -- 2.11.0