[freeside-commits] branch FREESIDE_3_BRANCH updated. b0d36fb26e247d430cddbb65bc4c739153992755

Mark Wells mark at 420.am
Tue Aug 6 16:27:47 PDT 2013


The branch, FREESIDE_3_BRANCH has been updated
       via  b0d36fb26e247d430cddbb65bc4c739153992755 (commit)
      from  d9241243d570234b3816e6cb1a0c33a5afc44e35 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit b0d36fb26e247d430cddbb65bc4c739153992755
Author: Mark Wells <mark at freeside.biz>
Date:   Tue Aug 6 16:27:40 2013 -0700

    delete inventory items, #24386

diff --git a/httemplate/misc/inventory_item-move.cgi b/httemplate/misc/inventory_item-move.cgi
index 4d53beb..6b2ab14 100644
--- a/httemplate/misc/inventory_item-move.cgi
+++ b/httemplate/misc/inventory_item-move.cgi
@@ -1,21 +1,37 @@
 <% '',$cgi->redirect(popurl(2). "search/inventory_item.html?$browse_opts") %>
 <%init>
+die "access denied" unless $FS::CurrentUser::CurrentUser->access_right(
+    [ 'Edit inventory', 'Edit global inventory' ]
+  );
 
-# 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 });
+
+my $move_agentnum;
+if ( $cgi->param('move') ) {
+ $move_agentnum = $cgi->param('move_agentnum') or 
+    die "No agent selected";
+} elsif ( $cgi->param('delete') ) {
+  # don't need it in this case
+} else {
+  die "No action selected";
+}
+
+foreach my $itemnum ( grep /^\d+$/, $cgi->param('itemnum') )
+{
+  my $item = FS::inventory_item->by_key($itemnum) or next;
+#  UI disallows this
 #  die "Can't move assigned inventory item $itemnum" if $item->svcnum;
   my $error;
-  $item->agentnum($move_agentnum);
-  $error = $item->replace;
+  if ( $cgi->param('move') ) {
+    $item->agentnum($move_agentnum);
+    $error = $item->replace;
+  } elsif ( $cgi->param('delete') ) {
+    $error = $item->delete;
+  }
   die $error if $error;
 }
 
diff --git a/httemplate/search/elements/checkbox-foot.html b/httemplate/search/elements/checkbox-foot.html
index be1caab..cc4bac6 100644
--- a/httemplate/search/elements/checkbox-foot.html
+++ b/httemplate/search/elements/checkbox-foot.html
@@ -26,7 +26,8 @@ array is a hashref of either:
 of "submit" becomes the "value" property of the button (and thus its label).
 If "confirm" is specified, the button will have an onclick handler that 
 displays the value of "confirm" in a popup message box and asks the user to 
-confirm the choice.
+confirm the choice.  The hashref may also have a "name" property, which 
+sets the name of the submit button.
 
 - "onclick" and "label".  Creates a non-submit button that executes the 
 Javascript code in "onclick".  "label" is used as the text of the button.
diff --git a/httemplate/search/inventory_item.html b/httemplate/search/inventory_item.html
index 0e4251f..d827734 100644
--- a/httemplate/search/inventory_item.html
+++ b/httemplate/search/inventory_item.html
@@ -81,12 +81,8 @@
                               '',
                               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,
+                  'html_init' => $html_form,
+                  'html_foot' => $html_foot,
              
 &>
 <%init>
@@ -158,41 +154,39 @@ my $addl_from = ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
                 ' LEFT JOIN part_svc  USING ( svcpart ) '.
                 ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
                 FS::UI::Web::join_cust_main('cust_pkg', 'cust_pkg');
-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">!;
-};
+  return '' if $item->svcnum;
 
-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;
+  return qq!<INPUT NAME="itemnum" TYPE="checkbox" VALUE="$itemnum">!;
 };
-    
 
-  
+my $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') . '">';
+#'
+
+my $html_foot = include('elements/checkbox-foot.html',
+      actions => [
+          { submit  => 'Delete',
+            confirm => 'Delete the selected items?',
+            name    => 'delete',
+          },
+          { submit  => 'Move to',
+            name    => 'move',
+          },
+      ],
+);
+
+$html_foot =~ s[</DIV>][];
+$html_foot .= 
+  include('/elements/select-agent.html',
+    'field'         => 'move_agentnum',
+    'disable_empty' => 1,
+  ) .
+  '</DIV></FORM>';
 
 </%init>

-----------------------------------------------------------------------

Summary of changes:
 httemplate/misc/inventory_item-move.cgi       |   32 +++++++++---
 httemplate/search/elements/checkbox-foot.html |    3 +-
 httemplate/search/inventory_item.html         |   64 +++++++++++-------------
 3 files changed, 55 insertions(+), 44 deletions(-)




More information about the freeside-commits mailing list