-<%
+%
+%
+%my $classnum = $cgi->param('classnum');
+%$classnum =~ /^(\d+)$/ or eidiot "illegal classnum $classnum";
+%$classnum = $1;
+%
+%my $inventory_class = qsearchs( {
+% 'table' => 'inventory_class',
+% 'hashref' => { 'classnum' => $classnum },
+%} );
+%
+%my $title = $inventory_class->classname. ' Inventory';
+%
+%#little false laziness with SQL fragments in inventory_class.pm
+%my $extra_sql = '';
+%if ( $cgi->param('avail') ) {
+% $extra_sql = 'AND ( svcnum IS NULL OR svcnum = 0 )';
+% $title .= ' - Available';
+%} elsif ( $cgi->param('used') ) {
+% $extra_sql = 'AND svcnum IS NOT NULL AND svcnum > 0';
+% $title .= ' - In use';
+%}
+%
+%my $count_query =
+% "SELECT COUNT(*) FROM inventory_item WHERE classnum = $classnum $extra_sql";
+%
+%my $link = sub {
+% my $inventory_item = shift;
+% if ( $inventory_item->svcnum ) {
+% [ "${p}view/svc_acct.cgi?", 'svcnum' ];
+% } else {
+% '';
+% }
+%};
+%my $link_cust = sub {
+% my $inventory_item = shift;
+% if ( $inventory_item->custnum ) {
+% [ "${p}view/cust_main.cgi?", 'custnum' ];
+% } else {
+% '';
+% }
+%};
+%
+%my $addl_from = ' LEFT JOIN cust_svc USING ( svcnum ) '.
+% ' LEFT JOIN part_svc USING ( svcpart ) '.
+% ' LEFT JOIN cust_pkg USING ( pkgnum ) '.
+% ' LEFT JOIN cust_main USING ( custnum ) ';
+%
+%
+<% include( 'elements/search.html',
-my $classnum = $cgi->param('classnum');
-$classnum =~ /^(\d+)$/ or eidiot "illegal classnum $classnum";
-$classnum = $1;
-
-my $inventory_class = qsearchs( {
- 'table' => 'inventory_class',
- 'hashref' => { 'classnum' => $classnum },
-} );
-
-my $title = $inventory_class->classname. ' Inventory';
-
-#little false laziness with SQL fragments in inventory_class.pm
-my $extra_sql = '';
-if ( $cgi->param('avail') ) {
- $extra_sql = 'AND ( svcnum IS NULL OR svcnum = 0 )';
- $title .= ' - Available';
-} elsif ( $cgi->param('used') ) {
- $extra_sql = 'AND svcnum IS NOT NULL AND svcnum > 0';
- $title .= ' - In use';
-}
-
-my $count_query =
- "SELECT COUNT(*) FROM inventory_item WHERE classnum = $classnum $extra_sql";
-
-%><%= include( 'elements/search.html',
'title' => $title,
#less lame to use Lingua:: something to pluralize
'query' => {
'table' => 'inventory_item',
'hashref' => { 'classnum' => $classnum },
+ 'select' => join(', ',
+ 'inventory_item.*',
+ 'cust_main.custnum',
+ FS::UI::Web::cust_sql_fields(),
+ ),
'extra_sql' => $extra_sql,
+ 'addl_from' => $addl_from,
},
'count_query' => $count_query,
- # XXX proper full service/customer link ala svc_acct
- 'header' => [ '#', $inventory_class->classname, 'svcnum' ],
+ 'header' => [
+ '#',
+ $inventory_class->classname,
+ 'Service',
+ FS::UI::Web::cust_header(),
+ ],
'fields' => [
'itemnum',
'item',
- 'svcnum', #XXX proper full service customer link ala svc_acct
+ #'svcnum', #XXX proper full service customer link ala svc_acct
# "unallocated" ? "available" ?
+ sub {
+ #this could be way more efficient with a mixin
+ # like cust_main_Mixin that let us all all the methods
+ # on data we already have...
+ my $inventory_item = shift;
+ my $cust_svc = $inventory_item->cust_svc;
+ if ( $cust_svc ) {
+ my($label, $value) = $cust_svc->label;
+ "$label: $value";
+ } else {
+ '(available)';
+ }
+ },
+
+ \&FS::UI::Web::cust_fields,
+
+ ],
+
+ 'links' => [
+ '',
+ '',
+ $link,
+ ( map { $link_cust } FS::UI::Web::cust_header() ),
],
)