From 7c5d90fb9d4de8e0b1f4b4b44c855430aed19f55 Mon Sep 17 00:00:00 2001 From: Brice Gelineau Date: Mon, 28 Nov 2011 23:11:10 +0100 Subject: [PATCH] Keeps the amount paid when updating participation of an event (Closes #1348) Signed-off-by: Brice Gelineau --- ChangeLog | 1 + modules/xnetevents.php | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 963fde8..cf678cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ Bug/Wish: * XnetEvent: - #1577: Fixes alternative payements given by admins -GLN - #1578: Fixes deletion of people inscriptions -GLN + - #1348: Keeps the amount paid when updating participation -GLN From 1.1.4 branch: diff --git a/modules/xnetevents.php b/modules/xnetevents.php index 92f8e31..a12c669 100644 --- a/modules/xnetevents.php +++ b/modules/xnetevents.php @@ -237,18 +237,20 @@ class XnetEventsModule extends PLModule } // update actual inscriptions - $updated = false; - $total = 0; - $paid = $evt['paid'] ? $evt['paid'] : 0; - $telepaid= $evt['telepaid'] ? $evt['telepaid'] : 0; + $updated = false; + $total = 0; + $paid = $evt['paid'] ? $evt['paid'] : 0; + $telepaid = $evt['telepaid'] ? $evt['telepaid'] : 0; + $paid_inserted = false; foreach ($subs as $j => $nb) { if ($nb >= 0) { XDB::execute('INSERT INTO group_event_participants (eid, uid, item_id, nb, flags, paid) VALUES ({?}, {?}, {?}, {?}, {?}, {?}) ON DUPLICATE KEY UPDATE nb = VALUES(nb), flags = VALUES(flags), paid = VALUES(paid)', $eid, S::v('uid'), $j, $nb, (Env::has('notify_payment') ? 'notify_payment' : ''), - ($j == 1 ? $paid - $telepaid : 0)); + ((!$paid_inserted) ? $paid - $telepaid : 0)); $updated = $eid; + $paid_inserted = true; } else { XDB::execute( "DELETE FROM group_event_participants @@ -608,15 +610,22 @@ class XnetEventsModule extends PLModule WHERE uid = {?} AND eid = {?}", $member->uid, $evt['eid']); - $paid = intval($res->fetchOneCell()); + $paid = $res->fetchOneCell(); $nbs = Post::v('nb', array()); + $paid_inserted = false; foreach ($nbs as $id => $nb) { $nb = max(intval($nb), 0); + if (!$paid_inserted && $nb > 0) { + $item_paid = $paid; + $paid_inserted = true; + } else { + $item_paid = 0; + } XDB::execute('INSERT INTO group_event_participants (eid, uid, item_id, nb, flags, paid) VALUES ({?}, {?}, {?}, {?}, {?}, {?}) ON DUPLICATE KEY UPDATE nb = VALUES(nb), flags = VALUES(flags), paid = VALUES(paid)', - $evt['eid'], $member->uid, $id, $nb, '', ($id == 1 ? $paid : 0)); + $evt['eid'], $member->uid, $id, $nb, '', $item_paid); } $res = XDB::query('SELECT COUNT(uid) AS cnt, SUM(nb) AS nb -- 2.1.4