From: Ivan Kohler Date: Tue, 24 Apr 2018 00:08:58 +0000 (-0700) Subject: bulk customer package edit from multiple source package definitions, RT#79885 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=e884af8c6997d97753598ccec16a3156e0dcbf3f bulk customer package edit from multiple source package definitions, RT#79885 --- diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index b24b3abe3..07c5a4756 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -3329,11 +3329,10 @@ sub process_bulk_cust_pkg { my $param = shift; warn Dumper($param) if $DEBUG; - my $old_part_pkg = qsearchs('part_pkg', - { pkgpart => $param->{'old_pkgpart'} }); my $new_part_pkg = qsearchs('part_pkg', { pkgpart => $param->{'new_pkgpart'} }); - die "Must select a new package type\n" unless $new_part_pkg; + die "Must select a new package definition\n" unless $new_part_pkg; + #my $keep_dates = $param->{'keep_dates'} || 0; my $keep_dates = 1; # there is no good reason to turn this off @@ -3341,7 +3340,14 @@ sub process_bulk_cust_pkg { local $FS::UID::AutoCommit = 0; my $dbh = dbh; - my @cust_pkgs = qsearch('cust_pkg', { 'pkgpart' => $param->{'old_pkgpart'} } ); + my @old_pkgpart = ref($param->{'old_pkgpart'}) ? @{ $param->{'old_pkgpart'} } + : $param->{'old_pkgpart'}; + + my @cust_pkgs = qsearch({ + 'table' => 'cust_pkg', + 'extra_sql' => ' WHERE pkgpart IN ('. + join(',', @old_pkgpart). ')', + }); my $i = 0; foreach my $old_cust_pkg ( @cust_pkgs ) { diff --git a/httemplate/browse/part_pkg.cgi b/httemplate/browse/part_pkg.cgi index 8c51b35f4..f25c00ef2 100755 --- a/httemplate/browse/part_pkg.cgi +++ b/httemplate/browse/part_pkg.cgi @@ -562,7 +562,7 @@ if ( $acl_edit_global ) { 'action' => "${p}edit/bulk-cust_pkg.html?". 'pkgpart='.$part_pkg->pkgpart, 'actionlabel' => 'Change Packages', - 'width' => 569, + 'width' => 960, 'height' => 210, ).' ]', 'align' => 'left', @@ -796,8 +796,22 @@ if ( $acl_edit_bulk ) { $align .= 'c'; $html_form = qq!
!; $html_foot = include('/search/elements/checkbox-foot.html', - submit => 'edit report classes', # for now it's only report classes - ) . '
'; + actions => [ + { submit => 'edit report classes', }, + { label => 'change customer packages', + onclick=> include('/elements/popup_link_onclick.html', + 'label' => 'change', + 'js_action' => qq{ + '${p}edit/bulk-cust_pkg.html?' + \$('input[name=pkgpart]').serialize() + }, + 'actionlabel' => 'Change customer packages', + 'width' => 960, + 'height' => 420, + ) + }, + ], + ). + ''; } my @menubar; diff --git a/httemplate/edit/bulk-cust_pkg.html b/httemplate/edit/bulk-cust_pkg.html index 2ff38ca53..8a082f47f 100644 --- a/httemplate/edit/bulk-cust_pkg.html +++ b/httemplate/edit/bulk-cust_pkg.html @@ -19,24 +19,18 @@ function areyousure() { }
-% #false laziness with bulk-cust_svc.html -% $cgi->param('pkgpart') =~ /^(\d+)$/ -% or die "illegal pkgpart: ". $cgi->param('pkgpart'); -% -% my $old_pkgpart = $1; -% my $src_part_pkg = qsearchs('part_pkg', { 'pkgpart' => $old_pkgpart } ) -% or die "unknown pkgpart: $old_pkgpart"; -% +% foreach my $src_part_pkg (@src_part_pkg) { + + Change <% $src_part_pkg->pkg_comment |h %>
+% } - -Change <% $src_part_pkg->pkg_comment %>
- +
to new package definition @@ -57,4 +51,18 @@ to new package definition die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); +my @src_part_pkg = (); +foreach my $pkgpart ( $cgi->multi_param('pkgpart') ) { + + $pkgpart =~ /^(\d+)$/ + or die "illegal pkgpart: $pkgpart"; + + my $old_pkgpart = $1; + my $src_part_pkg = qsearchs('part_pkg', { 'pkgpart' => $old_pkgpart } ) + or die "unknown pkgpart: $old_pkgpart"; + + push @src_part_pkg, $src_part_pkg; + +} + diff --git a/httemplate/search/elements/checkbox-foot.html b/httemplate/search/elements/checkbox-foot.html index ae8b79470..f33a87467 100644 --- a/httemplate/search/elements/checkbox-foot.html +++ b/httemplate/search/elements/checkbox-foot.html @@ -4,7 +4,7 @@ html_foot => include('elements/checkbox-foot.html', actions => [ { label => 'Edit selected packages', - action => 'popup_package_edit()', + onclick => 'popup_package_edit()', }, { submit => 'Delete selected packages', confirm => 'Really delete these packages?' @@ -50,7 +50,7 @@ false.
% foreach my $action (@$actions) { % if ( $action->{onclick} ) { -{name} %> onclick="<% $opt{onclick} %>"\ +{name} %> onclick="<% $action->{onclick} %>"\ VALUE="<% $action->{label} |h%>"> % } elsif ( $action->{submit} ) { {name} %> <% $action->{confirm} %>\