get( "SELECT id as idActivite, label, description FROM services ORDER BY label" ); } /** * @return liste des tarifs d'une activité * @param $activite : identifiant de l'activité */ public static function getTarifs($activite) { return DB::getInstance()->get( "SELECT services_fees.id as idTarif, services_fees.label as titreTarif, services_fees.description as descTarif, services_fees.amount as montantTarif FROM services_fees WHERE services_fees.id_service = ?", $activite ); } /** * @return liste de toutes les activités et tarifs */ public static function getActivitesEtTarifs() { return DB::getInstance()->get( "SELECT services.id as idActivite, services.label as titreActivite, services.description as descActivite, services_fees.id as idTarif, services_fees.label as titreTarif, services_fees.description as descTarif FROM services LEFT JOIN services_fees ON services_fees.id_service = services.id ORDER BY services.id, services_fees.id" ); } /** * @return liste de toutes les activités, tarifs et comptes associés */ public static function getActivitesTarifsEtComptes() { return DB::getInstance()->get( "SELECT services.id as idActivite, services.label as titreActivite, services.description as descActivite, services_fees.id as idTarif, services_fees.label as titreTarif, services_fees.description as descTarif, acc_accounts.code as numeroCpt, acc_accounts.label as nomCpt FROM services LEFT JOIN services_fees ON services_fees.id_service = services.id LEFT JOIN acc_accounts ON services_fees.id_account = acc_accounts.id ORDER BY services.label" ); } /** * @return tous les versements de l'année * @param $annee */ public static function getTousLesVersements($annee) { $sql = "SELECT services.id as idActivite, services_fees.id as idTarif, services.label as activite, services_fees.label as tarif, services_fees.amount as montant, acc_transactions_users.id_user as idUser, acc_transactions_lines.credit as versement, membres.nom as nom, membres.adresse as adresse, membres.ville as ville, membres.code_postal as codePostal, membres.email as courriel, acc_transactions.date, acc_transactions_users.id_transaction as idTrans FROM acc_transactions_users INNER JOIN membres on acc_transactions_users.id_user = membres.id INNER JOIN acc_transactions on acc_transactions_users.id_transaction = acc_transactions.id INNER JOIN services_users on acc_transactions_users.id_service_user = services_users.id INNER JOIN services on services_users.id_service = services.id INNER JOIN services_fees on services_users.id_fee = services_fees.id INNER JOIN acc_transactions_lines on acc_transactions_lines.id_transaction = acc_transactions.id WHERE (strftime(\"%Y\", acc_transactions.date) = ? AND acc_transactions_lines.credit > 0) ORDER by services.id, services_fees.id, membres.nom, acc_transactions.date"; return DB::getInstance()->get($sql, $annee); } /** * @return versements d'une année pour un ensemble de tarifs donnés * @param $annee * @param array $lesTarifs */ public static function getVersementsActivite($annee, $lesTarifs) { $db = DB::getInstance(); $sql = sprintf( 'SELECT services.id as idActivite, services_fees.id as idTarif, services.label as activite, services_fees.label as tarif, services_fees.amount as montant, acc_transactions_users.id_user as idUser, acc_transactions_lines.credit as versement, membres.nom as nom, membres.adresse as adresse, membres.ville as ville, membres.code_postal as codePostal, membres.email as courriel, acc_transactions.date, acc_transactions_users.id_transaction as idTrans FROM acc_transactions_users INNER JOIN membres on acc_transactions_users.id_user = membres.id INNER JOIN acc_transactions on acc_transactions_users.id_transaction = acc_transactions.id INNER JOIN services_users on acc_transactions_users.id_service_user = services_users.id INNER JOIN services on services_users.id_service = services.id INNER JOIN services_fees on services_users.id_fee = services_fees.id INNER JOIN acc_transactions_lines on acc_transactions_lines.id_transaction = acc_transactions.id WHERE (strftime(%s, acc_transactions.date) = "%d" AND services_fees.%s AND acc_transactions_lines.credit > 0) ORDER by membres.nom, acc_transactions.date', '"%Y"', $annee, $db->where('id', $lesTarifs)); return $db->get($sql); } /** * liste du total de versements par personne pour une année donnée * @param année */ public static function getVersementsTotaux($annee) { $sql = "SELECT acc_transactions_users.id_user as idUser, membres.nom as nom, sum(acc_transactions_lines.credit) AS montant, membres.adresse as adresse, membres.code_postal as codePostal, membres.ville as ville FROM acc_transactions_users, membres, acc_transactions INNER JOIN acc_transactions_lines ON acc_transactions_lines.id_transaction = acc_transactions.id WHERE ( strftime('%Y', acc_transactions.date) = ? AND acc_transactions_lines.credit > 0 AND acc_transactions_users.id_transaction = acc_transactions.id AND acc_transactions_users.id_user = membres.id ) GROUP by acc_transactions_users.id_user ORDER by membres.nom COLLATE NOCASE; "; return DB::getInstance()->get($sql, $annee); } /** * @return nom de l'association */ public static function getNomAsso() { return DB::getInstance()->first( "SELECT value FROM config WHERE key = 'nom_asso'" )->value; } /** * @return adresse de l'association */ public static function getAdresseAsso() { return DB::getInstance()->first( "SELECT value FROM config WHERE key = 'adresse_asso'" )->value; } /** * @return liste des années fiscales */ public static function getAnneesFiscales() { $rows = DB::getInstance()->get( "SELECT strftime('%Y', start_date) as annee FROM acc_years ORDER by start_date DESC" ); $anneesFiscales = array(); foreach ($rows as $row) { $anneesFiscales[] = $row->annee; } return $anneesFiscales; } /** TODO * générer les reçus * @param tableau des versements par personne */ static function genererRecus() { } /** * enregistrer les fichiers dans une archive zip * @param $fileList : liste des fichiers à archiver * @param $year : pour générer le nom de l'archive * @param $archiveDir : ne sert plus */ static function makeArchive( $fileList, $year, $archiveDir = null) { $zipFilename = "recus_dons" . $year . ".zip"; header('Content-type: application/zip'); header(sprintf('Content-Disposition: attachment; filename="%s"', $zipFilename)); $zip = new ZipWriter('php://output'); $zip->setCompression(0); foreach ($fileList as $fileName) { $zip->add(basename($fileName), null, $fileName); } $zip->close(); } // makeArchive }