summaryrefslogtreecommitdiff
path: root/httemplate/search
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-03-18 21:52:38 -0700
committerIvan Kohler <ivan@freeside.biz>2013-03-18 21:52:38 -0700
commit35b1ca7d644c773f4e0aebf6d8798c93f76a7cd8 (patch)
treeda225a63bb50572bed693ddf32fc52a26599a8c0 /httemplate/search
parentb01c9bdfaeea66b61a9948ee6260a121fc430186 (diff)
parentc2e126583354b58ef54ffa7f580b115b8eed1dd3 (diff)
Merge branch 'master' of git.freeside.biz:/home/git/freeside
Diffstat (limited to 'httemplate/search')
-rw-r--r--httemplate/search/elements/svc_Common.html48
-rwxr-xr-xhttemplate/search/svc_acct.cgi2
-rwxr-xr-xhttemplate/search/svc_broadband.cgi2
-rwxr-xr-xhttemplate/search/svc_dish.cgi2
-rwxr-xr-xhttemplate/search/svc_external.cgi2
-rw-r--r--httemplate/search/svc_hardware.cgi2
-rw-r--r--httemplate/search/svc_phone.cgi2
-rwxr-xr-xhttemplate/search/svc_www.cgi2
8 files changed, 55 insertions, 7 deletions
diff --git a/httemplate/search/elements/svc_Common.html b/httemplate/search/elements/svc_Common.html
new file mode 100644
index 000000000..56c75bba3
--- /dev/null
+++ b/httemplate/search/elements/svc_Common.html
@@ -0,0 +1,48 @@
+<& search.html, %opt &>
+<%doc>
+Currently does nothing but insert the classnames for fields chosen from an
+inventory class.
+</%doc>
+<%init>
+my %opt = @_;
+my $query = $opt{query};
+my $svcdb = $query->{'table'};
+
+# to avoid looking up the inventory class of every service in the database,
+# keep as much of the base query as possible.
+my $item_query = { %$query };
+$item_query->{'table'} = 'inventory_item';
+$item_query->{'addl_from'} =
+ " JOIN ( $svcdb ". $query->{'addl_from'} .
+ ") ON inventory_item.svcnum = $svcdb.svcnum ".
+ " JOIN inventory_class ON (inventory_item.classnum = inventory_class.classnum)";
+# avoid conflict with inventory_item.agentnum
+$item_query->{'extra_sql'} =~ s/ agentnum/ cust_main.agentnum/g;
+$item_query->{'select'} = 'inventory_item.svcnum, '.
+ 'inventory_item.svc_field, '.
+ 'inventory_class.classname';
+my @items = qsearch($item_query);
+my %item_fields;
+foreach my $i (@items) {
+ $item_fields{ $i->svc_field } ||= {};
+ $item_fields{ $i->svc_field }{ $i->svcnum } = $i->classname;
+}
+
+$opt{'sort_fields'} ||= [];
+for ( my $i = 0; $i < @{ $opt{'fields'} }; $i++ ) {
+ my $f = $opt{'fields'}[$i];
+ next if ref($f); # it's not a plain table column
+ $opt{'sort_fields'}[$i] ||= $f;
+ my $classnames = $item_fields{$f}; # hashref of svcnum -> classname
+ next if !$classnames; # there are no inventory items in this column
+ $opt{'fields'}[$i] = sub {
+ my $svc = $_[0];
+ if ( exists($classnames->{$svc->svcnum}) ) {
+ return $svc->$f . '<BR><I>('. $classnames->{$svc->svcnum} . ')</I>';
+ } else {
+ return $svc->$f;
+ }
+ }; #sub
+}
+
+</%init>
diff --git a/httemplate/search/svc_acct.cgi b/httemplate/search/svc_acct.cgi
index 92e1c500c..b9e5a7cc9 100755
--- a/httemplate/search/svc_acct.cgi
+++ b/httemplate/search/svc_acct.cgi
@@ -1,4 +1,4 @@
-<& elements/search.html,
+<& elements/svc_Common.html,
'title' => emt('Account Search Results'),
'name' => emt('accounts'),
'query' => $sql_query,
diff --git a/httemplate/search/svc_broadband.cgi b/httemplate/search/svc_broadband.cgi
index c22887e08..8366d214b 100755
--- a/httemplate/search/svc_broadband.cgi
+++ b/httemplate/search/svc_broadband.cgi
@@ -1,4 +1,4 @@
-<& elements/search.html,
+<& elements/svc_Common.html,
'title' => 'Broadband Search Results',
'name' => 'broadband services',
'html_init' => $html_init,
diff --git a/httemplate/search/svc_dish.cgi b/httemplate/search/svc_dish.cgi
index 1578aa1e3..1f8cbc395 100755
--- a/httemplate/search/svc_dish.cgi
+++ b/httemplate/search/svc_dish.cgi
@@ -1,4 +1,4 @@
-<& elements/search.html,
+<& elements/svc_Common.html,
'title' => 'Dish Network Search Results',
'name' => 'services',
'query' => $sql_query,
diff --git a/httemplate/search/svc_external.cgi b/httemplate/search/svc_external.cgi
index 19099878a..b282939a7 100755
--- a/httemplate/search/svc_external.cgi
+++ b/httemplate/search/svc_external.cgi
@@ -1,4 +1,4 @@
-<& elements/search.html,
+<& elements/svc_Common.html,
'title' => 'External service search results',
'name' => 'external services',
'query' => $sql_query,
diff --git a/httemplate/search/svc_hardware.cgi b/httemplate/search/svc_hardware.cgi
index 28aa13217..93fc2c391 100644
--- a/httemplate/search/svc_hardware.cgi
+++ b/httemplate/search/svc_hardware.cgi
@@ -1,4 +1,4 @@
-<& elements/search.html,
+<& elements/svc_Common.html,
'title' => 'Hardware service search results',
'name' => 'installations',
'query' => $sql_query,
diff --git a/httemplate/search/svc_phone.cgi b/httemplate/search/svc_phone.cgi
index cc4aa60f5..f3a056475 100644
--- a/httemplate/search/svc_phone.cgi
+++ b/httemplate/search/svc_phone.cgi
@@ -1,4 +1,4 @@
-<& elements/search.html,
+<& elements/svc_Common.html,
'title' => "Phone number search results",
'name' => 'phone numbers',
'query' => $sql_query,
diff --git a/httemplate/search/svc_www.cgi b/httemplate/search/svc_www.cgi
index eefe89302..7410262e8 100755
--- a/httemplate/search/svc_www.cgi
+++ b/httemplate/search/svc_www.cgi
@@ -1,4 +1,4 @@
-<& elements/search.html,
+<& elements/svc_Common.html,
'title' => 'Virtual Host Search Results',
'name' => 'virtual hosts',
'query' => $sql_query,