====== Membres ====== ===== Membres ayant cotisé les années passées mais pas encore l'année en cours ===== * version initiale : Guillaume Leroux * généralisation dates : JCE * sans ''GROUP BY'' : chaque ancien adhérent apparait une fois par année antérieure cotisée * avec ''GROUP BY'' : chaque ancien adhérent n'apparait qu'une fois ++++Cliquer pour voir le code| SELECT users.nom, users.email, users.id, s.label AS 'Activité' FROM users INNER JOIN services_users su ON su.id_user = users.id INNER JOIN services s ON s.id = su.id_service WHERE ( s.label = "Cotisation " || strftime('%Y', date('now', '-1 year')) OR s.label = "Cotisation " || strftime('%Y', date('now', '-2 year')) OR s.label = "Cotisation " || strftime('%Y', date('now', '-3 year')) ) AND users.id NOT IN ( SELECT users.id FROM users INNER JOIN services_users su ON su.id_user = users.id INNER JOIN services s ON s.id = su.id_service WHERE s.label = "Cotisation " || strftime('%Y', date()) ) GROUP BY users.id ORDER BY users.nom LIMIT 1000 ; ++++ ===== Membres inscrits à une activité sans avoir d'adhésion ===== * Eric Buissonnet ++++Cliquer pour voir le code| SELECT users.nom, users.email, users.id AS _user_id, s.label AS 'Activité', f.label AS 'Tarif', su.paid AS 'Payé', su.date AS 'Date' FROM users INNER JOIN services_users su ON su.id_user = users.id INNER JOIN services s ON s.id = su.id_service INNER JOIN services_fees f ON f.id = su.id_fee WHERE s.id != 1 AND su.date >= s.start_date AND su.id_user NOT IN ( SELECT id_user FROM services_users sus WHERE sus.id_service = 1 AND sus.date >= s.start_date ) ORDER BY users.nom ASC; ++++ ===== Adhérents ayant versé une cotisation ou un don à l’association ===== * voir [[https://fossil.kd2.org/paheko/wiki?name=Requ%C3%AAte%20export%20adh%C3%A9rents%20payants|la doc paheko]] * Il faut modifier le numéro d'activité (voir plus bas) pour croiser les membres avec la bonne activité (ici on a pris l'activité n°1). * Il ne restera plus qu'à copier-coller le résultat de la requête dans LibreOffice Calc (ou un autre tableur) pour faire un publipostage. ++++Cliquer pour voir le code| SELECT su.date AS 'Date d''inscription', su.expiry_date AS 'Date d''expiration', SUM(tl.debit)/100 AS 'Montant réglé', expected_amount - SUM(tl.debit)/100 AS 'Reste à régler', users.*, users.id AS _user_id FROM users INNER JOIN ( SELECT MAX(expiry_date) AS expiry_date, date, id_user, id, expected_amount FROM services_users -- Modifier ici l'ID de l'activité WHERE id_service = 1 AND paid = 1 AND (expiry_date >= date() OR expiry_date IS NULL) GROUP BY id_user) AS su ON su.id_user = users.id LEFT JOIN acc_transactions_users tu ON tu.id_service_user = su.id LEFT JOIN acc_transactions_lines tl ON tl.id_transaction = tu.id_transaction GROUP BY users.id ++++ {{tag>sql}}