diff options
Diffstat (limited to 'httemplate/misc/process')
-rwxr-xr-x | httemplate/misc/process/cancel_pkg.html | 19 | ||||
-rw-r--r-- | httemplate/misc/process/elements/reason | 17 |
2 files changed, 24 insertions, 12 deletions
diff --git a/httemplate/misc/process/cancel_pkg.html b/httemplate/misc/process/cancel_pkg.html index a106b845a..47ceca23b 100755 --- a/httemplate/misc/process/cancel_pkg.html +++ b/httemplate/misc/process/cancel_pkg.html @@ -65,17 +65,12 @@ if ( $method eq 'suspend' ) { #or 'adjourn' my $cust_pkg = qsearchs( 'cust_pkg', {'pkgnum'=>$pkgnum} ); -#untaint reasonnum -my $reasonnum = $cgi->param('reasonnum'); -if ( $method !~ /^(unsuspend|uncancel)$/ ) { - $reasonnum =~ /^(-?\d+)$/ or die "Illegal reasonnum"; - $reasonnum = $1; - - if ($reasonnum == -1) { - $reasonnum = { - 'typenum' => scalar( $cgi->param('newreasonnumT') ), - 'reason' => scalar( $cgi->param('newreasonnum' ) ), - }; +#untaint reasonnum, and set up new reason if appropriate +my ($reasonnum, $error); +if ($method ne 'resume' and $method ne 'uncancel') { + ($reasonnum, $error) = $m->comp('elements/reason'); + if (!$reasonnum) { + $error ||= 'Reason required'; } } @@ -87,7 +82,7 @@ my $bill = my $svc_fatal = ( $cgi->param('svc_not_fatal') ne 'Y' ); -my $error = $cust_pkg->$method( 'reason' => $reasonnum, +$error ||= $cust_pkg->$method( 'reason' => $reasonnum, 'date' => $date, 'resume_date' => $resume_date, 'last_bill' => $last_bill, diff --git a/httemplate/misc/process/elements/reason b/httemplate/misc/process/elements/reason new file mode 100644 index 000000000..ae92a7528 --- /dev/null +++ b/httemplate/misc/process/elements/reason @@ -0,0 +1,17 @@ +<%init> +#untaint reasonnum, and set up new reason if appropriate +my $reasonnum = $cgi->param('reasonnum'); +$reasonnum =~ /^(-?\d+)$/ or die "Illegal reasonnum"; +$reasonnum = $1; + +my $error; +if ($reasonnum == -1) { + my $new_reason = FS::reason->new({ + map { $_ => scalar( $cgi->param("reasonnum_new_$_") ) } + qw( reason_type reason unsuspend_pkgpart unsuspend_hold unused_credit ) + }); # not sanitizing them here, but check() will do it + $error = $new_reason->insert; + $reasonnum = $new_reason->reasonnum; +} +return ($reasonnum, $error); +</%init> |