From 9daffcbe071a1ef8800311d781f027791c64ec32 Mon Sep 17 00:00:00 2001 From: Sebastien Baguet Date: Thu, 3 Oct 2019 00:29:41 +0200 Subject: [PATCH] Fix for no subscription members --- htdocs/adherents/card.php | 6 ++++- htdocs/adherents/class/adherent.class.php | 27 ++++++++++++------- htdocs/adherents/index.php | 3 +-- htdocs/adherents/list.php | 4 +-- htdocs/adherents/type.php | 16 +++++------ .../core/modules/mailings/fraise.modules.php | 4 +-- 6 files changed, 36 insertions(+), 24 deletions(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 79640cb981c..194251c9ecc 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -1672,7 +1672,11 @@ else } else { - if (! $adht->subscription) + if ($object->need_subscription == 0) + { + print $langs->trans("SubscriptionNotNeeded"); + } + elseif (! $adht->subscription) { print $langs->trans("SubscriptionNotRecorded"); if ($object->statut > 0) print " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft and not terminated diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index ea9835ecce9..07a8af10484 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -2178,7 +2178,8 @@ class Adherent extends CommonObject { if ($statut == -1) return $langs->trans("MemberStatusDraft"); elseif ($statut >= 1) { - if (! $date_end_subscription) return $langs->trans("MemberStatusActive"); + if ($need_subscription == 0) return $langs->trans("MemberStatusNoSubscription"); + elseif (! $date_end_subscription) return $langs->trans("MemberStatusActive"); elseif ($date_end_subscription < time()) return $langs->trans("MemberStatusActiveLate"); else return $langs->trans("MemberStatusPaid"); } @@ -2188,7 +2189,8 @@ class Adherent extends CommonObject { if ($statut == -1) return $langs->trans("MemberStatusDraftShort"); elseif ($statut >= 1) { - if (! $date_end_subscription) return $langs->trans("MemberStatusActiveShort"); + if ($need_subscription == 0) return $langs->trans("MemberStatusNoSubscription"); + elseif (! $date_end_subscription) return $langs->trans("MemberStatusActiveShort"); elseif ($date_end_subscription < time()) return $langs->trans("MemberStatusActiveLateShort"); else return $langs->trans("MemberStatusPaidShort"); } @@ -2198,7 +2200,8 @@ class Adherent extends CommonObject { if ($statut == -1) return img_picto($langs->trans('MemberStatusDraft'), 'statut0').' '.$langs->trans("MemberStatusDraftShort"); elseif ($statut >= 1) { - if (! $date_end_subscription) return img_picto($langs->trans('MemberStatusActive'), 'statut1').' '.$langs->trans("MemberStatusActiveShort"); + if ($need_subscription == 0) return img_picto($langs->trans('MemberStatusNoSubscription'), 'statut4').' '.$langs->trans("MemberStatusNoSubscriptionShort"); + elseif (! $date_end_subscription) return img_picto($langs->trans('MemberStatusActive'), 'statut1').' '.$langs->trans("MemberStatusActiveShort"); elseif ($date_end_subscription < time()) return img_picto($langs->trans('MemberStatusActiveLate'), 'statut3').' '.$langs->trans("MemberStatusActiveLateShort"); else return img_picto($langs->trans('MemberStatusPaid'), 'statut4').' '.$langs->trans("MemberStatusPaidShort"); } @@ -2208,7 +2211,8 @@ class Adherent extends CommonObject { if ($statut == -1) return img_picto($langs->trans('MemberStatusDraft'), 'statut0'); elseif ($statut >= 1) { - if (! $date_end_subscription) return img_picto($langs->trans('MemberStatusActive'), 'statut1'); + if ($need_subscription == 0) return img_picto($langs->trans('MemberStatusNoSubscription'), 'statut4'); + elseif (! $date_end_subscription) return img_picto($langs->trans('MemberStatusActive'), 'statut1'); elseif ($date_end_subscription < time()) return img_picto($langs->trans('MemberStatusActiveLate'), 'statut3'); else return img_picto($langs->trans('MemberStatusPaid'), 'statut4'); } @@ -2218,7 +2222,8 @@ class Adherent extends CommonObject { if ($statut == -1) return img_picto($langs->trans('MemberStatusDraft'), 'statut0').' '.$langs->trans("MemberStatusDraft"); elseif ($statut >= 1) { - if (! $date_end_subscription) return img_picto($langs->trans('MemberStatusActive'), 'statut1').' '.$langs->trans("MemberStatusActive"); + if ($need_subscription == 0) return img_picto($langs->trans('MemberStatusNoSubscription'), 'statut4').' '.$langs->trans("MemberStatusNoSubscription"); + elseif (! $date_end_subscription) return img_picto($langs->trans('MemberStatusActive'), 'statut1').' '.$langs->trans("MemberStatusActive"); elseif ($date_end_subscription < time()) return img_picto($langs->trans('MemberStatusActiveLate'), 'statut3').' '.$langs->trans("MemberStatusActiveLate"); else return img_picto($langs->trans('MemberStatusPaid'), 'statut4').' '.$langs->trans("MemberStatusPaid"); } @@ -2228,7 +2233,8 @@ class Adherent extends CommonObject { if ($statut == -1) return ''.$langs->trans("MemberStatusDraftShort").' '.img_picto($langs->trans('MemberStatusDraft'), 'statut0'); elseif ($statut >= 1) { - if (! $date_end_subscription) return ''.$langs->trans("MemberStatusActiveShort").' '.img_picto($langs->trans('MemberStatusActive'), 'statut1'); + if ($need_subscription == 0) return ''.$langs->trans("MemberStatusNoSubscriptionShort").' '.img_picto($langs->trans('MemberStatusNoSubscription'), 'statut4'); + elseif (! $date_end_subscription) return ''.$langs->trans("MemberStatusActiveShort").' '.img_picto($langs->trans('MemberStatusActive'), 'statut1'); elseif ($date_end_subscription < time()) return ''.$langs->trans("MemberStatusActiveLateShort").' '.img_picto($langs->trans('MemberStatusActiveLate'), 'statut3'); else return ''.$langs->trans("MemberStatusPaidShort").' '.img_picto($langs->trans('MemberStatusPaid'), 'statut4'); } @@ -2238,7 +2244,8 @@ class Adherent extends CommonObject { if ($statut == -1) return $langs->trans("MemberStatusDraft").' '.img_picto($langs->trans('MemberStatusDraft'), 'statut0'); if ($statut >= 1) { - if (! $date_end_subscription) return $langs->trans("MemberStatusActive").' '.img_picto($langs->trans('MemberStatusActive'), 'statut1'); + if ($need_subscription == 0) return $langs->trans("MemberStatusNoSubscription").' '.img_picto($langs->trans('MemberStatusNoSubscription'), 'statut4'); + elseif (! $date_end_subscription) return $langs->trans("MemberStatusActive").' '.img_picto($langs->trans('MemberStatusActive'), 'statut1'); elseif ($date_end_subscription < time()) return $langs->trans("MemberStatusActiveLate").' '.img_picto($langs->trans('MemberStatusActiveLate'), 'statut3'); else return $langs->trans("MemberStatusPaid").' '.img_picto($langs->trans('MemberStatusPaid'), 'statut4'); } @@ -2301,9 +2308,11 @@ class Adherent extends CommonObject $sql = "SELECT a.rowid, a.datefin, a.statut"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent as a"; - $sql.= " WHERE a.statut = 1"; + $sql.= ", ".MAIN_DB_PREFIX."adherent_type as t"; + $sql.= " WHERE d.fk_adherent_type = t.rowid"; + $sql.= " AND a.statut = 1"; $sql.= " AND a.entity IN (".getEntity('adherent').")"; - $sql.= " AND (a.datefin IS NULL or a.datefin < '".$this->db->idate($now)."')"; + $sql.= " AND ((a.datefin IS NULL or a.datefin < '".$this->db->idate($now)."') AND t.subscription = 1)"; $resql=$this->db->query($sql); if ($resql) diff --git a/htdocs/adherents/index.php b/htdocs/adherents/index.php index 6b465c7bf9f..b858693255e 100644 --- a/htdocs/adherents/index.php +++ b/htdocs/adherents/index.php @@ -104,8 +104,7 @@ $now=dol_now(); $sql = "SELECT count(*) as somme , d.fk_adherent_type"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent as d, ".MAIN_DB_PREFIX."adherent_type as t"; $sql.= " WHERE d.entity IN (".getEntity('adherent').")"; -//$sql.= " AND d.statut = 1 AND ((t.subscription = 0 AND d.datefin IS NULL) OR d.datefin >= '".$db->idate($now)."')"; -$sql.= " AND d.statut = 1 AND d.datefin >= '".$db->idate($now)."'"; +$sql.= " AND d.statut = 1 AND (d.datefin >= '".$db->idate($now)."' OR t.subscription = 0)"; $sql.= " AND t.rowid = d.fk_adherent_type"; $sql.= " GROUP BY d.fk_adherent_type"; diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 52bdba74485..57d99a387e2 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -294,8 +294,8 @@ if ($search_town) $sql.= natural_search("d.town", $search_town); if ($search_zip) $sql.= natural_search("d.zip", $search_zip); if ($search_state) $sql.= natural_search("state.nom", $search_state); if ($search_country) $sql .= " AND d.country IN (".$search_country.')'; -if ($filter == 'uptodate') $sql.=" AND datefin >= '".$db->idate($now)."'"; -if ($filter == 'outofdate') $sql.=" AND (datefin IS NULL OR datefin < '".$db->idate($now)."')"; +if ($filter == 'uptodate') $sql.=" AND (datefin >= '".$db->idate($now)."' OR t.subscription = 0)"; +if ($filter == 'outofdate') $sql.=" AND ((datefin IS NULL OR datefin < '".$db->idate($now)."') AND t.subscription = 1)"; // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index 08cd29de5e1..ac15e8d28ae 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -524,14 +524,14 @@ if ($rowid > 0) { $sql.= natural_search("d.email", $search_email); } - if ($filter == 'uptodate') - { - $sql.=" AND datefin >= '".$db->idate($now)."'"; - } - if ($filter == 'outofdate') - { - $sql.=" AND datefin < '".$db->idate($now)."'"; - } + if ($filter == 'uptodate') + { + $sql.=" AND (datefin >= '".$db->idate($now)."') OR t.subscription = 0)"; + } + if ($filter == 'outofdate') + { + $sql.=" AND (datefin < '".$db->idate($now)."' AND t.subscription = 1)"; + } $sql.= " ".$db->order($sortfield, $sortorder); diff --git a/htdocs/core/modules/mailings/fraise.modules.php b/htdocs/core/modules/mailings/fraise.modules.php index 51bc8a85de6..670b831c25f 100644 --- a/htdocs/core/modules/mailings/fraise.modules.php +++ b/htdocs/core/modules/mailings/fraise.modules.php @@ -256,8 +256,8 @@ class mailing_fraise extends MailingTargets $sql.= " AND a.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE fk_mailing=".$this->db->escape($mailing_id).")"; // Filter on status if (isset($_POST["filter"]) && $_POST["filter"] == '-1') $sql.= " AND a.statut=-1"; - if (isset($_POST["filter"]) && $_POST["filter"] == '1a') $sql.= " AND a.statut=1 AND a.datefin >= '".$this->db->idate($now)."'"; - if (isset($_POST["filter"]) && $_POST["filter"] == '1b') $sql.= " AND a.statut=1 AND (a.datefin IS NULL or a.datefin < '".$this->db->idate($now)."')"; + if (isset($_POST["filter"]) && $_POST["filter"] == '1a') $sql.= " AND a.statut=1 AND (a.datefin >= '".$this->db->idate($now)."' OR ta.subscription = 0)"; + if (isset($_POST["filter"]) && $_POST["filter"] == '1b') $sql.= " AND a.statut=1 AND ((a.datefin IS NULL or a.datefin < '".$this->db->idate($now)."') AND ta.subscription = 1)"; if (isset($_POST["filter"]) && $_POST["filter"] == '0') $sql.= " AND a.statut=0"; // Filter on date if ($dateendsubscriptionafter > 0) $sql.=" AND datefin > '".$this->db->idate($dateendsubscriptionafter)."'";