From 1d93cd61e719d5c5dae67ff4776a62ae5c07030e Mon Sep 17 00:00:00 2001
From: Manuel H
Date: Mon, 17 Aug 2020 16:00:52 +0200
Subject: [PATCH 1/2] Adhesion en mois - mensualisation #1438
---
galette/lib/Galette/Entity/Contribution.php | 76 +++++++++++--------
galette/lib/Galette/Entity/Entitled.php | 6 +-
galette/templates/default/editer_intitule.tpl | 10 ++-
.../default/gestion_intitule_content.tpl | 16 +++-
4 files changed, 71 insertions(+), 37 deletions(-)
diff --git a/galette/lib/Galette/Entity/Contribution.php b/galette/lib/Galette/Entity/Contribution.php
index d1af0b1c..c625c538 100644
--- a/galette/lib/Galette/Entity/Contribution.php
+++ b/galette/lib/Galette/Entity/Contribution.php
@@ -208,36 +208,49 @@ class Contribution
private function retrieveEndDate()
{
global $preferences;
-
+
$bdate = new \DateTime($this->_begin_date);
- if ($preferences->pref_beg_membership != '') {
- //case beginning of membership
- list($j, $m) = explode('/', $preferences->pref_beg_membership);
- $edate = new \DateTime($bdate->format('Y') . '-' . $m . '-' . $j);
- while ($edate <= $bdate) {
- $edate->modify('+1 year');
- }
-
- if ($preferences->pref_membership_offermonths > 0) {
- //count days until end of membership date
- $diff1 = (int)$bdate->diff($edate)->format('%a');
-
- //count days beetween end of membership date and offered months
- $tdate = clone $edate;
- $tdate->modify('-' . $preferences->pref_membership_offermonths . ' month');
- $diff2 = (int)$edate->diff($tdate)->format('%a');
-
- //when number of days until end of membership is less than for offered months, it's free :)
- if ($diff1 <= $diff2) {
+
+ if ($preferences->pref_beg_membership != '') { //adhésion classique de date à date + 1 an
+ if ($this->_type->extension==-1) //C'est une adhésion classique en année
+ {
+ //case beginning of membership
+ list($j, $m) = explode('/', $preferences->pref_beg_membership);
+ $edate = new \DateTime($bdate->format('Y') . '-' . $m . '-' . $j);
+ while ($edate <= $bdate) {
$edate->modify('+1 year');
}
+
+ if ($preferences->pref_membership_offermonths > 0) {
+ //count days until end of membership date
+ $diff1 = (int)$bdate->diff($edate)->format('%a');
+
+ //count days beetween end of membership date and offered months
+ $tdate = clone $edate;
+ $tdate->modify('-' . $preferences->pref_membership_offermonths . ' month');
+ $diff2 = (int)$edate->diff($tdate)->format('%a');
+
+ //when number of days until end of membership is less than for offered months, it's free :)
+ if ($diff1 <= $diff2) {
+ $edate->modify('+1 year');
+ }
+ }
+
+ $this->_end_date = $edate->format('Y-m-d');
}
-
- $this->_end_date = $edate->format('Y-m-d');
- } elseif ($preferences->pref_membership_ext != '') {
+ else
+ {
+ $dext = new \DateInterval('P' . $this->_type->extension . 'M');
+ $edate = $bdate->add($dext);
+ $this->_end_date = $edate->format('Y-m-d');
+ }
+ } elseif ($preferences->pref_membership_ext != '') { //adhésion classique de date à date + N mois
//case membership extension
if ($this->_extension == null) {
- $this->_extension = $preferences->pref_membership_ext;
+ if ($this->_type->extension==-1)
+ $this->_extension = $preferences->pref_membership_ext;
+ else
+ $this->_extension = $this->_type->extension;
}
$dext = new \DateInterval('P' . $this->_extension . 'M');
$edate = $bdate->add($dext);
@@ -245,7 +258,7 @@ class Contribution
} else {
throw new \RuntimeException(
'Unable to define end date; none of pref_beg_membership nor pref_membership_ext are defined!'
- );
+ );
}
}
@@ -519,7 +532,8 @@ class Contribution
'c.' . ContributionsTypes::PK . '=ct.' . ContributionsTypes::PK,
array()
)->where(Adherent::PK . ' = ' . $this->_member)
- ->where(array('cotis_extension' => new Expression('true')))
+ //->where(array('cotis_extension' => new Expression('true')))
+ ->where->notEqualTo('cotis_extension', 0)
->where->nest->nest
->greaterThanOrEqualTo('date_debut_cotis', $this->_begin_date)
->lessThan('date_debut_cotis', $this->_end_date)
@@ -830,9 +844,11 @@ class Contribution
array()
)->where(
Adherent::PK . ' = ' . $member_id
- )->where(
- array('cotis_extension' => new Expression('true'))
- );
+ )->where->notEqualTo('cotis_extension', 0);
+
+ /*->where(
+ array('cotis_extension' => new Expression('true'))
+ );*/
$results = $zdb->execute($select);
$result = $results->current();
@@ -1236,7 +1252,7 @@ class Contribution
//set type
$this->$rname = new ContributionsTypes($this->zdb, $value);
//set is_cotis according to type
- if ($this->$rname->extension == 1) {
+ if ($this->$rname->extension != 0) {//== 1) {
$this->_is_cotis = true;
} else {
$this->_is_cotis = false;
diff --git a/galette/lib/Galette/Entity/Entitled.php b/galette/lib/Galette/Entity/Entitled.php
index e390ed7e..17fe10cd 100644
--- a/galette/lib/Galette/Entity/Entitled.php
+++ b/galette/lib/Galette/Entity/Entitled.php
@@ -250,9 +250,11 @@ abstract class Entitled
}
if ($extent !== null) {
if ($extent === true) {
- $select->where(array($this->fthird => new Expression('true')));
+ //$select->where(array($this->fthird => new Expression('true')));
+ $select->where->notEqualTo($this->fthird, 0);
} elseif ($extent === false) {
- $select->where(array($this->fthird => new Expression('false')));
+ //$select->where(array($this->fthird => new Expression('false')));
+ $select->where->equalTo($this->fthird, 0);
}
}
diff --git a/galette/templates/default/editer_intitule.tpl b/galette/templates/default/editer_intitule.tpl
index 18a4ad1e..ef6ea8f4 100644
--- a/galette/templates/default/editer_intitule.tpl
+++ b/galette/templates/default/editer_intitule.tpl
@@ -25,7 +25,15 @@
{_T string="Note: members with a status priority lower than %priority are staff members." pattern="/%priority/" replace=$non_staff_priority}
{elseif $class == 'ContributionsTypes'}
- $field == 1} checked="checked"{/if} />
+
+
{/if}
diff --git a/galette/templates/default/gestion_intitule_content.tpl b/galette/templates/default/gestion_intitule_content.tpl
index ee9f05a0..c61ed180 100644
--- a/galette/templates/default/gestion_intitule_content.tpl
+++ b/galette/templates/default/gestion_intitule_content.tpl
@@ -34,7 +34,11 @@
{if $class == 'ContributionsTypes'}
{elseif $class == 'Status'}
@@ -74,10 +78,14 @@
{if $class == 'ContributionsTypes'}
- {if $entry.extra eq 1}
- {_T string="Yes"}
- {else}
+ {if $entry.extra eq 0}
{_T string="No"}
+ {elseif $entry.extra eq -1}
+ {_T string="By default"}
+ {elseif $entry.extra eq 1}
+ {$entry.extra} {_T string="month"}
+ {else}
+ {$entry.extra} {_T string="months"}
{/if}
{elseif $class == 'Status'}
{$entry.extra}
--
2.17.1
|