Overview
Comment:Simplification statut cotisation obligatoire
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: d62276773e3108318d0e4e4d76e1e3a20e4e2467
User & Date: bohwaz on 2014-02-03 16:44:27
Other Links: manifest | tags
Context
2014-02-03
16:56
modification de paiement membre check-in: fcbb4978f2 user: bohwaz tags: trunk
16:44
Simplification statut cotisation obligatoire check-in: d62276773e user: bohwaz tags: trunk
16:16
Liste des activités en cours et état des paiements check-in: 6d02803261 user: bohwaz tags: trunk
Changes

Modified src/include/class.membres_transactions.php from [e1019c0a10] to [4da2164ab2].

155
156
157
158
159
160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182


183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
				OR (tr.fin IS NOT NULL AND tr.fin >= date(\'now\'))
				OR (tr.fin IS NULL AND tr.duree IS NULL)
			)
			GROUP BY mtr.id_transaction
			ORDER BY mtr.date DESC;', \SQLITE3_ASSOC, (int)$id);
	}

	public function isMemberUpToDate($id, $transaction)
	{
		$db = DB::getInstance();

		$where = '';

		$expires = 'NULL';

		if (!empty($transaction['duree']))
		{
			// On récupère les paiement dans les X jours précédant aujourd'hui
			$where = 'AND date >= date(\'now\', \'-' . (int)$transaction['duree'] . ' days\')';
			$expires = 'date(date, \'+' . (int)$transaction['duree'] . ' days\')';
		}
		elseif (!empty($transaction['debut']))
		{
			$expires = '\'' . $transaction['fin'] . '\'';
		}

		$res = $db->simpleQuerySingle('SELECT ' . $expires . ' AS expiration, SUM(montant) AS total
			FROM membres_transactions
			WHERE id_transaction = ? AND id_membre = ? ' . $where . ' 


			GROUP BY id_transaction
			ORDER BY date DESC LIMIT 1;',
			true, (int)$transaction['id'], (int)$id);

		// Pas de paiement trouvé : cotisation renouvelable expirée, ou pas de paiement fait
		// donc cotisation pas à jour
		if ($res === false)
		{
			return false;
		}

		// Pas assez payé !
		if ($res['total'] < $transaction['montant'])
		{
			return -1;
		}

		// Paiement suffisant, on renvoie la date d'expiration
		// enfin sauf si cotisation ponctuelle, auquel cas on renvoie juste true
		return $res['expiration'] ?: true;
	}

	public function countForMember($id)
	{
		$db = DB::getInstance();
		return $db->simpleQuerySingle('SELECT COUNT(*) FROM membres_transactions 
			WHERE id_membre = ?;', false, (int)$id);
	}
}







|


|
<
>
|
|
|
<
<
<
<
<
<
<
|
<
|
<
|
|
>
>
|
|
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<









155
156
157
158
159
160
161
162
163
164
165

166
167
168
169







170

171

172
173
174
175
176
177

178
















