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