diff --git a/lib/WebGUI/Shop/Transaction.pm b/lib/WebGUI/Shop/Transaction.pm index 010a36723..22db1fd0d 100644 --- a/lib/WebGUI/Shop/Transaction.pm +++ b/lib/WebGUI/Shop/Transaction.pm @@ -80,6 +80,8 @@ sub cancelRecurring { $self->getPaymentGateway->cancelRecurringPayment($self); my ($item) = $self->getItems; $item->getSku->onCancelRecurring($item); + my $recurringId = ($self->get('originatingTransactionId') || $self->getId); + $self->session->db->write("update transaction set isRecurring=0 where transactionId=? or originatingTransactionId=?",[$recurringId,$recurringId]); } #------------------------------------------------------------------- @@ -557,6 +559,22 @@ sub update { #------------------------------------------------------------------- +=head2 www_cancelRecurring ( ) + +Cancels a recurring transaction. + +=cut + +sub www_cancelRecurring { + my ($class, $session) = @_; + my $self = $class->new($session, $session->form->get("transactionId")); + return $session->privilege->insufficient unless (WebGUI::Shop::Admin->new($session)->canManage || $session->user->userId eq $self->get('userId')); + $self->cancelRecurring; + return $class->www_view($session); +} + +#------------------------------------------------------------------- + =head2 www_getTransactionsAsJson () Retrieves a list of transactions for the www_manage() method. @@ -788,8 +806,13 @@ sub www_view { }; unless ($print) { $output .= q{ -
+