Skip to content
Snippets Groups Projects
Commit bf37ef3a authored by bgm's avatar bgm Committed by Aegir user
Browse files

Various date comparison fixes

parent 73861461
No related branches found
No related tags found
No related merge requests found
......@@ -432,7 +432,10 @@ class CRM_Membershipreport_Form_Report_MembershipRenewal extends CRM_Report_Form
}
// Maybe it should be configurable?
$current_status_id = CRM_Core_PseudoConstant::getKey('CRM_Member_BAO_Membership', 'status_id', 'Current');
$current_status_ids = [];
$current_status_ids[] = CRM_Core_PseudoConstant::getKey('CRM_Member_BAO_Membership', 'status_id', 'Current');
// @todo FIXME
$current_status_ids[] = 8;
$sql = 'SELECT m.id, m.contact_id, m.join_date, c.display_name, c.preferred_language,
mlog.id as mlogid, mlog.status_id, mlog.start_date, mlog.end_date, mlog.modified_date,
......@@ -441,13 +444,13 @@ class CRM_Membershipreport_Form_Report_MembershipRenewal extends CRM_Report_Form
LEFT JOIN civicrm_membership m ON (m.id = mlog.membership_id)
LEFT JOIN civicrm_contact c ON (c.id = m.contact_id)
WHERE m.is_test = 0
AND mlog.status_id = %1
AND mlog.status_id IN (%1)
AND mlog.membership_type_id = %2
AND mlog.modified_date >= %3
AND mlog.modified_date <= %4';
AND DATE_FORMAT(mlog.modified_date, "%Y%m%d") >= DATE_FORMAT(%3, "%Y%m%d")
AND DATE_FORMAT(mlog.modified_date, "%Y%m%d") <= DATE_FORMAT(%4, "%Y%m%d")';
$sql_params = [
1 => [$current_status_id, 'Positive'],
1 => [implode(',', $current_status_ids), 'CommaSeparatedIntegers'],
2 => [$params['membership_type_id'], 'Positive'],
3 => [$params['from'], 'Timestamp'],
4 => [$params['to'], 'Timestamp'],
......@@ -474,6 +477,11 @@ class CRM_Membershipreport_Form_Report_MembershipRenewal extends CRM_Report_Form
$all_previous = $this->getPreviousMembershipLogs($row['mlogid'], $row['id']);
$found_previous = false;
if (empty($all_previous) && $row['start_date'] > $row['join_date']) {
$found_previous = true;
continue;
}
foreach ($all_previous as $p) {
// If we were in grace, and the previous status was expired, then it's bad data.
// Noticed this in a site where the admins would temporarily set members as grace.
......@@ -551,13 +559,13 @@ class CRM_Membershipreport_Form_Report_MembershipRenewal extends CRM_Report_Form
LEFT JOIN civicrm_contact c ON (c.id = m.contact_id)
WHERE m.is_test = 0 AND mlog.status_id NOT IN (4,5,6)
AND mlog.membership_type_id = %1
AND mlog.start_date <= %2
AND mlog.end_date >= %3';
AND DATE_FORMAT(mlog.start_date, "%Y%m%d") <= DATE_FORMAT(%2, "%Y%m%d")
AND DATE_FORMAT(mlog.end_date, "%Y%m%d") >= DATE_FORMAT(%3, "%Y%m%d")';
$sql_params = [
1 => [$params['membership_type_id'], 'Positive'],
2 => [$params['to'], 'Timestamp'],
3 => [$params['to'], 'Timestamp'],
3 => [$params['from'], 'Timestamp'],
];
if (!empty($params['preferred_language'])) {
......@@ -614,8 +622,8 @@ class CRM_Membershipreport_Form_Report_MembershipRenewal extends CRM_Report_Form
LEFT JOIN civicrm_contact c ON (c.id = m.contact_id)
WHERE m.is_test = 0 AND mlog.status_id = 3
AND mlog.membership_type_id = %1
AND mlog.modified_date >= %2
AND mlog.modified_date <= %3';
AND DATE_FORMAT(mlog.modified_date, "%Y%m%d") >= DATE_FORMAT(%2, "%Y%m%d")
AND DATE_FORMAT(mlog.modified_date, "%Y%m%d") <= DATE_FORMAT(%3, "%Y%m%d")';
$sql_params = [
1 => [$params['membership_type_id'], 'Positive'],
......@@ -672,8 +680,8 @@ class CRM_Membershipreport_Form_Report_MembershipRenewal extends CRM_Report_Form
LEFT JOIN civicrm_contact c ON (c.id = m.contact_id)
WHERE m.is_test = 0 AND mlog.status_id = 4
AND mlog.membership_type_id = %1
AND mlog.modified_date >= %2
AND mlog.modified_date <= %3';
AND DATE_FORMAT(mlog.modified_date, "%Y%m%d") >= DATE_FORMAT(%2, "%Y%m%d")
AND DATE_FORMAT(mlog.modified_date, "%Y%m%d") <= DATE_FORMAT(%3, "%Y%m%d")';
$sql_params = [
1 => [$params['membership_type_id'], 'Positive'],
......@@ -891,8 +899,8 @@ class CRM_Membershipreport_Form_Report_MembershipRenewal extends CRM_Report_Form
FROM civicrm_membership_log mlog
LEFT JOIN civicrm_membership m ON (mlog.membership_id = m.id)
WHERE m.contact_id = %1
AND mlog.start_date <= %2
AND mlog.end_date >= %3
AND DATE_FORMAT(mlog.start_date, "%Y%m%d") <= DATE_FORMAT(%2, "%Y%m%d")
AND DATE_FORMAT(mlog.end_date, "%Y%m%d") >= DATE_FORMAT(%3, "%Y%m%d")
AND mlog.membership_type_id IN (%4)
GROUP BY mlog.membership_type_id', [
1 => [$row['contact_id'], 'Positive'],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment