%if ($error) { % errorpage_popup($error); #XXX redirect back for correction... %} else { <& /elements/header-popup.html, 'Credit successful' &> % } <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Credit line items'); my @billpkgnum_setuprecurs = map { $_ =~ /^billpkgnum(\d+\-\w*)$/ or die 'gm#23'; $1; } grep { $_ =~ /^billpkgnum\d+\-\w*$/ && $cgi->param($_) } $cgi->param; my @billpkgnums = (); my @setuprecurs = (); my @amounts = (); foreach my $billpkgnum_setuprecur (@billpkgnum_setuprecurs) { my $amount = $cgi->param("billpkgnum$billpkgnum_setuprecur-amount"); my( $billpkgnum, $setuprecur ) = split('-', $billpkgnum_setuprecur); push @billpkgnums, $billpkgnum; push @setuprecurs, $setuprecur; push @amounts, $amount; } 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("select_reason_new_$_") ) } qw( reason_type reason ) }); $error = $new_reason->insert; $reasonnum = $new_reason->reasonnum; } if ( !$reasonnum ) { $error ||= 'Reason required' } $error ||= FS::cust_credit->credit_lineitems( #the lineitems to credit 'billpkgnums' => \@billpkgnums, 'setuprecurs' => \@setuprecurs, 'amounts' => \@amounts, 'apply' => ( $cgi->param('apply') eq 'yes' ), 'reasonnum' => $reasonnum, map { $_ => scalar($cgi->param($_)) } #fields('cust_credit') qw( custnum _date amount addlinfo ), #pkgnum eventnum );