large package display in customer/package search, #13364
[freeside.git] / httemplate / search / inventory_item.html
index 55fef94..086c8e9 100644 (file)
@@ -1,8 +1,14 @@
 <% include( 'elements/search.html',
                  'title'       => $title,
 
-                 #less lame to use Lingua:: something to pluralize
-                 'name'        => $inventory_class->classname. 's',
+                 'menubar'     => [ 'View inventory classes' =>
+                                      $p.'browse/inventory_class.html',
+                                    'Upload '. PL($inventory_class->classname)=>
+                                      $p.'misc/inventory_item-import.html?'.
+                                      "classnum=$classnum"
+                                  ],
+
+                 'name'        => PL($inventory_class->classname),
 
                  'query'       => {
                                     'table'   => 'inventory_item',
 
                  'count_query' => $count_query,
 
+                 'agent_virt' => 1,
+                 'agent_null' => 1,
+                 'agent_pos'  => 2,
+
                  'header'      => [
                    '#',
                    $inventory_class->classname,
                    'Service',
                    FS::UI::Web::cust_header(),
+                   '', # checkbox column
                  ],
 
                  'fields'      => [
@@ -46,6 +57,7 @@
                    },
 
                    \&FS::UI::Web::cust_fields,
+                   $sub_checkbox,
 
                  ],
                  'align'       => 'rll'.FS::UI::Web::cust_aligns(),
                               '',
                               FS::UI::Web::cust_styles(),
                             ],
-
+                  'html_form' => 
+                    qq!
+<FORM NAME="itemForm" ACTION="$p/misc/inventory_item-move.cgi" METHOD="POST">
+<INPUT TYPE="hidden" NAME="classnum" VALUE="$classnum">
+<INPUT TYPE="hidden" NAME="avail"    VALUE="! .$cgi->param('avail') . '">', #'
+                  'html_foot' => $sub_foot,
              )
 %>
 <%init>
 
+my $curuser = $FS::CurrentUser::CurrentUser;
+
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+  unless $curuser->access_right('Edit inventory')
+      || $curuser->access_right('Edit global inventory')
+      || $curuser->access_right('Configuration');
 
 my $classnum = $cgi->param('classnum');
 $classnum =~ /^(\d+)$/ or errorpage("illegal classnum $classnum");
@@ -89,6 +110,12 @@ my $inventory_class = qsearchs( {
 
 my $title = $inventory_class->classname. ' Inventory';
 
+if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) {
+  $extra_sql .= " AND inventory_item.agentnum = $1 ";
+  my $agent = qsearchs('agent', { 'agentnum' => $1 }) or die "unknown agentnum";
+  $title = $agent->agent. " $title";
+}
+
 #little false laziness with SQL fragments in inventory_class.pm
 if ( $cgi->param('avail') ) {
   $extra_sql .= ' AND ( svcnum IS NULL OR svcnum = 0 )';
@@ -131,5 +158,41 @@ 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 ) ';
+my $areboxes = 0;
+
+my $sub_checkbox = sub {
+  my $item = $_[0];
+  my $itemnum = $item->itemnum;
+  #return '' if $item->svcnum;
+  $areboxes = 1;
+  return qq!<INPUT NAME="itemnum$itemnum" TYPE="checkbox" VALUE="1">!;
+};
+
+my $sub_foot = sub {
+  return if !$areboxes;
+  my $foot =
+'<BR><INPUT TYPE="button" VALUE="Select all" onClick="setAll(true)">
+<INPUT TYPE="button" VALUE="Unselect all" onClick="setAll(false)">
+<BR><INPUT TYPE="submit" NAME="action" VALUE="Move to agent">
+<SELECT NAME="move_agentnum">';
+  foreach my $agent ($curuser->agents) {
+    $foot .= '<OPTION VALUE="'.$agent->agentnum.'">'.
+             $agent->agent . '</OPTION>
+             ';
+  }
+  $foot .= '</SELECT>
+<SCRIPT TYPE="text/javascript">
+ function setAll(setTo) {
+   theForm = document.itemForm;
+   for (i=0,n=theForm.elements.length;i<n;i++)
+     if (theForm.elements[i].name.indexOf("itemnum") != -1)
+       theForm.elements[i].checked = setTo;
+ }
+</SCRIPT>';
+  $foot;
+};
+    
+
+  
 
 </%init>