From 1ceeee1c6b8c46805c103fbcfc1bbee768b12609 Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Thu, 2 Jun 2016 02:34:14 -0500 Subject: RT#42394: paycvv during cust_payby replace (v4+ only) [fixed paycvv removal] --- FS/FS/cust_main.pm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'FS/FS/cust_main.pm') diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index f12d63a..2c092ee 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -2568,6 +2568,8 @@ Removes the I field from the database directly. If there is an error, returns the error, otherwise returns false. +DEPRECATED. Use L instead. + =cut sub remove_cvv { @@ -4752,6 +4754,33 @@ PAYBYLOOP: } +=item remove_cvv_from_cust_payby PAYINFO + +Removes paycvv from associated cust_payby with matching PAYINFO. + +=cut + +sub remove_cvv_from_cust_payby { + my ($self,$payinfo) = @_; + + my $oldAutoCommit = $FS::UID::AutoCommit; + local $FS::UID::AutoCommit = 0; + my $dbh = dbh; + + foreach my $cust_payby ( qsearch('cust_payby',{ custnum => $self->custnum }) ) { + next unless $cust_payby->payinfo eq $payinfo; # can't qsearch on payinfo + $cust_payby->paycvv(''); + my $error = $cust_payby->replace; + if ($error) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } + + $dbh->commit or die $dbh->errstr if $oldAutoCommit; + ''; +} + =back =head1 CLASS METHODS -- cgit v1.1