Merge pull request #4796 from jitendrapurohit/webtest4.6
[civicrm-core.git] / tests / phpunit / CRM / Member / BAO / MembershipTest.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.6 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2014 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
13 | |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
26 */
27
28
29 require_once 'CiviTest/CiviUnitTestCase.php';
30 require_once 'CiviTest/Contact.php';
31 require_once 'CiviTest/Custom.php';
32 require_once 'CiviTest/ContributionPage.php';
33 require_once 'CiviTest/Membership.php';
34 require_once 'CRM/Core/Controller.php';
35
36 /**
37 * Class CRM_Member_BAO_MembershipTest
38 */
39 class CRM_Member_BAO_MembershipTest extends CiviUnitTestCase {
40
41 function setUp() {
42 parent::setUp();
43 // FIXME: something NULLs $GLOBALS['_HTML_QuickForm_registered_rules'] when the tests are ran all together
44 $GLOBALS['_HTML_QuickForm_registered_rules'] = array(
45 'required' => array('html_quickform_rule_required', 'HTML/QuickForm/Rule/Required.php'),
46 'maxlength' => array('html_quickform_rule_range', 'HTML/QuickForm/Rule/Range.php'),
47 'minlength' => array('html_quickform_rule_range', 'HTML/QuickForm/Rule/Range.php'),
48 'rangelength' => array('html_quickform_rule_range', 'HTML/QuickForm/Rule/Range.php'),
49 'email' => array('html_quickform_rule_email', 'HTML/QuickForm/Rule/Email.php'),
50 'regex' => array('html_quickform_rule_regex', 'HTML/QuickForm/Rule/Regex.php'),
51 'lettersonly' => array('html_quickform_rule_regex', 'HTML/QuickForm/Rule/Regex.php'),
52 'alphanumeric' => array('html_quickform_rule_regex', 'HTML/QuickForm/Rule/Regex.php'),
53 'numeric' => array('html_quickform_rule_regex', 'HTML/QuickForm/Rule/Regex.php'),
54 'nopunctuation' => array('html_quickform_rule_regex', 'HTML/QuickForm/Rule/Regex.php'),
55 'nonzero' => array('html_quickform_rule_regex', 'HTML/QuickForm/Rule/Regex.php'),
56 'callback' => array('html_quickform_rule_callback', 'HTML/QuickForm/Rule/Callback.php'),
57 'compare' => array('html_quickform_rule_compare', 'HTML/QuickForm/Rule/Compare.php'),
58 );
59
60 $this->_contactID = $this->organizationCreate();
61 $this->_membershipTypeID = $this->membershipTypeCreate(array('member_of_contact_id' => $this->_contactID));
62 // add a random number to avoid silly conflicts with old data
63 $this->_membershipStatusID = $this->membershipStatusCreate('test status' . rand(1, 1000));
64 }
65
66 /**
67 * Tears down the fixture, for example, closes a network connection.
68 * This method is called after a test is executed.
69 *
70 */
71 function tearDown() {
72 $this->membershipTypeDelete( array( 'id' => $this->_membershipTypeID ) );
73 $this->membershipStatusDelete( $this->_membershipStatusID );
74 Contact::delete( $this->_contactID );
75
76 $this->_contactID = $this->_membershipStatusID = $this->_membershipTypeID = null;
77 }
78
79 function testCreate() {
80
81 $contactId = Contact::createIndividual();
82
83 $params = array(
84 'contact_id' => $contactId,
85 'membership_type_id' => $this->_membershipTypeID,
86 'join_date' => date('Ymd',strtotime('2006-01-21')),
87 'start_date' => date('Ymd',strtotime('2006-01-21')),
88 'end_date' => date('Ymd',strtotime('2006-12-21')),
89 'source' => 'Payment',
90 'is_override' => 1,
91 'status_id' => $this->_membershipStatusID,
92 );
93 $ids = array();
94 CRM_Member_BAO_Membership::create($params, $ids);
95
96 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
97 'contact_id', 'Database check for created membership.'
98 );
99
100 // Now call create() to modify an existing Membership
101
102 $params = array();
103 $params = array(
104 'contact_id' => $contactId,
105 'membership_type_id' => $this->_membershipTypeID,
106 'join_date' => date('Ymd',strtotime('2006-01-21')),
107 'start_date' => date('Ymd',strtotime('2006-01-21')),
108 'end_date' => date('Ymd',strtotime('2006-12-21')),
109 'source' => 'Payment',
110 'is_override' => 1,
111 'status_id' => $this->_membershipStatusID,
112 );
113 $ids = array(
114 'membership' => $membershipId,
115 );
116 CRM_Member_BAO_Membership::create($params, $ids);
117
118 $membershipTypeId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId,
119 'membership_type_id', 'contact_id',
120 'Database check on updated membership record.'
121 );
122 $this->assertEquals($membershipTypeId, $this->_membershipTypeID, 'Verify membership type id is fetched.');
123
124 $this->membershipDelete($membershipId);
125 Contact::delete($contactId);
126 }
127
128 function testGetValues() {
129 // $this->markTestSkipped( 'causes mysterious exit, needs fixing!' );
130 // Calculate membership dates based on the current date
131 $now = time();
132 $year_from_now = $now + (365 * 24 * 60 * 60);
133 $last_month = $now - (30 * 24 * 60 * 60);
134 $year_from_last_month = $last_month + (365 * 24 * 60 * 60);
135
136 $contactId = Contact::createIndividual();
137
138 $params = array(
139 'contact_id' => $contactId,
140 'membership_type_id' => $this->_membershipTypeID,
141 'join_date' => date('Ymd'),
142 'start_date' => date('Ymd'),
143 'end_date' => date('Ymd', $year_from_now),
144 'source' => 'Payment',
145 'is_override' => 1,
146 'status_id' => $this->_membershipStatusID,
147 );
148
149 $ids = array();
150 CRM_Member_BAO_Membership::create($params, $ids);
151
152 $membershipId1 = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
153 'contact_id', 'Database check for created membership.'
154 );
155
156 $params = array(
157 'contact_id' => $contactId,
158 'membership_type_id' => $this->_membershipTypeID,
159 'join_date' => date('Ymd', $last_month),
160 'start_date' => date('Ymd', $last_month),
161 'end_date' => date('Ymd', $year_from_last_month),
162 'source' => 'Source123',
163 'is_override' => 0,
164 'status_id' => $this->_membershipStatusID,
165 );
166 $ids = array();
167 CRM_Member_BAO_Membership::create($params, $ids);
168
169 $membershipId2 = $this->assertDBNotNull('CRM_Member_BAO_Membership', 'source123', 'id',
170 'source', 'Database check for created membership.'
171 );
172
173 $membership = array('contact_id' => $contactId);
174 $membershipValues = array();
175 CRM_Member_BAO_Membership::getValues($membership, $membershipValues, TRUE);
176
177 $this->assertEquals($membershipValues[$membershipId1]['membership_id'], $membershipId1, 'Verify membership record 1 is fetched.');
178
179 $this->assertEquals($membershipValues[$membershipId2]['membership_id'], $membershipId2, 'Verify membership record 2 is fetched.');
180
181 $this->membershipDelete($membershipId1);
182 $this->membershipDelete($membershipId2);
183 Contact::delete($contactId);
184 }
185
186 function testRetrieve() {
187 $contactId = Contact::createIndividual();
188
189 $params = array(
190 'contact_id' => $contactId,
191 'membership_type_id' => $this->_membershipTypeID,
192 'join_date' => date('Ymd',strtotime('2006-01-21')),
193 'start_date' => date('Ymd',strtotime('2006-01-21')),
194 'end_date' => date('Ymd',strtotime('2006-12-21')),
195 'source' => 'Payment',
196 'is_override' => 1,
197 'status_id' => $this->_membershipStatusID,
198 );
199 $ids = array();
200 CRM_Member_BAO_Membership::create($params, $ids);
201
202 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
203 'contact_id', 'Database check for created membership.'
204 );
205 $params = array('id' => $membershipId);
206 $values = array();
207 CRM_Member_BAO_Membership::retrieve($params, $values);
208 $this->assertEquals($values['id'], $membershipId, 'Verify membership record is retrieved.');
209
210 $this->membershipDelete($membershipId);
211 $this->contactDelete($contactId);
212 }
213
214 function testActiveMembers() {
215 $contactId = Contact::createIndividual();
216
217 $params = array(
218 'contact_id' => $contactId,
219 'membership_type_id' => $this->_membershipTypeID,
220 'join_date' => date('Ymd',strtotime('2006-01-21')),
221 'start_date' => date('Ymd',strtotime('2006-01-21')),
222 'end_date' => date('Ymd',strtotime('2006-12-21')),
223 'source' => 'Payment',
224 'is_override' => 1,
225 'status_id' => $this->_membershipStatusID,
226 );
227 $ids = array();
228 CRM_Member_BAO_Membership::create($params, $ids);
229
230 $membershipId1 = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
231 'contact_id', 'Database check for created membership.'
232 );
233
234 $params = array('id' => $membershipId1);
235 $values1 = array();
236 CRM_Member_BAO_Membership::retrieve($params, $values1);
237 $membership = array($membershipId1 => $values1);
238
239 $params = array(
240 'contact_id' => $contactId,
241 'membership_type_id' => $this->_membershipTypeID,
242 'join_date' => date('Ymd',strtotime('2006-01-21')),
243 'start_date' => date('Ymd',strtotime('2006-01-21')),
244 'end_date' => date('Ymd',strtotime('2006-12-21')),
245 'source' => 'PaySource',
246 'is_override' => 1,
247 'status_id' => $this->_membershipStatusID,
248 );
249 $ids = array();
250 CRM_Member_BAO_Membership::create($params, $ids);
251
252 $membershipId2 = $this->assertDBNotNull('CRM_Member_BAO_Membership', 'PaySource', 'id',
253 'source', 'Database check for created membership.'
254 );
255
256 $params = array('id' => $membershipId2);
257 $values2 = array();
258 CRM_Member_BAO_Membership::retrieve($params, $values2);
259 $membership[$membershipId2] = $values2;
260
261 $activeMembers = CRM_Member_BAO_Membership::activeMembers($membership);
262 $inActiveMembers = CRM_Member_BAO_Membership::activeMembers($membership, 'inactive');
263
264 $this->assertEquals($activeMembers[$membershipId1]['id'], $membership[$membershipId1]['id'], 'Verify active membership record is retrieved.');
265 $this->assertEquals($activeMembers[$membershipId2]['id'], $membership[$membershipId2]['id'], 'Verify active membership record is retrieved.');
266
267 $this->assertEquals(0, count($inActiveMembers), 'Verify No inactive membership record is retrieved.');
268
269 $this->membershipDelete($membershipId1);
270 $this->membershipDelete($membershipId2);
271 Contact::delete($contactId);
272 }
273
274 function testDeleteMembership() {
275 $contactId = Contact::createIndividual();
276
277 $params = array(
278 'contact_id' => $contactId,
279 'membership_type_id' => $this->_membershipTypeID,
280 'join_date' => date('Ymd',strtotime('2006-01-21')),
281 'start_date' => date('Ymd',strtotime('2006-01-21')),
282 'end_date' => date('Ymd',strtotime('2006-12-21')),
283 'source' => 'Payment',
284 'is_override' => 1,
285 'status_id' => $this->_membershipStatusID,
286 );
287 $ids = array();
288 CRM_Member_BAO_Membership::create($params, $ids);
289
290 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
291 'contact_id', 'Database check for created membership.'
292 );
293 CRM_Member_BAO_Membership::del($membershipId);
294
295 $membershipId = $this->assertDBNull('CRM_Member_BAO_Membership', $contactId, 'id',
296 'contact_id', 'Database check for deleted membership.'
297 );
298 Contact::delete($contactId);
299 }
300
301 function testGetContactMembership() {
302 $contactId = Contact::createIndividual();
303
304 $params = array(
305 'contact_id' => $contactId,
306 'membership_type_id' => $this->_membershipTypeID,
307 'join_date' => date('Ymd',strtotime('2006-01-21')),
308 'start_date' => date('Ymd',strtotime('2006-01-21')),
309 'end_date' => date('Ymd',strtotime('2006-12-21')),
310 'source' => 'Payment',
311 'is_override' => 1,
312 'status_id' => $this->_membershipStatusID,
313 );
314 $ids = array();
315 CRM_Member_BAO_Membership::create($params, $ids);
316
317 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
318 'contact_id', 'Database check for created membership.'
319 );
320
321 $membership = CRM_Member_BAO_Membership::getContactMembership($contactId, $this->_membershipTypeID, FALSE);
322
323 $this->assertEquals($membership['id'], $membershipId, 'Verify membership record is retrieved.');
324
325 $this->membershipDelete($membershipId);
326 Contact::delete($contactId);
327 }
328
329
330 /**
331 * Get the contribution
332 * page id from the membership record
333 */
334 function testgetContributionPageId() {
335 $contactId = Contact::createIndividual();
336
337 $params = array(
338 'contact_id' => $contactId,
339 'membership_type_id' => $this->_membershipTypeID,
340 'join_date' => date('Ymd',strtotime('2006-01-21')),
341 'start_date' => date('Ymd',strtotime('2006-01-21')),
342 'end_date' => date('Ymd',strtotime('2006-12-21')),
343 'source' => 'Payment',
344 'is_override' => 1,
345 'status_id' => $this->_membershipStatusID,
346 );
347 $ids = array();
348 CRM_Member_BAO_Membership::create($params, $ids);
349
350
351 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
352 'contact_id', 'Database check for created membership.'
353 );
354 $membership[$membershipId]['renewPageId'] = CRM_Member_BAO_Membership::getContributionPageId($membershipId);
355
356 $this->membershipDelete($membershipId);
357 Contact::delete($contactId);
358 }
359 /**
360 * Get membership joins/renewals
361 * for a specified membership
362 * type.
363 *
364 */
365 function testgetMembershipStarts() {
366 $contactId = Contact::createIndividual();
367
368 $params = array(
369 'contact_id' => $contactId,
370 'membership_type_id' => $this->_membershipTypeID,
371 'join_date' => date('Ymd',strtotime('2006-01-21')),
372 'start_date' => date('Ymd',strtotime('2006-01-21')),
373 'end_date' => date('Ymd',strtotime('2006-12-21')),
374 'source' => 'Payment',
375 'is_override' => 1,
376 'status_id' => $this->_membershipStatusID,
377 );
378 $ids = array();
379 CRM_Member_BAO_Membership::create($params, $ids);
380
381 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
382 'contact_id', 'Database check for created membership.'
383 );
384 $yearStart = date('Y') . '0101';
385 $currentDate = date('Ymd');
386 CRM_Member_BAO_Membership::getMembershipStarts($this->_membershipTypeID, $yearStart, $currentDate);
387
388 $this->membershipDelete($membershipId);
389 Contact::delete($contactId);
390 }
391
392 /**
393 * Get a count of membership for a specified membership type,
394 * optionally for a specified date.
395 *
396 */
397 function testGetMembershipCount() {
398 $contactId = Contact::createIndividual();
399
400 $params = array(
401 'contact_id' => $contactId,
402 'membership_type_id' => $this->_membershipTypeID,
403 'join_date' => date('Ymd',strtotime('2006-01-21')),
404 'start_date' => date('Ymd',strtotime('2006-01-21')),
405 'end_date' => date('Ymd',strtotime('2006-12-21')),
406 'source' => 'Payment',
407 'is_override' => 1,
408 'status_id' => $this->_membershipStatusID,
409 );
410 $ids = array();
411 CRM_Member_BAO_Membership::create($params, $ids);
412
413 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
414 'contact_id', 'Database check for created membership.'
415 );
416 $currentDate = date('Ymd');
417 $test = 0;
418 CRM_Member_BAO_Membership::getMembershipCount($this->_membershipTypeID, $currentDate, $test);
419
420 $this->membershipDelete($membershipId);
421 Contact::delete($contactId);
422 }
423
424
425 /**
426 * Take sort name of contact during
427 * batch update member via profile
428 *
429 */
430 function testsortName() {
431 $contactId = Contact::createIndividual();
432
433 $params = array(
434 'contact_id' => $contactId,
435 'membership_type_id' => $this->_membershipTypeID,
436 'join_date' => date('Ymd',strtotime('2006-01-21')),
437 'start_date' => date('Ymd',strtotime('2006-01-21')),
438 'end_date' => date('Ymd',strtotime('2006-12-21')),
439 'source' => 'Payment',
440 'is_override' => 1,
441 'status_id' => $this->_membershipStatusID,
442 );
443 $ids = array();
444
445 CRM_Member_BAO_Membership::create($params, $ids);
446
447 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
448 'contact_id', 'Database check for created membership.'
449 );
450
451 CRM_Member_BAO_Membership::sortName($membershipId);
452
453 $this->assertDBCompareValue('CRM_Contact_DAO_Contact', $contactId, 'sort_name', 'id', 'Doe, John',
454 'Database check for sort name record.'
455 );
456
457 $this->membershipDelete($membershipId);
458 Contact::delete($contactId);
459 }
460
461 /**
462 * Delete related memberships
463 *
464 */
465 function testdeleteRelatedMemberships() {
466 $contactId = Contact::createIndividual();
467
468 $params = array(
469 'contact_id' => $contactId,
470 'membership_type_id' => $this->_membershipTypeID,
471 'join_date' => date('Ymd',strtotime('2006-01-21')),
472 'start_date' => date('Ymd',strtotime('2006-01-21')),
473 'end_date' => date('Ymd',strtotime('2006-12-21')),
474 'source' => 'Payment',
475 'is_override' => 1,
476 'status_id' => $this->_membershipStatusID,
477 );
478 $ids = array();
479
480 CRM_Member_BAO_Membership::create($params, $ids);
481
482 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
483 'contact_id', 'Database check for created membership.'
484 );
485
486 CRM_Member_BAO_Membership::deleteRelatedMemberships($membershipId);
487
488 $this->membershipDelete($membershipId);
489 Contact::delete($contactId);
490 }
491
492 /**
493 * Renew membership with change in membership type
494 *
495 */
496 function testRenewMembership() {
497 $contactId = Contact::createIndividual();
498 $joinDate = $startDate = date("Ymd", strtotime(date("Ymd") . " -6 month"));
499 $endDate = date("Ymd", strtotime($joinDate . " +1 year -1 day"));
500 $params = array(
501 'contact_id' => $contactId,
502 'membership_type_id' => $this->_membershipTypeID,
503 'join_date' => $joinDate,
504 'start_date' => $startDate,
505 'end_date' => $endDate,
506 'source' => 'Payment',
507 'is_override' => 1,
508 'status_id' => $this->_membershipStatusID,
509 );
510 $ids = array();
511 $membership = CRM_Member_BAO_Membership::create($params, $ids);
512 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
513 'contact_id', 'Database check for created membership.'
514 );
515
516 $this->assertDBNotNull('CRM_Member_BAO_MembershipLog',
517 $membership->id,
518 'id',
519 'membership_id',
520 'Database checked on membershiplog record.'
521 );
522
523 // this is a test and we dont want qfKey generation / validation
524 // easier to suppress it, than change core code
525 $config = CRM_Core_Config::singleton();
526 $config->keyDisable = TRUE;
527
528 $membershipRenewal = new CRM_Core_Form;
529 $membershipRenewal->controller = new CRM_Core_Controller;
530 $isTestMembership = 0;
531 $MembershipRenew =
532 CRM_Member_BAO_Membership::renewMembershipFormWrapper(
533 $contactId,
534 $this->_membershipTypeID,
535 $isTestMembership,
536 $membershipRenewal,
537 NULL,
538 NULL
539 );
540 $endDate = date("Y-m-d", strtotime($membership->end_date . " +1 year"));
541
542 $this->assertDBNotNull('CRM_Member_BAO_MembershipLog',
543 $MembershipRenew->id,
544 'id',
545 'membership_id',
546 'Database checked on membershiplog record.'
547 );
548 $this->assertEquals($this->_membershipTypeID, $MembershipRenew->membership_type_id, 'Verify membership type is changed during renewal.');
549 $this->assertEquals($endDate, $MembershipRenew->end_date, 'Verify correct end date is calculated after membership renewal');
550
551 $this->membershipDelete($membershipId);
552 Contact::delete($contactId);
553 }
554
555 /**
556 * Renew stale membership
557 *
558 */
559 function testStaleMembership() {
560 $statusId = 3;
561 $contactId = Contact::createIndividual();
562 $joinDate = $startDate = date("Ymd", strtotime(date("Ymd") . " -1 year -15 days"));
563 $endDate = date("Ymd", strtotime($joinDate . " +1 year -1 day"));
564 $params = array(
565 'contact_id' => $contactId,
566 'membership_type_id' => $this->_membershipTypeID,
567 'join_date' => $joinDate,
568 'start_date' => $startDate,
569 'end_date' => $endDate,
570 'source' => 'Payment',
571 'status_id' => $statusId,
572 );
573
574 $ids = array();
575 $membership = CRM_Member_BAO_Membership::create($params, $ids);
576
577 $membershipId = $this->assertDBNotNull('CRM_Member_BAO_Membership', $contactId, 'id',
578 'contact_id', 'Database check for created membership.'
579 );
580
581 $this->assertEquals($membership->status_id, $statusId, 'Verify correct status id is calculated.');
582 $this->assertEquals($membership->membership_type_id, $this->_membershipTypeID,
583 'Verify correct membership type id.'
584 );
585
586 //verify all dates.
587 $dates = array(
588 'startDate' => 'start_date',
589 'joinDate' => 'join_date',
590 'endDate' => 'end_date',
591 );
592
593 foreach ($dates as $date => $dbDate) {
594 $this->assertEquals($membership->$dbDate, $$date,
595 "Verify correct {$date} is present."
596 );
597 }
598
599 $this->assertDBNotNull('CRM_Member_BAO_MembershipLog',
600 $membership->id,
601 'id',
602 'membership_id',
603 'Database checked on membershiplog record.'
604 );
605
606 // this is a test and we dont want qfKey generation / validation
607 // easier to suppress it, than change core code
608 $config = CRM_Core_Config::singleton();
609 $config->keyDisable = TRUE;
610
611 $membershipRenewal = new CRM_Core_Form;
612 $membershipRenewal->controller = new CRM_Core_Controller;
613 $MembershipRenew = CRM_Member_BAO_Membership::renewMembershipFormWrapper($contactId, $this->_membershipTypeID, $isTestMembership = 0, $membershipRenewal, NULL, NULL);
614
615 $this->assertDBNotNull('CRM_Member_BAO_MembershipLog',
616 $MembershipRenew->id,
617 'id',
618 'membership_id',
619 'Database checked on membershiplog record.'
620 );
621
622 $this->membershipDelete($membershipId);
623 Contact::delete($contactId);
624 }
625 }
626
627