RT#7010: inventory items can be moved between agents
authormark <mark>
Tue, 25 May 2010 07:53:08 +0000 (07:53 +0000)
committermark <mark>
Tue, 25 May 2010 07:53:08 +0000 (07:53 +0000)
httemplate/misc/inventory_item-move.cgi [new file with mode: 0644]
httemplate/search/inventory_item.html

diff --git a/httemplate/misc/inventory_item-move.cgi b/httemplate/misc/inventory_item-move.cgi
new file mode 100644 (file)
index 0000000..4d53beb
--- /dev/null
@@ -0,0 +1,23 @@
+<% '',$cgi->redirect(popurl(2). "search/inventory_item.html?$browse_opts") %>
+<%init>
+
+# Shamelessly copied from misc/cust_attachment.cgi.
+
+my $browse_opts = join(';', map { $_.'='.$cgi->param($_) }
+    qw( classnum avail )
+    );
+
+my $move_agentnum = $cgi->param('move_agentnum') or 
+  die "No agent selected";
+foreach my $itemnum (
+  map { /^itemnum(\d+)$/; $1; } grep /^itemnum\d+$/, $cgi->param ) {
+  my $item = qsearchs('inventory_item', { 'itemnum' => $itemnum });
+#  die "Can't move assigned inventory item $itemnum" if $item->svcnum;
+  my $error;
+  $item->agentnum($move_agentnum);
+  $error = $item->replace;
+  die $error if $error;
+}
+
+</%init>
+
index 37914e0..086c8e9 100644 (file)
@@ -34,6 +34,7 @@
                    $inventory_class->classname,
                    'Service',
                    FS::UI::Web::cust_header(),
+                   '', # checkbox column
                  ],
 
                  'fields'      => [
@@ -56,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>
@@ -151,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>