X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fprocess%2Fcust_refund.cgi;h=49aedf3fed245c8eecf90c1729403123ba96c859;hb=a90d069b1f1d814a91bf7cb3eb0d7ac9fdec7e08;hp=764f2deb77445a0422b1d69340552d8e588f1273;hpb=fdc589c5d08623f437df749c5e43360248ccce11;p=freeside.git diff --git a/httemplate/edit/process/cust_refund.cgi b/httemplate/edit/process/cust_refund.cgi index 764f2deb7..49aedf3fe 100755 --- a/httemplate/edit/process/cust_refund.cgi +++ b/httemplate/edit/process/cust_refund.cgi @@ -21,6 +21,8 @@ die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Refund payment') || $FS::CurrentUser::CurrentUser->access_right('Post refund'); +my $conf = new FS::Conf; + $cgi->param('custnum') =~ /^(\d*)$/ or die "Illegal custnum!"; my $custnum = $1; my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ) @@ -42,18 +44,63 @@ if ( $error ) { } elsif ( $payby =~ /^(CARD|CHEK)$/ ) { my %options = (); my $bop = $FS::payby::payby2bop{$1}; + + my %payby2fields = ( + 'CARD' => [ qw( address1 address2 city county state zip country ) ], + 'CHEK' => [ qw( ss paytype paystate stateid stateid_state ) ], + ); + my %type = ( 'CARD' => 'credit card', + 'CHEK' => 'electronic check (ACH)', + ); + +## +# now run the refund +## + $cgi->param('refund') =~ /^(\d*)(\.\d{2})?$/ or die "illegal refund amount ". $cgi->param('refund'); my $refund = "$1$2"; $cgi->param('paynum') =~ /^(\d*)$/ or die "Illegal paynum!"; my $paynum = $1; + #my $paydate; my $paydate = $cgi->param('exp_year'). '-'. $cgi->param('exp_month'). '-01'; - $options{'paydate'} = $paydate if $paydate =~ /^\d{2,4}-\d{1,2}-01$/; - $error = $cust_main->realtime_refund_bop( $bop, 'amount' => $refund, + #unless ($paynum) { + # if ($cust_payby->paydate) { $paydate = "$year-$month-01"; } + # else { $paydate = "2037-12-01"; } + #} + + if ( $cgi->param('batch') ) { + $paydate = "2037-12-01" unless $paydate; + $error ||= $cust_main->batch_card( + 'payby' => $payby, + 'amount' => $refund, + #'payinfo' => $payinfo, + #'paydate' => $paydate, + #'payname' => $payname, + 'paycode' => 'C', + map { $_ => scalar($cgi->param($_)) } + @{$payby2fields{$payby}} + ); + errorpage($error) if $error; + + my %hash = map { + $_, scalar($cgi->param($_)) + } fields('cust_refund'); + + my $new = new FS::cust_refund ( { 'paynum' => $paynum, + %hash, + } ); + $error = $new->insert; + + # if not a batch refund run realtime. + } else { + $options{'paydate'} = $paydate if $paydate =~ /^\d{2,4}-\d{1,2}-01$/; + $error = $cust_main->realtime_refund_bop( $bop, 'amount' => $refund, 'paynum' => $paynum, 'reasonnum' => $reasonnum, %options ); -} else { + } +} else { # run cash refund. my %hash = map { $_, scalar($cgi->param($_)) } fields('cust_refund');