payment voiding part deux & credit card refunds!
[freeside.git] / httemplate / edit / process / cust_refund.cgi
1 <%
2
3 $cgi->param('custnum') =~ /^(\d*)$/ or die "Illegal custnum!";
4 my $custnum = $1;
5 my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } )
6   or die "unknown custnum $custnum";
7
8 my $error = '';
9 if ( $cgi->param('payby') eq 'CARD' ) { 
10   $cgi->param('refund') =~ /^(\d*)(\.\d{2})?$/
11     or die "illegal refund amount ". $cgi->param('refund');
12   my $refund = "$1$2";
13   $cgi->param('paynum') =~ /^(\d*)$/ or die "Illegal paynum!";
14   my $paynum = $1;
15   my $reason = $cgi->param('reason');
16   $error = $cust_main->realtime_refund_bop( 'CC', 'amount' => $refund,
17                                                   'paynum' => $paynum,
18                                                   'reason' => $reason, );
19 } else {
20   die 'unimplemented';
21   #my $new = new FS::cust_refund ( {
22   #  map {
23   #    $_, scalar($cgi->param($_));
24   #  } ( fields('cust_refund'), 'paynum' )
25   #} );
26   #$error = $new->insert;
27 }
28
29
30 if ( $error ) {
31   $cgi->param('error', $error);
32   print $cgi->redirect(popurl(2). "cust_refund.cgi?". $cgi->query_string );
33 } else {
34   print $cgi->redirect(popurl(3). "view/cust_main.cgi?$custnum");
35 }
36
37 %>