http://redmine.ulysses.fr/http://redmine.ulysses.fr/themes/PurpleMine2/favicon/favicon.ico?16318893672020-03-07T08:12:55ZGalette bugs & featuresGalette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199062020-03-07T08:12:55ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Duplique</strong> <i><a class="issue tracker-5 status-6 priority-4 priority-default closed" href="/issues/913">Souhaits #913</a>: Offrir les 3 derniers mois de l'année</i> ajouté</li></ul> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199092020-03-07T08:19:43ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>Rejeté</i></li></ul><p>Aucune idée pour la date, ça dépend de ce que vous voulez... Le mieux serait sûrement de poser ce genre de question sur la liste, que d'autres puissent aider au besoin.</p>
<blockquote>
<p>Je souhaiterais que les adhésions faites à partir du 1er octobre soient effectives jusqu'au 31/12 de l'année suivante.</p>
</blockquote>
<p>Galette ne permet pas ça de manière automatique ; la date proposée est la bonne, à l'exception de l'année. La demande a déjà été faite (<a class="external" href="https://bugs.galette.eu/issues/913">https://bugs.galette.eu/issues/913</a>) mais n'a pas intéressé grand monde. J'ai crée un vote pour la demande.</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199202020-03-09T13:04:02ZManuel Her
<ul></ul><p>Bonjour,</p>
<p>Voici comment je l'ai implémenté.<br />Le format de pref_beg_membership devient 'dd/mm;mois à offrir' et fonctionne aussi avec dd/mm.<br />Je l'ai testé en changeant la date de mon serveur de test.<br />Dans mon cas, j'ai configuré 01/01;2<br />Ca va faire gagner pas mal de temps à notre secrétaire qui doit modifier les dates des contributions paypal en fin d'année.</p>
<p>preferences.tpl ; line 192 :<br /><pre><code class="php syntaxhl" data-language="php">
<span class="nt"><input</span> <span class="na">type=</span><span class="s">"text"</span> <span class="na">name=</span><span class="s">"pref_beg_membership"</span> <span class="na">id=</span><span class="s">"pref_beg_membership"</span> <span class="na">value=</span><span class="s">"{$pref.pref_beg_membership}"</span> <span class="na">maxlength=</span><span class="s">"7"</span><span class="err">(</span><span class="na">au</span> <span class="na">lieu</span> <span class="na">de</span> <span class="err">5)</span>
<span class="err">{</span><span class="na">if</span> <span class="na">isset</span><span class="err">($</span><span class="na">required.pref_beg_membership</span><span class="err">)</span> <span class="na">and</span> <span class="err">$</span><span class="na">required.pref_beg_membership</span> <span class="na">eq</span> <span class="err">1}</span> <span class="na">required=</span><span class="s">"required"</span><span class="err">{/</span><span class="na">if</span><span class="err">}</span><span class="nt">/></span>
<span class="nt"><span</span> <span class="na">class=</span><span class="s">"exemple"</span><span class="nt">></span>{_T string="(dd/mm) or (dd/mm;freemonth)"}<span class="nt"></span></span>
</code></pre></p>
<p>Preferences.php; line 462 :<br /><pre><code class="php syntaxhl" data-language="php">
<span class="k">case</span> <span class="s1">'pref_beg_membership'</span><span class="o">:</span>
<span class="c1">//$beg_membership = explode("/", $value);</span>
<span class="c1">//format is dd/mm;freemonth </span>
<span class="k">if</span> <span class="p">(</span><span class="nb">preg_match_all</span><span class="p">(</span><span class="s1">'#(\d{1,2})/(\d{1,2});?(\d)?$#mius'</span><span class="p">,</span> <span class="nv">$value</span><span class="p">,</span> <span class="nv">$beg_membership</span><span class="p">,</span> <span class="no">PREG_SET_ORDER</span><span class="p">))</span>
<span class="p">{</span>
<span class="nv">$beg_membership</span> <span class="o">=</span> <span class="nv">$beg_membership</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span> <span class="c1">//je ne maitrise pas bien preg; il y peut être une façon plus propre de faire ça :)</span>
<span class="nb">array_shift</span><span class="p">(</span><span class="nv">$beg_membership</span><span class="p">);</span> <span class="c1">//supprimer le "catch" global</span>
<span class="p">}</span>
<span class="c1">// $this->errors[] .= "beg_membership =".var_export($beg_membership, true);</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">count</span><span class="p">(</span><span class="nv">$beg_membership</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">2</span> <span class="o">&&</span> <span class="nb">count</span><span class="p">(</span><span class="nv">$beg_membership</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
<span class="nv">$this</span><span class="o">-></span><span class="n">errors</span><span class="p">[]</span> <span class="o">=</span> <span class="nf">_T</span><span class="p">(</span><span class="s2">"- Invalid format of beginning of membership."</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nv">$now</span> <span class="o">=</span> <span class="nb">getdate</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">checkdate</span><span class="p">(</span><span class="nv">$beg_membership</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="nv">$beg_membership</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nv">$now</span><span class="p">[</span><span class="s1">'year'</span><span class="p">]))</span> <span class="p">{</span>
<span class="nv">$this</span><span class="o">-></span><span class="n">errors</span><span class="p">[]</span> <span class="o">=</span> <span class="nf">_T</span><span class="p">(</span><span class="s2">"- Invalid date for beginning of membership."</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">break</span><span class="p">;</span>
</code></pre></p>
<p>Contribution.php ; line 209 :<br /><pre><code class="php syntaxhl" data-language="php">
<span class="k">global</span> <span class="nv">$preferences</span><span class="p">;</span>
<span class="nv">$bdate</span> <span class="o">=</span> <span class="k">new</span> <span class="err">\</span><span class="nf">DateTime</span><span class="p">(</span><span class="nv">$this</span><span class="o">-></span><span class="n">_begin_date</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$preferences</span><span class="o">-></span><span class="n">pref_beg_membership</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">//case beginning of membership</span>
<span class="c1">//list($j, $m) = explode('/', $preferences->pref_beg_membership);</span>
<span class="k">list</span><span class="p">(</span><span class="nv">$j</span><span class="p">,</span> <span class="nv">$m</span><span class="p">,</span> <span class="nv">$freemonth</span><span class="p">)</span> <span class="o">=</span> <span class="nb">preg_split</span><span class="p">(</span><span class="s1">'#[/;]#'</span><span class="p">,</span> <span class="nv">$preferences</span><span class="o">-></span><span class="n">pref_beg_membership</span><span class="mf">.</span><span class="s1">';0'</span><span class="p">);</span> <span class="c1">//format (dd/mm;0) or (dd/mm;freemonth)</span>
<span class="nv">$edate</span> <span class="o">=</span> <span class="k">new</span> <span class="err">\</span><span class="nf">DateTime</span><span class="p">(</span><span class="nv">$bdate</span><span class="o">-></span><span class="nf">format</span><span class="p">(</span><span class="s1">'Y'</span><span class="p">)</span> <span class="mf">.</span> <span class="s1">'-'</span> <span class="mf">.</span> <span class="nv">$m</span> <span class="mf">.</span> <span class="s1">'-'</span> <span class="mf">.</span> <span class="nv">$j</span><span class="p">);</span>
<span class="k">while</span> <span class="p">(</span><span class="nv">$edate</span> <span class="o"><=</span> <span class="nv">$bdate</span><span class="p">)</span> <span class="p">{</span>
<span class="nv">$edate</span><span class="o">-></span><span class="nf">modify</span><span class="p">(</span><span class="s1">'+1 year'</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">//hm-> </span>
<span class="k">if</span><span class="p">(</span><span class="nv">$freemonth</span><span class="o">></span><span class="mi">0</span><span class="p">)</span>
<span class="p">{</span>
<span class="c1">//comparaison en nombre de jours (le 1er essai en nombre de mois ne fonctionnait pas avec diff(); pb d'arrondi par excès?)</span>
<span class="c1">//le nombre de mois entre la date de fin venant d'être calculé et la date de début est-il inférieur ou égal à $freemonth ?</span>
<span class="nv">$diff1</span> <span class="o">=</span> <span class="nb">intval</span><span class="p">(</span><span class="nv">$bdate</span><span class="o">-></span><span class="nf">diff</span><span class="p">(</span><span class="nv">$edate</span><span class="p">)</span><span class="o">-></span><span class="nf">format</span><span class="p">(</span><span class="s1">'%a'</span><span class="p">));</span>
<span class="nv">$tdate</span> <span class="o">=</span> <span class="k">clone</span> <span class="nv">$edate</span><span class="p">;</span>
<span class="nv">$tdate</span><span class="o">-></span><span class="nf">modify</span><span class="p">(</span><span class="s1">'-'</span> <span class="mf">.</span> <span class="nv">$freemonth</span> <span class="mf">.</span> <span class="s1">' month'</span><span class="p">);</span>
<span class="nv">$diff2</span> <span class="o">=</span> <span class="nb">intval</span><span class="p">(</span><span class="nv">$edate</span><span class="o">-></span><span class="nf">diff</span><span class="p">(</span><span class="nv">$tdate</span><span class="p">)</span><span class="o">-></span><span class="nf">format</span><span class="p">(</span><span class="s1">'%a'</span><span class="p">));</span>
<span class="k">if</span><span class="p">(</span><span class="nv">$diff1</span><span class="o"><=</span><span class="nv">$diff2</span><span class="p">)</span> <span class="nv">$edate</span><span class="o">-></span><span class="nf">modify</span><span class="p">(</span><span class="s1">'+1 year'</span><span class="p">);</span>
<span class="c1">//echo "<br>interval=".$diff1."<br>interval2=".$diff2."<br>";</span>
<span class="p">}</span>
<span class="c1">// <-hm </span>
<span class="nv">$this</span><span class="o">-></span><span class="n">_end_date</span> <span class="o">=</span> <span class="nv">$edate</span><span class="o">-></span><span class="nf">format</span><span class="p">(</span><span class="s1">'Y-m-d'</span><span class="p">);</span>
<span class="p">}</span> <span class="k">elseif</span> <span class="p">(</span><span class="nv">$preferences</span><span class="o">-></span><span class="n">pref_membership_ext</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">)</span> <span class="p">{</span>
</code></pre></p>
<p>Manuel</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199212020-03-09T13:44:43ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Catégorie</strong> mis à <i>Core</i></li><li><strong>Statut</strong> changé de <i>Rejeté</i> à <i>Nouveau</i></li></ul><p>En effet, c'est une piste intéressante, j'y regarderai de plus près :)</p>
<p>Du coup, je réouvre ce ticket et ferme l'autre.</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199222020-03-09T13:45:25ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Duplique</strong> <i><a class="issue tracker-5 status-6 priority-4 priority-default closed" href="/issues/913">Souhaits #913</a>: Offrir les 3 derniers mois de l'année</i> supprimé</li></ul> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199252020-03-09T13:45:35ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Dupliqué par</strong> <i><a class="issue tracker-5 status-6 priority-4 priority-default closed" href="/issues/913">Souhaits #913</a>: Offrir les 3 derniers mois de l'année</i> ajouté</li></ul> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199292020-03-09T17:55:52ZJohan Cwiklinskijohan@x-tnd.be
<ul></ul><p>Globalement, je suis d'accord. Ne serait-il pas plus aisé pour les utilisateurs que cette information soit dans un champ à part, plutôt que d'utiliser une syntaxe spécifique ? (personnellement, ça ne me gêne pas plus que ça, mais c'est forcément plus compliqué ;)).</p>
<p>Sinon, au regard de l'implémentation actuelle ; je n'aurai probablement pas eu recours à du preg split. À mon avis, il faut regarder pour la présence d'un <code>;</code> et dans ce cas, récupérer la valeur, et la virer de la chaine d'origine. Quelque chose comme :<br /><pre><code class="php syntaxhl" data-language="php"><span class="k">if</span> <span class="p">(</span><span class="nb">strpos</span><span class="p">(</span><span class="nv">$value</span><span class="p">,</span> <span class="s1">';'</span><span class="p">)</span> <span class="o">!==</span> <span class="kc">false</span><span class="p">))</span> <span class="p">{</span>
<span class="k">list</span> <span class="nv">$beg_membership</span><span class="p">,</span> <span class="nv">$freemonth</span> <span class="o">=</span> <span class="nb">explode</span><span class="p">(</span><span class="s1">';'</span><span class="p">,</span> <span class="nv">$value</span><span class="p">);</span>
<span class="nv">$beg_membership</span> <span class="o">=</span> <span class="nb">explode</span><span class="p">(</span><span class="s1">'/'</span><span class="p">,</span> <span class="nv">$beg_membership</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nv">$beg_membership</span> <span class="o">=</span> <span class="nb">explode</span><span class="p">(</span><span class="s1">'/'</span><span class="p">,</span> <span class="nv">$value</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></p>
<p>Et probablement une fonction pour traiter ça proprement puisque c'est utile à différents endroits.</p>
<p>Enfin, dans ce genre là :)</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199312020-03-09T20:29:24ZManuel Her
<ul></ul><p>J'ai utilisé le ; pour éviter de confondre avec une date type mm/dd/yy.</p>
<p>Il serait préférable d'ajouter un champ pour une meilleure compréhension, initialisé à 0 par défaut.</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199442020-04-02T15:52:43ZManuel Her
<ul></ul><p>Bonjour,</p>
<p>Du coup, allez-vous l'intégrer dans la prochaine version ?</p>
<p>Manuel</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199452020-04-02T21:16:49ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Version cible</strong> mis à <i>0.9.4</i></li><li><strong>Vote</strong> mis à <i>https://vote.galette.eu/posts/63/offer-last-n-months</i></li></ul><p>Je pense que ce pourrait être dans la prochaine version, oui</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199622020-04-18T06:49:41ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>In Progress</i></li><li><strong>Assigné à</strong> mis à <i>Johan Cwiklinski</i></li><li><strong>% réalisé</strong> changé de <i>0</i> à <i>100</i></li></ul><p>Si tu peux tester <a class="external" href="https://github.com/galette/galette/pull/47">https://github.com/galette/galette/pull/47</a></p>
<p>Il faut que j'ajoute des tests unitaires pour valider le fonctionnement (enfin... si j'y arrive).</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199682020-04-19T09:05:08ZJohan Cwiklinskijohan@x-tnd.be
<ul></ul><p>Johan Cwiklinski a écrit :</p>
<blockquote>
<p>Il faut que j'ajoute des tests unitaires pour valider le fonctionnement (enfin... si j'y arrive).</p>
</blockquote>
<p>C'est fait :)</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199912020-04-27T20:25:12ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Statut</strong> changé de <i>In Progress</i> à <i>Résolu</i></li></ul><p>Appliqué par commit <a class="changeset" title="Add preference to offer last months of the year closes #1407" href="http://redmine.ulysses.fr/projects/galette/repository/62/revisions/b52c47d1678b9365d9ec1d2546d19b496ea72f8e">b52c47d1678b9365d9ec1d2546d19b496ea72f8e</a>.</p> Galette - Evolution #1407: Adhésion en année civile avec cadeau pour les 2 derniers moishttp://redmine.ulysses.fr/issues/1407?journal_id=199932020-04-28T17:18:32ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Statut</strong> changé de <i>Résolu</i> à <i>Fermé</i></li></ul>