summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormark <mark>2012-02-17 02:35:27 +0000
committermark <mark>2012-02-17 02:35:27 +0000
commit156b1169a814021cfb5d546fb18218dedba1742d (patch)
treed6734a928e8c9d383114834e420ce8d997b8eccf
parent90b57490d16e693d5c179a9a4695af7e9b1c9bff (diff)
search tickets by customer advertising source, #16490
-rw-r--r--rt/FREESIDE_MODIFIED1
-rw-r--r--rt/lib/RT/Tickets_Overlay.pm4
-rw-r--r--rt/lib/RT/URI/freeside.pm6
-rw-r--r--rt/lib/RT/URI/freeside/Internal.pm9
-rw-r--r--rt/share/html/Callbacks/SearchCustomerFields/Search/Elements/PickBasics/Default13
-rw-r--r--rt/share/html/Elements/RT__Ticket/ColumnMap13
-rw-r--r--rt/share/html/Elements/SelectCustomerReferral17
-rw-r--r--rt/share/html/Search/Elements/BuildFormatString2
8 files changed, 63 insertions, 2 deletions
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<RT::URI::freeside> 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',
+ },
+ },
;
</%init>
<%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, \'<BR>';
+ }
+ 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');
+<select name="<%$Name%>">
+% if ($ShowNullOption) {
+ <option value="">-</option>
+% }
+% for my $referral (qsearch('part_referral', {'disabled' => ''})) {
+ <option value="<%$referral->refnum%>" <%
+ $referral->refnum == $Default||'' ? 'selected' : ''%>
+ ><%$referral->referral%></option>
+% }
+</select>
+<%init></%init>
+<%args>
+$ShowNullOption => 1
+$Name => undef
+$Default => 0
+</%args>
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