search tickets by customer advertising source, #16490
authormark <mark>
Fri, 17 Feb 2012 02:35:27 +0000 (02:35 +0000)
committermark <mark>
Fri, 17 Feb 2012 02:35:27 +0000 (02:35 +0000)
rt/FREESIDE_MODIFIED
rt/lib/RT/Tickets_Overlay.pm
rt/lib/RT/URI/freeside.pm
rt/lib/RT/URI/freeside/Internal.pm
rt/share/html/Callbacks/SearchCustomerFields/Search/Elements/PickBasics/Default
rt/share/html/Elements/RT__Ticket/ColumnMap
rt/share/html/Elements/SelectCustomerReferral [new file with mode: 0644]
rt/share/html/Search/Elements/BuildFormatString

index 57c379f..13ba574 100644 (file)
@@ -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
index f6df553..76a57b8 100644 (file)
@@ -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;
index 33845dd..0e1834f 100644 (file)
@@ -326,6 +326,12 @@ sub CustomerTags { ( ) }
 
 =back
 
+=item Referral
+
+Return the customer's advertising source, as a string.
+
 =cut
 
+sub Referral { undef }
+
 1;
index 7b8efa0..4069b87 100644 (file)
@@ -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;
index abbafbc..369912b 100644 (file)
@@ -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>
index cd38dcb..cd6ca1f 100644 (file)
@@ -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 (file)
index 0000000..84191f8
--- /dev/null
@@ -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>
index dc07c68..f77c8da 100644 (file)
@@ -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