blob: 82a9e23753800c134388e4a2e2f819a8eae93d15 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
% if ($error) {
% $cgi->param('error', $error);
% $cgi->redirect(popurl(3). 'edit/cust_pkg.cgi?'. $cgi->query_string );
% } else {
<% $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum") %>
% }
<%init>
use Data::Dumper;
my $DEBUG = 0;
my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
unless $curuser->access_right('Bulk change customer packages');
my $error = '';
my %param = $cgi->Vars;
my $custnum = $param{custnum};
$error = "Invalid custnum ($custnum)" if $custnum =~ /\D/;
my $locationnum = $param{locationnum};
$error = "Invalid locationnum ($locationnum)" if $locationnum =~ /\D/;
my @remove_pkgnum =
map { $_ =~ /remove_cust_pkg\[(\d+)\]/ ? $1 : () }
keys %param;
my @pkgparts;
for my $k ( keys %param ) {
next unless $k =~ /qty_part_pkg\[(\d+)\]/;
my $pkgpart = $1;
my $qty = $param{$k};
$qty =~ s/(^\s+|\s+$)//g;
warn "k($k) param{k}($param{$k}) pkgpart($pkgpart) qty($qty)\n"
if $DEBUG;
if ( $qty =~ /\D/ ) {
$error = "Invalid quantity $qty for pkgpart $pkgpart - please use a number";
last;
}
next if $qty == 0;
push ( @pkgparts, $pkgpart ) for ( 1..$qty );
}
if ( $DEBUG ) {
warn Dumper({
custnum => $custnum,
locationnum => $locationnum,
remove_pkgnum => \@remove_pkgnum,
pkgparts => \@pkgparts,
param => \%param,
});
}
$error ||= FS::cust_pkg::order({
custnum => $custnum,
pkgparts => \@pkgparts,
remove_pkgnum => \@remove_pkgnum,
locationnum => $locationnum,
});
</%init>
|