default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / httemplate / edit / process / credit-cust_bill_pkg.html
1 %if ($error) {
2 %  errorpage_popup($error); #XXX redirect back for correction...
3 %} else {
4 <& /elements/header-popup.html, 'Credit successful' &>
5   <SCRIPT TYPE="text/javascript">
6     topreload();
7   </SCRIPT>
8   </BODY></HTML>
9 % }
10 <%init>
11
12 die "access denied"
13   unless $FS::CurrentUser::CurrentUser->access_right('Credit line items');
14
15 my @billpkgnum_setuprecurs =
16   map { $_ =~ /^billpkgnum(\d+\-\w*)$/ or die 'gm#23'; $1; } 
17   grep { $_ =~ /^billpkgnum\d+\-\w*$/ && $cgi->param($_) } $cgi->param;
18
19 my @billpkgnums = ();
20 my @setuprecurs = ();
21 my @amounts = ();
22 foreach my $billpkgnum_setuprecur (@billpkgnum_setuprecurs) {
23   my $amount = $cgi->param("billpkgnum$billpkgnum_setuprecur-amount");
24   my( $billpkgnum, $setuprecur ) = split('-', $billpkgnum_setuprecur);
25   push @billpkgnums, $billpkgnum;
26   push @setuprecurs, $setuprecur;
27   push @amounts,     $amount;
28 }
29
30 my $reasonnum = $cgi->param('reasonnum');
31 $reasonnum =~ /^(-?\d+)$/ or die "Illegal reasonnum";
32 $reasonnum = $1;
33
34 my $error;
35 if ($reasonnum == -1) {
36   my $new_reason = FS::reason->new({
37     map { $_ => scalar( $cgi->param("select_reason_new_$_") ) }
38     qw( reason_type reason )
39   });
40   $error = $new_reason->insert;
41   $reasonnum = $new_reason->reasonnum;
42 }
43
44 if ( !$reasonnum ) {
45   $error ||= 'Reason required'
46 }
47
48 $error ||= FS::cust_credit->credit_lineitems(
49   #the lineitems to credit
50   'billpkgnums'       => \@billpkgnums,
51   'setuprecurs'       => \@setuprecurs,
52   'amounts'           => \@amounts,
53   'apply'             => ( $cgi->param('apply') eq 'yes' ),
54   'reasonnum'         => $reasonnum,
55
56   map { $_ => scalar($cgi->param($_)) }
57     #fields('cust_credit')  
58     qw( custnum _date amount addlinfo ), #pkgnum eventnum
59 );
60
61 </%init>