summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2013-08-06 16:27:28 -0700
committerMark Wells <mark@freeside.biz>2013-08-06 16:27:28 -0700
commit326d5fb8855e84a0932fca99e54049d71d973cc4 (patch)
tree773a36696ad186ca6fc751822294cdfe24084763
parent9a753a28cb38ddf6e500805246173a8a1d12894a (diff)
delete inventory items, #24386
-rw-r--r--httemplate/misc/inventory_item-move.cgi32
-rw-r--r--httemplate/search/elements/checkbox-foot.html3
-rw-r--r--httemplate/search/inventory_item.html64
3 files changed, 55 insertions, 44 deletions
diff --git a/httemplate/misc/inventory_item-move.cgi b/httemplate/misc/inventory_item-move.cgi
index 4d53beb23..6b2ab1413 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 be1caab91..cc4bac69b 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 0e4251f74..d82773415 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>