Don't refund transactionItems unless the transaction is successful, or if the item is already canceled. Also, no not call onCancelRecurring for normal Sku's unless they're really recurring. Fixes bug #12089.

This commit is contained in:
Colin Kuskie 2011-04-04 14:45:53 -07:00
parent 8f687d8aa5
commit 8525e4b7ee
7 changed files with 173 additions and 5 deletions

View file

@ -145,15 +145,20 @@ sub getSku {
=head2 issueCredit ( )
Returns the money from this item to the user in the form of in-store credit.
Returns the money from this item to the user in the form of in-store credit. Items marked
cancelled cannot be refunded.
=cut
sub issueCredit {
my $self = shift;
return if $self->get('orderStatus') eq 'Cancelled';
return unless $self->transaction->isSuccessful;
my $credit = WebGUI::Shop::Credit->new($self->transaction->session, $self->transaction->get('userId'));
$credit->adjust(($self->get('price') * $self->get('quantity')), "Issued credit on sku ".$self->get('assetId')." for transaction item ".$self->getId." on transaction ".$self->transaction->getId);
$self->getSku->onRefund($self);
if (my $sku = eval {$self->getSku}) {
$sku->onRefund($self);
}
$self->update({orderStatus=>'Cancelled'});
}