diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index 75214fd7f..e82ad2340 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -1322,7 +1322,7 @@ sub www_addToCart { if (scalar(@$errors) > 0) { return $self->error($errors, "www_addToCart"); } unless ($output) { - return $self->saveRegistration if scalar($self->getEventsInScratchCart); + return $self->saveRegistration; } } # $self->session->errorHandler->warn("scratch after:
".Dumper($self->getEventsInScratchCart).Dumper($self->session->db->buildHashRef("select name,value from userSessionScratch where sessionId=?",[$self->session->getId]))."");
@@ -2404,6 +2404,7 @@ sub saveRegistration {
my @addingToPurchase = split("\n",$self->session->scratch->get('EMS_add_purchase_events'));
# @addingToPurchase = () if ($self->session->scratch->get('EMS_add_purchase_badgeId') && !($self->session->scratch->get('EMS_add_purchase_badgeId') eq $badgeId));
my @badgeEvents = $self->session->db->quickArray("select distinct(e.productId) from EventManagementSystem_registrations as r, EventManagementSystem_badges as b, EventManagementSystem_products as e, EventManagementSystem_purchases as z, products as p, transaction where p.productId = r.productId and p.productId = e.productId and r.badgeId=b.badgeId and r.badgeId=? and r.purchaseId !='' and r.purchaseId=z.purchaseId and z.transactionId=transaction.transactionId and r.purchaseId is not null and transaction.status='Completed' ",[$badgeId]);
+ my $addedAny = 0;
foreach my $eventId (@$eventsInCart) {
next if isIn($eventId,@addingToPurchase);
next if isIn($eventId,@badgeEvents);
@@ -2414,26 +2415,27 @@ sub saveRegistration {
badgeId => $badgeId
},0,0);
$shoppingCart->add($eventId, 'Event');
+ $addedAny = 1;
}
-
- #Our item plug-in needs to be able to associate these records with the result of the payment attempt
- my $counter = 0;
- while (1) {
- unless ($self->session->scratch->get("purchaseId".$counter)) {
- $self->session->scratch->set("purchaseId".$counter, $purchaseId);
- $self->session->scratch->set("badgeId".$counter, $badgeId);
- $self->session->scratch->delete('purchaseId'.$self->session->scratch->get('currentPurchaseCounter'));
- last;
+ if ($addedAny) {
+ #Our item plug-in needs to be able to associate these records with the result of the payment attempt
+ my $counter = 0;
+ while (1) {
+ unless ($self->session->scratch->get("purchaseId".$counter)) {
+ $self->session->scratch->set("purchaseId".$counter, $purchaseId);
+ $self->session->scratch->set("badgeId".$counter, $badgeId);
+ $self->session->scratch->delete('purchaseId'.$self->session->scratch->get('currentPurchaseCounter'));
+ last;
+ }
+ $counter++;
}
- $counter++;
+ $self->emptyScratchCart;
+ $self->session->scratch->delete('EMS_add_purchase_badgeId');
+ $self->session->scratch->delete('EMS_add_purchase_events');
+ $self->session->scratch->delete('currentBadgeId');
+ $self->session->scratch->delete('currentMainEvent');
+ $self->session->scratch->delete('currentPurchaseCounter');
}
- $self->emptyScratchCart;
- $self->session->scratch->delete('EMS_add_purchase_badgeId');
- $self->session->scratch->delete('EMS_add_purchase_events');
- $self->session->scratch->delete('currentBadgeId');
- $self->session->scratch->delete('currentMainEvent');
- $self->session->scratch->delete('currentPurchaseCounter');
-
# if ($self->session->form->get('checkoutNow')) {
# srand;
# $self->session->http->setRedirect($self->getUrl("op=viewCart;something=".rand(44345552)));