179
180
181
182
183
184
185
186
187
				OR (tr.fin IS NOT NULL AND tr.fin >= date(\'now\'))
				OR (tr.fin IS NULL AND tr.duree IS NULL)
			)
			GROUP BY mtr.id_transaction
			ORDER BY mtr.date DESC;', \SQLITE3_ASSOC, (int)$id);
	}

	public function isMemberUpToDate($id, $id_transaction)
	{
		$db = DB::getInstance();
		return $db->simpleQuerySingle('

			SELECT
				SUM(mtr.montant) AS total, tr.montant,
				tr.montant - SUM(mtr.montant) AS a_payer, tr.intitule, tr.duree, tr.debut, tr.fin,
				CASE WHEN tr.duree IS NOT NULL THEN date(mtr.date, \'+\'||tr.duree||\' days\')







				WHEN tr.fin IS NOT NULL THEN tr.fin ELSE NULL END AS expiration

			FROM transactions AS tr

				LEFT JOIN membres_transactions AS mtr
				ON (tr.id = mtr.id_transaction AND id_membre = ? 
					AND ((tr.duree IS NOT NULL AND mtr.date >= date(\'now\', \'-\'||tr.duree||\' days\')) OR tr.duree IS NULL))
			WHERE tr.id = ? AND ((tr.fin IS NOT NULL AND tr.fin >= date(\'now\')) OR (tr.fin IS NULL))
			GROUP BY tr.id
			ORDER BY mtr.date DESC LIMIT 1;',

			true, (int)$id, (int)$id_transaction);
















	}

	public function countForMember($id)
	{
		$db = DB::getInstance();
		return $db->simpleQuerySingle('SELECT COUNT(*) FROM membres_transactions 
			WHERE id_membre = ?;', false, (int)$id);
	}
}

Modified src/templates/admin/membres/fiche.tpl from [6003d7eb06] to [44b45febaf].

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
        {else}
            ponctuelle
        {/if}
        — {$cotisation.montant|escape_money} {$config.monnaie|escape}
    </dd>
    <dt>À jour de cotisation ?</dt>
    <dd>
        {if $statut_cotisation === false}
            <span class="error"><b>Non</b>, cotisation non payée ou expirée</span>
        {elseif $statut_cotisation === -1}
            <span class="alert"><b>Non</b>, cotisation payée partiellement</span>
        {else}
            <span class="confirm"><b>Oui</b>, cotisation à jour</span>
            {if $statut_cotisation !== true}(expire le {$statut_cotisation|format_sqlite_date_to_french}){/if}
        {/if}
    </dd>
{/if}
    <dt>Paiements</dt>
    <dd>
        {if $nb_paiements == 1}
            {$nb_paiements|escape} paiement enregistré







|

|



|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
        {else}
            ponctuelle
        {/if}
        — {$cotisation.montant|escape_money} {$config.monnaie|escape}
    </dd>
    <dt>À jour de cotisation ?</dt>
    <dd>
        {if $cotisation.total === null}
            <span class="error"><b>Non</b>, cotisation non payée ou expirée</span>
        {elseif $cotisation.a_payer > 0}
            <span class="alert"><b>Non</b>, cotisation payée partiellement</span>
        {else}
            <span class="confirm"><b>Oui</b>, cotisation à jour</span>
            {if $cotisation.expiration}(expire le {$cotisation.expiration|format_sqlite_date_to_french}){/if}
        {/if}
    </dd>
{/if}
    <dt>Paiements</dt>
    <dd>
        {if $nb_paiements == 1}
            {$nb_paiements|escape} paiement enregistré

Modified src/templates/admin/membres/transactions.tpl from [d7a672e152] to [f8c8f30d6d].

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
        {else}
            ponctuelle
        {/if}
        — {$cotisation.montant|escape_money} {$config.monnaie|escape}
    </dd>
    <dt>À jour de cotisation ?</dt>
    <dd>
        {if $statut_cotisation === false}
            <span class="error"><b>Non</b>, cotisation non payée ou expirée</span>
        {elseif $statut_cotisation === -1}
            <span class="alert"><b>Non</b>, cotisation payée partiellement</span>
        {else}
            <span class="confirm"><b>Oui</b>, cotisation à jour</span>
            {if $statut_cotisation !== true}(expire le {$statut_cotisation|format_sqlite_date_to_french}){/if}
        {/if}
    </dd>
{/if}
    <dt>Paiements</dt>
    <dd>
        {if $nb_paiements == 1}
            {$nb_paiements|escape} paiement enregistré
        {elseif $nb_paiements}
            {$nb_paiements|escape} paiements enregistrés
        {else}
            Aucun paiement enregistré
        {/if} 
    </dd>
    <dd><form method="get" action="{$admin_url}membres/transactions/ajout.php"><input type="submit" value="Enregistrer un paiement &rarr;" /><input type="hidden" name="id" value="{$membre.id|escape}" /></form></dd>
{if !empty($activites)}
    <dt>Activités ou cotisations en cours</dt>
    {foreach from=$activites item="activite"}
    <dd>{$activite.intitule|escape} — 
        {if $activite.total == $activite.montant}<span class="confirm">Réglé</span>
        {else}
            <span class="alert">{$activite.total|escape_money} {$config.monnaie|escape} 
                réglés sur un total de {$activite.montant|escape_money} {$config.monnaie|escape}</span>
            <span class="error">(reste {$activite.a_payer|escape_money} {$config.monnaie|escape} à payer)</span>
        {/if}
        {if $activite.expiration}— Valide jusqu'au {$activite.expiration|format_sqlite_date_to_french}{/if}
    </dd>







|

|



|


















|







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
        {else}
            ponctuelle
        {/if}
        — {$cotisation.montant|escape_money} {$config.monnaie|escape}
    </dd>
    <dt>À jour de cotisation ?</dt>
    <dd>
        {if $cotisation.total === null}
            <span class="error"><b>Non</b>, cotisation non payée ou expirée</span>
        {elseif $cotisation.a_payer > 0}
            <span class="alert"><b>Non</b>, cotisation payée partiellement</span>
        {else}
            <span class="confirm"><b>Oui</b>, cotisation à jour</span>
            {if $cotisation.expiration}(expire le {$cotisation.expiration|format_sqlite_date_to_french}){/if}
        {/if}
    </dd>
{/if}
    <dt>Paiements</dt>
    <dd>
        {if $nb_paiements == 1}
            {$nb_paiements|escape} paiement enregistré
        {elseif $nb_paiements}
            {$nb_paiements|escape} paiements enregistrés
        {else}
            Aucun paiement enregistré
        {/if} 
    </dd>
    <dd><form method="get" action="{$admin_url}membres/transactions/ajout.php"><input type="submit" value="Enregistrer un paiement &rarr;" /><input type="hidden" name="id" value="{$membre.id|escape}" /></form></dd>
{if !empty($activites)}
    <dt>Activités ou cotisations en cours</dt>
    {foreach from=$activites item="activite"}
    <dd>{$activite.intitule|escape} — 
        {if $activite.total >= $activite.montant}<span class="confirm">Réglé</span>
        {else}
            <span class="alert">{$activite.total|escape_money} {$config.monnaie|escape} 
                réglés sur un total de {$activite.montant|escape_money} {$config.monnaie|escape}</span>
            <span class="error">(reste {$activite.a_payer|escape_money} {$config.monnaie|escape} à payer)</span>
        {/if}
        {if $activite.expiration}— Valide jusqu'au {$activite.expiration|format_sqlite_date_to_french}{/if}
    </dd>

Modified src/www/admin/membres/fiche.php from [2b55b9725c] to [240a33a86e].

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
$categorie = $cats->get($membre['id_categorie']);
$tpl->assign('categorie', $categorie);

$m_transactions = new Membres_Transactions;

if (!empty($categorie['id_transaction_obligatoire']))
{
	$transactions = new Transactions;
	$tr = $transactions->get($categorie['id_transaction_obligatoire']);

	$tpl->assign('cotisation', $tr);
	$tpl->assign('statut_cotisation', $m_transactions->isMemberUpToDate($membre['id'], $tr));
}
else
{
	$tpl->assign('cotisation', false);
}

$tpl->assign('nb_paiements', $m_transactions->countForMember($membre['id']));

$tpl->assign('membre', $membre);

$tpl->display('admin/membres/fiche.tpl');

?>







<
<
<
<
|













30
31
32
33
34
35
36




37
38
39
40
41
42
43
44
45
46
47
48
49
50
$categorie = $cats->get($membre['id_categorie']);
$tpl->assign('categorie', $categorie);

$m_transactions = new Membres_Transactions;

if (!empty($categorie['id_transaction_obligatoire']))
{




	$tpl->assign('cotisation', $m_transactions->isMemberUpToDate($membre['id'], $categorie['id_transaction_obligatoire']));
}
else
{
	$tpl->assign('cotisation', false);
}

$tpl->assign('nb_paiements', $m_transactions->countForMember($membre['id']));

$tpl->assign('membre', $membre);

$tpl->display('admin/membres/fiche.tpl');

?>

Modified src/www/admin/membres/transactions.php from [7fcfe252c1] to [7f8593942f].

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$categorie = $cats->get($membre['id_categorie']);
$tpl->assign('categorie', $categorie);

$m_transactions = new Membres_Transactions;

if (!empty($categorie['id_transaction_obligatoire']))
{
	$transactions = new Transactions;
	$tr = $transactions->get($categorie['id_transaction_obligatoire']);

	$tpl->assign('cotisation', $tr);
	$tpl->assign('statut_cotisation', $m_transactions->isMemberUpToDate($membre['id'], $tr));
}
else
{
	$tpl->assign('cotisation', false);
}

$tpl->assign('nb_paiements', $m_transactions->countForMember($membre['id']));







<
<
<
<
|







27
28
29
30
31
32
33




34
35
36
37
38
39
40
41
$categorie = $cats->get($membre['id_categorie']);
$tpl->assign('categorie', $categorie);

$m_transactions = new Membres_Transactions;

if (!empty($categorie['id_transaction_obligatoire']))
{




	$tpl->assign('cotisation', $m_transactions->isMemberUpToDate($membre['id'], $categorie['id_transaction_obligatoire']));
}
else
{
	$tpl->assign('cotisation', false);
}

$tpl->assign('nb_paiements', $m_transactions->countForMember($membre['id']));